{
  "components": {
    "responses": {
      "Conflict": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorBody"
            }
          }
        },
        "description": "Conflict (optimistic lock, duplicate)"
      },
      "IntegrationError": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorBody"
            }
          }
        },
        "description": "Upstream integration error"
      },
      "NotFound": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorBody"
            }
          }
        },
        "description": "Resource not found"
      },
      "PermissionDenied": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorBody"
            }
          }
        },
        "description": "Permission denied"
      },
      "RateLimit": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorBody"
            }
          }
        },
        "description": "Rate limit exceeded"
      },
      "Unauthorized": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorBody"
            }
          }
        },
        "description": "Authentication required"
      },
      "ValidationFailed": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorBody"
            }
          }
        },
        "description": "Validation failed"
      }
    },
    "schemas": {
      "AcceptAppUpdateRequest": {
        "example": {
          "manifestHash": "6232f20f63df0aaff6984f3ba10b3b4fac21d45ce4b9546614b37d4d712d2c19"
        },
        "properties": {
          "manifestHash": {
            "pattern": "^[a-f0-9]{64}$",
            "type": "string"
          }
        },
        "required": [
          "manifestHash"
        ],
        "type": "object"
      },
      "AcceptAppUpdateResponse": {
        "example": {
          "grant": {
            "acceptedAt": "2026-07-20T09:10:00.000Z",
            "acceptedById": "usr_01KERQ74K0TEAM000000000001",
            "acceptedManifestHash": "6232f20f63df0aaff6984f3ba10b3b4fac21d45ce4b9546614b37d4d712d2c19",
            "appId": "pharmacies-on-duty",
            "declinedAt": null,
            "declinedReleaseId": null,
            "declinedVersion": null,
            "id": "tag_01KP5RMX20GRANT00000000002",
            "installedAt": "2026-04-14T11:05:00.000Z",
            "installedById": "usr_01KERQ74K0TEAM000000000001",
            "installedReleaseId": "arl_01KX0P4XW0AVERSN0000000002",
            "installedVersion": "2.0.1",
            "pendingDeadline": null,
            "pendingManifestHash": null,
            "pendingReasons": [],
            "pendingReleaseId": null,
            "status": "active",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "uninstalledAt": null,
            "uninstalledById": null
          }
        },
        "properties": {
          "grant": {
            "properties": {
              "acceptedAt": {
                "format": "date-time",
                "type": "string"
              },
              "acceptedById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "acceptedManifestHash": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              },
              "appId": {
                "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                "type": "string"
              },
              "declinedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "declinedReleaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "declinedVersion": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^tag_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "installedAt": {
                "format": "date-time",
                "type": "string"
              },
              "installedById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "installedReleaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "installedVersion": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": "string"
              },
              "pendingDeadline": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingManifestHash": {
                "pattern": "^[a-f0-9]{64}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingReasons": {
                "items": {
                  "enum": [
                    "permissions",
                    "access",
                    "terms",
                    "retirement"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "pendingReleaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "enum": [
                  "active",
                  "pending-reacceptance",
                  "uninstalled"
                ],
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "uninstalledAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "uninstalledById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "tenantId",
              "appId",
              "installedVersion",
              "installedReleaseId",
              "installedAt",
              "installedById",
              "acceptedManifestHash",
              "acceptedAt",
              "acceptedById",
              "status",
              "pendingManifestHash",
              "pendingReleaseId",
              "pendingReasons",
              "pendingDeadline",
              "declinedReleaseId",
              "declinedVersion",
              "declinedAt",
              "uninstalledAt",
              "uninstalledById"
            ],
            "type": "object"
          }
        },
        "required": [
          "grant"
        ],
        "type": "object"
      },
      "AcceptInvitationRequest": {
        "example": {
          "displayName": "Merve Sander",
          "password": "kennwort-aus-dem-tresor-einsetzen"
        },
        "properties": {
          "displayName": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "password": {
            "maxLength": 128,
            "minLength": 12,
            "type": "string"
          }
        },
        "required": [
          "displayName",
          "password"
        ],
        "type": "object"
      },
      "AcceptInvitationResponse": {
        "example": {
          "accessToken": "beispiel-zugangstoken.nicht-gueltig",
          "expiresAt": "2026-07-20T09:29:00.000Z",
          "session": {
            "createdAt": "2026-07-20T09:14:00.000Z",
            "deviceFingerprint": {
              "acceptLanguage": "de-DE,de;q=0.9",
              "geoip": "Hamburg, DE",
              "screenResolution": "1512x982",
              "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko)"
            },
            "familyId": "sfm_01KXZ8C4M0FAME000000000002",
            "id": "ses_01KXZ8C4M0SESSN00000000003",
            "impersonator": null,
            "kind": "user",
            "lastUsedAt": "2026-07-20T09:14:00.000Z",
            "mfaVerifiedAt": null,
            "refreshExpiresAt": "2026-08-19T09:14:00.000Z",
            "status": "active",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "userId": "usr_01KXFZ3B60TEAM000000000004"
          }
        },
        "properties": {
          "accessToken": {
            "type": "string"
          },
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "session": {
            "properties": {
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "deviceFingerprint": {
                "properties": {
                  "acceptLanguage": {
                    "type": "string"
                  },
                  "geoip": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "screenResolution": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "userAgent": {
                    "type": "string"
                  }
                },
                "required": [
                  "userAgent",
                  "acceptLanguage",
                  "screenResolution",
                  "geoip"
                ],
                "type": "object"
              },
              "familyId": {
                "pattern": "^sfm_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "id": {
                "pattern": "^ses_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "impersonator": {
                "properties": {
                  "operatorUserId": {
                    "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "reason": {
                    "minLength": 1,
                    "type": "string"
                  },
                  "startedAt": {
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "required": [
                  "operatorUserId",
                  "reason",
                  "startedAt"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "kind": {
                "enum": [
                  "user",
                  "operator",
                  "impersonation"
                ],
                "type": "string"
              },
              "lastUsedAt": {
                "format": "date-time",
                "type": "string"
              },
              "mfaVerifiedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "refreshExpiresAt": {
                "format": "date-time",
                "type": "string"
              },
              "status": {
                "enum": [
                  "active",
                  "revoked",
                  "expired"
                ],
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "userId": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                ]
              }
            },
            "required": [
              "id",
              "userId",
              "tenantId",
              "kind",
              "familyId",
              "refreshExpiresAt",
              "lastUsedAt",
              "deviceFingerprint",
              "impersonator",
              "mfaVerifiedAt",
              "status",
              "createdAt"
            ],
            "type": "object"
          }
        },
        "required": [
          "accessToken",
          "expiresAt",
          "session"
        ],
        "type": "object"
      },
      "AcceptJoinRequestRequest": {
        "example": {
          "defaultRoleId": "rol_01KERPYXWRRECHT00000000002"
        },
        "properties": {
          "defaultRoleId": {
            "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "defaultRoleId"
        ],
        "type": "object"
      },
      "AdCampaign": {
        "example": {
          "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
          "createdAt": "2026-08-25T14:10:00.000Z",
          "endsOn": "2026-10-31",
          "goal": "plays",
          "id": "acp_01KXR4P1Q0KAMPAGNE00000001",
          "name": "Herbstpflege 2026",
          "note": "",
          "owner": {
            "kind": "tenant",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          },
          "pricing": {
            "amountCents": 45000,
            "currency": "EUR",
            "model": "flat"
          },
          "startsOn": "2026-09-01",
          "status": "booked",
          "timezone": "Europe/Berlin",
          "updatedAt": "2026-08-26T08:00:00.000Z",
          "version": 1
        },
        "properties": {
          "advertiserId": {
            "pattern": "^adv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "endsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "goal": {
            "enum": [
              "plays",
              "airtime",
              "contacts"
            ],
            "type": "string"
          },
          "id": {
            "pattern": "^acp_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "note": {
            "maxLength": 1000,
            "type": "string"
          },
          "owner": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "tenant"
                    ],
                    "type": "string"
                  },
                  "tenantId": {
                    "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "tenantId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "network"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              }
            ]
          },
          "pricing": {
            "$ref": "#/components/schemas/CampaignPricing"
          },
          "startsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "status": {
            "enum": [
              "draft",
              "booked",
              "paused",
              "cancelled"
            ],
            "type": "string"
          },
          "timezone": {
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "advertiserId",
          "owner",
          "name",
          "startsOn",
          "endsOn",
          "timezone",
          "goal",
          "pricing",
          "status",
          "note",
          "version",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "AdCampaignListItem": {
        "allOf": [
          {
            "$ref": "#/components/schemas/AdCampaignView"
          },
          {
            "properties": {
              "advertiserName": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "attention": {
                "items": {
                  "enum": [
                    "no_booking_lines",
                    "creative_pending",
                    "mandatory_text_missing",
                    "no_approved_creative"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "bookingLineCount": {
                "minimum": 0,
                "type": "integer"
              },
              "delivery": {
                "$ref": "#/components/schemas/CampaignDeliveryStatus"
              },
              "displayCount": {
                "minimum": 0,
                "type": "integer"
              },
              "spotDurationsMs": {
                "items": {
                  "enum": [
                    5000,
                    10000,
                    15000,
                    20000,
                    30000
                  ],
                  "type": "integer"
                },
                "type": "array"
              }
            },
            "required": [
              "advertiserName",
              "bookingLineCount",
              "spotDurationsMs",
              "displayCount",
              "attention",
              "delivery"
            ],
            "type": "object"
          }
        ],
        "example": {
          "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
          "advertiserName": "Nordwind Naturkosmetik GmbH",
          "attention": [],
          "bookingLineCount": 1,
          "createdAt": "2026-08-25T14:10:00.000Z",
          "delivery": {
            "fulfilmentPermille": 252,
            "pacingPermille": 1024,
            "pacingState": "on_track"
          },
          "displayCount": 1,
          "endsOn": "2026-10-31",
          "goal": "plays",
          "id": "acp_01KXR4P1Q0KAMPAGNE00000001",
          "name": "Herbstpflege 2026",
          "note": "",
          "owner": {
            "kind": "tenant",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          },
          "phase": "running",
          "pricing": {
            "amountCents": 45000,
            "currency": "EUR",
            "model": "flat"
          },
          "spotDurationsMs": [
            10000
          ],
          "startsOn": "2026-09-01",
          "status": "booked",
          "timezone": "Europe/Berlin",
          "updatedAt": "2026-08-26T08:00:00.000Z",
          "version": 1
        }
      },
      "AdCampaignView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/AdCampaign"
          },
          {
            "properties": {
              "phase": {
                "enum": [
                  "draft",
                  "upcoming",
                  "running",
                  "paused",
                  "ended",
                  "cancelled"
                ],
                "type": "string"
              }
            },
            "required": [
              "phase"
            ],
            "type": "object"
          }
        ],
        "example": {
          "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
          "createdAt": "2026-08-25T14:10:00.000Z",
          "endsOn": "2026-10-31",
          "goal": "plays",
          "id": "acp_01KXR4P1Q0KAMPAGNE00000001",
          "name": "Herbstpflege 2026",
          "note": "",
          "owner": {
            "kind": "tenant",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          },
          "phase": "running",
          "pricing": {
            "amountCents": 45000,
            "currency": "EUR",
            "model": "flat"
          },
          "startsOn": "2026-09-01",
          "status": "booked",
          "timezone": "Europe/Berlin",
          "updatedAt": "2026-08-26T08:00:00.000Z",
          "version": 1
        }
      },
      "AddDeviceDisplayRequest": {
        "example": {
          "connector": "HDMI-A-2",
          "deviceId": "dev_01KHK32T40GERAET0000000001",
          "name": "Schaufenster rechts"
        },
        "properties": {
          "connector": {
            "maxLength": 32,
            "minLength": 1,
            "type": "string"
          },
          "deviceId": {
            "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "deviceId",
          "connector"
        ],
        "type": "object"
      },
      "AddDeviceDisplayResponse": {
        "example": {
          "player": {
            "config": {
              "audioMuted": true,
              "brightness": 100,
              "contentFit": "contain",
              "identifyPulseColor": "#1f6f4a",
              "resolutionMode": "auto",
              "rotation": 0
            },
            "connector": "HDMI-A-2",
            "createdAt": "2026-02-16T11:25:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "decommissionedAt": null,
            "description": "Querformat-Bildschirm im Schaufenster, sichtbar von der Straße.",
            "deviceId": "dev_01KHK32T40GERAET0000000001",
            "deviceKind": "pi",
            "geoLocation": {
              "accuracyM": 28,
              "city": "Hamburg",
              "country": "DE",
              "determinedAt": "2026-07-18T06:12:00.000Z",
              "lat": 53.5511,
              "lng": 9.9937,
              "postalCode": "22765",
              "region": "Hamburg",
              "source": "wifi",
              "street": "Bahnhofstraße 12"
            },
            "host": "szenera-os",
            "id": "ply_01KHK34MQ0SCREEN0000000004",
            "lastHeartbeatAt": null,
            "lastSnapshotHash": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95",
            "lastTelemetry": null,
            "locationId": "loc_01KHK4B3T0ADRESSE000000001",
            "name": "Schaufenster rechts",
            "otaState": {
              "bootDurationMs": 41200,
              "installedVersion": "2026.6.1",
              "lastError": null,
              "lastTransitionAt": "2026-07-16T02:14:38.000Z",
              "phase": "completed",
              "rollbackReason": null,
              "targetVersion": "2026.6.1"
            },
            "screenIndex": 1,
            "status": "offline",
            "suspendedAt": null,
            "suspendedReason": null,
            "tagIds": [
              "ptg_01KHK403M0TAG0000000000001"
            ],
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-16T02:14:38.000Z",
            "version": 0
          }
        },
        "properties": {
          "player": {
            "properties": {
              "config": {
                "properties": {
                  "audioMuted": {
                    "type": "boolean"
                  },
                  "brightness": {
                    "maximum": 100,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "contentFit": {
                    "anyOf": [
                      {
                        "enum": [
                          "contain"
                        ],
                        "type": "string"
                      },
                      {
                        "enum": [
                          "cover"
                        ],
                        "type": "string"
                      }
                    ],
                    "default": "contain"
                  },
                  "identifyPulseColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  },
                  "resolutionMode": {
                    "anyOf": [
                      {
                        "enum": [
                          "auto"
                        ],
                        "type": "string"
                      },
                      {
                        "properties": {
                          "height": {
                            "maximum": 4320,
                            "minimum": 1,
                            "type": "integer"
                          },
                          "width": {
                            "maximum": 7680,
                            "minimum": 1,
                            "type": "integer"
                          }
                        },
                        "required": [
                          "width",
                          "height"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "rotation": {
                    "anyOf": [
                      {
                        "enum": [
                          0
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          90
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          180
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          270
                        ],
                        "type": "number"
                      }
                    ]
                  }
                },
                "required": [
                  "audioMuted",
                  "brightness",
                  "rotation",
                  "resolutionMode",
                  "identifyPulseColor"
                ],
                "type": "object"
              },
              "connector": {
                "maxLength": 32,
                "minLength": 1,
                "type": [
                  "string",
                  "null"
                ]
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "createdById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "decommissionedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "description": {
                "maxLength": 500,
                "type": "string"
              },
              "deviceId": {
                "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "deviceKind": {
                "enum": [
                  "pi",
                  "browser"
                ],
                "type": "string"
              },
              "geoLocation": {
                "properties": {
                  "accuracyM": {
                    "minimum": 0,
                    "type": "number"
                  },
                  "city": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "country": {
                    "maxLength": 2,
                    "minLength": 2,
                    "type": "string"
                  },
                  "determinedAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "lat": {
                    "maximum": 90,
                    "minimum": -90,
                    "type": "number"
                  },
                  "lng": {
                    "maximum": 180,
                    "minimum": -180,
                    "type": "number"
                  },
                  "postalCode": {
                    "maxLength": 20,
                    "type": "string"
                  },
                  "region": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "source": {
                    "enum": [
                      "wifi",
                      "ip",
                      "manual"
                    ],
                    "type": "string"
                  },
                  "street": {
                    "maxLength": 200,
                    "type": "string"
                  }
                },
                "required": [
                  "lat",
                  "lng",
                  "accuracyM",
                  "source",
                  "determinedAt"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "host": {
                "enum": [
                  "szenera-os",
                  "fire-tv",
                  "tizen",
                  "webos",
                  "web-display"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "lastHeartbeatAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastSnapshotHash": {
                "maxLength": 128,
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastTelemetry": {
                "properties": {
                  "agent": {
                    "properties": {
                      "buildSha": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "renderTokenExpiresAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "version": {
                        "maxLength": 100,
                        "type": "string"
                      }
                    },
                    "required": [
                      "version"
                    ],
                    "type": "object"
                  },
                  "appFailures": {
                    "items": {
                      "properties": {
                        "id": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "reason": {
                          "enum": [
                            "missing",
                            "rejected",
                            "failed"
                          ],
                          "type": "string"
                        },
                        "since": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "version": {
                          "maxLength": 64,
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "version",
                        "reason",
                        "since"
                      ],
                      "type": "object"
                    },
                    "maxItems": 20,
                    "type": "array"
                  },
                  "apps": {
                    "items": {
                      "properties": {
                        "id": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "installedAt": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "sizeBytes": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "version": {
                          "maxLength": 64,
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "version"
                      ],
                      "type": "object"
                    },
                    "maxItems": 50,
                    "type": "array"
                  },
                  "chromium": {
                    "properties": {
                      "cdpConnected": {
                        "type": "boolean"
                      },
                      "lastFrameAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "memoryMb": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "state": {
                        "enum": [
                          "rendering",
                          "pairing",
                          "hung",
                          "starting",
                          "stopped",
                          "unplugged"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "state"
                    ],
                    "type": "object"
                  },
                  "cpuTempC": {
                    "type": "number"
                  },
                  "disk": {
                    "properties": {
                      "rootTotal": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "rootUsed": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "stateTotal": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "stateUsed": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "rootUsed",
                      "rootTotal",
                      "stateUsed",
                      "stateTotal"
                    ],
                    "type": "object"
                  },
                  "display": {
                    "properties": {
                      "connected": {
                        "type": "boolean"
                      },
                      "connector": {
                        "maxLength": 30,
                        "type": "string"
                      },
                      "diagonalInch": {
                        "type": "number"
                      },
                      "heightPx": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "manufacturer": {
                        "maxLength": 60,
                        "type": "string"
                      },
                      "model": {
                        "maxLength": 60,
                        "type": "string"
                      },
                      "refreshHz": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "serial": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "widthPx": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "hardware": {
                    "properties": {
                      "coreVolts": {
                        "type": "number"
                      },
                      "cpuCores": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "cpuModel": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "kernel": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "model": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "serial": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "storageHealthPercent": {
                        "maximum": 100,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "throttledEver": {
                        "type": "boolean"
                      },
                      "throttledNow": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "loadAvg": {
                    "items": {
                      "minimum": 0,
                      "type": "number"
                    },
                    "maxItems": 3,
                    "type": "array"
                  },
                  "mediaCache": {
                    "properties": {
                      "entries": {
                        "items": {
                          "properties": {
                            "ageSeconds": {
                              "minimum": 0,
                              "type": "integer"
                            },
                            "assetId": {
                              "maxLength": 30,
                              "type": "string"
                            },
                            "mediaKey": {
                              "maxLength": 128,
                              "minLength": 1,
                              "type": "string"
                            },
                            "present": {
                              "type": "boolean"
                            },
                            "sizeBytes": {
                              "minimum": 0,
                              "type": "integer"
                            }
                          },
                          "required": [
                            "mediaKey",
                            "present"
                          ],
                          "type": "object"
                        },
                        "maxItems": 200,
                        "type": "array"
                      },
                      "entryCount": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "limitBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "overflowBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "presentCount": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "requiredBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "usedBytes": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "limitBytes",
                      "usedBytes",
                      "requiredBytes",
                      "overflowBytes",
                      "entryCount",
                      "presentCount"
                    ],
                    "type": "object"
                  },
                  "memory": {
                    "properties": {
                      "freeMb": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "total": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "used": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "total",
                      "used",
                      "freeMb"
                    ],
                    "type": "object"
                  },
                  "network": {
                    "properties": {
                      "apiLatencyMs": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "apiReachable": {
                        "type": "boolean"
                      },
                      "gateway": {
                        "maxLength": 45,
                        "type": "string"
                      },
                      "iface": {
                        "maxLength": 20,
                        "type": "string"
                      },
                      "ip": {
                        "maxLength": 45,
                        "type": "string"
                      },
                      "macAddress": {
                        "maxLength": 17,
                        "type": "string"
                      },
                      "tailscaleConnected": {
                        "type": "boolean"
                      },
                      "wifiChannel": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "wifiFrequencyMhz": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "wifiSignal": {
                        "type": "integer"
                      },
                      "wifiSsid": {
                        "maxLength": 100,
                        "type": "string"
                      },
                      "wifiTxRateMbps": {
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "type": "object"
                  },
                  "rauc": {
                    "properties": {
                      "bootedFromTryboot": {
                        "type": "boolean"
                      },
                      "currentSlot": {
                        "maxLength": 50,
                        "type": "string"
                      },
                      "lastSuccessAt": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "required": [
                      "currentSlot",
                      "bootedFromTryboot"
                    ],
                    "type": "object"
                  },
                  "renderer": {
                    "properties": {
                      "activatedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "build": {
                        "pattern": "^[0-9a-f]{12}$",
                        "type": "string"
                      },
                      "capabilities": {
                        "items": {
                          "maxLength": 32,
                          "minLength": 1,
                          "type": "string"
                        },
                        "maxItems": 32,
                        "type": "array"
                      },
                      "failures": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "linkOnline": {
                        "type": "boolean"
                      },
                      "profile": {
                        "enum": [
                          "modern",
                          "legacy"
                        ],
                        "type": "string"
                      },
                      "releaseSeq": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "resilience": {
                        "enum": [
                          "fresh",
                          "stale-but-served",
                          "last-known-good",
                          "loading",
                          "error"
                        ],
                        "type": "string"
                      },
                      "source": {
                        "enum": [
                          "bundle",
                          "hosted"
                        ],
                        "type": "string"
                      },
                      "state": {
                        "enum": [
                          "scene",
                          "pairing",
                          "unassigned",
                          "loading",
                          "error",
                          "disconnected"
                        ],
                        "type": "string"
                      },
                      "version": {
                        "maxLength": 40,
                        "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "state"
                    ],
                    "type": "object"
                  },
                  "screens": {
                    "items": {
                      "properties": {
                        "chromium": {
                          "properties": {
                            "cdpConnected": {
                              "type": "boolean"
                            },
                            "state": {
                              "enum": [
                                "rendering",
                                "pairing",
                                "hung",
                                "starting",
                                "stopped",
                                "unplugged"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "state"
                          ],
                          "type": "object"
                        },
                        "powerIntent": {
                          "enum": [
                            "on",
                            "standby"
                          ],
                          "type": "string"
                        },
                        "powerState": {
                          "enum": [
                            "on",
                            "standby",
                            "unknown"
                          ],
                          "type": "string"
                        },
                        "renderer": {
                          "properties": {
                            "failures": {
                              "minimum": 0,
                              "type": "integer"
                            },
                            "linkOnline": {
                              "type": "boolean"
                            },
                            "resilience": {
                              "enum": [
                                "fresh",
                                "stale-but-served",
                                "last-known-good",
                                "loading",
                                "error"
                              ],
                              "type": "string"
                            },
                            "state": {
                              "enum": [
                                "scene",
                                "pairing",
                                "unassigned",
                                "loading",
                                "error",
                                "disconnected"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "state"
                          ],
                          "type": "object"
                        },
                        "screenIndex": {
                          "maximum": 7,
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "screenIndex"
                      ],
                      "type": "object"
                    },
                    "maxItems": 8,
                    "type": "array"
                  },
                  "snapshot": {
                    "properties": {
                      "lastCheckedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "lastRefreshAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "manifestHash": {
                        "maxLength": 128,
                        "type": "string"
                      },
                      "stale": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "manifestHash",
                      "stale",
                      "lastRefreshAt"
                    ],
                    "type": "object"
                  },
                  "time": {
                    "properties": {
                      "ntpSynchronized": {
                        "type": "boolean"
                      },
                      "offsetMs": {
                        "type": "integer"
                      },
                      "timezone": {
                        "maxLength": 60,
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uptime": {
                    "minimum": 0,
                    "type": "integer"
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "locationId": {
                "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "otaState": {
                "properties": {
                  "bootDurationMs": {
                    "minimum": 0,
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "installedVersion": {
                    "maxLength": 100,
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "lastError": {
                    "properties": {
                      "at": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "code": {
                        "maxLength": 100,
                        "type": "string"
                      },
                      "message": {
                        "maxLength": 500,
                        "type": "string"
                      }
                    },
                    "required": [
                      "code",
                      "message",
                      "at"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "lastTransitionAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "phase": {
                    "enum": [
                      "idle",
                      "downloading",
                      "installing",
                      "tryboot-waiting",
                      "completed",
                      "rolled-back",
                      "failed"
                    ],
                    "type": "string"
                  },
                  "rollbackReason": {
                    "maxLength": 500,
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "targetVersion": {
                    "maxLength": 100,
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "phase",
                  "targetVersion",
                  "installedVersion",
                  "lastTransitionAt",
                  "lastError",
                  "bootDurationMs",
                  "rollbackReason"
                ],
                "type": "object"
              },
              "screenIndex": {
                "maximum": 7,
                "minimum": 0,
                "type": "integer"
              },
              "status": {
                "enum": [
                  "online",
                  "stale",
                  "offline",
                  "paired-not-claimed",
                  "suspended",
                  "decommissioned"
                ],
                "type": "string"
              },
              "suspendedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "suspendedReason": {
                "enum": [
                  "tenant",
                  "quota"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "tagIds": {
                "items": {
                  "pattern": "^ptg_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "maxItems": 50,
                "type": "array"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "version": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "id",
              "tenantId",
              "deviceId",
              "connector",
              "screenIndex",
              "name",
              "description",
              "tagIds",
              "locationId",
              "config",
              "status",
              "suspendedReason",
              "lastHeartbeatAt",
              "createdById",
              "createdAt",
              "updatedAt",
              "decommissionedAt",
              "version",
              "geoLocation",
              "lastSnapshotHash",
              "lastTelemetry",
              "otaState"
            ],
            "type": "object"
          }
        },
        "required": [
          "player"
        ],
        "type": "object"
      },
      "AddSsoDomainRequest": {
        "example": {
          "domain": "adler-apotheke.demo.local"
        },
        "properties": {
          "domain": {
            "maxLength": 253,
            "pattern": "^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$",
            "type": "string"
          }
        },
        "required": [
          "domain"
        ],
        "type": "object"
      },
      "Advertiser": {
        "example": {
          "brands": [
            "Nordwind",
            "Nordwind Sensitiv"
          ],
          "contacts": [
            {
              "email": "lena.brandt@demo.local",
              "name": "Lena Brandt",
              "receivesProofs": true
            }
          ],
          "createdAt": "2026-08-18T09:30:00.000Z",
          "id": "adv_01KXR4M8A0WERBPARTNER00001",
          "industry": "cosmetics",
          "name": "Nordwind Naturkosmetik GmbH",
          "note": "Rahmenvereinbarung für Herbst und Winter.",
          "owner": {
            "kind": "tenant",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          },
          "status": "active",
          "updatedAt": "2026-08-25T14:05:00.000Z",
          "version": 2
        },
        "properties": {
          "brands": {
            "items": {
              "maxLength": 60,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 20,
            "type": "array"
          },
          "contacts": {
            "items": {
              "$ref": "#/components/schemas/AdvertiserContact"
            },
            "maxItems": 10,
            "type": "array"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "pattern": "^adv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "industry": {
            "enum": [
              "cosmetics",
              "personal_care",
              "food_supplements",
              "otc_medicine",
              "medical_devices",
              "food_beverage",
              "automotive",
              "household",
              "services",
              "retail",
              "other"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "note": {
            "maxLength": 1000,
            "type": "string"
          },
          "owner": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "tenant"
                    ],
                    "type": "string"
                  },
                  "tenantId": {
                    "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "tenantId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "network"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              }
            ]
          },
          "status": {
            "enum": [
              "active",
              "archived"
            ],
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "owner",
          "name",
          "brands",
          "industry",
          "contacts",
          "note",
          "status",
          "version",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "AdvertiserCampaignReport": {
        "example": {
          "delivery": {
            "asOf": "2026-10-11",
            "campaign": {
              "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
              "advertiserName": "Nordwind Naturkosmetik GmbH",
              "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
              "dayCount": 61,
              "dayNumber": 42,
              "endsOn": "2026-10-31",
              "goal": "plays",
              "name": "Herbstpflege 2026",
              "owner": "tenant",
              "phase": "running",
              "startsOn": "2026-09-01",
              "status": "booked",
              "timezone": "Europe/Berlin"
            },
            "contacts": {
              "byGrade": [],
              "contactModelVersion": 1,
              "gradeCIncluded": false,
              "total": 39640
            },
            "coverage": {
              "availability": {
                "upper": 0.9642,
                "value": 0.96
              },
              "plannedSeconds": 2592000,
              "reportingDisplays": 2,
              "targetedDisplays": 2,
              "targetedLocations": 1,
              "visibleSeconds": 2488320
            },
            "curve": [
              {
                "cumulativeForecast": null,
                "cumulativeForecastHigh": null,
                "cumulativeForecastLow": null,
                "cumulativePlanned": 7980,
                "cumulativeValid": 7862,
                "day": "2026-10-09",
                "plannedPlays": 210,
                "preview": false,
                "validPlays": 206
              },
              {
                "cumulativeForecast": null,
                "cumulativeForecastHigh": null,
                "cumulativeForecastLow": null,
                "cumulativePlanned": 8100,
                "cumulativeValid": 7928,
                "day": "2026-10-10",
                "plannedPlays": 120,
                "preview": false,
                "validPlays": 66
              },
              {
                "cumulativeForecast": 8134,
                "cumulativeForecastHigh": 8141,
                "cumulativeForecastLow": 8113,
                "cumulativePlanned": 8310,
                "cumulativeValid": null,
                "day": "2026-10-12",
                "plannedPlays": 210,
                "preview": true,
                "validPlays": null
              },
              {
                "cumulativeForecast": 12333,
                "cumulativeForecastHigh": 12480,
                "cumulativeForecastLow": 11890,
                "cumulativePlanned": 12600,
                "cumulativeValid": null,
                "day": "2026-10-31",
                "plannedPlays": 120,
                "preview": true,
                "validPlays": null
              }
            ],
            "distribution": {
              "daypart": [
                {
                  "airtimeSeconds": 79280,
                  "contacts": 39640,
                  "detail": null,
                  "displays": 2,
                  "key": "other",
                  "label": "Sonstige",
                  "locations": 1,
                  "merged": true,
                  "share": 1,
                  "validPlays": 7928
                }
              ],
              "location": [
                {
                  "airtimeSeconds": 79280,
                  "contacts": 39640,
                  "detail": null,
                  "displays": 2,
                  "key": "other",
                  "label": "Sonstige",
                  "locations": 1,
                  "merged": true,
                  "share": 1,
                  "validPlays": 7928
                }
              ],
              "placement": [
                {
                  "airtimeSeconds": 79280,
                  "contacts": 39640,
                  "detail": null,
                  "displays": 2,
                  "key": "other",
                  "label": "Sonstige",
                  "locations": 1,
                  "merged": true,
                  "share": 1,
                  "validPlays": 7928
                }
              ],
              "region": [
                {
                  "airtimeSeconds": 79280,
                  "contacts": 39640,
                  "detail": null,
                  "displays": 2,
                  "key": "other",
                  "label": "Sonstige",
                  "locations": 1,
                  "merged": true,
                  "share": 1,
                  "validPlays": 7928
                }
              ],
              "venueType": [
                {
                  "airtimeSeconds": 79280,
                  "contacts": 39640,
                  "detail": null,
                  "displays": 2,
                  "key": "other",
                  "label": "Sonstige",
                  "locations": 1,
                  "merged": true,
                  "share": 1,
                  "validPlays": 7928
                }
              ]
            },
            "failures": {
              "byReason": [
                {
                  "plays": 146,
                  "reason": "too_short",
                  "share": 0.5141
                },
                {
                  "plays": 100,
                  "reason": "panel_off",
                  "share": 0.3521
                },
                {
                  "plays": 38,
                  "reason": "render_error",
                  "share": 0.1338
                }
              ],
              "invalidPlays": 284,
              "openGapPlace": "Schaufenster Eingang, Hamburg",
              "openGapPlays": 54,
              "panelUnconfirmedPlace": "Kasse 2",
              "panelUnconfirmedPlays": 3316,
              "shareOfPlanned": 0.0351
            },
            "from": "2026-09-01",
            "lines": [
              {
                "bookingLineId": "bkl_01KXR4Q9T0BKNG000000000001",
                "endsOn": "2026-10-31",
                "name": "Schaufenster und Kasse",
                "panelUnconfirmedShare": 0.4183,
                "reachedDisplays": 2,
                "startsOn": "2026-09-01",
                "state": {
                  "commitment": {
                    "quantity": 12000,
                    "unit": "plays"
                  },
                  "delivered": {
                    "airtimeSeconds": 79280,
                    "contacts": 39640,
                    "plays": 8212,
                    "validPlays": 7928
                  },
                  "deliveredInUnit": 7928,
                  "expectedShare": 0.6429,
                  "forecast": {
                    "at": "2026-10-31",
                    "high": 12480,
                    "highShare": 1.04,
                    "low": 11890,
                    "lowShare": 0.9908,
                    "share": 1.0278,
                    "value": 12333
                  },
                  "fulfilment": 0.6607,
                  "pacing": 1.0277,
                  "plannedPlaysToDate": 8100,
                  "plannedPlaysTotal": 12600,
                  "risk": "warning",
                  "riskPlace": "Schaufenster Eingang, Hamburg",
                  "riskReason": "reportingGaps",
                  "riskText": "Schaufenster Eingang, Hamburg meldet sich nicht"
                },
                "targetedDisplays": 2
              }
            ],
            "method": {
              "contactModel": 1,
              "networkParameters": null,
              "validityRule": 1
            },
            "notices": [
              {
                "code": "openGaps",
                "params": {
                  "deadline": "2026-10-17T09:00:00.000Z",
                  "hours": 3
                },
                "text": "3 Planstunden sind noch nicht gemeldet und können bis 17.10.2026, 11:00 nachkommen. Die Zahlen können noch steigen."
              },
              {
                "code": "smallCellsMerged",
                "params": {
                  "count": 13,
                  "min": 3
                },
                "text": "13 Zellen mit weniger als 3 Standorten sind unter Sonstige zusammengefasst."
              }
            ],
            "periods": [
              {
                "closeDueOn": "2026-10-09",
                "closes": [
                  {
                    "closedAt": "2026-10-09T04:00:00.000Z",
                    "kind": "closing",
                    "number": "NW-2026-09-0001",
                    "periodCloseId": "pcl_01KYAZ4M80PRFNG00000000001",
                    "signedAt": "2026-10-09T04:00:03.000Z"
                  }
                ],
                "from": "2026-09-01",
                "month": "2026-09",
                "plannedPlays": 6000,
                "state": "closed",
                "to": "2026-09-30",
                "validPlays": 5874
              },
              {
                "closeDueOn": "2026-11-09",
                "closes": [],
                "from": "2026-10-01",
                "month": "2026-10",
                "plannedPlays": 6600,
                "state": "interim",
                "to": "2026-10-31",
                "validPlays": 2054
              }
            ],
            "summary": {
              "commitment": {
                "quantity": 12000,
                "unit": "plays"
              },
              "delivered": {
                "airtimeSeconds": 79280,
                "contacts": 39640,
                "plays": 8212,
                "validPlays": 7928
              },
              "deliveredInUnit": 7928,
              "expectedShare": 0.6429,
              "forecast": {
                "at": "2026-10-31",
                "high": 12480,
                "highShare": 1.04,
                "low": 11890,
                "lowShare": 0.9908,
                "share": 1.0278,
                "value": 12333
              },
              "fulfilment": 0.6607,
              "pacing": 1.0277,
              "plannedPlaysToDate": 8100,
              "plannedPlaysTotal": 12600,
              "risk": "warning",
              "riskPlace": "Schaufenster Eingang, Hamburg",
              "riskReason": "reportingGaps",
              "riskText": "Schaufenster Eingang, Hamburg meldet sich nicht"
            },
            "to": "2026-10-11"
          },
          "locations": [
            {
              "airtimeSeconds": 46120,
              "city": "Hamburg",
              "displays": 1,
              "label": "Hamburg (227) · Apotheke",
              "named": false,
              "postalArea": "227",
              "validPlays": 4612,
              "venueType": "pharmacy"
            },
            {
              "airtimeSeconds": 33160,
              "city": null,
              "displays": 1,
              "label": "Ohne Angabe",
              "named": false,
              "postalArea": null,
              "validPlays": 3316,
              "venueType": null
            }
          ]
        },
        "properties": {
          "delivery": {
            "$ref": "#/components/schemas/AnalyticsCampaignDelivery"
          },
          "locations": {
            "items": {
              "$ref": "#/components/schemas/AdvertiserReportLocation"
            },
            "type": "array"
          }
        },
        "required": [
          "delivery",
          "locations"
        ],
        "type": "object"
      },
      "AdvertiserContact": {
        "example": {
          "email": "lena.brandt@demo.local",
          "name": "Lena Brandt",
          "receivesProofs": true
        },
        "properties": {
          "email": {
            "format": "email",
            "maxLength": 254,
            "type": "string"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "receivesProofs": {
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "email",
          "receivesProofs"
        ],
        "type": "object"
      },
      "AdvertiserReport": {
        "example": {
          "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
          "advertiserName": "Nordwind Naturkosmetik GmbH",
          "campaigns": [
            {
              "delivery": {
                "asOf": "2026-10-11",
                "campaign": {
                  "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
                  "advertiserName": "Nordwind Naturkosmetik GmbH",
                  "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
                  "dayCount": 61,
                  "dayNumber": 42,
                  "endsOn": "2026-10-31",
                  "goal": "plays",
                  "name": "Herbstpflege 2026",
                  "owner": "tenant",
                  "phase": "running",
                  "startsOn": "2026-09-01",
                  "status": "booked",
                  "timezone": "Europe/Berlin"
                },
                "contacts": {
                  "byGrade": [],
                  "contactModelVersion": 1,
                  "gradeCIncluded": false,
                  "total": 39640
                },
                "coverage": {
                  "availability": {
                    "upper": 0.9642,
                    "value": 0.96
                  },
                  "plannedSeconds": 2592000,
                  "reportingDisplays": 2,
                  "targetedDisplays": 2,
                  "targetedLocations": 1,
                  "visibleSeconds": 2488320
                },
                "curve": [
                  {
                    "cumulativeForecast": null,
                    "cumulativeForecastHigh": null,
                    "cumulativeForecastLow": null,
                    "cumulativePlanned": 7980,
                    "cumulativeValid": 7862,
                    "day": "2026-10-09",
                    "plannedPlays": 210,
                    "preview": false,
                    "validPlays": 206
                  },
                  {
                    "cumulativeForecast": null,
                    "cumulativeForecastHigh": null,
                    "cumulativeForecastLow": null,
                    "cumulativePlanned": 8100,
                    "cumulativeValid": 7928,
                    "day": "2026-10-10",
                    "plannedPlays": 120,
                    "preview": false,
                    "validPlays": 66
                  },
                  {
                    "cumulativeForecast": 8134,
                    "cumulativeForecastHigh": 8141,
                    "cumulativeForecastLow": 8113,
                    "cumulativePlanned": 8310,
                    "cumulativeValid": null,
                    "day": "2026-10-12",
                    "plannedPlays": 210,
                    "preview": true,
                    "validPlays": null
                  },
                  {
                    "cumulativeForecast": 12333,
                    "cumulativeForecastHigh": 12480,
                    "cumulativeForecastLow": 11890,
                    "cumulativePlanned": 12600,
                    "cumulativeValid": null,
                    "day": "2026-10-31",
                    "plannedPlays": 120,
                    "preview": true,
                    "validPlays": null
                  }
                ],
                "distribution": {
                  "daypart": [
                    {
                      "airtimeSeconds": 79280,
                      "contacts": 39640,
                      "detail": null,
                      "displays": 2,
                      "key": "other",
                      "label": "Sonstige",
                      "locations": 1,
                      "merged": true,
                      "share": 1,
                      "validPlays": 7928
                    }
                  ],
                  "location": [
                    {
                      "airtimeSeconds": 79280,
                      "contacts": 39640,
                      "detail": null,
                      "displays": 2,
                      "key": "other",
                      "label": "Sonstige",
                      "locations": 1,
                      "merged": true,
                      "share": 1,
                      "validPlays": 7928
                    }
                  ],
                  "placement": [
                    {
                      "airtimeSeconds": 79280,
                      "contacts": 39640,
                      "detail": null,
                      "displays": 2,
                      "key": "other",
                      "label": "Sonstige",
                      "locations": 1,
                      "merged": true,
                      "share": 1,
                      "validPlays": 7928
                    }
                  ],
                  "region": [
                    {
                      "airtimeSeconds": 79280,
                      "contacts": 39640,
                      "detail": null,
                      "displays": 2,
                      "key": "other",
                      "label": "Sonstige",
                      "locations": 1,
                      "merged": true,
                      "share": 1,
                      "validPlays": 7928
                    }
                  ],
                  "venueType": [
                    {
                      "airtimeSeconds": 79280,
                      "contacts": 39640,
                      "detail": null,
                      "displays": 2,
                      "key": "other",
                      "label": "Sonstige",
                      "locations": 1,
                      "merged": true,
                      "share": 1,
                      "validPlays": 7928
                    }
                  ]
                },
                "failures": {
                  "byReason": [
                    {
                      "plays": 146,
                      "reason": "too_short",
                      "share": 0.5141
                    },
                    {
                      "plays": 100,
                      "reason": "panel_off",
                      "share": 0.3521
                    },
                    {
                      "plays": 38,
                      "reason": "render_error",
                      "share": 0.1338
                    }
                  ],
                  "invalidPlays": 284,
                  "openGapPlace": "Schaufenster Eingang, Hamburg",
                  "openGapPlays": 54,
                  "panelUnconfirmedPlace": "Kasse 2",
                  "panelUnconfirmedPlays": 3316,
                  "shareOfPlanned": 0.0351
                },
                "from": "2026-09-01",
                "lines": [
                  {
                    "bookingLineId": "bkl_01KXR4Q9T0BKNG000000000001",
                    "endsOn": "2026-10-31",
                    "name": "Schaufenster und Kasse",
                    "panelUnconfirmedShare": 0.4183,
                    "reachedDisplays": 2,
                    "startsOn": "2026-09-01",
                    "state": {
                      "commitment": {
                        "quantity": 12000,
                        "unit": "plays"
                      },
                      "delivered": {
                        "airtimeSeconds": 79280,
                        "contacts": 39640,
                        "plays": 8212,
                        "validPlays": 7928
                      },
                      "deliveredInUnit": 7928,
                      "expectedShare": 0.6429,
                      "forecast": {
                        "at": "2026-10-31",
                        "high": 12480,
                        "highShare": 1.04,
                        "low": 11890,
                        "lowShare": 0.9908,
                        "share": 1.0278,
                        "value": 12333
                      },
                      "fulfilment": 0.6607,
                      "pacing": 1.0277,
                      "plannedPlaysToDate": 8100,
                      "plannedPlaysTotal": 12600,
                      "risk": "warning",
                      "riskPlace": "Schaufenster Eingang, Hamburg",
                      "riskReason": "reportingGaps",
                      "riskText": "Schaufenster Eingang, Hamburg meldet sich nicht"
                    },
                    "targetedDisplays": 2
                  }
                ],
                "method": {
                  "contactModel": 1,
                  "networkParameters": null,
                  "validityRule": 1
                },
                "notices": [
                  {
                    "code": "openGaps",
                    "params": {
                      "deadline": "2026-10-17T09:00:00.000Z",
                      "hours": 3
                    },
                    "text": "3 Planstunden sind noch nicht gemeldet und können bis 17.10.2026, 11:00 nachkommen. Die Zahlen können noch steigen."
                  },
                  {
                    "code": "smallCellsMerged",
                    "params": {
                      "count": 13,
                      "min": 3
                    },
                    "text": "13 Zellen mit weniger als 3 Standorten sind unter Sonstige zusammengefasst."
                  }
                ],
                "periods": [
                  {
                    "closeDueOn": "2026-10-09",
                    "closes": [
                      {
                        "closedAt": "2026-10-09T04:00:00.000Z",
                        "kind": "closing",
                        "number": "NW-2026-09-0001",
                        "periodCloseId": "pcl_01KYAZ4M80PRFNG00000000001",
                        "signedAt": "2026-10-09T04:00:03.000Z"
                      }
                    ],
                    "from": "2026-09-01",
                    "month": "2026-09",
                    "plannedPlays": 6000,
                    "state": "closed",
                    "to": "2026-09-30",
                    "validPlays": 5874
                  },
                  {
                    "closeDueOn": "2026-11-09",
                    "closes": [],
                    "from": "2026-10-01",
                    "month": "2026-10",
                    "plannedPlays": 6600,
                    "state": "interim",
                    "to": "2026-10-31",
                    "validPlays": 2054
                  }
                ],
                "summary": {
                  "commitment": {
                    "quantity": 12000,
                    "unit": "plays"
                  },
                  "delivered": {
                    "airtimeSeconds": 79280,
                    "contacts": 39640,
                    "plays": 8212,
                    "validPlays": 7928
                  },
                  "deliveredInUnit": 7928,
                  "expectedShare": 0.6429,
                  "forecast": {
                    "at": "2026-10-31",
                    "high": 12480,
                    "highShare": 1.04,
                    "low": 11890,
                    "lowShare": 0.9908,
                    "share": 1.0278,
                    "value": 12333
                  },
                  "fulfilment": 0.6607,
                  "pacing": 1.0277,
                  "plannedPlaysToDate": 8100,
                  "plannedPlaysTotal": 12600,
                  "risk": "warning",
                  "riskPlace": "Schaufenster Eingang, Hamburg",
                  "riskReason": "reportingGaps",
                  "riskText": "Schaufenster Eingang, Hamburg meldet sich nicht"
                },
                "to": "2026-10-11"
              },
              "locations": [
                {
                  "airtimeSeconds": 46120,
                  "city": "Hamburg",
                  "displays": 1,
                  "label": "Hamburg (227) · Apotheke",
                  "named": false,
                  "postalArea": "227",
                  "validPlays": 4612,
                  "venueType": "pharmacy"
                },
                {
                  "airtimeSeconds": 33160,
                  "city": null,
                  "displays": 1,
                  "label": "Ohne Angabe",
                  "named": false,
                  "postalArea": null,
                  "validPlays": 3316,
                  "venueType": null
                }
              ]
            }
          ],
          "computedAt": "2026-10-12T05:30:00.000Z",
          "from": "2026-09-01",
          "notices": [
            {
              "code": "openGaps",
              "params": {
                "deadline": "2026-10-17T09:00:00.000Z",
                "hours": 3
              },
              "text": "3 Planstunden sind noch nicht gemeldet und können bis 17.10.2026, 11:00 nachkommen. Die Zahlen können noch steigen."
            },
            {
              "code": "smallCellsMerged",
              "params": {
                "count": 13,
                "min": 3
              },
              "text": "13 Zellen mit weniger als 3 Standorten sind unter Sonstige zusammengefasst."
            }
          ],
          "owner": "tenant",
          "timezone": "Europe/Berlin",
          "to": "2026-10-11"
        },
        "properties": {
          "advertiserId": {
            "pattern": "^adv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "advertiserName": {
            "type": "string"
          },
          "campaigns": {
            "items": {
              "$ref": "#/components/schemas/AdvertiserCampaignReport"
            },
            "type": "array"
          },
          "computedAt": {
            "format": "date-time",
            "type": "string"
          },
          "from": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "notices": {
            "items": {
              "$ref": "#/components/schemas/ExploreNotice"
            },
            "type": "array"
          },
          "owner": {
            "enum": [
              "tenant",
              "network"
            ],
            "type": "string"
          },
          "timezone": {
            "type": "string"
          },
          "to": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          }
        },
        "required": [
          "advertiserId",
          "advertiserName",
          "owner",
          "from",
          "to",
          "timezone",
          "campaigns",
          "notices",
          "computedAt"
        ],
        "type": "object"
      },
      "AdvertiserReportLocation": {
        "example": {
          "airtimeSeconds": 0,
          "city": "sample",
          "displays": 0,
          "label": "sample",
          "named": false,
          "postalArea": "sample",
          "validPlays": 0,
          "venueType": "pharmacy"
        },
        "properties": {
          "airtimeSeconds": {
            "minimum": 0,
            "type": "number"
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "displays": {
            "minimum": 0,
            "type": "integer"
          },
          "label": {
            "type": "string"
          },
          "named": {
            "type": "boolean"
          },
          "postalArea": {
            "type": [
              "string",
              "null"
            ]
          },
          "validPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "venueType": {
            "enum": [
              "pharmacy",
              "workshop",
              "bakery",
              "beverage_store",
              "grocery",
              "kiosk",
              "fitness_studio",
              "medical_practice",
              "retail",
              "other"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "label",
          "named",
          "city",
          "postalArea",
          "venueType",
          "validPlays",
          "airtimeSeconds",
          "displays"
        ],
        "type": "object"
      },
      "AllowedRenderResolution": {
        "example": {
          "height": 1080,
          "limitedBy": "output",
          "width": 1920
        },
        "properties": {
          "height": {
            "exclusiveMinimum": 0,
            "maximum": 8640,
            "type": "integer"
          },
          "limitedBy": {
            "enum": [
              "tier",
              "output"
            ],
            "type": "string"
          },
          "width": {
            "exclusiveMinimum": 0,
            "maximum": 15360,
            "type": "integer"
          }
        },
        "required": [
          "width",
          "height",
          "limitedBy"
        ],
        "type": "object"
      },
      "AnalyticsAirtimeByKind": {
        "example": {
          "directSeconds": 0,
          "fallbackSeconds": 0,
          "networkSeconds": 0,
          "ownContentSeconds": 0
        },
        "properties": {
          "directSeconds": {
            "minimum": 0,
            "type": "number"
          },
          "fallbackSeconds": {
            "minimum": 0,
            "type": "number"
          },
          "networkSeconds": {
            "minimum": 0,
            "type": "number"
          },
          "ownContentSeconds": {
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "ownContentSeconds",
          "fallbackSeconds",
          "networkSeconds",
          "directSeconds"
        ],
        "type": "object"
      },
      "AnalyticsAnomaly": {
        "example": {
          "action": "checkDisplay",
          "campaign": {
            "campaignId": "acp_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "name": "sample"
          },
          "content": {
            "id": "sample",
            "kind": "scene",
            "name": "sample"
          },
          "count": 0,
          "deadline": "2026-01-01T00:00:00.000Z",
          "from": "2026-01-01T00:00:00.000Z",
          "impactHours": 0,
          "key": "sample",
          "kind": "gap",
          "locationName": "sample",
          "lostAdPlays": 0,
          "lostPlays": 0,
          "playerId": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "playerName": "sample",
          "severity": "danger",
          "state": "open",
          "to": "2026-01-01T00:00:00.000Z"
        },
        "properties": {
          "action": {
            "enum": [
              "checkDisplay",
              "checkPanelSchedule",
              "replaceFile"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "campaign": {
            "properties": {
              "campaignId": {
                "pattern": "^acp_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "campaignId",
              "name"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "content": {
            "$ref": "#/components/schemas/AnalyticsContentRef"
          },
          "count": {
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "deadline": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "from": {
            "format": "date-time",
            "type": "string"
          },
          "impactHours": {
            "minimum": 0,
            "type": "number"
          },
          "key": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "gap",
              "panelOff",
              "renderErrors",
              "lateReported",
              "hidden"
            ],
            "type": "string"
          },
          "locationName": {
            "type": [
              "string",
              "null"
            ]
          },
          "lostAdPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "lostPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "playerId": {
            "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "playerName": {
            "type": "string"
          },
          "severity": {
            "enum": [
              "danger",
              "warning",
              "info"
            ],
            "type": "string"
          },
          "state": {
            "enum": [
              "open",
              "resolved"
            ],
            "type": "string"
          },
          "to": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "key",
          "kind",
          "severity",
          "state",
          "playerId",
          "playerName",
          "locationName",
          "from",
          "to",
          "impactHours",
          "lostPlays",
          "lostAdPlays",
          "count",
          "content",
          "campaign",
          "action",
          "deadline"
        ],
        "type": "object"
      },
      "AnalyticsAvailabilityRange": {
        "example": {
          "upper": 0,
          "value": 0
        },
        "properties": {
          "upper": {
            "maximum": 1,
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "value": {
            "maximum": 1,
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "value",
          "upper"
        ],
        "type": "object"
      },
      "AnalyticsCampaignDelivery": {
        "example": {
          "asOf": "2026-10-11",
          "campaign": {
            "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
            "advertiserName": "Nordwind Naturkosmetik GmbH",
            "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
            "dayCount": 61,
            "dayNumber": 42,
            "endsOn": "2026-10-31",
            "goal": "plays",
            "name": "Herbstpflege 2026",
            "owner": "tenant",
            "phase": "running",
            "startsOn": "2026-09-01",
            "status": "booked",
            "timezone": "Europe/Berlin"
          },
          "contacts": {
            "byGrade": [
              {
                "contacts": 39640,
                "grade": "A",
                "locations": [
                  {
                    "companionFactor": 1.3,
                    "label": "Hauptstelle",
                    "measuredFrom": "2026-03-02",
                    "source": "counter"
                  }
                ],
                "share": 1
              }
            ],
            "contactModelVersion": 1,
            "gradeCIncluded": false,
            "total": 39640
          },
          "coverage": {
            "availability": {
              "upper": 0.9642,
              "value": 0.96
            },
            "plannedSeconds": 2592000,
            "reportingDisplays": 2,
            "targetedDisplays": 2,
            "targetedLocations": 1,
            "visibleSeconds": 2488320
          },
          "curve": [
            {
              "cumulativeForecast": null,
              "cumulativeForecastHigh": null,
              "cumulativeForecastLow": null,
              "cumulativePlanned": 7980,
              "cumulativeValid": 7862,
              "day": "2026-10-09",
              "plannedPlays": 210,
              "preview": false,
              "validPlays": 206
            },
            {
              "cumulativeForecast": null,
              "cumulativeForecastHigh": null,
              "cumulativeForecastLow": null,
              "cumulativePlanned": 8100,
              "cumulativeValid": 7928,
              "day": "2026-10-10",
              "plannedPlays": 120,
              "preview": false,
              "validPlays": 66
            },
            {
              "cumulativeForecast": 8134,
              "cumulativeForecastHigh": 8141,
              "cumulativeForecastLow": 8113,
              "cumulativePlanned": 8310,
              "cumulativeValid": null,
              "day": "2026-10-12",
              "plannedPlays": 210,
              "preview": true,
              "validPlays": null
            },
            {
              "cumulativeForecast": 12333,
              "cumulativeForecastHigh": 12480,
              "cumulativeForecastLow": 11890,
              "cumulativePlanned": 12600,
              "cumulativeValid": null,
              "day": "2026-10-31",
              "plannedPlays": 120,
              "preview": true,
              "validPlays": null
            }
          ],
          "distribution": {
            "daypart": [
              {
                "airtimeSeconds": 21400,
                "contacts": 10700,
                "detail": null,
                "displays": 2,
                "key": "morning",
                "label": "Vormittag",
                "locations": 1,
                "merged": false,
                "share": 0.2699,
                "validPlays": 2140
              },
              {
                "airtimeSeconds": 19800,
                "contacts": 9900,
                "detail": null,
                "displays": 2,
                "key": "midday",
                "label": "Mittag",
                "locations": 1,
                "merged": false,
                "share": 0.2497,
                "validPlays": 1980
              },
              {
                "airtimeSeconds": 28500,
                "contacts": 14250,
                "detail": null,
                "displays": 2,
                "key": "afternoon",
                "label": "Nachmittag",
                "locations": 1,
                "merged": false,
                "share": 0.3595,
                "validPlays": 2850
              },
              {
                "airtimeSeconds": 9580,
                "contacts": 4790,
                "detail": null,
                "displays": 2,
                "key": "evening",
                "label": "Abend",
                "locations": 1,
                "merged": false,
                "share": 0.1208,
                "validPlays": 958
              }
            ],
            "location": [
              {
                "airtimeSeconds": 46120,
                "contacts": 39640,
                "detail": "Hamburg",
                "displays": 1,
                "key": "loc_01KHK4B3T0ADRESSE000000001",
                "label": "Hauptstelle",
                "locations": 1,
                "merged": false,
                "share": 0.5817,
                "validPlays": 4612
              },
              {
                "airtimeSeconds": 33160,
                "contacts": 0,
                "detail": null,
                "displays": 1,
                "key": "none",
                "label": "Ohne Angabe",
                "locations": 0,
                "merged": false,
                "share": 0.4183,
                "validPlays": 3316
              }
            ],
            "placement": [
              {
                "airtimeSeconds": 46120,
                "contacts": 39640,
                "detail": null,
                "displays": 1,
                "key": "window",
                "label": "Schaufenster",
                "locations": 1,
                "merged": false,
                "share": 0.5817,
                "validPlays": 4612
              },
              {
                "airtimeSeconds": 33160,
                "contacts": 0,
                "detail": null,
                "displays": 1,
                "key": "checkout",
                "label": "Kasse",
                "locations": 0,
                "merged": false,
                "share": 0.4183,
                "validPlays": 3316
              }
            ],
            "region": [
              {
                "airtimeSeconds": 46120,
                "contacts": 39640,
                "detail": null,
                "displays": 1,
                "key": "DE-HH",
                "label": "Hamburg",
                "locations": 1,
                "merged": false,
                "share": 0.5817,
                "validPlays": 4612
              },
              {
                "airtimeSeconds": 33160,
                "contacts": 0,
                "detail": null,
                "displays": 1,
                "key": "none",
                "label": "Ohne Angabe",
                "locations": 0,
                "merged": false,
                "share": 0.4183,
                "validPlays": 3316
              }
            ],
            "venueType": [
              {
                "airtimeSeconds": 46120,
                "contacts": 39640,
                "detail": null,
                "displays": 1,
                "key": "pharmacy",
                "label": "Apotheke",
                "locations": 1,
                "merged": false,
                "share": 0.5817,
                "validPlays": 4612
              },
              {
                "airtimeSeconds": 33160,
                "contacts": 0,
                "detail": null,
                "displays": 1,
                "key": "none",
                "label": "Ohne Angabe",
                "locations": 0,
                "merged": false,
                "share": 0.4183,
                "validPlays": 3316
              }
            ]
          },
          "failures": {
            "byReason": [
              {
                "plays": 146,
                "reason": "too_short",
                "share": 0.5141
              },
              {
                "plays": 100,
                "reason": "panel_off",
                "share": 0.3521
              },
              {
                "plays": 38,
                "reason": "render_error",
                "share": 0.1338
              }
            ],
            "invalidPlays": 284,
            "openGapPlace": "Schaufenster Eingang, Hamburg",
            "openGapPlays": 54,
            "panelUnconfirmedPlace": "Kasse 2",
            "panelUnconfirmedPlays": 3316,
            "shareOfPlanned": 0.0351
          },
          "from": "2026-09-01",
          "lines": [
            {
              "bookingLineId": "bkl_01KXR4Q9T0BKNG000000000001",
              "endsOn": "2026-10-31",
              "name": "Schaufenster und Kasse",
              "panelUnconfirmedShare": 0.4183,
              "reachedDisplays": 2,
              "startsOn": "2026-09-01",
              "state": {
                "commitment": {
                  "quantity": 12000,
                  "unit": "plays"
                },
                "delivered": {
                  "airtimeSeconds": 79280,
                  "contacts": 39640,
                  "plays": 8212,
                  "validPlays": 7928
                },
                "deliveredInUnit": 7928,
                "expectedShare": 0.6429,
                "forecast": {
                  "at": "2026-10-31",
                  "high": 12480,
                  "highShare": 1.04,
                  "low": 11890,
                  "lowShare": 0.9908,
                  "share": 1.0278,
                  "value": 12333
                },
                "fulfilment": 0.6607,
                "pacing": 1.0277,
                "plannedPlaysToDate": 8100,
                "plannedPlaysTotal": 12600,
                "risk": "warning",
                "riskPlace": "Schaufenster Eingang, Hamburg",
                "riskReason": "reportingGaps",
                "riskText": "Schaufenster Eingang, Hamburg meldet sich nicht"
              },
              "targetedDisplays": 2
            }
          ],
          "method": {
            "contactModel": 1,
            "networkParameters": null,
            "validityRule": 1
          },
          "notices": [
            {
              "code": "openGaps",
              "params": {
                "deadline": "2026-10-17T09:00:00.000Z",
                "hours": 3
              },
              "text": "3 Planstunden sind noch nicht gemeldet und können bis 17.10.2026, 11:00 nachkommen. Die Zahlen können noch steigen."
            }
          ],
          "periods": [
            {
              "closeDueOn": "2026-10-09",
              "closes": [
                {
                  "closedAt": "2026-10-09T04:00:00.000Z",
                  "kind": "closing",
                  "number": "NW-2026-09-0001",
                  "periodCloseId": "pcl_01KYAZ4M80PRFNG00000000001",
                  "signedAt": "2026-10-09T04:00:03.000Z"
                }
              ],
              "from": "2026-09-01",
              "month": "2026-09",
              "plannedPlays": 6000,
              "state": "closed",
              "to": "2026-09-30",
              "validPlays": 5874
            },
            {
              "closeDueOn": "2026-11-09",
              "closes": [],
              "from": "2026-10-01",
              "month": "2026-10",
              "plannedPlays": 6600,
              "state": "interim",
              "to": "2026-10-31",
              "validPlays": 2054
            }
          ],
          "summary": {
            "commitment": {
              "quantity": 12000,
              "unit": "plays"
            },
            "delivered": {
              "airtimeSeconds": 79280,
              "contacts": 39640,
              "plays": 8212,
              "validPlays": 7928
            },
            "deliveredInUnit": 7928,
            "expectedShare": 0.6429,
            "forecast": {
              "at": "2026-10-31",
              "high": 12480,
              "highShare": 1.04,
              "low": 11890,
              "lowShare": 0.9908,
              "share": 1.0278,
              "value": 12333
            },
            "fulfilment": 0.6607,
            "pacing": 1.0277,
            "plannedPlaysToDate": 8100,
            "plannedPlaysTotal": 12600,
            "risk": "warning",
            "riskPlace": "Schaufenster Eingang, Hamburg",
            "riskReason": "reportingGaps",
            "riskText": "Schaufenster Eingang, Hamburg meldet sich nicht"
          },
          "to": "2026-10-11"
        },
        "properties": {
          "asOf": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "campaign": {
            "$ref": "#/components/schemas/AnalyticsDeliveryCampaign"
          },
          "contacts": {
            "$ref": "#/components/schemas/AnalyticsContactsByGrade"
          },
          "coverage": {
            "$ref": "#/components/schemas/AnalyticsDeliveryCoverage"
          },
          "curve": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsDeliveryCurvePoint"
            },
            "type": "array"
          },
          "distribution": {
            "$ref": "#/components/schemas/AnalyticsDeliveryDistribution"
          },
          "failures": {
            "$ref": "#/components/schemas/AnalyticsDeliveryFailures"
          },
          "from": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "lines": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsLineDelivery"
            },
            "type": "array"
          },
          "method": {
            "$ref": "#/components/schemas/ExploreMethod"
          },
          "notices": {
            "items": {
              "$ref": "#/components/schemas/ExploreNotice"
            },
            "type": "array"
          },
          "periods": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsDeliveryPeriod"
            },
            "type": "array"
          },
          "summary": {
            "$ref": "#/components/schemas/AnalyticsDeliveryState"
          },
          "to": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          }
        },
        "required": [
          "campaign",
          "from",
          "to",
          "asOf",
          "method",
          "summary",
          "lines",
          "curve",
          "distribution",
          "failures",
          "contacts",
          "coverage",
          "periods",
          "notices"
        ],
        "type": "object"
      },
      "AnalyticsCompleteness": {
        "example": {
          "late": 0,
          "missing": 0,
          "onTime": 0,
          "plannedHours": 0
        },
        "properties": {
          "late": {
            "minimum": 0,
            "type": "integer"
          },
          "missing": {
            "minimum": 0,
            "type": "integer"
          },
          "onTime": {
            "minimum": 0,
            "type": "integer"
          },
          "plannedHours": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "plannedHours",
          "onTime",
          "late",
          "missing"
        ],
        "type": "object"
      },
      "AnalyticsContactsByGrade": {
        "example": {
          "byGrade": [
            {
              "contacts": 0,
              "grade": "A",
              "locations": [
                {
                  "companionFactor": 1,
                  "label": "sample",
                  "measuredFrom": "2026-07-08",
                  "source": "counter"
                }
              ],
              "share": 0
            }
          ],
          "contactModelVersion": 1,
          "gradeCIncluded": false,
          "total": 0
        },
        "properties": {
          "byGrade": {
            "items": {
              "properties": {
                "contacts": {
                  "minimum": 0,
                  "type": "number"
                },
                "grade": {
                  "enum": [
                    "A",
                    "B",
                    "C"
                  ],
                  "type": "string"
                },
                "locations": {
                  "items": {
                    "properties": {
                      "companionFactor": {
                        "exclusiveMinimum": 0,
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "label": {
                        "type": "string"
                      },
                      "measuredFrom": {
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "source": {
                        "enum": [
                          "counter",
                          "survey_kit",
                          "pos_receipts",
                          "self_reported"
                        ],
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    },
                    "required": [
                      "label",
                      "source",
                      "measuredFrom",
                      "companionFactor"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "share": {
                  "maximum": 1,
                  "minimum": 0,
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "grade",
                "contacts",
                "share",
                "locations"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "contactModelVersion": {
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "gradeCIncluded": {
            "type": "boolean"
          },
          "total": {
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "total",
          "contactModelVersion",
          "gradeCIncluded",
          "byGrade"
        ],
        "type": "object"
      },
      "AnalyticsContentDay": {
        "example": {
          "airtimeSeconds": 0,
          "day": "2026-07-08",
          "plays": 0
        },
        "properties": {
          "airtimeSeconds": {
            "minimum": 0,
            "type": "number"
          },
          "day": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "plays": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "day",
          "airtimeSeconds",
          "plays"
        ],
        "type": "object"
      },
      "AnalyticsContentPlaceEntry": {
        "example": {
          "airtimeSeconds": 0,
          "id": "sample",
          "locationName": "sample",
          "name": "sample",
          "plays": 0
        },
        "properties": {
          "airtimeSeconds": {
            "minimum": 0,
            "type": "number"
          },
          "id": {
            "type": "string"
          },
          "locationName": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "plays": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "name",
          "locationName",
          "airtimeSeconds",
          "plays"
        ],
        "type": "object"
      },
      "AnalyticsContentProfileCell": {
        "example": {
          "airtimeSeconds": 0,
          "hourOfDay": 0,
          "plays": 0,
          "weekday": 1
        },
        "properties": {
          "airtimeSeconds": {
            "minimum": 0,
            "type": "number"
          },
          "hourOfDay": {
            "maximum": 23,
            "minimum": 0,
            "type": "integer"
          },
          "plays": {
            "minimum": 0,
            "type": "integer"
          },
          "weekday": {
            "maximum": 7,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "weekday",
          "hourOfDay",
          "airtimeSeconds",
          "plays"
        ],
        "type": "object"
      },
      "AnalyticsContentRankingEntry": {
        "example": {
          "airtimeSeconds": 251280,
          "content": {
            "id": "scn_01KJPX8NH0SZENE00000000001",
            "kind": "scene",
            "name": "Willkommen & Öffnungszeiten"
          },
          "displays": 3,
          "locations": 1,
          "plays": 8376,
          "shareOfOwnAirtime": 0.4229,
          "validPlays": 8342
        },
        "properties": {
          "airtimeSeconds": {
            "minimum": 0,
            "type": "number"
          },
          "content": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AnalyticsContentRef"
              },
              {
                "type": "object"
              }
            ]
          },
          "displays": {
            "minimum": 0,
            "type": "integer"
          },
          "locations": {
            "minimum": 0,
            "type": "integer"
          },
          "plays": {
            "minimum": 0,
            "type": "integer"
          },
          "shareOfOwnAirtime": {
            "maximum": 1,
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "validPlays": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "content",
          "airtimeSeconds",
          "plays",
          "validPlays",
          "displays",
          "locations",
          "shareOfOwnAirtime"
        ],
        "type": "object"
      },
      "AnalyticsContentRef": {
        "example": {
          "id": "sample",
          "kind": "scene",
          "name": "sample"
        },
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "enum": [
              "scene",
              "playlist",
              "asset",
              "creative",
              "fallback"
            ],
            "type": "string"
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "kind",
          "id",
          "name"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "AnalyticsDayEvent": {
        "example": {
          "at": "2026-01-01T00:00:00.000Z",
          "code": "sample",
          "content": {
            "id": "sample",
            "kind": "scene",
            "name": "sample"
          },
          "count": 0,
          "kind": "planChanged",
          "until": "2026-01-01T00:00:00.000Z"
        },
        "properties": {
          "at": {
            "format": "date-time",
            "type": "string"
          },
          "code": {
            "type": [
              "string",
              "null"
            ]
          },
          "content": {
            "$ref": "#/components/schemas/AnalyticsContentRef"
          },
          "count": {
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "kind": {
            "enum": [
              "planChanged",
              "restart",
              "update",
              "offline",
              "online",
              "panelStandby",
              "renderErrors"
            ],
            "type": "string"
          },
          "until": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "kind",
          "at",
          "until",
          "code",
          "count",
          "content"
        ],
        "type": "object"
      },
      "AnalyticsDelivered": {
        "example": {
          "airtimeSeconds": 0,
          "contacts": 0,
          "plays": 0,
          "validPlays": 0
        },
        "properties": {
          "airtimeSeconds": {
            "minimum": 0,
            "type": "number"
          },
          "contacts": {
            "minimum": 0,
            "type": "number"
          },
          "plays": {
            "minimum": 0,
            "type": "integer"
          },
          "validPlays": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "validPlays",
          "plays",
          "airtimeSeconds",
          "contacts"
        ],
        "type": "object"
      },
      "AnalyticsDeliveryCampaign": {
        "example": {
          "advertiserId": "adv_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "advertiserName": "sample",
          "campaignId": "acp_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "dayCount": 1,
          "dayNumber": 0,
          "endsOn": "2026-07-08",
          "goal": "plays",
          "name": "sample",
          "owner": "tenant",
          "phase": "draft",
          "startsOn": "2026-07-08",
          "status": "draft",
          "timezone": "Europe/Berlin"
        },
        "properties": {
          "advertiserId": {
            "pattern": "^adv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "advertiserName": {
            "type": [
              "string",
              "null"
            ]
          },
          "campaignId": {
            "pattern": "^acp_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "dayCount": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "dayNumber": {
            "minimum": 0,
            "type": "integer"
          },
          "endsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "goal": {
            "enum": [
              "plays",
              "airtime",
              "contacts"
            ],
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "owner": {
            "enum": [
              "tenant",
              "network"
            ],
            "type": "string"
          },
          "phase": {
            "enum": [
              "draft",
              "upcoming",
              "running",
              "paused",
              "ended",
              "cancelled"
            ],
            "type": "string"
          },
          "startsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "status": {
            "enum": [
              "draft",
              "booked",
              "paused",
              "cancelled"
            ],
            "type": "string"
          },
          "timezone": {
            "type": "string"
          }
        },
        "required": [
          "campaignId",
          "name",
          "advertiserId",
          "advertiserName",
          "owner",
          "goal",
          "status",
          "phase",
          "startsOn",
          "endsOn",
          "timezone",
          "dayNumber",
          "dayCount"
        ],
        "type": "object"
      },
      "AnalyticsDeliveryCoverage": {
        "example": {
          "availability": {
            "upper": 0,
            "value": 0
          },
          "plannedSeconds": 0,
          "reportingDisplays": 0,
          "targetedDisplays": 0,
          "targetedLocations": 0,
          "visibleSeconds": 0
        },
        "properties": {
          "availability": {
            "$ref": "#/components/schemas/AnalyticsAvailabilityRange"
          },
          "plannedSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "reportingDisplays": {
            "minimum": 0,
            "type": "integer"
          },
          "targetedDisplays": {
            "minimum": 0,
            "type": "integer"
          },
          "targetedLocations": {
            "minimum": 0,
            "type": "integer"
          },
          "visibleSeconds": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "targetedDisplays",
          "targetedLocations",
          "reportingDisplays",
          "plannedSeconds",
          "visibleSeconds",
          "availability"
        ],
        "type": "object"
      },
      "AnalyticsDeliveryCurvePoint": {
        "example": {
          "cumulativeForecast": 0,
          "cumulativeForecastHigh": 0,
          "cumulativeForecastLow": 0,
          "cumulativePlanned": 0,
          "cumulativeValid": 0,
          "day": "2026-07-08",
          "plannedPlays": 0,
          "preview": false,
          "validPlays": 0
        },
        "properties": {
          "cumulativeForecast": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "cumulativeForecastHigh": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "cumulativeForecastLow": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "cumulativePlanned": {
            "minimum": 0,
            "type": "integer"
          },
          "cumulativeValid": {
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "day": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "plannedPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "preview": {
            "type": "boolean"
          },
          "validPlays": {
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "day",
          "plannedPlays",
          "preview",
          "validPlays",
          "cumulativePlanned",
          "cumulativeValid",
          "cumulativeForecast",
          "cumulativeForecastLow",
          "cumulativeForecastHigh"
        ],
        "type": "object"
      },
      "AnalyticsDeliveryDistribution": {
        "example": {
          "daypart": [
            {
              "airtimeSeconds": 0,
              "contacts": 0,
              "detail": "sample",
              "displays": 0,
              "key": "sample",
              "label": "sample",
              "locations": 0,
              "merged": false,
              "share": 0,
              "validPlays": 0
            }
          ],
          "location": [
            {
              "airtimeSeconds": 0,
              "contacts": 0,
              "detail": "sample",
              "displays": 0,
              "key": "sample",
              "label": "sample",
              "locations": 0,
              "merged": false,
              "share": 0,
              "validPlays": 0
            }
          ],
          "placement": [
            {
              "airtimeSeconds": 0,
              "contacts": 0,
              "detail": "sample",
              "displays": 0,
              "key": "sample",
              "label": "sample",
              "locations": 0,
              "merged": false,
              "share": 0,
              "validPlays": 0
            }
          ],
          "region": [
            {
              "airtimeSeconds": 0,
              "contacts": 0,
              "detail": "sample",
              "displays": 0,
              "key": "sample",
              "label": "sample",
              "locations": 0,
              "merged": false,
              "share": 0,
              "validPlays": 0
            }
          ],
          "venueType": [
            {
              "airtimeSeconds": 0,
              "contacts": 0,
              "detail": "sample",
              "displays": 0,
              "key": "sample",
              "label": "sample",
              "locations": 0,
              "merged": false,
              "share": 0,
              "validPlays": 0
            }
          ]
        },
        "properties": {
          "daypart": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsDistributionEntry"
            },
            "type": "array"
          },
          "location": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsDistributionEntry"
            },
            "type": "array"
          },
          "placement": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsDistributionEntry"
            },
            "type": "array"
          },
          "region": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsDistributionEntry"
            },
            "type": "array"
          },
          "venueType": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsDistributionEntry"
            },
            "type": "array"
          }
        },
        "required": [
          "location",
          "region",
          "venueType",
          "placement",
          "daypart"
        ],
        "type": "object"
      },
      "AnalyticsDeliveryFailures": {
        "example": {
          "byReason": [
            {
              "plays": 0,
              "reason": "pending",
              "share": 0
            }
          ],
          "invalidPlays": 0,
          "openGapPlace": "sample",
          "openGapPlays": 0,
          "panelUnconfirmedPlace": "sample",
          "panelUnconfirmedPlays": 0,
          "shareOfPlanned": 0
        },
        "properties": {
          "byReason": {
            "items": {
              "properties": {
                "plays": {
                  "minimum": 0,
                  "type": "integer"
                },
                "reason": {
                  "enum": [
                    "pending",
                    "valid",
                    "render_error",
                    "wrong_content",
                    "panel_off",
                    "not_visible",
                    "zone_too_small",
                    "too_short",
                    "outside_booking",
                    "not_planned",
                    "clock_unreliable"
                  ],
                  "type": "string"
                },
                "share": {
                  "maximum": 1,
                  "minimum": 0,
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "reason",
                "plays",
                "share"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "invalidPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "openGapPlace": {
            "type": [
              "string",
              "null"
            ]
          },
          "openGapPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "panelUnconfirmedPlace": {
            "type": [
              "string",
              "null"
            ]
          },
          "panelUnconfirmedPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "shareOfPlanned": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "invalidPlays",
          "shareOfPlanned",
          "byReason",
          "openGapPlays",
          "openGapPlace",
          "panelUnconfirmedPlays",
          "panelUnconfirmedPlace"
        ],
        "type": "object"
      },
      "AnalyticsDeliveryForecast": {
        "example": {
          "at": "2026-07-08",
          "high": 0,
          "highShare": 0,
          "low": 0,
          "lowShare": 0,
          "share": 0,
          "value": 0
        },
        "properties": {
          "at": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "high": {
            "minimum": 0,
            "type": "number"
          },
          "highShare": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "low": {
            "minimum": 0,
            "type": "number"
          },
          "lowShare": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "share": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "value": {
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "at",
          "value",
          "low",
          "high",
          "share",
          "lowShare",
          "highShare"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "AnalyticsDeliveryPeriod": {
        "example": {
          "closeDueOn": "2026-10-09",
          "closes": [
            {
              "closedAt": "2026-10-09T04:00:00.000Z",
              "kind": "closing",
              "number": "NW-2026-09-0001",
              "periodCloseId": "pcl_01KYAZ4M80PRFNG00000000001",
              "signedAt": "2026-10-09T04:00:03.000Z"
            }
          ],
          "from": "2026-09-01",
          "month": "2026-09",
          "plannedPlays": 6000,
          "state": "closed",
          "to": "2026-09-30",
          "validPlays": 5874
        },
        "properties": {
          "closeDueOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "closes": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsPeriodCloseRef"
            },
            "type": "array"
          },
          "from": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "month": {
            "pattern": "^\\d{4}-\\d{2}$",
            "type": "string"
          },
          "plannedPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "state": {
            "enum": [
              "closed",
              "awaitingClose",
              "interim",
              "planned"
            ],
            "type": "string"
          },
          "to": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "validPlays": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "month",
          "from",
          "to",
          "state",
          "plannedPlays",
          "validPlays",
          "closeDueOn",
          "closes"
        ],
        "type": "object"
      },
      "AnalyticsDeliveryState": {
        "example": {
          "commitment": {
            "quantity": 1,
            "unit": "plays"
          },
          "delivered": {
            "airtimeSeconds": 0,
            "contacts": 0,
            "plays": 0,
            "validPlays": 0
          },
          "deliveredInUnit": 0,
          "expectedShare": 0,
          "forecast": {
            "at": "2026-07-08",
            "high": 0,
            "highShare": 0,
            "low": 0,
            "lowShare": 0,
            "share": 0,
            "value": 0
          },
          "fulfilment": 0,
          "pacing": 0,
          "plannedPlaysToDate": 0,
          "plannedPlaysTotal": 0,
          "risk": "ok",
          "riskPlace": "sample",
          "riskReason": "missingAudienceData",
          "riskText": "sample"
        },
        "properties": {
          "commitment": {
            "$ref": "#/components/schemas/BookingCommitment"
          },
          "delivered": {
            "$ref": "#/components/schemas/AnalyticsDelivered"
          },
          "deliveredInUnit": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "expectedShare": {
            "maximum": 1,
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "forecast": {
            "$ref": "#/components/schemas/AnalyticsDeliveryForecast"
          },
          "fulfilment": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "pacing": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "plannedPlaysToDate": {
            "minimum": 0,
            "type": "integer"
          },
          "plannedPlaysTotal": {
            "minimum": 0,
            "type": "integer"
          },
          "risk": {
            "enum": [
              "ok",
              "warning",
              "danger",
              "upcoming",
              "ended",
              "noCommitment"
            ],
            "type": "string"
          },
          "riskPlace": {
            "type": [
              "string",
              "null"
            ]
          },
          "riskReason": {
            "enum": [
              "missingAudienceData",
              "panelOff",
              "renderErrors",
              "notVisible",
              "tooShort",
              "clockUnreliable",
              "wrongContent",
              "zoneTooSmall",
              "outsideBooking",
              "notPlanned",
              "reportingGaps",
              "underPlanned",
              "behindPlan"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "riskText": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "commitment",
          "delivered",
          "deliveredInUnit",
          "plannedPlaysToDate",
          "plannedPlaysTotal",
          "fulfilment",
          "expectedShare",
          "pacing",
          "forecast",
          "risk",
          "riskReason",
          "riskPlace",
          "riskText"
        ],
        "type": "object"
      },
      "AnalyticsDisplayStateInterval": {
        "example": {
          "from": "2026-01-01T00:00:00.000Z",
          "state": "visible",
          "to": "2026-01-01T00:00:00.000Z"
        },
        "properties": {
          "from": {
            "format": "date-time",
            "type": "string"
          },
          "state": {
            "enum": [
              "visible",
              "panelStandby",
              "hidden",
              "gap",
              "error"
            ],
            "type": "string"
          },
          "to": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "state",
          "from",
          "to"
        ],
        "type": "object"
      },
      "AnalyticsDistributionEntry": {
        "example": {
          "airtimeSeconds": 0,
          "contacts": 0,
          "detail": "sample",
          "displays": 0,
          "key": "sample",
          "label": "sample",
          "locations": 0,
          "merged": false,
          "share": 0,
          "validPlays": 0
        },
        "properties": {
          "airtimeSeconds": {
            "minimum": 0,
            "type": "number"
          },
          "contacts": {
            "minimum": 0,
            "type": "number"
          },
          "detail": {
            "type": [
              "string",
              "null"
            ]
          },
          "displays": {
            "minimum": 0,
            "type": "integer"
          },
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "locations": {
            "minimum": 0,
            "type": "integer"
          },
          "merged": {
            "type": "boolean"
          },
          "share": {
            "maximum": 1,
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "validPlays": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "key",
          "label",
          "detail",
          "validPlays",
          "airtimeSeconds",
          "contacts",
          "share",
          "displays",
          "locations",
          "merged"
        ],
        "type": "object"
      },
      "AnalyticsGridCell": {
        "example": {
          "day": "2026-07-08",
          "gapSeconds": 0,
          "hiddenSeconds": 0,
          "hour": 0,
          "late": false,
          "panelOffSeconds": 0,
          "plannedSeconds": 0,
          "renderErrors": 0,
          "state": "visible",
          "visibleSeconds": 0
        },
        "properties": {
          "day": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "gapSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "hiddenSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "hour": {
            "maximum": 23,
            "minimum": 0,
            "type": "integer"
          },
          "late": {
            "type": "boolean"
          },
          "panelOffSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "plannedSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "renderErrors": {
            "minimum": 0,
            "type": "integer"
          },
          "state": {
            "enum": [
              "visible",
              "late",
              "panelOff",
              "hidden",
              "missing"
            ],
            "type": "string"
          },
          "visibleSeconds": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "day",
          "hour",
          "state",
          "plannedSeconds",
          "visibleSeconds",
          "panelOffSeconds",
          "hiddenSeconds",
          "gapSeconds",
          "late",
          "renderErrors"
        ],
        "type": "object"
      },
      "AnalyticsGridRow": {
        "example": {
          "availability": {
            "upper": 0,
            "value": 0
          },
          "cells": [
            {
              "day": "2026-07-08",
              "gapSeconds": 0,
              "hiddenSeconds": 0,
              "hour": 0,
              "late": false,
              "panelOffSeconds": 0,
              "plannedSeconds": 0,
              "renderErrors": 0,
              "state": "visible",
              "visibleSeconds": 0
            }
          ],
          "diagonalInches": 1,
          "locationId": "loc_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "locationName": "sample",
          "name": "sample",
          "placement": "window",
          "playerId": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV"
        },
        "properties": {
          "availability": {
            "$ref": "#/components/schemas/AnalyticsAvailabilityRange"
          },
          "cells": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsGridCell"
            },
            "type": "array"
          },
          "diagonalInches": {
            "type": [
              "integer",
              "null"
            ]
          },
          "locationId": {
            "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "locationName": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "placement": {
            "enum": [
              "window",
              "sales_floor",
              "checkout",
              "waiting_area",
              "other"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "playerId": {
            "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "playerId",
          "name",
          "locationId",
          "locationName",
          "placement",
          "diagonalInches",
          "availability",
          "cells"
        ],
        "type": "object"
      },
      "AnalyticsLineDelivery": {
        "example": {
          "bookingLineId": "bkl_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "endsOn": "2026-07-08",
          "name": "sample",
          "panelUnconfirmedShare": 0,
          "reachedDisplays": 0,
          "startsOn": "2026-07-08",
          "state": {
            "commitment": {
              "quantity": 1,
              "unit": "plays"
            },
            "delivered": {
              "airtimeSeconds": 0,
              "contacts": 0,
              "plays": 0,
              "validPlays": 0
            },
            "deliveredInUnit": 0,
            "expectedShare": 0,
            "forecast": {
              "at": "2026-07-08",
              "high": 0,
              "highShare": 0,
              "low": 0,
              "lowShare": 0,
              "share": 0,
              "value": 0
            },
            "fulfilment": 0,
            "pacing": 0,
            "plannedPlaysToDate": 0,
            "plannedPlaysTotal": 0,
            "risk": "ok",
            "riskPlace": "sample",
            "riskReason": "missingAudienceData",
            "riskText": "sample"
          },
          "targetedDisplays": 0
        },
        "properties": {
          "bookingLineId": {
            "pattern": "^bkl_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "endsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "panelUnconfirmedShare": {
            "maximum": 1,
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "reachedDisplays": {
            "minimum": 0,
            "type": "integer"
          },
          "startsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/AnalyticsDeliveryState"
          },
          "targetedDisplays": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "bookingLineId",
          "name",
          "startsOn",
          "endsOn",
          "state",
          "targetedDisplays",
          "reachedDisplays",
          "panelUnconfirmedShare"
        ],
        "type": "object"
      },
      "AnalyticsLossContributor": {
        "example": {
          "from": "2026-01-01T00:00:00.000Z",
          "locationName": "sample",
          "playerId": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "playerName": "sample",
          "seconds": 0,
          "to": "2026-01-01T00:00:00.000Z"
        },
        "properties": {
          "from": {
            "format": "date-time",
            "type": "string"
          },
          "locationName": {
            "type": [
              "string",
              "null"
            ]
          },
          "playerId": {
            "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "playerName": {
            "type": "string"
          },
          "seconds": {
            "minimum": 0,
            "type": "integer"
          },
          "to": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "playerId",
          "playerName",
          "locationName",
          "seconds",
          "from",
          "to"
        ],
        "type": "object"
      },
      "AnalyticsLossDetails": {
        "example": {
          "gap": [
            {
              "from": "2026-01-01T00:00:00.000Z",
              "locationName": "sample",
              "playerId": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV",
              "playerName": "sample",
              "seconds": 0,
              "to": "2026-01-01T00:00:00.000Z"
            }
          ],
          "hidden": [
            {
              "from": "2026-01-01T00:00:00.000Z",
              "locationName": "sample",
              "playerId": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV",
              "playerName": "sample",
              "seconds": 0,
              "to": "2026-01-01T00:00:00.000Z"
            }
          ],
          "panelOff": [
            {
              "from": "2026-01-01T00:00:00.000Z",
              "locationName": "sample",
              "playerId": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV",
              "playerName": "sample",
              "seconds": 0,
              "to": "2026-01-01T00:00:00.000Z"
            }
          ]
        },
        "properties": {
          "gap": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsLossContributor"
            },
            "type": "array"
          },
          "hidden": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsLossContributor"
            },
            "type": "array"
          },
          "panelOff": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsLossContributor"
            },
            "type": "array"
          }
        },
        "required": [
          "panelOff",
          "gap",
          "hidden"
        ],
        "type": "object"
      },
      "AnalyticsObservationInterval": {
        "example": {
          "from": "2026-01-01T00:00:00.000Z",
          "to": "2026-01-01T00:00:00.000Z"
        },
        "properties": {
          "from": {
            "format": "date-time",
            "type": "string"
          },
          "to": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "from",
          "to"
        ],
        "type": "object"
      },
      "AnalyticsOpenGap": {
        "example": {
          "deadline": "2026-01-01T00:00:00.000Z",
          "from": "2026-01-01T00:00:00.000Z",
          "locationName": "sample",
          "playerId": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "playerName": "sample",
          "seconds": 0,
          "to": "2026-01-01T00:00:00.000Z"
        },
        "properties": {
          "deadline": {
            "format": "date-time",
            "type": "string"
          },
          "from": {
            "format": "date-time",
            "type": "string"
          },
          "locationName": {
            "type": [
              "string",
              "null"
            ]
          },
          "playerId": {
            "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "playerName": {
            "type": "string"
          },
          "seconds": {
            "minimum": 0,
            "type": "integer"
          },
          "to": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "playerId",
          "playerName",
          "locationName",
          "from",
          "to",
          "seconds",
          "deadline"
        ],
        "type": "object"
      },
      "AnalyticsOverviewCampaign": {
        "example": {
          "advertiserName": "sample",
          "campaignId": "acp_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "creditCents": 0,
          "displays": 0,
          "endsOn": "2026-07-08",
          "expectedShare": 0,
          "fulfilment": 0,
          "name": "sample",
          "owner": "tenant",
          "pacing": 0,
          "phase": "draft",
          "startsOn": "2026-07-08",
          "windowPlannedPlays": 0,
          "windowValidPlays": 0
        },
        "properties": {
          "advertiserName": {
            "type": [
              "string",
              "null"
            ]
          },
          "campaignId": {
            "pattern": "^acp_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "creditCents": {
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "displays": {
            "minimum": 0,
            "type": "integer"
          },
          "endsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "expectedShare": {
            "maximum": 1,
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "fulfilment": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "owner": {
            "enum": [
              "tenant",
              "network"
            ],
            "type": "string"
          },
          "pacing": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "phase": {
            "enum": [
              "draft",
              "upcoming",
              "running",
              "paused",
              "ended",
              "cancelled"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "startsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "windowPlannedPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "windowValidPlays": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "campaignId",
          "name",
          "advertiserName",
          "owner",
          "phase",
          "startsOn",
          "endsOn",
          "fulfilment",
          "expectedShare",
          "pacing",
          "windowValidPlays",
          "windowPlannedPlays",
          "displays",
          "creditCents"
        ],
        "type": "object"
      },
      "AnalyticsOverviewGrid": {
        "example": {
          "days": [
            "2026-07-08"
          ],
          "firstHour": 0,
          "lastHour": 0,
          "rows": [
            {
              "availability": {
                "upper": 0,
                "value": 0
              },
              "cells": [
                {
                  "day": "2026-07-08",
                  "gapSeconds": 0,
                  "hiddenSeconds": 0,
                  "hour": 0,
                  "late": false,
                  "panelOffSeconds": 0,
                  "plannedSeconds": 0,
                  "renderErrors": 0,
                  "state": "visible",
                  "visibleSeconds": 0
                }
              ],
              "diagonalInches": 1,
              "locationId": "loc_01ARZ3NDEKTSV4RRFFQ69G5FAV",
              "locationName": "sample",
              "name": "sample",
              "placement": "window",
              "playerId": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV"
            }
          ]
        },
        "properties": {
          "days": {
            "items": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string"
            },
            "type": "array"
          },
          "firstHour": {
            "maximum": 23,
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "lastHour": {
            "maximum": 23,
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "rows": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsGridRow"
            },
            "type": "array"
          }
        },
        "required": [
          "days",
          "firstHour",
          "lastHour",
          "rows"
        ],
        "type": "object"
      },
      "AnalyticsOverviewTiles": {
        "example": {
          "displays": 0,
          "gapHours": 0,
          "lateHours": 0,
          "locations": 0,
          "ownAirtimeSeconds": 0,
          "plays": 0,
          "renderErrors": 0,
          "validPlays": 0
        },
        "properties": {
          "displays": {
            "minimum": 0,
            "type": "integer"
          },
          "gapHours": {
            "minimum": 0,
            "type": "number"
          },
          "lateHours": {
            "minimum": 0,
            "type": "integer"
          },
          "locations": {
            "minimum": 0,
            "type": "integer"
          },
          "ownAirtimeSeconds": {
            "minimum": 0,
            "type": "number"
          },
          "plays": {
            "minimum": 0,
            "type": "integer"
          },
          "renderErrors": {
            "minimum": 0,
            "type": "integer"
          },
          "validPlays": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "displays",
          "locations",
          "gapHours",
          "lateHours",
          "ownAirtimeSeconds",
          "plays",
          "validPlays",
          "renderErrors"
        ],
        "type": "object"
      },
      "AnalyticsPanelInterval": {
        "example": {
          "from": "2026-01-01T00:00:00.000Z",
          "source": "cec",
          "state": "on",
          "to": "2026-01-01T00:00:00.000Z"
        },
        "properties": {
          "from": {
            "format": "date-time",
            "type": "string"
          },
          "source": {
            "enum": [
              "cec",
              "ddc",
              "none"
            ],
            "type": "string"
          },
          "state": {
            "enum": [
              "on",
              "standby",
              "unknown"
            ],
            "type": "string"
          },
          "to": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "state",
          "source",
          "from",
          "to"
        ],
        "type": "object"
      },
      "AnalyticsPeriodCloseRef": {
        "example": {
          "closedAt": "2026-01-01T00:00:00.000Z",
          "kind": "closing",
          "number": "sample",
          "periodCloseId": "sample",
          "signedAt": "2026-01-01T00:00:00.000Z"
        },
        "properties": {
          "closedAt": {
            "format": "date-time",
            "type": "string"
          },
          "kind": {
            "enum": [
              "closing",
              "addendum",
              "interim"
            ],
            "type": "string"
          },
          "number": {
            "type": [
              "string",
              "null"
            ]
          },
          "periodCloseId": {
            "type": "string"
          },
          "signedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "periodCloseId",
          "kind",
          "number",
          "closedAt",
          "signedAt"
        ],
        "type": "object"
      },
      "AnalyticsPlanSegmentView": {
        "example": {
          "changedBy": "program_changed",
          "content": {
            "id": "sample",
            "kind": "scene",
            "name": "sample"
          },
          "from": "2026-01-01T00:00:00.000Z",
          "kind": "scene",
          "pods": [
            {
              "networkPositions": 0,
              "offsetMs": 0,
              "podItemId": "pli_01ARZ3NDEKTSV4RRFFQ69G5FAV",
              "positions": 1,
              "spotDurationMs": 5000
            }
          ],
          "rotation": {
            "anchorAt": "2026-01-01T00:00:00.000Z",
            "cycleMs": 1,
            "itemCount": 1
          },
          "scheduleId": "sample",
          "scheduleName": "sample",
          "to": "2026-01-01T00:00:00.000Z"
        },
        "properties": {
          "changedBy": {
            "enum": [
              "program_changed",
              "override_changed",
              "schedule_changed",
              "playlist_changed",
              "content_changed",
              "horizon_extended"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "content": {
            "$ref": "#/components/schemas/AnalyticsContentRef"
          },
          "from": {
            "format": "date-time",
            "type": "string"
          },
          "kind": {
            "enum": [
              "scene",
              "playlist",
              "media",
              "pause",
              "gap"
            ],
            "type": "string"
          },
          "pods": {
            "items": {
              "$ref": "#/components/schemas/PlanPod"
            },
            "type": "array"
          },
          "rotation": {
            "properties": {
              "anchorAt": {
                "format": "date-time",
                "type": "string"
              },
              "cycleMs": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "itemCount": {
                "exclusiveMinimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "anchorAt",
              "cycleMs",
              "itemCount"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "scheduleId": {
            "type": [
              "string",
              "null"
            ]
          },
          "scheduleName": {
            "type": [
              "string",
              "null"
            ]
          },
          "to": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "from",
          "to",
          "kind",
          "content",
          "scheduleId",
          "scheduleName",
          "changedBy",
          "rotation",
          "pods"
        ],
        "type": "object"
      },
      "AnalyticsPlayerDayDisplay": {
        "example": {
          "diagonalInches": 1,
          "locationId": "loc_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "locationName": "sample",
          "name": "sample",
          "orientation": "landscape",
          "panelConfirmed": false,
          "placement": "window",
          "playerId": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV"
        },
        "properties": {
          "diagonalInches": {
            "type": [
              "integer",
              "null"
            ]
          },
          "locationId": {
            "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "locationName": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "orientation": {
            "enum": [
              "landscape",
              "portrait"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "panelConfirmed": {
            "type": "boolean"
          },
          "placement": {
            "enum": [
              "window",
              "sales_floor",
              "checkout",
              "waiting_area",
              "other"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "playerId": {
            "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "playerId",
          "name",
          "locationId",
          "locationName",
          "placement",
          "diagonalInches",
          "orientation",
          "panelConfirmed"
        ],
        "type": "object"
      },
      "AnalyticsPlayerDayHour": {
        "example": {
          "errorSeconds": 0,
          "gapSeconds": 0,
          "hiddenSeconds": 0,
          "hourStart": "2026-01-01T00:00:00.000Z",
          "late": false,
          "localHour": 0,
          "observedSeconds": 0,
          "panelOffSeconds": 0,
          "plannedAdPlays": 0,
          "plannedSeconds": 0,
          "plays": {
            "direct": 0,
            "fallback": 0,
            "invalid": 0,
            "network": 0,
            "own": 0,
            "total": 0
          },
          "visibleSeconds": 0
        },
        "properties": {
          "errorSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "gapSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "hiddenSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "hourStart": {
            "format": "date-time",
            "type": "string"
          },
          "late": {
            "type": "boolean"
          },
          "localHour": {
            "maximum": 23,
            "minimum": 0,
            "type": "integer"
          },
          "observedSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "panelOffSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "plannedAdPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "plannedSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "plays": {
            "$ref": "#/components/schemas/AnalyticsPlaysByKind"
          },
          "visibleSeconds": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "hourStart",
          "localHour",
          "plannedSeconds",
          "observedSeconds",
          "visibleSeconds",
          "panelOffSeconds",
          "hiddenSeconds",
          "gapSeconds",
          "errorSeconds",
          "late",
          "plays",
          "plannedAdPlays"
        ],
        "type": "object"
      },
      "AnalyticsPlayerDayTotals": {
        "example": {
          "availability": {
            "upper": 0,
            "value": 0
          },
          "invalidPlays": 0,
          "plannedAdPlays": 0,
          "plannedSeconds": 0,
          "plays": 0,
          "validAdPlays": 0,
          "validPlays": 0,
          "visibleSeconds": 0
        },
        "properties": {
          "availability": {
            "$ref": "#/components/schemas/AnalyticsAvailabilityRange"
          },
          "invalidPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "plannedAdPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "plannedSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "plays": {
            "minimum": 0,
            "type": "integer"
          },
          "validAdPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "validPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "visibleSeconds": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "plannedSeconds",
          "visibleSeconds",
          "availability",
          "plays",
          "validPlays",
          "invalidPlays",
          "validAdPlays",
          "plannedAdPlays"
        ],
        "type": "object"
      },
      "AnalyticsPlayProtocolEntry": {
        "example": {
          "bookingLineId": "bkl_01KXR4Q9T0BKNG000000000001",
          "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
          "clockOffsetMs": -42,
          "clockSource": "server_sync",
          "content": {
            "id": "crv_01KXR4RZ80MTV0000000000001",
            "kind": "creative",
            "name": "Herbstpflege Schaufenster"
          },
          "contentKind": "creative",
          "contentSha256": "7d2f4c1a9b3e6f58c0a1d2e3f4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3",
          "durationMs": 10000,
          "endedAt": "2026-10-10T07:58:40.000Z",
          "endReason": "completed",
          "errorCode": null,
          "hiddenMs": 0,
          "lateArrival": false,
          "panelStandbyMs": 0,
          "plannedMs": 10000,
          "playId": "01KYB2W8K0WDGB000000000002",
          "playlistId": "pll_01KWV91ZS0PRGRAMM000000001",
          "playlistItemId": "pli_01KXR6B7D8ENTRY00000000005",
          "playlistName": "Tagesprogramm",
          "podPosition": 0,
          "renderState": "rendered",
          "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001",
          "startedAt": "2026-10-10T07:58:30.000Z",
          "status": "valid",
          "zoneAreaShare": 1
        },
        "properties": {
          "bookingLineId": {
            "type": [
              "string",
              "null"
            ]
          },
          "campaignId": {
            "pattern": "^acp_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "clockOffsetMs": {
            "type": "integer"
          },
          "clockSource": {
            "enum": [
              "server_sync",
              "device",
              "none"
            ],
            "type": "string"
          },
          "content": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AnalyticsContentRef"
              },
              {
                "type": "object"
              }
            ]
          },
          "contentKind": {
            "enum": [
              "scene",
              "media",
              "creative",
              "fallback"
            ],
            "type": "string"
          },
          "contentSha256": {
            "type": [
              "string",
              "null"
            ]
          },
          "durationMs": {
            "minimum": 0,
            "type": "integer"
          },
          "endedAt": {
            "format": "date-time",
            "type": "string"
          },
          "endReason": {
            "enum": [
              "completed",
              "preempted",
              "reload",
              "error",
              "shutdown",
              "segment"
            ],
            "type": "string"
          },
          "errorCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "hiddenMs": {
            "minimum": 0,
            "type": "integer"
          },
          "lateArrival": {
            "type": "boolean"
          },
          "panelStandbyMs": {
            "minimum": 0,
            "type": "integer"
          },
          "plannedMs": {
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "playId": {
            "type": "string"
          },
          "playlistId": {
            "type": [
              "string",
              "null"
            ]
          },
          "playlistItemId": {
            "type": [
              "string",
              "null"
            ]
          },
          "playlistName": {
            "type": [
              "string",
              "null"
            ]
          },
          "podPosition": {
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "renderState": {
            "enum": [
              "rendered",
              "ended",
              "error",
              "stalled"
            ],
            "type": "string"
          },
          "scheduleId": {
            "type": [
              "string",
              "null"
            ]
          },
          "startedAt": {
            "format": "date-time",
            "type": "string"
          },
          "status": {
            "enum": [
              "pending",
              "valid",
              "render_error",
              "wrong_content",
              "panel_off",
              "not_visible",
              "zone_too_small",
              "too_short",
              "outside_booking",
              "not_planned",
              "clock_unreliable"
            ],
            "type": "string"
          },
          "zoneAreaShare": {
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "playId",
          "startedAt",
          "endedAt",
          "durationMs",
          "plannedMs",
          "contentKind",
          "content",
          "playlistId",
          "playlistName",
          "playlistItemId",
          "scheduleId",
          "bookingLineId",
          "campaignId",
          "podPosition",
          "status",
          "renderState",
          "errorCode",
          "endReason",
          "panelStandbyMs",
          "hiddenMs",
          "zoneAreaShare",
          "clockSource",
          "clockOffsetMs",
          "contentSha256",
          "lateArrival"
        ],
        "type": "object"
      },
      "AnalyticsPlaysByKind": {
        "example": {
          "direct": 0,
          "fallback": 0,
          "invalid": 0,
          "network": 0,
          "own": 0,
          "total": 0
        },
        "properties": {
          "direct": {
            "minimum": 0,
            "type": "integer"
          },
          "fallback": {
            "minimum": 0,
            "type": "integer"
          },
          "invalid": {
            "minimum": 0,
            "type": "integer"
          },
          "network": {
            "minimum": 0,
            "type": "integer"
          },
          "own": {
            "minimum": 0,
            "type": "integer"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "own",
          "fallback",
          "network",
          "direct",
          "invalid",
          "total"
        ],
        "type": "object"
      },
      "AnalyticsTimeBalance": {
        "example": {
          "errorSeconds": 0,
          "gapFinalSeconds": 0,
          "gapOpenSeconds": 0,
          "hiddenSeconds": 0,
          "panelOffSeconds": 0,
          "plannedSeconds": 0,
          "visibleSeconds": 0
        },
        "properties": {
          "errorSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "gapFinalSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "gapOpenSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "hiddenSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "panelOffSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "plannedSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "visibleSeconds": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "plannedSeconds",
          "visibleSeconds",
          "panelOffSeconds",
          "hiddenSeconds",
          "gapOpenSeconds",
          "gapFinalSeconds",
          "errorSeconds"
        ],
        "type": "object"
      },
      "AnalyticsTopContentEntry": {
        "example": {
          "airtimeSeconds": 251280,
          "content": {
            "id": "scn_01KJPX8NH0SZENE00000000001",
            "kind": "scene",
            "name": "Willkommen & Öffnungszeiten"
          },
          "plays": 8376
        },
        "properties": {
          "airtimeSeconds": {
            "minimum": 0,
            "type": "number"
          },
          "content": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AnalyticsContentRef"
              },
              {
                "type": "object"
              }
            ]
          },
          "plays": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "content",
          "airtimeSeconds",
          "plays"
        ],
        "type": "object"
      },
      "AnalyticsViewWindow": {
        "example": {
          "from": "2026-07-08",
          "historyDays": 0,
          "requestedFrom": "2026-07-08",
          "requestedTo": "2026-07-08",
          "teaser": false,
          "timezone": "Europe/Berlin",
          "to": "2026-07-08"
        },
        "properties": {
          "from": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "historyDays": {
            "minimum": 0,
            "type": "integer"
          },
          "requestedFrom": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "requestedTo": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "teaser": {
            "type": "boolean"
          },
          "timezone": {
            "type": "string"
          },
          "to": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          }
        },
        "required": [
          "from",
          "to",
          "timezone",
          "requestedFrom",
          "requestedTo",
          "teaser",
          "historyDays"
        ],
        "type": "object"
      },
      "AppDataDeletion": {
        "example": {
          "appId": "pharmacies-on-duty",
          "cancelledAt": null,
          "completedAt": null,
          "dueAt": "2026-08-19T09:15:00.000Z",
          "inventory": {
            "resources": [
              {
                "count": 2,
                "id": "pharmacies-on-duty-location",
                "name": "Standorte"
              },
              {
                "count": 14,
                "id": "pharmacies-on-duty-schedule",
                "name": "Dienstpläne"
              }
            ],
            "total": 16
          },
          "requestedAt": "2026-07-20T09:15:00.000Z",
          "requestedById": "usr_01KERQ74K0TEAM000000000001",
          "state": "scheduled"
        },
        "properties": {
          "appId": {
            "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
            "type": "string"
          },
          "cancelledAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "completedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "dueAt": {
            "format": "date-time",
            "type": "string"
          },
          "inventory": {
            "$ref": "#/components/schemas/AppDataInventory"
          },
          "requestedAt": {
            "format": "date-time",
            "type": "string"
          },
          "requestedById": {
            "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "state": {
            "enum": [
              "scheduled",
              "cancelled",
              "completed"
            ],
            "type": "string"
          }
        },
        "required": [
          "appId",
          "state",
          "requestedAt",
          "requestedById",
          "dueAt",
          "cancelledAt",
          "completedAt",
          "inventory"
        ],
        "type": "object"
      },
      "AppDataDeletionResponse": {
        "example": {
          "deletion": {
            "appId": "pharmacies-on-duty",
            "cancelledAt": null,
            "completedAt": null,
            "dueAt": "2026-08-19T09:15:00.000Z",
            "inventory": {
              "resources": [
                {
                  "count": 2,
                  "id": "pharmacies-on-duty-location",
                  "name": "Standorte"
                },
                {
                  "count": 14,
                  "id": "pharmacies-on-duty-schedule",
                  "name": "Dienstpläne"
                }
              ],
              "total": 16
            },
            "requestedAt": "2026-07-20T09:15:00.000Z",
            "requestedById": "usr_01KERQ74K0TEAM000000000001",
            "state": "scheduled"
          }
        },
        "properties": {
          "deletion": {
            "$ref": "#/components/schemas/AppDataDeletion"
          }
        },
        "required": [
          "deletion"
        ],
        "type": "object"
      },
      "AppDataInventory": {
        "example": {
          "resources": [
            {
              "count": 2,
              "id": "pharmacies-on-duty-location",
              "name": "Standorte"
            },
            {
              "count": 14,
              "id": "pharmacies-on-duty-schedule",
              "name": "Dienstpläne"
            }
          ],
          "total": 16
        },
        "properties": {
          "resources": {
            "items": {
              "properties": {
                "count": {
                  "minimum": 0,
                  "type": "integer"
                },
                "id": {
                  "maxLength": 100,
                  "minLength": 2,
                  "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "name",
                "count"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "resources",
          "total"
        ],
        "type": "object"
      },
      "AppInstallationHistory": {
        "example": {
          "acceptanceHistory": [
            {
              "acceptedAt": "2026-06-11T04:15:00.000Z",
              "acceptedById": "usr_01KERQ74K0TEAM000000000001",
              "acceptedVia": "auto",
              "appId": "opening-hours",
              "grantId": "tag_01KJ7BEFX0GRANT00000000003",
              "id": "aar_01KRZYA0X0ZSTMMNG000000002",
              "manifestHash": "f7109661d73894249520ae9291e790eb1d9629f6c9afb25a1491c5f34d6b7174",
              "permissions": [],
              "reasons": [],
              "releaseId": "arl_01KRZY8ZW0AVERSN0000000003",
              "resourceTypes": [],
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "version": "1.1.0"
            },
            {
              "acceptedAt": "2026-02-09T10:20:00.000Z",
              "acceptedById": "usr_01KERQ74K0TEAM000000000001",
              "acceptedVia": "manual",
              "appId": "opening-hours",
              "grantId": "tag_01KJ7BEFX0GRANT00000000003",
              "id": "aar_01KJ7BEG20ZSTMMNG000000001",
              "manifestHash": "b1719f11c555c2066539c64f1b76ddb82f89a2ede86847f422bffaa87ce1d871",
              "permissions": [],
              "reasons": [],
              "releaseId": "arl_01KJ7BEG20AVERSN0000000006",
              "resourceTypes": [],
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "version": "1.0.4"
            }
          ],
          "grant": {
            "acceptedAt": "2026-06-11T04:15:00.000Z",
            "acceptedById": "usr_01KERQ74K0TEAM000000000001",
            "acceptedManifestHash": "f7109661d73894249520ae9291e790eb1d9629f6c9afb25a1491c5f34d6b7174",
            "appId": "opening-hours",
            "declinedAt": null,
            "declinedReleaseId": null,
            "declinedVersion": null,
            "id": "tag_01KJ7BEFX0GRANT00000000003",
            "installedAt": "2026-02-09T10:20:00.000Z",
            "installedById": "usr_01KERQ74K0TEAM000000000001",
            "installedReleaseId": "arl_01KRZY8ZW0AVERSN0000000003",
            "installedVersion": "1.1.0",
            "pendingDeadline": null,
            "pendingManifestHash": null,
            "pendingReasons": [],
            "pendingReleaseId": null,
            "status": "active",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "uninstalledAt": null,
            "uninstalledById": null
          }
        },
        "properties": {
          "acceptanceHistory": {
            "items": {
              "properties": {
                "acceptedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "acceptedById": {
                  "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "acceptedVia": {
                  "enum": [
                    "manual",
                    "auto"
                  ],
                  "type": "string"
                },
                "appId": {
                  "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                  "type": "string"
                },
                "grantId": {
                  "pattern": "^tag_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "id": {
                  "pattern": "^aar_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "manifestHash": {
                  "pattern": "^[a-f0-9]{64}$",
                  "type": "string"
                },
                "permissions": {
                  "items": {
                    "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$",
                    "type": "string"
                  },
                  "type": "array"
                },
                "reasons": {
                  "items": {
                    "enum": [
                      "permissions",
                      "access",
                      "terms",
                      "retirement"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                },
                "releaseId": {
                  "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "resourceTypes": {
                  "items": {
                    "maxLength": 100,
                    "minLength": 2,
                    "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                    "type": "string"
                  },
                  "type": "array"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "version": {
                  "pattern": "^\\d+\\.\\d+\\.\\d+$",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "grantId",
                "tenantId",
                "appId",
                "manifestHash",
                "releaseId",
                "version",
                "acceptedById",
                "acceptedVia",
                "reasons",
                "acceptedAt",
                "permissions",
                "resourceTypes"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "grant": {
            "properties": {
              "acceptedAt": {
                "format": "date-time",
                "type": "string"
              },
              "acceptedById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "acceptedManifestHash": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              },
              "appId": {
                "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                "type": "string"
              },
              "declinedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "declinedReleaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "declinedVersion": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^tag_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "installedAt": {
                "format": "date-time",
                "type": "string"
              },
              "installedById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "installedReleaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "installedVersion": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": "string"
              },
              "pendingDeadline": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingManifestHash": {
                "pattern": "^[a-f0-9]{64}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingReasons": {
                "items": {
                  "enum": [
                    "permissions",
                    "access",
                    "terms",
                    "retirement"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "pendingReleaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "enum": [
                  "active",
                  "pending-reacceptance",
                  "uninstalled"
                ],
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "uninstalledAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "uninstalledById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "tenantId",
              "appId",
              "installedVersion",
              "installedReleaseId",
              "installedAt",
              "installedById",
              "acceptedManifestHash",
              "acceptedAt",
              "acceptedById",
              "status",
              "pendingManifestHash",
              "pendingReleaseId",
              "pendingReasons",
              "pendingDeadline",
              "declinedReleaseId",
              "declinedVersion",
              "declinedAt",
              "uninstalledAt",
              "uninstalledById"
            ],
            "type": "object"
          }
        },
        "required": [
          "grant",
          "acceptanceHistory"
        ],
        "type": "object"
      },
      "AppOwnerRequestView": {
        "example": {
          "appId": "calendar",
          "kind": "install",
          "message": "Für die Termine der Impfaktion im Herbst.",
          "requestedAt": "2026-07-19T15:30:00.000Z",
          "requestedById": "usr_01KFB7QPW0TEAM000000000002",
          "version": "1.2.0"
        },
        "properties": {
          "appId": {
            "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
            "type": "string"
          },
          "kind": {
            "enum": [
              "install",
              "update-decision"
            ],
            "type": "string"
          },
          "message": {
            "type": [
              "string",
              "null"
            ]
          },
          "requestedAt": {
            "format": "date-time",
            "type": "string"
          },
          "requestedById": {
            "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "version": {
            "pattern": "^\\d+\\.\\d+\\.\\d+$",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "appId",
          "kind",
          "requestedAt",
          "requestedById",
          "message",
          "version"
        ],
        "type": "object"
      },
      "ApproveAuthorizationRequest": {
        "example": {
          "scopes": [
            "scene.read",
            "playlist.read"
          ]
        },
        "properties": {
          "scopes": {
            "items": {
              "maxLength": 80,
              "minLength": 3,
              "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)*$",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "scopes"
        ],
        "type": "object"
      },
      "ApproveAuthorizationResponse": {
        "example": {
          "redirectUri": "sample"
        },
        "properties": {
          "redirectUri": {
            "type": "string"
          }
        },
        "required": [
          "redirectUri"
        ],
        "type": "object"
      },
      "AppSceneLiftResult": {
        "example": {
          "error": "sample",
          "from": "1.0.0",
          "name": "sample",
          "sceneId": "scn_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "sceneVersionId": "scv_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "status": "lifted",
          "to": "1.0.0"
        },
        "properties": {
          "error": {
            "type": [
              "string",
              "null"
            ]
          },
          "from": {
            "pattern": "^\\d+\\.\\d+\\.\\d+$",
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "sceneId": {
            "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "sceneVersionId": {
            "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "enum": [
              "lifted",
              "forbidden",
              "blocked",
              "conflict"
            ],
            "type": "string"
          },
          "to": {
            "pattern": "^\\d+\\.\\d+\\.\\d+$",
            "type": "string"
          }
        },
        "required": [
          "sceneId",
          "name",
          "from",
          "to",
          "status",
          "sceneVersionId",
          "error"
        ],
        "type": "object"
      },
      "AppScenePin": {
        "example": {
          "from": "1.0.0",
          "name": "sample",
          "playing": "1.0.0",
          "sceneId": "scn_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "to": "1.0.0"
        },
        "properties": {
          "from": {
            "pattern": "^\\d+\\.\\d+\\.\\d+$",
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "playing": {
            "pattern": "^\\d+\\.\\d+\\.\\d+$",
            "type": "string"
          },
          "sceneId": {
            "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "to": {
            "pattern": "^\\d+\\.\\d+\\.\\d+$",
            "type": "string"
          }
        },
        "required": [
          "sceneId",
          "name",
          "from",
          "playing",
          "to"
        ],
        "type": "object"
      },
      "AppScenePinsPreviewResponse": {
        "example": {
          "appId": "pharmacies-on-duty",
          "installedVersion": "2.0.0",
          "scenes": [
            {
              "from": "1.6.0",
              "name": "Notdienst & Wetter",
              "playing": "1.6.0",
              "sceneId": "scn_01KTM1Z2Q0SZENE00000000003",
              "to": "2.0.0"
            }
          ]
        },
        "properties": {
          "appId": {
            "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
            "type": "string"
          },
          "installedVersion": {
            "pattern": "^\\d+\\.\\d+\\.\\d+$",
            "type": [
              "string",
              "null"
            ]
          },
          "scenes": {
            "items": {
              "$ref": "#/components/schemas/AppScenePin"
            },
            "type": "array"
          }
        },
        "required": [
          "appId",
          "installedVersion",
          "scenes"
        ],
        "type": "object"
      },
      "AppUpdate": {
        "example": {
          "appId": "pharmacies-on-duty",
          "changes": {
            "dataAccess": {
              "addedReads": [],
              "addedWrites": [],
              "removedReads": [],
              "removedWrites": []
            },
            "permissions": {
              "added": [
                {
                  "defaultRoles": [
                    "OWNER"
                  ],
                  "description": "Die App importiert Notdienstpläne aus einer Datei oder löst einen Abruf der Quelle aus.",
                  "key": "pharmacies-on-duty.schedule.import",
                  "label": "Notdienstpläne importieren"
                }
              ],
              "removed": []
            },
            "terms": {
              "after": {
                "key": "notdienst.bedingungen.v1",
                "summary": "Notdienstdaten stammen von der Landesapothekerkammer und können sich kurzfristig ändern.",
                "termsPath": "/app-bedingungen/notdienst"
              },
              "before": {
                "key": "notdienst.bedingungen.v1",
                "summary": "Notdienstdaten stammen von der Landesapothekerkammer und können sich kurzfristig ändern.",
                "termsPath": "/app-bedingungen/notdienst"
              },
              "changed": false
            }
          },
          "consequences": {
            "playing": [
              {
                "sceneCount": 1,
                "version": "2.0.0"
              }
            ],
            "sceneCount": 1,
            "widgetsHiddenInEditor": true
          },
          "deadline": null,
          "displayName": "Notdienst",
          "from": {
            "releaseId": "arl_01KP5RMC40AVERSN0000000005",
            "version": "2.0.0"
          },
          "notes": {
            "locale": "de-DE",
            "text": "Notdienstpläne lassen sich jetzt aus einer Datei importieren."
          },
          "reasons": [
            "permissions"
          ],
          "rejectable": true,
          "securityAdvisory": null,
          "state": "pending",
          "to": {
            "channel": "stable",
            "manifestHash": "6232f20f63df0aaff6984f3ba10b3b4fac21d45ce4b9546614b37d4d712d2c19",
            "releaseId": "arl_01KX0P4XW0AVERSN0000000002",
            "version": "2.0.1"
          }
        },
        "properties": {
          "appId": {
            "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
            "type": "string"
          },
          "changes": {
            "properties": {
              "dataAccess": {
                "properties": {
                  "addedReads": {
                    "items": {
                      "enum": [
                        "tenant-profile",
                        "tenant-branding",
                        "media-library",
                        "team",
                        "player-location",
                        "fleet-locations",
                        "location-hours"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "addedWrites": {
                    "items": {
                      "maxLength": 60,
                      "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*:create-[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "removedReads": {
                    "items": {
                      "enum": [
                        "tenant-profile",
                        "tenant-branding",
                        "media-library",
                        "team",
                        "player-location",
                        "fleet-locations",
                        "location-hours"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "removedWrites": {
                    "items": {
                      "maxLength": 60,
                      "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*:create-[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "addedReads",
                  "removedReads",
                  "addedWrites",
                  "removedWrites"
                ],
                "type": "object"
              },
              "permissions": {
                "properties": {
                  "added": {
                    "items": {
                      "properties": {
                        "defaultRoles": {
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        },
                        "description": {
                          "minLength": 1,
                          "type": "string"
                        },
                        "key": {
                          "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$",
                          "type": "string"
                        },
                        "label": {
                          "minLength": 1,
                          "type": "string"
                        }
                      },
                      "required": [
                        "key",
                        "label",
                        "description",
                        "defaultRoles"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "removed": {
                    "items": {
                      "properties": {
                        "defaultRoles": {
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        },
                        "description": {
                          "minLength": 1,
                          "type": "string"
                        },
                        "key": {
                          "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$",
                          "type": "string"
                        },
                        "label": {
                          "minLength": 1,
                          "type": "string"
                        }
                      },
                      "required": [
                        "key",
                        "label",
                        "description",
                        "defaultRoles"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "added",
                  "removed"
                ],
                "type": "object"
              },
              "terms": {
                "properties": {
                  "after": {
                    "$ref": "#/components/schemas/AppUpdateTerms"
                  },
                  "before": {
                    "$ref": "#/components/schemas/AppUpdateTerms"
                  },
                  "changed": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "before",
                  "after",
                  "changed"
                ],
                "type": "object"
              }
            },
            "required": [
              "terms",
              "permissions",
              "dataAccess"
            ],
            "type": "object"
          },
          "consequences": {
            "properties": {
              "playing": {
                "items": {
                  "properties": {
                    "sceneCount": {
                      "exclusiveMinimum": 0,
                      "type": "integer"
                    },
                    "version": {
                      "pattern": "^\\d+\\.\\d+\\.\\d+$",
                      "type": "string"
                    }
                  },
                  "required": [
                    "version",
                    "sceneCount"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "sceneCount": {
                "minimum": 0,
                "type": "integer"
              },
              "widgetsHiddenInEditor": {
                "type": "boolean"
              }
            },
            "required": [
              "sceneCount",
              "playing",
              "widgetsHiddenInEditor"
            ],
            "type": "object"
          },
          "deadline": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "displayName": {
            "type": "string"
          },
          "from": {
            "properties": {
              "releaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "version": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": "string"
              }
            },
            "required": [
              "version",
              "releaseId"
            ],
            "type": "object"
          },
          "notes": {
            "properties": {
              "locale": {
                "pattern": "^[a-z]{2}-[A-Z]{2}$",
                "type": "string"
              },
              "text": {
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "locale",
              "text"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "reasons": {
            "items": {
              "enum": [
                "permissions",
                "access",
                "terms",
                "retirement"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejectable": {
            "type": "boolean"
          },
          "securityAdvisory": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "enum": [
              "pending",
              "offer"
            ],
            "type": "string"
          },
          "to": {
            "properties": {
              "channel": {
                "enum": [
                  "canary",
                  "beta",
                  "stable",
                  "deprecated",
                  "retired"
                ],
                "type": "string"
              },
              "manifestHash": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              },
              "releaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "version": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": "string"
              }
            },
            "required": [
              "version",
              "releaseId",
              "channel",
              "manifestHash"
            ],
            "type": "object"
          }
        },
        "required": [
          "appId",
          "displayName",
          "state",
          "from",
          "to",
          "reasons",
          "notes",
          "changes",
          "consequences",
          "deadline",
          "securityAdvisory",
          "rejectable"
        ],
        "type": "object"
      },
      "AppUpdateTerms": {
        "example": {
          "key": "sample",
          "summary": "sample",
          "termsPath": "sample"
        },
        "properties": {
          "key": {
            "minLength": 1,
            "type": "string"
          },
          "summary": {
            "minLength": 1,
            "type": "string"
          },
          "termsPath": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "key",
          "summary",
          "termsPath"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "AppVersionHistoryEntry": {
        "example": {
          "note": {
            "locale": "de-DE",
            "text": "sample"
          },
          "releaseId": "arl_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "retired": false,
          "stableSince": "2026-01-01T00:00:00.000Z",
          "version": "1.0.0"
        },
        "properties": {
          "note": {
            "properties": {
              "locale": {
                "pattern": "^[a-z]{2}-[A-Z]{2}$",
                "type": "string"
              },
              "text": {
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "locale",
              "text"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "releaseId": {
            "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "retired": {
            "type": "boolean"
          },
          "stableSince": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "pattern": "^\\d+\\.\\d+\\.\\d+$",
            "type": "string"
          }
        },
        "required": [
          "releaseId",
          "version",
          "stableSince",
          "note",
          "retired"
        ],
        "type": "object"
      },
      "AssetSource": {
        "example": {
          "connectionId": "cconn_01KT3WD680CNNECTMSGRAPH001",
          "detachedAt": null,
          "etag": "\"{4A2B1C0D-9E8F-4321-ABCD-1234567890EF},7\"",
          "itemId": "01BYE5RZ6QN3ZWBTUFOFD3IFTLGRSTUVW",
          "syncedAt": "2026-07-29T16:45:00.000Z"
        },
        "properties": {
          "connectionId": {
            "pattern": "^cconn_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "detachedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "etag": {
            "maxLength": 255,
            "minLength": 1,
            "type": [
              "string",
              "null"
            ]
          },
          "itemId": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "syncedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "connectionId",
          "itemId",
          "etag",
          "syncedAt",
          "detachedAt"
        ],
        "type": "object"
      },
      "AssignRolesRequest": {
        "example": {
          "reason": "Übernimmt ab August die Bildschirm-Inhalte.",
          "role": {
            "expiresAt": null,
            "roleId": "rol_01KERPYXWRRECHT00000000002"
          }
        },
        "properties": {
          "reason": {
            "maxLength": 500,
            "type": [
              "string",
              "null"
            ]
          },
          "role": {
            "properties": {
              "expiresAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "roleId": {
                "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              }
            },
            "required": [
              "roleId"
            ],
            "type": "object"
          }
        },
        "required": [
          "role",
          "reason"
        ],
        "type": "object"
      },
      "AssignRolesResponse": {
        "example": {
          "newRoleVersion": 3,
          "rolesAdded": [
            "rol_01KERPYXWRRECHT00000000002"
          ],
          "rolesRemoved": [],
          "user": {
            "createdAt": "2026-01-19T13:40:00.000Z",
            "deletedAt": null,
            "email": "deniz.acar@demo.local",
            "emailVerifiedAt": "2026-01-19T14:02:00.000Z",
            "hasPassword": true,
            "id": "usr_01KFB7QPW0TEAM000000000002",
            "lastLoginAt": "2026-07-20T08:28:00.000Z",
            "mfaEnabled": true,
            "mfaEnabledAt": "2026-02-02T11:20:00.000Z",
            "profile": {
              "avatarAssetRef": null,
              "displayName": "Deniz Acar",
              "locale": "de-DE",
              "timezone": "Europe/Berlin"
            },
            "roleAssignments": [
              {
                "assignedAt": "2026-01-19T13:41:00.000Z",
                "assignedById": "usr_01KERQ74K0TEAM000000000001",
                "expiresAt": null,
                "roleId": "rol_01KERPYXWRRECHT00000000002"
              }
            ],
            "roleVersion": 2,
            "status": "active",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-20T08:28:00.000Z"
          }
        },
        "properties": {
          "newRoleVersion": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "rolesAdded": {
            "items": {
              "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "type": "array"
          },
          "rolesRemoved": {
            "items": {
              "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "type": "array"
          },
          "user": {
            "properties": {
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "deletedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "email": {
                "format": "email",
                "maxLength": 254,
                "type": "string"
              },
              "emailVerifiedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "hasPassword": {
                "type": "boolean"
              },
              "id": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "lastLoginAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "mfaEnabled": {
                "type": "boolean"
              },
              "mfaEnabledAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "profile": {
                "properties": {
                  "avatarAssetRef": {
                    "properties": {
                      "assetId": {
                        "description": "Datei-Kennung|Kennung der Datei in der Medienbibliothek.",
                        "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "variantSet": {
                        "description": "Fassungen|Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                        "items": {
                          "enum": [
                            "original",
                            "thumbnail",
                            "preview",
                            "webp",
                            "playback"
                          ],
                          "type": "string"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "assetId",
                      "variantSet"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "displayName": {
                    "maxLength": 100,
                    "minLength": 1,
                    "type": "string"
                  },
                  "locale": {
                    "default": "de-DE",
                    "pattern": "^[a-z]{2}(-[A-Z]{2})?$",
                    "type": "string"
                  },
                  "timezone": {
                    "default": "Europe/Berlin",
                    "type": "string"
                  }
                },
                "required": [
                  "displayName",
                  "avatarAssetRef"
                ],
                "type": "object"
              },
              "roleAssignments": {
                "items": {
                  "properties": {
                    "assignedAt": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "assignedById": {
                      "anyOf": [
                        {
                          "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        {
                          "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        {
                          "enum": [
                            "scim-directory"
                          ],
                          "type": "string"
                        },
                        {
                          "enum": [
                            "role-expiry"
                          ],
                          "type": "string"
                        }
                      ]
                    },
                    "expiresAt": {
                      "format": "date-time",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "roleId": {
                      "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    }
                  },
                  "required": [
                    "roleId",
                    "assignedAt",
                    "assignedById",
                    "expiresAt"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "roleVersion": {
                "minimum": 0,
                "type": "integer"
              },
              "status": {
                "enum": [
                  "pending",
                  "active",
                  "suspended",
                  "deleted"
                ],
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "id",
              "tenantId",
              "email",
              "emailVerifiedAt",
              "profile",
              "roleAssignments",
              "roleVersion",
              "status",
              "createdAt",
              "updatedAt",
              "deletedAt",
              "lastLoginAt",
              "mfaEnabledAt",
              "mfaEnabled",
              "hasPassword"
            ],
            "type": "object"
          }
        },
        "required": [
          "user",
          "rolesAdded",
          "rolesRemoved",
          "newRoleVersion"
        ],
        "type": "object"
      },
      "AttachPaymentMethodRequest": {
        "example": {
          "setAsDefault": false,
          "stripePaymentMethodId": "pm_karte_inhaberin"
        },
        "properties": {
          "setAsDefault": {
            "default": true,
            "type": "boolean"
          },
          "stripePaymentMethodId": {
            "type": "string"
          }
        },
        "required": [
          "stripePaymentMethodId"
        ],
        "type": "object"
      },
      "AttachPaymentMethodResponse": {
        "example": {
          "expiresAt": "2029-11-30T23:59:59.000Z",
          "kind": "card",
          "lastFour": "4412",
          "stripePaymentMethodId": "pm_karte_inhaberin"
        },
        "properties": {
          "expiresAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "enum": [
              "card",
              "sepa_debit"
            ],
            "type": "string"
          },
          "lastFour": {
            "pattern": "^\\d{4}$",
            "type": "string"
          },
          "stripePaymentMethodId": {
            "type": "string"
          }
        },
        "required": [
          "stripePaymentMethodId",
          "kind",
          "lastFour",
          "expiresAt"
        ],
        "type": "object"
      },
      "AudienceProfile": {
        "example": {
          "companionFactorPermille": 1150,
          "dwellSecondsOverride": {
            "checkout": 75,
            "other": null,
            "sales_floor": 240,
            "waiting_area": null,
            "window": null
          },
          "grade": "A",
          "locationId": "loc_01KHK4B3T0ADRESSE000000001",
          "measuredFrom": "2026-03-02",
          "measuredTo": "2026-03-15",
          "note": "Türzähler über zwei Wochen im März.",
          "seasonIndexPermille": [
            1080,
            1120,
            1050,
            980,
            950,
            900,
            880,
            900,
            980,
            1050,
            1080,
            1100
          ],
          "source": "counter",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-03-16T10:00:00.000Z",
          "version": 1,
          "visitorsPerHour": [
            [
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            [
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              18,
              26,
              31,
              34,
              38,
              30,
              27,
              29,
              33,
              36,
              24,
              0,
              0,
              0,
              0,
              0
            ],
            [
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              18,
              26,
              31,
              34,
              38,
              30,
              27,
              29,
              33,
              36,
              24,
              0,
              0,
              0,
              0,
              0
            ],
            [
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              18,
              26,
              31,
              34,
              38,
              30,
              27,
              29,
              33,
              36,
              24,
              0,
              0,
              0,
              0,
              0
            ],
            [
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              18,
              26,
              31,
              34,
              38,
              30,
              27,
              29,
              33,
              36,
              24,
              0,
              0,
              0,
              0,
              0
            ],
            [
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              18,
              26,
              31,
              34,
              38,
              30,
              27,
              29,
              33,
              36,
              24,
              0,
              0,
              0,
              0,
              0
            ],
            [
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              22,
              35,
              41,
              28,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ]
          ]
        },
        "properties": {
          "companionFactorPermille": {
            "maximum": 4000,
            "minimum": 1000,
            "type": [
              "integer",
              "null"
            ]
          },
          "dwellSecondsOverride": {
            "properties": {
              "checkout": {
                "maximum": 3600,
                "minimum": 1,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "other": {
                "maximum": 3600,
                "minimum": 1,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "sales_floor": {
                "maximum": 3600,
                "minimum": 1,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "waiting_area": {
                "maximum": 3600,
                "minimum": 1,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "window": {
                "maximum": 3600,
                "minimum": 1,
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "window",
              "sales_floor",
              "checkout",
              "waiting_area",
              "other"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "grade": {
            "enum": [
              "A",
              "B",
              "C"
            ],
            "type": "string"
          },
          "locationId": {
            "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "measuredFrom": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "measuredTo": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "note": {
            "maxLength": 500,
            "type": "string"
          },
          "seasonIndexPermille": {
            "items": {
              "maximum": 3000,
              "minimum": 100,
              "type": "integer"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "source": {
            "enum": [
              "counter",
              "survey_kit",
              "pos_receipts",
              "self_reported"
            ],
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "minimum": 0,
            "type": "integer"
          },
          "visitorsPerHour": {
            "items": {
              "items": {
                "maximum": 100000,
                "minimum": 0,
                "type": "integer"
              },
              "type": "array"
            },
            "type": "array"
          }
        },
        "required": [
          "locationId",
          "tenantId",
          "source",
          "grade",
          "visitorsPerHour",
          "dwellSecondsOverride",
          "companionFactorPermille",
          "seasonIndexPermille",
          "measuredFrom",
          "measuredTo",
          "note",
          "version",
          "updatedAt"
        ],
        "type": "object"
      },
      "AuthorizationServerMetadata": {
        "example": {
          "authorization_endpoint": "https://api.szenera.demo.local/oauth/authorize",
          "code_challenge_methods_supported": [
            "S256"
          ],
          "grant_types_supported": [
            "authorization_code",
            "refresh_token"
          ],
          "issuer": "https://api.szenera.demo.local",
          "registration_endpoint": "https://api.szenera.demo.local/oauth/register",
          "response_types_supported": [
            "code"
          ],
          "revocation_endpoint": "https://api.szenera.demo.local/oauth/revoke",
          "scopes_supported": [
            "playlist.read",
            "scene.read",
            "scene.write"
          ],
          "service_documentation": "https://example.com",
          "token_endpoint": "https://api.szenera.demo.local/oauth/token",
          "token_endpoint_auth_methods_supported": [
            "none"
          ]
        },
        "properties": {
          "authorization_endpoint": {
            "format": "uri",
            "type": "string"
          },
          "code_challenge_methods_supported": {
            "items": {
              "enum": [
                "S256"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "grant_types_supported": {
            "items": {
              "enum": [
                "authorization_code",
                "refresh_token"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "issuer": {
            "format": "uri",
            "type": "string"
          },
          "registration_endpoint": {
            "format": "uri",
            "type": "string"
          },
          "response_types_supported": {
            "items": {
              "enum": [
                "code"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "revocation_endpoint": {
            "format": "uri",
            "type": "string"
          },
          "scopes_supported": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "service_documentation": {
            "format": "uri",
            "type": "string"
          },
          "token_endpoint": {
            "format": "uri",
            "type": "string"
          },
          "token_endpoint_auth_methods_supported": {
            "items": {
              "enum": [
                "none"
              ],
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "issuer",
          "authorization_endpoint",
          "token_endpoint",
          "registration_endpoint",
          "revocation_endpoint",
          "scopes_supported",
          "response_types_supported",
          "grant_types_supported",
          "token_endpoint_auth_methods_supported",
          "code_challenge_methods_supported"
        ],
        "type": "object"
      },
      "BetaEnrollment": {
        "example": {
          "allApps": false,
          "appIds": [
            "sample"
          ]
        },
        "properties": {
          "allApps": {
            "type": "boolean"
          },
          "appIds": {
            "items": {
              "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "allApps",
          "appIds"
        ],
        "type": "object"
      },
      "BetaEnrollmentResponse": {
        "example": {
          "enrollment": {
            "allApps": false,
            "appIds": [
              "pharmacies-on-duty"
            ]
          }
        },
        "properties": {
          "enrollment": {
            "$ref": "#/components/schemas/BetaEnrollment"
          }
        },
        "required": [
          "enrollment"
        ],
        "type": "object"
      },
      "BillingAmountBlock": {
        "example": {
          "grossCents": 10849,
          "netCents": 9117,
          "vatCents": 1732
        },
        "properties": {
          "grossCents": {
            "type": "integer"
          },
          "netCents": {
            "type": "integer"
          },
          "vatCents": {
            "type": "integer"
          }
        },
        "required": [
          "netCents",
          "vatCents",
          "grossCents"
        ],
        "type": "object"
      },
      "BillingDraft": {
        "example": {
          "apps": [
            "pharmacies-on-duty"
          ],
          "billingCycle": "monthly",
          "displays": 5,
          "hardware": [],
          "packageCode": "PRO",
          "videoWalls": 1
        },
        "properties": {
          "apps": {
            "items": {
              "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
              "type": "string"
            },
            "maxItems": 100,
            "type": "array"
          },
          "billingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": "string"
          },
          "displays": {
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          },
          "hardware": {
            "items": {
              "properties": {
                "quantity": {
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "skuCode",
                "quantity"
              ],
              "type": "object"
            },
            "maxItems": 10,
            "type": "array"
          },
          "packageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": "string"
          },
          "videoWalls": {
            "maximum": 1000,
            "minimum": 0,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "BillingImmediateCharge": {
        "example": {
          "grossCents": 10849,
          "kind": "exact"
        },
        "properties": {
          "grossCents": {
            "type": [
              "integer",
              "null"
            ]
          },
          "kind": {
            "enum": [
              "exact",
              "attempted",
              "provider"
            ],
            "type": "string"
          }
        },
        "required": [
          "kind",
          "grossCents"
        ],
        "type": "object"
      },
      "BillingPartialCancellation": {
        "example": {
          "creditNote": {
            "grossCents": 1,
            "netCents": 1,
            "vatCents": 1
          },
          "invoiceNumber": "sample",
          "newGrossCents": 1,
          "previousGrossCents": 0
        },
        "properties": {
          "creditNote": {
            "$ref": "#/components/schemas/BillingAmountBlock"
          },
          "invoiceNumber": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string"
          },
          "newGrossCents": {
            "type": "integer"
          },
          "previousGrossCents": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "invoiceNumber",
          "previousGrossCents",
          "newGrossCents",
          "creditNote"
        ],
        "type": "object"
      },
      "BillingPreviewLine": {
        "example": {
          "displayName": "Paket Pro",
          "kind": "recurring",
          "netAmountCents": 9620,
          "period": {
            "end": "2026-09-16T09:15:00.000Z",
            "start": "2026-08-16T09:15:00.000Z"
          },
          "quantity": 5,
          "skuCode": "PKG-PRO",
          "specialConditionUntil": null,
          "unitPriceCents": 1924
        },
        "properties": {
          "displayName": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "kind": {
            "enum": [
              "recurring",
              "one_time",
              "credit"
            ],
            "type": "string"
          },
          "netAmountCents": {
            "type": "integer"
          },
          "period": {
            "properties": {
              "end": {
                "format": "date-time",
                "type": "string"
              },
              "start": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "start",
              "end"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "quantity": {
            "type": "integer"
          },
          "skuCode": {
            "maxLength": 60,
            "minLength": 3,
            "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
            "type": "string"
          },
          "specialConditionUntil": {
            "type": [
              "string",
              "null"
            ]
          },
          "unitPriceCents": {
            "type": "integer"
          }
        },
        "required": [
          "skuCode",
          "displayName",
          "quantity",
          "unitPriceCents",
          "netAmountCents",
          "kind",
          "period",
          "specialConditionUntil"
        ],
        "type": "object"
      },
      "BillingPreviewRequest": {
        "example": {
          "draft": {
            "apps": [
              "pharmacies-on-duty"
            ],
            "billingCycle": "monthly",
            "displays": 5,
            "hardware": [],
            "packageCode": "PRO",
            "videoWalls": 1
          },
          "entry": "display-counter",
          "purpose": "order"
        },
        "properties": {
          "draft": {
            "$ref": "#/components/schemas/BillingDraft"
          },
          "entry": {
            "enum": [
              "pricing-calculator",
              "pricing-page",
              "home-page",
              "shop",
              "content-page",
              "trial-card",
              "mail",
              "direct",
              "pairing",
              "display-counter",
              "app",
              "video-wall",
              "package",
              "billing-cycle",
              "hardware"
            ],
            "type": "string"
          },
          "purpose": {
            "default": "order",
            "enum": [
              "order",
              "payment-way",
              "payment-method"
            ],
            "type": "string"
          }
        },
        "required": [
          "draft"
        ],
        "type": "object"
      },
      "BillingPreviewResponse": {
        "example": {
          "blockers": [],
          "credit": null,
          "currency": "EUR",
          "dueToday": {
            "grossCents": 10849,
            "netCents": 9117,
            "vatCents": 1732
          },
          "effectiveAt": "2026-08-16T09:15:00.000Z",
          "endsTrial": false,
          "lines": [
            {
              "displayName": "Paket Pro",
              "kind": "recurring",
              "netAmountCents": 9620,
              "period": {
                "end": "2026-09-16T09:15:00.000Z",
                "start": "2026-08-16T09:15:00.000Z"
              },
              "quantity": 5,
              "skuCode": "PKG-PRO",
              "specialConditionUntil": null,
              "unitPriceCents": 1924
            },
            {
              "displayName": "Notdienst-Anzeige",
              "kind": "recurring",
              "netAmountCents": 900,
              "period": {
                "end": "2026-09-16T09:15:00.000Z",
                "start": "2026-08-16T09:15:00.000Z"
              },
              "quantity": 1,
              "skuCode": "APP-pharmacies-on-duty",
              "specialConditionUntil": null,
              "unitPriceCents": 900
            },
            {
              "displayName": "Leinwand",
              "kind": "recurring",
              "netAmountCents": 1900,
              "period": {
                "end": "2026-09-16T09:15:00.000Z",
                "start": "2026-08-16T09:15:00.000Z"
              },
              "quantity": 1,
              "skuCode": "LIZ-VIDEOWALL",
              "specialConditionUntil": null,
              "unitPriceCents": 1900
            },
            {
              "displayName": "Paket Starter — Gutschrift für 16 nicht verbrauchte Tage",
              "kind": "credit",
              "netAmountCents": -1893,
              "period": {
                "end": "2026-08-31T23:59:59.000Z",
                "start": "2026-08-01T00:00:00.000Z"
              },
              "quantity": -3,
              "skuCode": "PKG-START",
              "specialConditionUntil": null,
              "unitPriceCents": 631
            },
            {
              "displayName": "Notdienst-Anzeige — Gutschrift für 16 nicht verbrauchte Tage",
              "kind": "credit",
              "netAmountCents": -453,
              "period": {
                "end": "2026-08-31T23:59:59.000Z",
                "start": "2026-08-01T00:00:00.000Z"
              },
              "quantity": -1,
              "skuCode": "APP-pharmacies-on-duty",
              "specialConditionUntil": null,
              "unitPriceCents": 453
            },
            {
              "displayName": "Leinwand — Gutschrift für 16 nicht verbrauchte Tage",
              "kind": "credit",
              "netAmountCents": -957,
              "period": {
                "end": "2026-08-31T23:59:59.000Z",
                "start": "2026-08-01T00:00:00.000Z"
              },
              "quantity": -1,
              "skuCode": "LIZ-VIDEOWALL",
              "specialConditionUntil": null,
              "unitPriceCents": 957
            }
          ],
          "nextInvoiceAt": "2026-09-16T09:15:00.000Z",
          "nextPeriod": {
            "grossCents": 14780,
            "netCents": 12420,
            "vatCents": 2360
          },
          "partialCancellation": null,
          "pendingBillingCycle": null,
          "previewedAt": "2026-08-16T09:15:00.000Z",
          "previewToken": "bpv_01KERPXZM0VRSCHA0000000000",
          "rule": "R1",
          "targetState": [
            {
              "carriesDisplays": true,
              "currentQuantity": 3,
              "outcome": "changed",
              "packageCode": "PRO",
              "quantity": 5,
              "skuCode": "PKG-PRO"
            },
            {
              "carriesDisplays": false,
              "currentQuantity": 1,
              "outcome": "unchanged",
              "packageCode": null,
              "quantity": 1,
              "skuCode": "APP-pharmacies-on-duty"
            },
            {
              "carriesDisplays": false,
              "currentQuantity": 1,
              "outcome": "unchanged",
              "packageCode": null,
              "quantity": 1,
              "skuCode": "LIZ-VIDEOWALL"
            }
          ],
          "tax": {
            "category": "S",
            "exemptionCode": null,
            "hintKey": null,
            "ratePercent": 19,
            "requiresRecipientVatId": false,
            "ruleId": "de-domestic"
          },
          "tierScale": null,
          "trialCredit": null,
          "unchanged": false,
          "usedDisplays": 4,
          "validUntil": "2026-08-16T09:45:00.000Z"
        },
        "properties": {
          "blockers": {
            "items": {
              "enum": [
                "billing-profile-missing",
                "payment-way-missing",
                "overdue-invoice",
                "payment-failed",
                "tenant-frozen",
                "contract-suspended",
                "cancel-pending",
                "eu-b2b-vat-id-required",
                "goods-abroad-unsupported",
                "issuer-exemption-missing"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "credit": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BillingAmountBlock"
              },
              {
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "currency": {
            "enum": [
              "EUR"
            ],
            "type": "string"
          },
          "dueToday": {
            "$ref": "#/components/schemas/BillingAmountBlock"
          },
          "effectiveAt": {
            "format": "date-time",
            "type": "string"
          },
          "endsTrial": {
            "type": "boolean"
          },
          "lines": {
            "items": {
              "$ref": "#/components/schemas/BillingPreviewLine"
            },
            "type": "array"
          },
          "nextInvoiceAt": {
            "format": "date-time",
            "type": "string"
          },
          "nextPeriod": {
            "$ref": "#/components/schemas/BillingAmountBlock"
          },
          "partialCancellation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BillingPartialCancellation"
              },
              {
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "pendingBillingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "previewedAt": {
            "format": "date-time",
            "type": "string"
          },
          "previewToken": {
            "pattern": "^bpv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "rule": {
            "enum": [
              "R1",
              "R2"
            ],
            "type": "string"
          },
          "targetState": {
            "items": {
              "$ref": "#/components/schemas/BillingTargetStatePosition"
            },
            "type": "array"
          },
          "tax": {
            "$ref": "#/components/schemas/TaxOutcome"
          },
          "tierScale": {
            "$ref": "#/components/schemas/BillingTierScale"
          },
          "trialCredit": {
            "default": null,
            "properties": {
              "amount": {
                "$ref": "#/components/schemas/BillingAmountBlock"
              },
              "remainingDays": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "remainingDays",
              "amount"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "unchanged": {
            "type": "boolean"
          },
          "usedDisplays": {
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "validUntil": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "lines",
          "dueToday",
          "nextPeriod",
          "credit",
          "nextInvoiceAt",
          "rule",
          "effectiveAt",
          "targetState",
          "pendingBillingCycle",
          "usedDisplays",
          "partialCancellation",
          "unchanged",
          "currency",
          "tax",
          "tierScale",
          "endsTrial",
          "blockers",
          "previewToken",
          "previewedAt",
          "validUntil"
        ],
        "type": "object"
      },
      "BillingTargetStatePosition": {
        "example": {
          "carriesDisplays": true,
          "currentQuantity": 3,
          "outcome": "changed",
          "packageCode": "PRO",
          "quantity": 5,
          "skuCode": "PKG-PRO"
        },
        "properties": {
          "carriesDisplays": {
            "type": "boolean"
          },
          "currentQuantity": {
            "minimum": 0,
            "type": "integer"
          },
          "outcome": {
            "enum": [
              "unchanged",
              "changed",
              "withdrawn",
              "applied",
              "blocked"
            ],
            "type": "string"
          },
          "packageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "quantity": {
            "minimum": 0,
            "type": "integer"
          },
          "skuCode": {
            "maxLength": 60,
            "minLength": 3,
            "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
            "type": "string"
          }
        },
        "required": [
          "skuCode",
          "quantity",
          "currentQuantity",
          "packageCode",
          "carriesDisplays",
          "outcome"
        ],
        "type": "object"
      },
      "BillingTierScale": {
        "example": {
          "boundStepIndex": 1,
          "nextThresholdQuantity": 10,
          "steps": [
            {
              "fromQuantity": 1,
              "unitPriceCents": 2290,
              "upToQuantity": 4
            },
            {
              "fromQuantity": 5,
              "unitPriceCents": 2190,
              "upToQuantity": 9
            },
            {
              "fromQuantity": 10,
              "unitPriceCents": 2100,
              "upToQuantity": 14
            },
            {
              "fromQuantity": 15,
              "unitPriceCents": 2020,
              "upToQuantity": 19
            },
            {
              "fromQuantity": 20,
              "unitPriceCents": 1950,
              "upToQuantity": 24
            },
            {
              "fromQuantity": 25,
              "unitPriceCents": 1890,
              "upToQuantity": null
            }
          ]
        },
        "properties": {
          "boundStepIndex": {
            "minimum": 0,
            "type": "integer"
          },
          "nextThresholdQuantity": {
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "steps": {
            "items": {
              "$ref": "#/components/schemas/BillingTierStep"
            },
            "type": "array"
          }
        },
        "required": [
          "steps",
          "boundStepIndex",
          "nextThresholdQuantity"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "BillingTierStep": {
        "example": {
          "fromQuantity": 5,
          "unitPriceCents": 2190,
          "upToQuantity": 9
        },
        "properties": {
          "fromQuantity": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "unitPriceCents": {
            "minimum": 0,
            "type": "integer"
          },
          "upToQuantity": {
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "fromQuantity",
          "upToQuantity",
          "unitPriceCents"
        ],
        "type": "object"
      },
      "BlockDeviceRequest": {
        "example": {
          "reason": "Gerät nach einem Einbruch aus dem Schaufenster entwendet."
        },
        "properties": {
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "reason"
        ],
        "type": "object"
      },
      "BlockDeviceResponse": {
        "example": {
          "blockedAt": "2026-07-20T09:15:00.000Z",
          "certificatesRevoked": 2,
          "deviceId": "dev_01KHK32T40GERAET0000000001",
          "rendererSessionsRevoked": 1,
          "status": "blocked"
        },
        "properties": {
          "blockedAt": {
            "format": "date-time",
            "type": "string"
          },
          "certificatesRevoked": {
            "minimum": 0,
            "type": "integer"
          },
          "deviceId": {
            "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "rendererSessionsRevoked": {
            "minimum": 0,
            "type": "integer"
          },
          "status": {
            "enum": [
              "unclaimed",
              "active",
              "blocked"
            ],
            "type": "string"
          }
        },
        "required": [
          "deviceId",
          "status",
          "blockedAt",
          "rendererSessionsRevoked",
          "certificatesRevoked"
        ],
        "type": "object"
      },
      "BookAppResponse": {
        "example": {
          "apps": [
            {
              "appId": "pharmacies-on-duty",
              "booked": true,
              "displayName": "Notdienst-Anzeige",
              "effectiveMonthlyPriceCents": 900,
              "grandfathered": false,
              "installed": true,
              "monthlyPriceCents": 900,
              "pendingFailedAt": null,
              "pendingQuantity": null,
              "skuCode": "APP-pharmacies-on-duty"
            }
          ],
          "billingCycle": "monthly",
          "cancelAtPeriodEnd": false,
          "cancelEffectiveAt": null,
          "cancelScheduledAt": null,
          "currentPeriodEnd": "2026-08-31T23:59:59.000Z",
          "currentPeriodStart": "2026-08-01T00:00:00.000Z",
          "defaultPaymentMethod": null,
          "desiredPackage": null,
          "dunning": null,
          "graceUntil": null,
          "graceWindowEnd": null,
          "invoiceWayApproved": true,
          "legacyItems": [
            {
              "description": "Anmeldung über das Firmen-Login der Organisation (SSO) — jetzt Teil von Enterprise.",
              "displayName": "Enterprise-Anmeldung",
              "effectiveMonthlyPriceCents": 0,
              "grandfathered": true,
              "pendingFailedAt": null,
              "pendingQuantity": null,
              "quantity": 1,
              "skuCode": "ADDON-SSO"
            }
          ],
          "licenses": {
            "booked": 3,
            "conflictUntil": null,
            "free": 0,
            "frozen": 1,
            "pendingFailedAt": "2026-08-01T00:05:00.000Z",
            "pendingQuantity": 2,
            "used": 4
          },
          "nextInvoice": {
            "blockers": [],
            "credit": null,
            "currency": "EUR",
            "dueToday": {
              "grossCents": 0,
              "netCents": 0,
              "vatCents": 0
            },
            "effectiveAt": "2026-08-31T23:59:59.000Z",
            "endsTrial": false,
            "lines": [
              {
                "displayName": "Paket Starter",
                "kind": "recurring",
                "netAmountCents": 3756,
                "period": null,
                "quantity": 3,
                "skuCode": "PKG-START",
                "specialConditionUntil": null,
                "unitPriceCents": 1252
              },
              {
                "displayName": "Notdienst-Anzeige",
                "kind": "recurring",
                "netAmountCents": 900,
                "period": null,
                "quantity": 1,
                "skuCode": "APP-pharmacies-on-duty",
                "specialConditionUntil": null,
                "unitPriceCents": 900
              },
              {
                "displayName": "Leinwand",
                "kind": "recurring",
                "netAmountCents": 1900,
                "period": null,
                "quantity": 1,
                "skuCode": "LIZ-VIDEOWALL",
                "specialConditionUntil": null,
                "unitPriceCents": 1900
              }
            ],
            "nextInvoiceAt": "2026-08-31T23:59:59.000Z",
            "nextPeriod": {
              "grossCents": 7802,
              "netCents": 6556,
              "vatCents": 1246
            },
            "partialCancellation": null,
            "pendingBillingCycle": null,
            "previewedAt": "2026-08-16T09:15:00.000Z",
            "previewToken": "bpv_01KERPXZM0NAECHSTE00000000",
            "rule": "R2",
            "targetState": [
              {
                "carriesDisplays": true,
                "currentQuantity": 3,
                "outcome": "unchanged",
                "packageCode": "START",
                "quantity": 3,
                "skuCode": "PKG-START"
              },
              {
                "carriesDisplays": false,
                "currentQuantity": 1,
                "outcome": "unchanged",
                "packageCode": null,
                "quantity": 1,
                "skuCode": "APP-pharmacies-on-duty"
              },
              {
                "carriesDisplays": false,
                "currentQuantity": 1,
                "outcome": "unchanged",
                "packageCode": null,
                "quantity": 1,
                "skuCode": "LIZ-VIDEOWALL"
              }
            ],
            "tax": {
              "category": "S",
              "exemptionCode": null,
              "hintKey": null,
              "ratePercent": 19,
              "requiresRecipientVatId": false,
              "ruleId": "de-domestic"
            },
            "tierScale": null,
            "trialCredit": null,
            "unchanged": true,
            "usedDisplays": 4,
            "validUntil": "2026-08-16T09:45:00.000Z"
          },
          "overdueCutoff": null,
          "packageCode": "START",
          "packages": [
            {
              "available": true,
              "code": "START",
              "current": true,
              "displayName": "Starter",
              "effectiveMonthlyPriceCents": 1490,
              "listPriceCents": 1490,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 1490,
              "pending": false,
              "skuCode": "PKG-START"
            },
            {
              "available": true,
              "code": "PRO",
              "current": false,
              "displayName": "Pro",
              "effectiveMonthlyPriceCents": 2290,
              "listPriceCents": 2290,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 2290,
              "pending": false,
              "skuCode": "PKG-PRO"
            },
            {
              "available": true,
              "code": "PREMIUM",
              "current": false,
              "displayName": "Premium",
              "effectiveMonthlyPriceCents": 2790,
              "listPriceCents": 2790,
              "maxDisplays": null,
              "minDisplays": 5,
              "monthlyPriceCents": 2790,
              "pending": false,
              "skuCode": "PKG-PREMIUM"
            },
            {
              "available": false,
              "code": "ENTERPRISE",
              "current": false,
              "displayName": "Enterprise",
              "effectiveMonthlyPriceCents": 0,
              "listPriceCents": 0,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 0,
              "pending": false,
              "skuCode": "PKG-ENTERPRISE"
            }
          ],
          "paymentWay": {
            "kind": "invoice",
            "nextChargeAt": null,
            "paymentTermsDays": 14
          },
          "paymentWaySecured": true,
          "pendingBillingCycle": null,
          "pendingChangeEffectiveAt": "2026-08-31T23:59:59.000Z",
          "pendingDisplays": null,
          "pendingFailedAt": null,
          "pendingPackageCode": null,
          "pricing": {
            "billableQuantity": 3,
            "currency": "EUR",
            "currentUnitPriceCents": 1252,
            "tiers": [],
            "vatRatePercent": 19,
            "yearlyDiscountPercent": 15
          },
          "readiness": {
            "blockers": []
          },
          "source": "invoice",
          "specialConditionUntil": null,
          "status": "active",
          "tenantStatus": "active",
          "trialEndsAt": null,
          "videoWalls": {
            "available": true,
            "booked": 1,
            "displayName": "Leinwand",
            "effectiveMonthlyPriceCents": 1900,
            "grandfathered": false,
            "monthlyPriceCents": 1900,
            "pendingFailedAt": null,
            "pendingQuantity": null,
            "skuCode": "LIZ-VIDEOWALL",
            "used": 1
          }
        },
        "properties": {
          "apps": {
            "items": {
              "properties": {
                "appId": {
                  "type": "string"
                },
                "booked": {
                  "type": "boolean"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "grandfathered": {
                  "type": "boolean"
                },
                "installed": {
                  "type": "boolean"
                },
                "monthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "pendingFailedAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "pendingQuantity": {
                  "default": null,
                  "minimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "appId",
                "skuCode",
                "displayName",
                "monthlyPriceCents",
                "effectiveMonthlyPriceCents",
                "booked",
                "installed",
                "grandfathered"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "billingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": "string"
          },
          "cancelAtPeriodEnd": {
            "type": "boolean"
          },
          "cancelEffectiveAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "cancelScheduledAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "currentPeriodEnd": {
            "format": "date-time",
            "type": "string"
          },
          "currentPeriodStart": {
            "format": "date-time",
            "type": "string"
          },
          "defaultPaymentMethod": {
            "properties": {
              "expiresAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "kind": {
                "enum": [
                  "card",
                  "sepa_debit"
                ],
                "type": "string"
              },
              "lastFour": {
                "pattern": "^\\d{4}$",
                "type": "string"
              },
              "stripePaymentMethodId": {
                "type": "string"
              }
            },
            "required": [
              "stripePaymentMethodId",
              "kind",
              "lastFour",
              "expiresAt"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "desiredPackage": {
            "properties": {
              "billingCycle": {
                "enum": [
                  "monthly",
                  "yearly"
                ],
                "type": "string"
              },
              "displays": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "packageCode": {
                "enum": [
                  "START",
                  "PRO",
                  "PREMIUM",
                  "ENTERPRISE"
                ],
                "type": "string"
              }
            },
            "required": [
              "packageCode",
              "displays",
              "billingCycle"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "dunning": {
            "properties": {
              "graceUntil": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "invoiceId": {
                "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "invoiceNumber": {
                "pattern": "^(INV|GS)-\\d{4}-\\d{4,}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastDunnedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "level": {
                "maximum": 2,
                "minimum": 0,
                "type": "integer"
              },
              "reminderSentAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "level",
              "reminderSentAt",
              "lastDunnedAt",
              "graceUntil",
              "invoiceId",
              "invoiceNumber"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "graceUntil": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "graceWindowEnd": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "invoiceWayApproved": {
            "type": "boolean"
          },
          "legacyItems": {
            "items": {
              "properties": {
                "description": {
                  "type": "string"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "grandfathered": {
                  "type": "boolean"
                },
                "pendingFailedAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "pendingQuantity": {
                  "default": null,
                  "minimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "quantity": {
                  "minimum": 0,
                  "type": "integer"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "skuCode",
                "displayName",
                "description",
                "quantity",
                "effectiveMonthlyPriceCents",
                "grandfathered"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "licenses": {
            "properties": {
              "booked": {
                "minimum": 0,
                "type": "integer"
              },
              "conflictUntil": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "free": {
                "minimum": 0,
                "type": "integer"
              },
              "frozen": {
                "default": 0,
                "minimum": 0,
                "type": "integer"
              },
              "pendingFailedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingQuantity": {
                "default": null,
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "used": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "booked",
              "used",
              "free"
            ],
            "type": "object"
          },
          "nextInvoice": {
            "$ref": "#/components/schemas/BillingPreviewResponse"
          },
          "overdueCutoff": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "packageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "packages": {
            "items": {
              "properties": {
                "available": {
                  "type": "boolean"
                },
                "code": {
                  "enum": [
                    "START",
                    "PRO",
                    "PREMIUM",
                    "ENTERPRISE"
                  ],
                  "type": "string"
                },
                "current": {
                  "type": "boolean"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "listPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "maxDisplays": {
                  "exclusiveMinimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "minDisplays": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "monthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "pending": {
                  "type": "boolean"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "code",
                "skuCode",
                "displayName",
                "monthlyPriceCents",
                "listPriceCents",
                "effectiveMonthlyPriceCents",
                "maxDisplays",
                "minDisplays",
                "current",
                "pending",
                "available"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "paymentWay": {
            "properties": {
              "kind": {
                "enum": [
                  "card",
                  "sepa_debit",
                  "invoice",
                  "none"
                ],
                "type": "string"
              },
              "nextChargeAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "paymentTermsDays": {
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "kind",
              "paymentTermsDays",
              "nextChargeAt"
            ],
            "type": "object"
          },
          "paymentWaySecured": {
            "type": "boolean"
          },
          "pendingBillingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pendingChangeEffectiveAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "pendingDisplays": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "pendingFailedAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "pendingPackageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pricing": {
            "properties": {
              "billableQuantity": {
                "minimum": 0,
                "type": "integer"
              },
              "currency": {
                "enum": [
                  "EUR"
                ],
                "type": "string"
              },
              "currentUnitPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "tiers": {
                "items": {
                  "properties": {
                    "unitPriceCents": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "upToQuantity": {
                      "exclusiveMinimum": 0,
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "upToQuantity",
                    "unitPriceCents"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "vatRatePercent": {
                "maximum": 100,
                "minimum": 0,
                "type": "number"
              },
              "yearlyDiscountPercent": {
                "maximum": 100,
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "tiers",
              "currency",
              "yearlyDiscountPercent",
              "vatRatePercent",
              "currentUnitPriceCents",
              "billableQuantity"
            ],
            "type": "object"
          },
          "readiness": {
            "properties": {
              "blockers": {
                "items": {
                  "enum": [
                    "billing-profile-missing",
                    "payment-way-missing",
                    "overdue-invoice",
                    "payment-failed",
                    "tenant-frozen",
                    "contract-suspended",
                    "cancel-pending",
                    "eu-b2b-vat-id-required",
                    "goods-abroad-unsupported",
                    "issuer-exemption-missing"
                  ],
                  "type": "string"
                },
                "type": "array"
              }
            },
            "required": [
              "blockers"
            ],
            "type": "object"
          },
          "source": {
            "enum": [
              "invoice",
              "stripe"
            ],
            "type": "string"
          },
          "specialConditionUntil": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "enum": [
              "trial",
              "active",
              "past_due",
              "canceled",
              "suspended"
            ],
            "type": "string"
          },
          "tenantStatus": {
            "enum": [
              "active",
              "frozen",
              "suspended"
            ],
            "type": "string"
          },
          "trialEndsAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "videoWalls": {
            "properties": {
              "available": {
                "type": "boolean"
              },
              "booked": {
                "minimum": 0,
                "type": "integer"
              },
              "displayName": {
                "type": "string"
              },
              "effectiveMonthlyPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "grandfathered": {
                "type": "boolean"
              },
              "monthlyPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "pendingFailedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingQuantity": {
                "default": null,
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "skuCode": {
                "maxLength": 60,
                "minLength": 3,
                "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                "type": "string"
              },
              "used": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "skuCode",
              "displayName",
              "booked",
              "used",
              "monthlyPriceCents",
              "effectiveMonthlyPriceCents",
              "grandfathered",
              "available"
            ],
            "type": "object"
          }
        },
        "required": [
          "licenses",
          "packageCode",
          "pendingPackageCode",
          "packages",
          "pricing",
          "apps",
          "videoWalls",
          "legacyItems",
          "billingCycle",
          "pendingBillingCycle",
          "status",
          "trialEndsAt",
          "graceUntil",
          "currentPeriodStart",
          "currentPeriodEnd",
          "source",
          "paymentWaySecured",
          "cancelAtPeriodEnd",
          "cancelScheduledAt",
          "cancelEffectiveAt",
          "tenantStatus",
          "graceWindowEnd",
          "overdueCutoff",
          "specialConditionUntil",
          "desiredPackage",
          "invoiceWayApproved",
          "defaultPaymentMethod",
          "paymentWay",
          "dunning",
          "nextInvoice",
          "readiness"
        ],
        "type": "object"
      },
      "BookingCommitment": {
        "example": {
          "quantity": 12000,
          "unit": "plays"
        },
        "properties": {
          "quantity": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "unit": {
            "enum": [
              "plays",
              "airtime_seconds",
              "contacts"
            ],
            "type": "string"
          }
        },
        "required": [
          "unit",
          "quantity"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "BookingCreative": {
        "example": {
          "creativeId": "crv_01KXR4RZ80MTV0000000000001",
          "weight": 1
        },
        "properties": {
          "creativeId": {
            "pattern": "^crv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "weight": {
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "creativeId",
          "weight"
        ],
        "type": "object"
      },
      "BookingLine": {
        "example": {
          "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
          "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
          "commitment": {
            "quantity": 12000,
            "unit": "plays"
          },
          "createdAt": "2026-08-25T14:20:00.000Z",
          "creatives": [
            {
              "creativeId": "crv_01KXR4RZ80MTV0000000000001",
              "weight": 1
            }
          ],
          "dayparts": [
            {
              "daysOfWeek": [
                1,
                2,
                3,
                4,
                5
              ],
              "timeWindows": [
                {
                  "endTime": "18:30:00",
                  "startTime": "08:00:00"
                }
              ]
            },
            {
              "daysOfWeek": [
                6
              ],
              "timeWindows": [
                {
                  "endTime": "13:00:00",
                  "startTime": "09:00:00"
                }
              ]
            }
          ],
          "endsOn": "2026-10-31",
          "id": "bkl_01KXR4Q9T0BKNG000000000001",
          "minZoneSharePermille": 250,
          "name": "Schaufenster und Kasse",
          "owner": {
            "kind": "tenant",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          },
          "ruleVersion": 1,
          "slotsPerPodTenths": 10,
          "spotDurationMs": 10000,
          "startsOn": "2026-09-01",
          "status": "active",
          "targeting": {
            "locationIds": [
              "loc_01KHK4B3T0ADRESSE000000001"
            ],
            "placements": [
              "window",
              "checkout"
            ],
            "playerIds": [
              "ply_01KHK34MQ0SCREEN0000000001",
              "ply_01KHK3FM90SCREEN0000000006"
            ],
            "regionCodes": [
              "DE-HH"
            ],
            "tagIds": [],
            "tenantIds": [],
            "venueTypes": [
              "pharmacy"
            ]
          },
          "updatedAt": "2026-08-26T08:00:00.000Z",
          "version": 1
        },
        "properties": {
          "advertiserId": {
            "pattern": "^adv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "campaignId": {
            "pattern": "^acp_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "commitment": {
            "$ref": "#/components/schemas/BookingCommitment"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "creatives": {
            "items": {
              "$ref": "#/components/schemas/BookingCreative"
            },
            "maxItems": 20,
            "type": "array"
          },
          "dayparts": {
            "items": {
              "properties": {
                "daysOfWeek": {
                  "items": {
                    "maximum": 6,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "maxItems": 7,
                  "minItems": 1,
                  "type": "array"
                },
                "timeWindows": {
                  "items": {
                    "properties": {
                      "endTime": {
                        "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                        "type": "string"
                      },
                      "startTime": {
                        "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "startTime",
                      "endTime"
                    ],
                    "type": "object"
                  },
                  "maxItems": 8,
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "daysOfWeek",
                "timeWindows"
              ],
              "type": "object"
            },
            "maxItems": 8,
            "type": "array"
          },
          "endsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "id": {
            "pattern": "^bkl_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "minZoneSharePermille": {
            "maximum": 1000,
            "minimum": 0,
            "type": "integer"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "owner": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "tenant"
                    ],
                    "type": "string"
                  },
                  "tenantId": {
                    "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "tenantId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "network"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              }
            ]
          },
          "ruleVersion": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "slotsPerPodTenths": {
            "maximum": 120,
            "minimum": 1,
            "type": "integer"
          },
          "spotDurationMs": {
            "enum": [
              5000,
              10000,
              15000,
              20000,
              30000
            ],
            "type": "integer"
          },
          "startsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "paused"
            ],
            "type": "string"
          },
          "targeting": {
            "$ref": "#/components/schemas/BookingTargeting"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "campaignId",
          "advertiserId",
          "owner",
          "name",
          "startsOn",
          "endsOn",
          "dayparts",
          "targeting",
          "spotDurationMs",
          "slotsPerPodTenths",
          "commitment",
          "minZoneSharePermille",
          "creatives",
          "status",
          "ruleVersion",
          "version",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "BookingLinePreview": {
        "example": {
          "commitment": {
            "coveragePermille": 1130,
            "plannedQuantity": 2034,
            "quantity": 1800,
            "recommendedMaxQuantity": 1932,
            "unit": "plays"
          },
          "contacts": {
            "displaysWithoutProfile": 0,
            "estimated": 3480,
            "gradeSharePermille": {
              "A": 1000,
              "B": 0,
              "C": 0
            }
          },
          "displays": [
            {
              "contactsPerOpeningDay": 193,
              "diagonalInches": 55,
              "freeTenthsAfter": 0,
              "freeTenthsBefore": 10,
              "included": true,
              "locationId": "loc_01KHK4B3T0ADRESSE000000001",
              "locationName": "Hauptstelle",
              "orientation": "landscape",
              "panelConfirmed": true,
              "placement": "window",
              "plannedPlays": 2034,
              "plannedPlaysPerOpeningDay": 113,
              "playerId": "ply_01KHK34MQ0SCREEN0000000001",
              "playerName": "Schaufenster Eingang",
              "reason": null,
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            },
            {
              "contactsPerOpeningDay": null,
              "diagonalInches": null,
              "freeTenthsAfter": null,
              "freeTenthsBefore": null,
              "included": false,
              "locationId": null,
              "locationName": null,
              "orientation": null,
              "panelConfirmed": null,
              "placement": null,
              "plannedPlays": 0,
              "plannedPlaysPerOpeningDay": 0,
              "playerId": "ply_01KHK3FM90SCREEN0000000006",
              "playerName": "Kasse 2",
              "reason": "display_inactive",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            },
            {
              "contactsPerOpeningDay": null,
              "diagonalInches": 43,
              "freeTenthsAfter": null,
              "freeTenthsBefore": null,
              "included": false,
              "locationId": null,
              "locationName": null,
              "orientation": "portrait",
              "panelConfirmed": null,
              "placement": "waiting_area",
              "plannedPlays": 0,
              "plannedPlaysPerOpeningDay": 0,
              "playerId": "ply_01KHK3FM90SCREEN0000000002",
              "playerName": "Wartebereich",
              "reason": "not_selected",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            },
            {
              "contactsPerOpeningDay": null,
              "diagonalInches": null,
              "freeTenthsAfter": null,
              "freeTenthsBefore": null,
              "included": false,
              "locationId": null,
              "locationName": null,
              "orientation": null,
              "panelConfirmed": null,
              "placement": null,
              "plannedPlays": 0,
              "plannedPlaysPerOpeningDay": 0,
              "playerId": "ply_01KRX5JVJ0SCREEN0000000003",
              "playerName": "Beratungsraum",
              "reason": "not_selected",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            }
          ],
          "plannedPlays": 2034,
          "plannedSeconds": 20340,
          "spotDurationsAvailableMs": [
            10000
          ],
          "warnings": [
            {
              "code": "partition_full_after",
              "creativeIds": [],
              "playerIds": [
                "ply_01KHK34MQ0SCREEN0000000001"
              ]
            },
            {
              "code": "plan_extrapolated",
              "creativeIds": [],
              "playerIds": []
            }
          ],
          "weeks": [
            {
              "isoWeek": 41,
              "plannedPlays": 678,
              "weekStartsOn": "2026-10-05"
            },
            {
              "isoWeek": 42,
              "plannedPlays": 678,
              "weekStartsOn": "2026-10-12"
            },
            {
              "isoWeek": 43,
              "plannedPlays": 678,
              "weekStartsOn": "2026-10-19"
            }
          ],
          "window": {
            "activeFrom": "2026-10-04T22:00:00.000Z",
            "activeUntil": "2026-10-25T23:00:00.000Z",
            "closedDates": [],
            "days": 21,
            "openingDays": 18,
            "timezone": "Europe/Berlin"
          }
        },
        "properties": {
          "commitment": {
            "$ref": "#/components/schemas/PreviewCommitment"
          },
          "contacts": {
            "$ref": "#/components/schemas/PreviewContacts"
          },
          "displays": {
            "items": {
              "$ref": "#/components/schemas/PreviewDisplay"
            },
            "type": "array"
          },
          "plannedPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "plannedSeconds": {
            "minimum": 0,
            "type": "integer"
          },
          "spotDurationsAvailableMs": {
            "items": {
              "enum": [
                5000,
                10000,
                15000,
                20000,
                30000
              ],
              "type": "integer"
            },
            "type": "array"
          },
          "warnings": {
            "items": {
              "$ref": "#/components/schemas/PreviewWarning"
            },
            "type": "array"
          },
          "weeks": {
            "items": {
              "$ref": "#/components/schemas/PreviewWeek"
            },
            "type": "array"
          },
          "window": {
            "$ref": "#/components/schemas/PreviewWindow"
          }
        },
        "required": [
          "window",
          "plannedPlays",
          "plannedSeconds",
          "weeks",
          "commitment",
          "contacts",
          "spotDurationsAvailableMs",
          "displays",
          "warnings"
        ],
        "type": "object"
      },
      "BookingLineReach": {
        "example": {
          "blockers": [],
          "bookingLineId": "bkl_01KXR4Q9T0BKNG000000000001",
          "deliverable": true,
          "evaluatedAt": "2026-09-16T08:10:00.000Z",
          "excluded": [
            {
              "locationId": null,
              "locationName": null,
              "playerId": "ply_01KHK3FM90SCREEN0000000006",
              "playerName": "Kasse 2",
              "reason": "display_inactive",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            },
            {
              "locationId": null,
              "locationName": null,
              "playerId": "ply_01KHK3FM90SCREEN0000000002",
              "playerName": "Wartebereich",
              "reason": "not_selected",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            },
            {
              "locationId": null,
              "locationName": null,
              "playerId": "ply_01KRX5JVJ0SCREEN0000000003",
              "playerName": "Beratungsraum",
              "reason": "not_selected",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            }
          ],
          "reached": [
            {
              "locationId": "loc_01KHK4B3T0ADRESSE000000001",
              "locationName": "Hauptstelle",
              "playerId": "ply_01KHK34MQ0SCREEN0000000001",
              "playerName": "Schaufenster Eingang",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            }
          ]
        },
        "properties": {
          "blockers": {
            "items": {
              "enum": [
                "campaign_not_booked",
                "line_paused",
                "no_approved_creative",
                "period_not_started",
                "period_ended"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "bookingLineId": {
            "pattern": "^bkl_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "deliverable": {
            "type": "boolean"
          },
          "evaluatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "excluded": {
            "items": {
              "$ref": "#/components/schemas/ExcludedDisplay"
            },
            "type": "array"
          },
          "reached": {
            "items": {
              "$ref": "#/components/schemas/ReachDisplay"
            },
            "type": "array"
          }
        },
        "required": [
          "bookingLineId",
          "evaluatedAt",
          "deliverable",
          "blockers",
          "reached",
          "excluded"
        ],
        "type": "object"
      },
      "BookingTargeting": {
        "example": {
          "locationIds": [
            "loc_01KHK4B3T0ADRESSE000000001"
          ],
          "placements": [
            "window",
            "checkout"
          ],
          "playerIds": [
            "ply_01KHK34MQ0SCREEN0000000001",
            "ply_01KHK3FM90SCREEN0000000006"
          ],
          "regionCodes": [
            "DE-HH"
          ],
          "tagIds": [],
          "tenantIds": [],
          "venueTypes": [
            "pharmacy"
          ]
        },
        "properties": {
          "locationIds": {
            "items": {
              "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 200,
            "type": "array"
          },
          "placements": {
            "items": {
              "enum": [
                "window",
                "sales_floor",
                "checkout",
                "waiting_area",
                "other"
              ],
              "type": "string"
            },
            "maxItems": 5,
            "type": "array"
          },
          "playerIds": {
            "items": {
              "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 500,
            "type": "array"
          },
          "regionCodes": {
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/LocationRegion"
                },
                {
                  "type": "string"
                }
              ]
            },
            "maxItems": 50,
            "type": "array"
          },
          "tagIds": {
            "items": {
              "pattern": "^ptg_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 50,
            "type": "array"
          },
          "tenantIds": {
            "items": {
              "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 500,
            "type": "array"
          },
          "venueTypes": {
            "items": {
              "enum": [
                "pharmacy",
                "workshop",
                "bakery",
                "beverage_store",
                "grocery",
                "kiosk",
                "fitness_studio",
                "medical_practice",
                "retail",
                "other"
              ],
              "type": "string"
            },
            "maxItems": 10,
            "type": "array"
          }
        },
        "required": [
          "playerIds",
          "locationIds",
          "tagIds",
          "regionCodes",
          "venueTypes",
          "placements",
          "tenantIds"
        ],
        "type": "object"
      },
      "BookingTargetingInput": {
        "example": {
          "locationIds": [
            "loc_01KHK4B3T0ADRESSE000000001"
          ],
          "placements": [
            "window",
            "checkout"
          ],
          "playerIds": [
            "ply_01KHK34MQ0SCREEN0000000001",
            "ply_01KHK3FM90SCREEN0000000006"
          ],
          "regionCodes": [
            "DE-HH"
          ],
          "tagIds": [],
          "tenantIds": [],
          "venueTypes": [
            "pharmacy"
          ]
        },
        "properties": {
          "locationIds": {
            "default": [],
            "items": {
              "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 200,
            "type": "array"
          },
          "placements": {
            "default": [],
            "items": {
              "enum": [
                "window",
                "sales_floor",
                "checkout",
                "waiting_area",
                "other"
              ],
              "type": "string"
            },
            "maxItems": 5,
            "type": "array"
          },
          "playerIds": {
            "default": [],
            "items": {
              "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 500,
            "type": "array"
          },
          "regionCodes": {
            "default": [],
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/LocationRegion"
                },
                {
                  "type": "string"
                }
              ]
            },
            "maxItems": 50,
            "type": "array"
          },
          "tagIds": {
            "default": [],
            "items": {
              "pattern": "^ptg_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 50,
            "type": "array"
          },
          "tenantIds": {
            "default": [],
            "items": {
              "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 500,
            "type": "array"
          },
          "venueTypes": {
            "default": [],
            "items": {
              "enum": [
                "pharmacy",
                "workshop",
                "bakery",
                "beverage_store",
                "grocery",
                "kiosk",
                "fitness_studio",
                "medical_practice",
                "retail",
                "other"
              ],
              "type": "string"
            },
            "maxItems": 10,
            "type": "array"
          }
        },
        "type": "object"
      },
      "BrandAssetUploadRequest": {
        "example": {
          "mimeType": "image/svg+xml",
          "name": "logo-adler-apotheke.svg",
          "originalFileName": "logo-adler-apotheke.svg",
          "sha256": "c70e5b1d284af93602ce7418b5da09f3271e6c8b40573ade9128fbc46057a3d1",
          "sizeBytes": 12704
        },
        "properties": {
          "mimeType": {
            "enum": [
              "image/jpeg",
              "image/png",
              "image/webp",
              "image/svg+xml",
              "video/mp4",
              "video/webm",
              "application/pdf"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "originalFileName": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "sha256": {
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "sizeBytes": {
            "exclusiveMinimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "originalFileName",
          "mimeType",
          "sizeBytes",
          "sha256"
        ],
        "type": "object"
      },
      "BrandAssetUploadResponse": {
        "example": {
          "assetId": "ast_01KERR2KG0MEDEN00000000003",
          "exists": false,
          "presignedUrl": {
            "expiresInSeconds": 900,
            "headers": {
              "content-type": "image/jpeg"
            },
            "url": "https://s3.demo.local/signage-medien/uploads/angebot-oktober.jpg"
          }
        },
        "properties": {
          "assetId": {
            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "exists": {
            "type": "boolean"
          },
          "presignedUrl": {
            "properties": {
              "expiresInSeconds": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "headers": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              "url": {
                "format": "uri",
                "type": "string"
              }
            },
            "required": [
              "url",
              "headers",
              "expiresInSeconds"
            ],
            "type": [
              "object",
              "null"
            ]
          }
        },
        "required": [
          "assetId",
          "exists",
          "presignedUrl"
        ],
        "type": "object"
      },
      "BulkMoveAssetsRequest": {
        "example": {
          "assetIds": [
            "ast_01KW95DD30MEDEN00000000001",
            "ast_01KXJY2V30MEDEN00000000004"
          ],
          "folderId": "fld_01KJ7MWKW0MAPPE00000000001"
        },
        "properties": {
          "assetIds": {
            "items": {
              "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array"
          },
          "folderId": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "assetIds",
          "folderId"
        ],
        "type": "object"
      },
      "BulkMoveAssetsResponse": {
        "example": {
          "updatedCount": 12
        },
        "properties": {
          "updatedCount": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "updatedCount"
        ],
        "type": "object"
      },
      "BulkTagAssetsRequest": {
        "example": {
          "addTags": [],
          "assetIds": [
            "ast_01KW95DD30MEDEN00000000001",
            "ast_01KXJY2V30MEDEN00000000004"
          ],
          "removeTags": [],
          "tags": [
            "angebot"
          ]
        },
        "properties": {
          "addTags": {
            "default": [],
            "items": {
              "maxLength": 50,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 20,
            "type": "array"
          },
          "assetIds": {
            "items": {
              "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array"
          },
          "removeTags": {
            "default": [],
            "items": {
              "maxLength": 50,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 20,
            "type": "array"
          }
        },
        "required": [
          "assetIds"
        ],
        "type": "object"
      },
      "BulkTagAssetsResponse": {
        "example": {
          "updatedCount": 4
        },
        "properties": {
          "updatedCount": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "updatedCount"
        ],
        "type": "object"
      },
      "BulkUpdateNotificationsRequest": {
        "example": {
          "action": "dismiss",
          "ids": [
            "ntf_01KXY3N3E0HNWES00000000001",
            "ntf_01KWDPR970HNWES00000000002"
          ]
        },
        "properties": {
          "action": {
            "enum": [
              "read",
              "dismiss",
              "restore"
            ],
            "type": "string"
          },
          "ids": {
            "items": {
              "pattern": "^ntf_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "ids",
          "action"
        ],
        "type": "object"
      },
      "BulkUpdateNotificationsResponse": {
        "example": {
          "updatedCount": 2
        },
        "properties": {
          "updatedCount": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "updatedCount"
        ],
        "type": "object"
      },
      "BulkUpdateScenesRequest": {
        "example": {
          "entries": [
            {
              "ifMatch": 4,
              "patch": {
                "description": "Startbild im Schaufenster: Wortmarke, Öffnungszeiten und Uhrzeit.",
                "name": "Willkommen & Öffnungszeiten"
              },
              "sceneId": "scn_01KJPX8NH0SZENE00000000001"
            },
            {
              "ifMatch": 9,
              "patch": {
                "description": "Wechselndes Aktionsmotiv, jeden Montag neu eingesetzt.",
                "name": "Angebote der Woche"
              },
              "sceneId": "scn_01KJWKGJM0SZENE00000000002"
            }
          ]
        },
        "properties": {
          "entries": {
            "items": {
              "properties": {
                "ifMatch": {
                  "minimum": 1,
                  "type": "integer"
                },
                "patch": {
                  "$ref": "#/components/schemas/UpdateSceneRequest"
                },
                "sceneId": {
                  "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                }
              },
              "required": [
                "sceneId",
                "ifMatch",
                "patch"
              ],
              "type": "object"
            },
            "maxItems": 50,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "entries"
        ],
        "type": "object"
      },
      "BulkUpdateScenesResponse": {
        "example": {
          "entries": [
            {
              "etag": "\"5\"",
              "sceneId": "scn_01KJPX8NH0SZENE00000000001",
              "status": "ok"
            },
            {
              "error": "Die Szene wurde zwischenzeitlich geändert.",
              "etag": "\"9\"",
              "sceneId": "scn_01KJWKGJM0SZENE00000000002",
              "status": "conflict"
            }
          ]
        },
        "properties": {
          "entries": {
            "items": {
              "properties": {
                "error": {
                  "type": "string"
                },
                "etag": {
                  "type": "string"
                },
                "sceneId": {
                  "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "status": {
                  "enum": [
                    "ok",
                    "conflict",
                    "not-found",
                    "forbidden"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "sceneId",
                "status"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "entries"
        ],
        "type": "object"
      },
      "CampaignDeliveryStatus": {
        "example": {
          "fulfilmentPermille": 252,
          "pacingPermille": 1024,
          "pacingState": "on_track"
        },
        "properties": {
          "fulfilmentPermille": {
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "pacingPermille": {
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "pacingState": {
            "enum": [
              "ahead",
              "on_track",
              "behind",
              "at_risk"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "fulfilmentPermille",
          "pacingPermille",
          "pacingState"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "CampaignPricing": {
        "example": {
          "amountCents": 45000,
          "currency": "EUR",
          "model": "flat"
        },
        "oneOf": [
          {
            "properties": {
              "model": {
                "enum": [
                  "none"
                ],
                "type": "string"
              }
            },
            "required": [
              "model"
            ],
            "type": "object"
          },
          {
            "properties": {
              "amountCents": {
                "minimum": 0,
                "type": "integer"
              },
              "currency": {
                "enum": [
                  "EUR"
                ],
                "type": "string"
              },
              "model": {
                "enum": [
                  "flat"
                ],
                "type": "string"
              }
            },
            "required": [
              "model",
              "amountCents",
              "currency"
            ],
            "type": "object"
          },
          {
            "properties": {
              "amountCents": {
                "minimum": 0,
                "type": "integer"
              },
              "currency": {
                "enum": [
                  "EUR"
                ],
                "type": "string"
              },
              "model": {
                "enum": [
                  "cpm"
                ],
                "type": "string"
              }
            },
            "required": [
              "model",
              "amountCents",
              "currency"
            ],
            "type": "object"
          },
          {
            "properties": {
              "amountCents": {
                "minimum": 0,
                "type": "integer"
              },
              "currency": {
                "enum": [
                  "EUR"
                ],
                "type": "string"
              },
              "model": {
                "enum": [
                  "per_thousand_plays"
                ],
                "type": "string"
              }
            },
            "required": [
              "model",
              "amountCents",
              "currency"
            ],
            "type": "object"
          }
        ]
      },
      "CancelAppResponse": {
        "example": {
          "apps": [
            {
              "appId": "pharmacies-on-duty",
              "booked": true,
              "displayName": "Notdienst-Anzeige",
              "effectiveMonthlyPriceCents": 900,
              "grandfathered": false,
              "installed": true,
              "monthlyPriceCents": 900,
              "pendingFailedAt": null,
              "pendingQuantity": 0,
              "skuCode": "APP-pharmacies-on-duty"
            }
          ],
          "billingCycle": "monthly",
          "cancelAtPeriodEnd": false,
          "cancelEffectiveAt": null,
          "cancelScheduledAt": null,
          "currentPeriodEnd": "2026-08-31T23:59:59.000Z",
          "currentPeriodStart": "2026-08-01T00:00:00.000Z",
          "defaultPaymentMethod": null,
          "desiredPackage": null,
          "dunning": null,
          "graceUntil": null,
          "graceWindowEnd": null,
          "invoiceWayApproved": true,
          "legacyItems": [
            {
              "description": "Anmeldung über das Firmen-Login der Organisation (SSO) — jetzt Teil von Enterprise.",
              "displayName": "Enterprise-Anmeldung",
              "effectiveMonthlyPriceCents": 0,
              "grandfathered": true,
              "pendingFailedAt": null,
              "pendingQuantity": null,
              "quantity": 1,
              "skuCode": "ADDON-SSO"
            }
          ],
          "licenses": {
            "booked": 3,
            "conflictUntil": null,
            "free": 0,
            "frozen": 1,
            "pendingFailedAt": "2026-08-01T00:05:00.000Z",
            "pendingQuantity": 2,
            "used": 4
          },
          "nextInvoice": {
            "blockers": [],
            "credit": null,
            "currency": "EUR",
            "dueToday": {
              "grossCents": 0,
              "netCents": 0,
              "vatCents": 0
            },
            "effectiveAt": "2026-08-31T23:59:59.000Z",
            "endsTrial": false,
            "lines": [
              {
                "displayName": "Paket Starter",
                "kind": "recurring",
                "netAmountCents": 3756,
                "period": null,
                "quantity": 3,
                "skuCode": "PKG-START",
                "specialConditionUntil": null,
                "unitPriceCents": 1252
              },
              {
                "displayName": "Notdienst-Anzeige",
                "kind": "recurring",
                "netAmountCents": 900,
                "period": null,
                "quantity": 1,
                "skuCode": "APP-pharmacies-on-duty",
                "specialConditionUntil": null,
                "unitPriceCents": 900
              },
              {
                "displayName": "Leinwand",
                "kind": "recurring",
                "netAmountCents": 1900,
                "period": null,
                "quantity": 1,
                "skuCode": "LIZ-VIDEOWALL",
                "specialConditionUntil": null,
                "unitPriceCents": 1900
              }
            ],
            "nextInvoiceAt": "2026-08-31T23:59:59.000Z",
            "nextPeriod": {
              "grossCents": 7802,
              "netCents": 6556,
              "vatCents": 1246
            },
            "partialCancellation": null,
            "pendingBillingCycle": null,
            "previewedAt": "2026-08-16T09:15:00.000Z",
            "previewToken": "bpv_01KERPXZM0NAECHSTE00000000",
            "rule": "R2",
            "targetState": [
              {
                "carriesDisplays": true,
                "currentQuantity": 3,
                "outcome": "unchanged",
                "packageCode": "START",
                "quantity": 3,
                "skuCode": "PKG-START"
              },
              {
                "carriesDisplays": false,
                "currentQuantity": 1,
                "outcome": "unchanged",
                "packageCode": null,
                "quantity": 1,
                "skuCode": "APP-pharmacies-on-duty"
              },
              {
                "carriesDisplays": false,
                "currentQuantity": 1,
                "outcome": "unchanged",
                "packageCode": null,
                "quantity": 1,
                "skuCode": "LIZ-VIDEOWALL"
              }
            ],
            "tax": {
              "category": "S",
              "exemptionCode": null,
              "hintKey": null,
              "ratePercent": 19,
              "requiresRecipientVatId": false,
              "ruleId": "de-domestic"
            },
            "tierScale": null,
            "trialCredit": null,
            "unchanged": true,
            "usedDisplays": 4,
            "validUntil": "2026-08-16T09:45:00.000Z"
          },
          "overdueCutoff": null,
          "packageCode": "START",
          "packages": [
            {
              "available": true,
              "code": "START",
              "current": true,
              "displayName": "Starter",
              "effectiveMonthlyPriceCents": 1490,
              "listPriceCents": 1490,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 1490,
              "pending": false,
              "skuCode": "PKG-START"
            },
            {
              "available": true,
              "code": "PRO",
              "current": false,
              "displayName": "Pro",
              "effectiveMonthlyPriceCents": 2290,
              "listPriceCents": 2290,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 2290,
              "pending": false,
              "skuCode": "PKG-PRO"
            },
            {
              "available": true,
              "code": "PREMIUM",
              "current": false,
              "displayName": "Premium",
              "effectiveMonthlyPriceCents": 2790,
              "listPriceCents": 2790,
              "maxDisplays": null,
              "minDisplays": 5,
              "monthlyPriceCents": 2790,
              "pending": false,
              "skuCode": "PKG-PREMIUM"
            },
            {
              "available": false,
              "code": "ENTERPRISE",
              "current": false,
              "displayName": "Enterprise",
              "effectiveMonthlyPriceCents": 0,
              "listPriceCents": 0,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 0,
              "pending": false,
              "skuCode": "PKG-ENTERPRISE"
            }
          ],
          "paymentWay": {
            "kind": "invoice",
            "nextChargeAt": null,
            "paymentTermsDays": 14
          },
          "paymentWaySecured": true,
          "pendingBillingCycle": null,
          "pendingChangeEffectiveAt": "2026-08-31T23:59:59.000Z",
          "pendingDisplays": null,
          "pendingFailedAt": null,
          "pendingPackageCode": null,
          "pricing": {
            "billableQuantity": 3,
            "currency": "EUR",
            "currentUnitPriceCents": 1252,
            "tiers": [],
            "vatRatePercent": 19,
            "yearlyDiscountPercent": 15
          },
          "readiness": {
            "blockers": []
          },
          "source": "invoice",
          "specialConditionUntil": null,
          "status": "active",
          "tenantStatus": "active",
          "trialEndsAt": null,
          "videoWalls": {
            "available": true,
            "booked": 1,
            "displayName": "Leinwand",
            "effectiveMonthlyPriceCents": 1900,
            "grandfathered": false,
            "monthlyPriceCents": 1900,
            "pendingFailedAt": null,
            "pendingQuantity": null,
            "skuCode": "LIZ-VIDEOWALL",
            "used": 1
          }
        },
        "properties": {
          "apps": {
            "items": {
              "properties": {
                "appId": {
                  "type": "string"
                },
                "booked": {
                  "type": "boolean"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "grandfathered": {
                  "type": "boolean"
                },
                "installed": {
                  "type": "boolean"
                },
                "monthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "pendingFailedAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "pendingQuantity": {
                  "default": null,
                  "minimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "appId",
                "skuCode",
                "displayName",
                "monthlyPriceCents",
                "effectiveMonthlyPriceCents",
                "booked",
                "installed",
                "grandfathered"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "billingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": "string"
          },
          "cancelAtPeriodEnd": {
            "type": "boolean"
          },
          "cancelEffectiveAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "cancelScheduledAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "currentPeriodEnd": {
            "format": "date-time",
            "type": "string"
          },
          "currentPeriodStart": {
            "format": "date-time",
            "type": "string"
          },
          "defaultPaymentMethod": {
            "properties": {
              "expiresAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "kind": {
                "enum": [
                  "card",
                  "sepa_debit"
                ],
                "type": "string"
              },
              "lastFour": {
                "pattern": "^\\d{4}$",
                "type": "string"
              },
              "stripePaymentMethodId": {
                "type": "string"
              }
            },
            "required": [
              "stripePaymentMethodId",
              "kind",
              "lastFour",
              "expiresAt"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "desiredPackage": {
            "properties": {
              "billingCycle": {
                "enum": [
                  "monthly",
                  "yearly"
                ],
                "type": "string"
              },
              "displays": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "packageCode": {
                "enum": [
                  "START",
                  "PRO",
                  "PREMIUM",
                  "ENTERPRISE"
                ],
                "type": "string"
              }
            },
            "required": [
              "packageCode",
              "displays",
              "billingCycle"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "dunning": {
            "properties": {
              "graceUntil": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "invoiceId": {
                "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "invoiceNumber": {
                "pattern": "^(INV|GS)-\\d{4}-\\d{4,}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastDunnedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "level": {
                "maximum": 2,
                "minimum": 0,
                "type": "integer"
              },
              "reminderSentAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "level",
              "reminderSentAt",
              "lastDunnedAt",
              "graceUntil",
              "invoiceId",
              "invoiceNumber"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "graceUntil": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "graceWindowEnd": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "invoiceWayApproved": {
            "type": "boolean"
          },
          "legacyItems": {
            "items": {
              "properties": {
                "description": {
                  "type": "string"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "grandfathered": {
                  "type": "boolean"
                },
                "pendingFailedAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "pendingQuantity": {
                  "default": null,
                  "minimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "quantity": {
                  "minimum": 0,
                  "type": "integer"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "skuCode",
                "displayName",
                "description",
                "quantity",
                "effectiveMonthlyPriceCents",
                "grandfathered"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "licenses": {
            "properties": {
              "booked": {
                "minimum": 0,
                "type": "integer"
              },
              "conflictUntil": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "free": {
                "minimum": 0,
                "type": "integer"
              },
              "frozen": {
                "default": 0,
                "minimum": 0,
                "type": "integer"
              },
              "pendingFailedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingQuantity": {
                "default": null,
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "used": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "booked",
              "used",
              "free"
            ],
            "type": "object"
          },
          "nextInvoice": {
            "$ref": "#/components/schemas/BillingPreviewResponse"
          },
          "overdueCutoff": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "packageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "packages": {
            "items": {
              "properties": {
                "available": {
                  "type": "boolean"
                },
                "code": {
                  "enum": [
                    "START",
                    "PRO",
                    "PREMIUM",
                    "ENTERPRISE"
                  ],
                  "type": "string"
                },
                "current": {
                  "type": "boolean"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "listPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "maxDisplays": {
                  "exclusiveMinimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "minDisplays": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "monthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "pending": {
                  "type": "boolean"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "code",
                "skuCode",
                "displayName",
                "monthlyPriceCents",
                "listPriceCents",
                "effectiveMonthlyPriceCents",
                "maxDisplays",
                "minDisplays",
                "current",
                "pending",
                "available"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "paymentWay": {
            "properties": {
              "kind": {
                "enum": [
                  "card",
                  "sepa_debit",
                  "invoice",
                  "none"
                ],
                "type": "string"
              },
              "nextChargeAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "paymentTermsDays": {
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "kind",
              "paymentTermsDays",
              "nextChargeAt"
            ],
            "type": "object"
          },
          "paymentWaySecured": {
            "type": "boolean"
          },
          "pendingBillingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pendingChangeEffectiveAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "pendingDisplays": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "pendingFailedAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "pendingPackageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pricing": {
            "properties": {
              "billableQuantity": {
                "minimum": 0,
                "type": "integer"
              },
              "currency": {
                "enum": [
                  "EUR"
                ],
                "type": "string"
              },
              "currentUnitPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "tiers": {
                "items": {
                  "properties": {
                    "unitPriceCents": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "upToQuantity": {
                      "exclusiveMinimum": 0,
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "upToQuantity",
                    "unitPriceCents"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "vatRatePercent": {
                "maximum": 100,
                "minimum": 0,
                "type": "number"
              },
              "yearlyDiscountPercent": {
                "maximum": 100,
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "tiers",
              "currency",
              "yearlyDiscountPercent",
              "vatRatePercent",
              "currentUnitPriceCents",
              "billableQuantity"
            ],
            "type": "object"
          },
          "readiness": {
            "properties": {
              "blockers": {
                "items": {
                  "enum": [
                    "billing-profile-missing",
                    "payment-way-missing",
                    "overdue-invoice",
                    "payment-failed",
                    "tenant-frozen",
                    "contract-suspended",
                    "cancel-pending",
                    "eu-b2b-vat-id-required",
                    "goods-abroad-unsupported",
                    "issuer-exemption-missing"
                  ],
                  "type": "string"
                },
                "type": "array"
              }
            },
            "required": [
              "blockers"
            ],
            "type": "object"
          },
          "source": {
            "enum": [
              "invoice",
              "stripe"
            ],
            "type": "string"
          },
          "specialConditionUntil": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "enum": [
              "trial",
              "active",
              "past_due",
              "canceled",
              "suspended"
            ],
            "type": "string"
          },
          "tenantStatus": {
            "enum": [
              "active",
              "frozen",
              "suspended"
            ],
            "type": "string"
          },
          "trialEndsAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "videoWalls": {
            "properties": {
              "available": {
                "type": "boolean"
              },
              "booked": {
                "minimum": 0,
                "type": "integer"
              },
              "displayName": {
                "type": "string"
              },
              "effectiveMonthlyPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "grandfathered": {
                "type": "boolean"
              },
              "monthlyPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "pendingFailedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingQuantity": {
                "default": null,
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "skuCode": {
                "maxLength": 60,
                "minLength": 3,
                "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                "type": "string"
              },
              "used": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "skuCode",
              "displayName",
              "booked",
              "used",
              "monthlyPriceCents",
              "effectiveMonthlyPriceCents",
              "grandfathered",
              "available"
            ],
            "type": "object"
          }
        },
        "required": [
          "licenses",
          "packageCode",
          "pendingPackageCode",
          "packages",
          "pricing",
          "apps",
          "videoWalls",
          "legacyItems",
          "billingCycle",
          "pendingBillingCycle",
          "status",
          "trialEndsAt",
          "graceUntil",
          "currentPeriodStart",
          "currentPeriodEnd",
          "source",
          "paymentWaySecured",
          "cancelAtPeriodEnd",
          "cancelScheduledAt",
          "cancelEffectiveAt",
          "tenantStatus",
          "graceWindowEnd",
          "overdueCutoff",
          "specialConditionUntil",
          "desiredPackage",
          "invoiceWayApproved",
          "defaultPaymentMethod",
          "paymentWay",
          "dunning",
          "nextInvoice",
          "readiness"
        ],
        "type": "object"
      },
      "CancelSubscriptionRequest": {
        "example": {
          "atPeriodEnd": true
        },
        "properties": {
          "atPeriodEnd": {
            "default": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "CancelSubscriptionResponse": {
        "example": {
          "billingAnchorDay": 1,
          "billingCycle": "monthly",
          "cancelAtPeriodEnd": true,
          "canceledAt": "2026-07-20T09:15:00.000Z",
          "cancelScheduledAt": "2026-01-01T00:00:00.000Z",
          "createdAt": "2026-01-12T09:02:00.000Z",
          "currentPeriodEnd": "2026-07-31T23:59:59.000Z",
          "currentPeriodStart": "2026-07-01T00:00:00.000Z",
          "desiredBillingCycle": null,
          "desiredDisplays": 1,
          "desiredPackageCode": null,
          "graceUntil": null,
          "id": "sub_01KERQ1MT0VERTRAG000000001",
          "licenseConflictUntil": "2026-01-01T00:00:00.000Z",
          "packageCode": "START",
          "pendingBillingCycle": null,
          "pendingDisplays": null,
          "pendingFailedAt": null,
          "pendingPackageCode": null,
          "source": "invoice",
          "status": "active",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "trialEndsAt": null,
          "trialExtensionCount": 0,
          "trialExtensionDays": 0,
          "updatedAt": "2026-07-20T09:15:00.000Z"
        },
        "properties": {
          "billingAnchorDay": {
            "maximum": 31,
            "minimum": 1,
            "type": "integer"
          },
          "billingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": "string"
          },
          "cancelAtPeriodEnd": {
            "type": "boolean"
          },
          "canceledAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "cancelScheduledAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "currentPeriodEnd": {
            "format": "date-time",
            "type": "string"
          },
          "currentPeriodStart": {
            "format": "date-time",
            "type": "string"
          },
          "desiredBillingCycle": {
            "default": null,
            "maxLength": 20,
            "type": [
              "string",
              "null"
            ]
          },
          "desiredDisplays": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "desiredPackageCode": {
            "default": null,
            "maxLength": 20,
            "type": [
              "string",
              "null"
            ]
          },
          "graceUntil": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "pattern": "^sub_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "licenseConflictUntil": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "packageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pendingBillingCycle": {
            "default": null,
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pendingDisplays": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "pendingFailedAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "pendingPackageCode": {
            "default": null,
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "source": {
            "enum": [
              "invoice",
              "stripe"
            ],
            "type": "string"
          },
          "status": {
            "enum": [
              "trial",
              "active",
              "past_due",
              "canceled",
              "suspended"
            ],
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "trialEndsAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "trialExtensionCount": {
            "default": 0,
            "minimum": 0,
            "type": "integer"
          },
          "trialExtensionDays": {
            "default": 0,
            "minimum": 0,
            "type": "integer"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "source",
          "packageCode",
          "billingCycle",
          "status",
          "currentPeriodStart",
          "currentPeriodEnd",
          "billingAnchorDay",
          "trialEndsAt",
          "cancelAtPeriodEnd",
          "graceUntil",
          "canceledAt",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "CatalogDaypart": {
        "example": {
          "fromHour": 0,
          "key": "early",
          "label": "sample",
          "toHour": 1
        },
        "properties": {
          "fromHour": {
            "maximum": 23,
            "minimum": 0,
            "type": "integer"
          },
          "key": {
            "enum": [
              "early",
              "morning",
              "midday",
              "afternoon",
              "evening",
              "night"
            ],
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "toHour": {
            "maximum": 24,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "key",
          "label",
          "fromHour",
          "toHour"
        ],
        "type": "object"
      },
      "CatalogDimension": {
        "example": {
          "available": {
            "allowed": false,
            "reason": "notPerContent",
            "reasonText": "sample"
          },
          "family": "time",
          "key": "period",
          "label": "sample",
          "level": 0,
          "option": "sample",
          "timeKind": "calendar"
        },
        "properties": {
          "available": {
            "$ref": "#/components/schemas/CatalogVerdict"
          },
          "family": {
            "enum": [
              "time",
              "place",
              "surface",
              "advertising",
              "content",
              "quality",
              "protocol"
            ],
            "type": "string"
          },
          "key": {
            "enum": [
              "period",
              "month",
              "week",
              "day",
              "weekday",
              "daypart",
              "hour",
              "hourOfDay",
              "network",
              "region",
              "venueType",
              "location",
              "player",
              "placement",
              "tag",
              "group",
              "owner",
              "advertiser",
              "campaign",
              "bookingLine",
              "creative",
              "contentKind",
              "schedule",
              "playlist",
              "scene",
              "asset",
              "status",
              "late",
              "grade",
              "play"
            ],
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "level": {
            "minimum": 0,
            "type": "integer"
          },
          "option": {
            "type": "string"
          },
          "timeKind": {
            "enum": [
              "calendar",
              "cyclic"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "key",
          "family",
          "level",
          "timeKind",
          "label",
          "option",
          "available"
        ],
        "type": "object"
      },
      "CatalogLimits": {
        "example": {
          "maxDimensions": 1,
          "maxHourlyWindowDays": 1,
          "maxMeasures": 1,
          "maxRows": 1,
          "maxWindowDays": 1,
          "smallCellMinLocations": 1
        },
        "properties": {
          "maxDimensions": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "maxHourlyWindowDays": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "maxMeasures": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "maxRows": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "maxWindowDays": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "smallCellMinLocations": {
            "exclusiveMinimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "maxMeasures",
          "maxDimensions",
          "maxRows",
          "maxWindowDays",
          "maxHourlyWindowDays",
          "smallCellMinLocations"
        ],
        "type": "object"
      },
      "CatalogMeasure": {
        "example": {
          "aggregation": {
            "kind": "sum"
          },
          "available": {
            "allowed": false,
            "reason": "notPerContent",
            "reasonText": "sample"
          },
          "bounded": false,
          "class": "measured",
          "definition": "sample",
          "dimensions": {
            "advertiser": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "asset": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "bookingLine": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "campaign": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "contentKind": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "creative": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "day": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "daypart": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "grade": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "group": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "hour": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "hourOfDay": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "late": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "location": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "month": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "network": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "owner": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "period": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "placement": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "play": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "player": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "playlist": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "region": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "scene": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "schedule": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "status": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "tag": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "venueType": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "week": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            },
            "weekday": {
              "allowed": false,
              "reason": "notPerContent",
              "reasonText": "sample"
            }
          },
          "group": "operations",
          "key": "plannedSeconds",
          "label": "sample",
          "requires": "campaignScope",
          "unit": "seconds"
        },
        "properties": {
          "aggregation": {
            "$ref": "#/components/schemas/MeasureAggregation"
          },
          "available": {
            "$ref": "#/components/schemas/CatalogVerdict"
          },
          "bounded": {
            "type": "boolean"
          },
          "class": {
            "enum": [
              "measured",
              "derived",
              "modelled"
            ],
            "type": "string"
          },
          "definition": {
            "type": "string"
          },
          "dimensions": {
            "properties": {
              "advertiser": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "asset": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "bookingLine": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "campaign": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "contentKind": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "creative": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "day": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "daypart": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "grade": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "group": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "hour": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "hourOfDay": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "late": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "location": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "month": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "network": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "owner": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "period": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "placement": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "play": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "player": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "playlist": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "region": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "scene": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "schedule": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "status": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "tag": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "venueType": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "week": {
                "$ref": "#/components/schemas/CatalogVerdict"
              },
              "weekday": {
                "$ref": "#/components/schemas/CatalogVerdict"
              }
            },
            "type": "object"
          },
          "group": {
            "enum": [
              "operations",
              "delivery",
              "audience",
              "inventory"
            ],
            "type": "string"
          },
          "key": {
            "enum": [
              "plannedSeconds",
              "visibleSeconds",
              "availability",
              "gapHours",
              "lateHours",
              "renderErrors",
              "plays",
              "validPlays",
              "airtimeSeconds",
              "plannedPlays",
              "fulfilment",
              "pacing",
              "failureRate",
              "screenShare",
              "reachedLocations",
              "contacts",
              "contactValueCents",
              "audienceGradeMix",
              "fillRate"
            ],
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "requires": {
            "enum": [
              "campaignScope",
              "lineScope",
              "gradeDimension"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "unit": {
            "enum": [
              "seconds",
              "hours",
              "count",
              "ratio",
              "cents"
            ],
            "type": "string"
          }
        },
        "required": [
          "key",
          "group",
          "class",
          "unit",
          "aggregation",
          "label",
          "definition",
          "bounded",
          "requires",
          "available",
          "dimensions"
        ],
        "type": "object"
      },
      "CatalogStarterQuestion": {
        "example": {
          "description": "sample",
          "key": "sample",
          "label": "sample",
          "query": {
            "dimensions": [],
            "filters": {},
            "granularity": "auto",
            "limit": 1,
            "measures": [
              "plannedSeconds"
            ],
            "perspective": "venue",
            "sort": {
              "direction": "asc",
              "measure": "plannedSeconds"
            }
          },
          "windowDays": 1
        },
        "properties": {
          "description": {
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "query": {
            "properties": {
              "dimensions": {
                "default": [],
                "items": {
                  "enum": [
                    "period",
                    "month",
                    "week",
                    "day",
                    "weekday",
                    "daypart",
                    "hour",
                    "hourOfDay",
                    "network",
                    "region",
                    "venueType",
                    "location",
                    "player",
                    "placement",
                    "tag",
                    "group",
                    "owner",
                    "advertiser",
                    "campaign",
                    "bookingLine",
                    "creative",
                    "contentKind",
                    "schedule",
                    "playlist",
                    "scene",
                    "asset",
                    "status",
                    "late",
                    "grade",
                    "play"
                  ],
                  "type": "string"
                },
                "maxItems": 3,
                "type": "array"
              },
              "filters": {
                "$ref": "#/components/schemas/ExploreFilters"
              },
              "granularity": {
                "default": "auto",
                "enum": [
                  "auto",
                  "hour",
                  "day"
                ],
                "type": "string"
              },
              "limit": {
                "default": null,
                "maximum": 5000,
                "minimum": 1,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "measures": {
                "items": {
                  "enum": [
                    "plannedSeconds",
                    "visibleSeconds",
                    "availability",
                    "gapHours",
                    "lateHours",
                    "renderErrors",
                    "plays",
                    "validPlays",
                    "airtimeSeconds",
                    "plannedPlays",
                    "fulfilment",
                    "pacing",
                    "failureRate",
                    "screenShare",
                    "reachedLocations",
                    "contacts",
                    "contactValueCents",
                    "audienceGradeMix",
                    "fillRate"
                  ],
                  "type": "string"
                },
                "maxItems": 6,
                "minItems": 1,
                "type": "array"
              },
              "perspective": {
                "default": "venue",
                "enum": [
                  "venue",
                  "network",
                  "advertiser"
                ],
                "type": "string"
              },
              "sort": {
                "$ref": "#/components/schemas/ExploreSort"
              }
            },
            "required": [
              "measures"
            ],
            "type": "object"
          },
          "windowDays": {
            "exclusiveMinimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "key",
          "label",
          "description",
          "windowDays",
          "query"
        ],
        "type": "object"
      },
      "CatalogVerdict": {
        "example": {
          "allowed": false,
          "reason": "notPerContent",
          "reasonText": "sample"
        },
        "properties": {
          "allowed": {
            "type": "boolean"
          },
          "reason": {
            "enum": [
              "notPerContent",
              "notPerStatus",
              "tooFineForModelled",
              "finerThanLocation",
              "playLevelExportOnly",
              "needsCampaignFilter",
              "perLineOnly",
              "notPlannedPerCreative",
              "needsGradeDimension",
              "networkOnly",
              "notInPerspective",
              "mixesContentAndAdvertising",
              "tooManyDimensions",
              "needsHourGranularity"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "reasonText": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "allowed",
          "reason",
          "reasonText"
        ],
        "type": "object"
      },
      "ChangeBillingCycleRequest": {
        "example": {
          "cycle": "yearly"
        },
        "properties": {
          "cycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": "string"
          }
        },
        "required": [
          "cycle"
        ],
        "type": "object"
      },
      "ChangeBillingCycleResponse": {
        "example": {
          "creditNote": null,
          "issuedInvoice": {
            "amountCents": 54954,
            "invoiceId": "inv_01KYXGSD80RECHNNG000000002",
            "invoiceNumber": "INV-2026-0043"
          },
          "subscription": {
            "billingAnchorDay": 12,
            "billingCycle": "yearly",
            "cancelAtPeriodEnd": false,
            "canceledAt": null,
            "cancelScheduledAt": "2026-01-01T00:00:00.000Z",
            "createdAt": "2026-01-12T09:02:00.000Z",
            "currentPeriodEnd": "2027-08-12T12:00:00.000Z",
            "currentPeriodStart": "2026-08-12T12:00:00.000Z",
            "desiredBillingCycle": null,
            "desiredDisplays": 1,
            "desiredPackageCode": null,
            "graceUntil": null,
            "id": "sub_01KERQ1MT0VERTRAG000000001",
            "licenseConflictUntil": "2026-01-01T00:00:00.000Z",
            "packageCode": "START",
            "pendingBillingCycle": null,
            "pendingDisplays": null,
            "pendingFailedAt": null,
            "pendingPackageCode": null,
            "source": "invoice",
            "status": "active",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "trialEndsAt": null,
            "trialExtensionCount": 0,
            "trialExtensionDays": 0,
            "updatedAt": "2026-08-12T12:00:00.000Z"
          }
        },
        "properties": {
          "creditNote": {
            "properties": {
              "amountCents": {
                "minimum": 0,
                "type": "integer"
              },
              "invoiceId": {
                "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "invoiceNumber": {
                "maxLength": 20,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "invoiceId",
              "invoiceNumber",
              "amountCents"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "issuedInvoice": {
            "properties": {
              "amountCents": {
                "minimum": 0,
                "type": "integer"
              },
              "invoiceId": {
                "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "invoiceNumber": {
                "maxLength": 20,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "invoiceId",
              "invoiceNumber",
              "amountCents"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "subscription": {
            "properties": {
              "billingAnchorDay": {
                "maximum": 31,
                "minimum": 1,
                "type": "integer"
              },
              "billingCycle": {
                "enum": [
                  "monthly",
                  "yearly"
                ],
                "type": "string"
              },
              "cancelAtPeriodEnd": {
                "type": "boolean"
              },
              "canceledAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "cancelScheduledAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "currentPeriodEnd": {
                "format": "date-time",
                "type": "string"
              },
              "currentPeriodStart": {
                "format": "date-time",
                "type": "string"
              },
              "desiredBillingCycle": {
                "default": null,
                "maxLength": 20,
                "type": [
                  "string",
                  "null"
                ]
              },
              "desiredDisplays": {
                "default": null,
                "exclusiveMinimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "desiredPackageCode": {
                "default": null,
                "maxLength": 20,
                "type": [
                  "string",
                  "null"
                ]
              },
              "graceUntil": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^sub_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "licenseConflictUntil": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "packageCode": {
                "enum": [
                  "START",
                  "PRO",
                  "PREMIUM",
                  "ENTERPRISE"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingBillingCycle": {
                "default": null,
                "enum": [
                  "monthly",
                  "yearly"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingDisplays": {
                "default": null,
                "exclusiveMinimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "pendingFailedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingPackageCode": {
                "default": null,
                "enum": [
                  "START",
                  "PRO",
                  "PREMIUM",
                  "ENTERPRISE"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "source": {
                "enum": [
                  "invoice",
                  "stripe"
                ],
                "type": "string"
              },
              "status": {
                "enum": [
                  "trial",
                  "active",
                  "past_due",
                  "canceled",
                  "suspended"
                ],
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "trialEndsAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "trialExtensionCount": {
                "default": 0,
                "minimum": 0,
                "type": "integer"
              },
              "trialExtensionDays": {
                "default": 0,
                "minimum": 0,
                "type": "integer"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "id",
              "tenantId",
              "source",
              "packageCode",
              "billingCycle",
              "status",
              "currentPeriodStart",
              "currentPeriodEnd",
              "billingAnchorDay",
              "trialEndsAt",
              "cancelAtPeriodEnd",
              "graceUntil",
              "canceledAt",
              "createdAt",
              "updatedAt"
            ],
            "type": "object"
          }
        },
        "required": [
          "subscription",
          "issuedInvoice",
          "creditNote"
        ],
        "type": "object"
      },
      "ChangePackageRequest": {
        "example": {
          "packageCode": "PRO"
        },
        "properties": {
          "packageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": "string"
          }
        },
        "required": [
          "packageCode"
        ],
        "type": "object"
      },
      "ChangePackageResponse": {
        "example": {
          "apps": [
            {
              "appId": "pharmacies-on-duty",
              "booked": true,
              "displayName": "Notdienst-Anzeige",
              "effectiveMonthlyPriceCents": 900,
              "grandfathered": false,
              "installed": true,
              "monthlyPriceCents": 900,
              "pendingFailedAt": null,
              "pendingQuantity": null,
              "skuCode": "APP-pharmacies-on-duty"
            }
          ],
          "billingCycle": "monthly",
          "cancelAtPeriodEnd": false,
          "cancelEffectiveAt": null,
          "cancelScheduledAt": null,
          "currentPeriodEnd": "2026-09-16T00:00:00.000Z",
          "currentPeriodStart": "2026-08-16T00:00:00.000Z",
          "defaultPaymentMethod": null,
          "desiredPackage": null,
          "dunning": null,
          "graceUntil": null,
          "graceWindowEnd": null,
          "invoiceWayApproved": true,
          "legacyItems": [
            {
              "description": "Anmeldung über das Firmen-Login der Organisation (SSO) — jetzt Teil von Enterprise.",
              "displayName": "Enterprise-Anmeldung",
              "effectiveMonthlyPriceCents": 0,
              "grandfathered": true,
              "pendingFailedAt": null,
              "pendingQuantity": null,
              "quantity": 1,
              "skuCode": "ADDON-SSO"
            }
          ],
          "licenses": {
            "booked": 3,
            "conflictUntil": null,
            "free": 0,
            "frozen": 1,
            "pendingFailedAt": "2026-08-01T00:05:00.000Z",
            "pendingQuantity": 2,
            "used": 4
          },
          "nextInvoice": {
            "blockers": [],
            "credit": null,
            "currency": "EUR",
            "dueToday": {
              "grossCents": 0,
              "netCents": 0,
              "vatCents": 0
            },
            "effectiveAt": "2026-09-16T00:00:00.000Z",
            "endsTrial": false,
            "lines": [
              {
                "displayName": "Paket Pro",
                "kind": "recurring",
                "netAmountCents": 5772,
                "period": null,
                "quantity": 3,
                "skuCode": "PKG-PRO",
                "specialConditionUntil": null,
                "unitPriceCents": 1924
              },
              {
                "displayName": "Notdienst-Anzeige",
                "kind": "recurring",
                "netAmountCents": 900,
                "period": null,
                "quantity": 1,
                "skuCode": "APP-pharmacies-on-duty",
                "specialConditionUntil": null,
                "unitPriceCents": 900
              },
              {
                "displayName": "Leinwand",
                "kind": "recurring",
                "netAmountCents": 1900,
                "period": null,
                "quantity": 1,
                "skuCode": "LIZ-VIDEOWALL",
                "specialConditionUntil": null,
                "unitPriceCents": 1900
              }
            ],
            "nextInvoiceAt": "2026-09-16T00:00:00.000Z",
            "nextPeriod": {
              "grossCents": 10201,
              "netCents": 8572,
              "vatCents": 1629
            },
            "partialCancellation": null,
            "pendingBillingCycle": null,
            "previewedAt": "2026-08-16T09:15:00.000Z",
            "previewToken": "bpv_01KERPXZM0NACHPAKET0000000",
            "rule": "R2",
            "targetState": [
              {
                "carriesDisplays": true,
                "currentQuantity": 3,
                "outcome": "unchanged",
                "packageCode": "PRO",
                "quantity": 3,
                "skuCode": "PKG-PRO"
              },
              {
                "carriesDisplays": false,
                "currentQuantity": 1,
                "outcome": "unchanged",
                "packageCode": null,
                "quantity": 1,
                "skuCode": "APP-pharmacies-on-duty"
              },
              {
                "carriesDisplays": false,
                "currentQuantity": 1,
                "outcome": "unchanged",
                "packageCode": null,
                "quantity": 1,
                "skuCode": "LIZ-VIDEOWALL"
              }
            ],
            "tax": {
              "category": "S",
              "exemptionCode": null,
              "hintKey": null,
              "ratePercent": 19,
              "requiresRecipientVatId": false,
              "ruleId": "de-domestic"
            },
            "tierScale": null,
            "trialCredit": null,
            "unchanged": true,
            "usedDisplays": 4,
            "validUntil": "2026-08-16T09:45:00.000Z"
          },
          "overdueCutoff": null,
          "packageCode": "PRO",
          "packages": [
            {
              "available": true,
              "code": "START",
              "current": false,
              "displayName": "Starter",
              "effectiveMonthlyPriceCents": 1490,
              "listPriceCents": 1490,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 1490,
              "pending": false,
              "skuCode": "PKG-START"
            },
            {
              "available": true,
              "code": "PRO",
              "current": true,
              "displayName": "Pro",
              "effectiveMonthlyPriceCents": 2290,
              "listPriceCents": 2290,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 2290,
              "pending": false,
              "skuCode": "PKG-PRO"
            },
            {
              "available": true,
              "code": "PREMIUM",
              "current": false,
              "displayName": "Premium",
              "effectiveMonthlyPriceCents": 2790,
              "listPriceCents": 2790,
              "maxDisplays": null,
              "minDisplays": 5,
              "monthlyPriceCents": 2790,
              "pending": false,
              "skuCode": "PKG-PREMIUM"
            },
            {
              "available": false,
              "code": "ENTERPRISE",
              "current": false,
              "displayName": "Enterprise",
              "effectiveMonthlyPriceCents": 0,
              "listPriceCents": 0,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 0,
              "pending": false,
              "skuCode": "PKG-ENTERPRISE"
            }
          ],
          "paymentWay": {
            "kind": "invoice",
            "nextChargeAt": null,
            "paymentTermsDays": 14
          },
          "paymentWaySecured": true,
          "pendingBillingCycle": null,
          "pendingChangeEffectiveAt": "2026-09-16T00:00:00.000Z",
          "pendingDisplays": null,
          "pendingFailedAt": null,
          "pendingPackageCode": null,
          "pricing": {
            "billableQuantity": 3,
            "currency": "EUR",
            "currentUnitPriceCents": 1924,
            "tiers": [],
            "vatRatePercent": 19,
            "yearlyDiscountPercent": 15
          },
          "readiness": {
            "blockers": []
          },
          "source": "invoice",
          "specialConditionUntil": null,
          "status": "active",
          "tenantStatus": "active",
          "trialEndsAt": null,
          "videoWalls": {
            "available": true,
            "booked": 1,
            "displayName": "Leinwand",
            "effectiveMonthlyPriceCents": 1900,
            "grandfathered": false,
            "monthlyPriceCents": 1900,
            "pendingFailedAt": null,
            "pendingQuantity": null,
            "skuCode": "LIZ-VIDEOWALL",
            "used": 1
          }
        },
        "properties": {
          "apps": {
            "items": {
              "properties": {
                "appId": {
                  "type": "string"
                },
                "booked": {
                  "type": "boolean"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "grandfathered": {
                  "type": "boolean"
                },
                "installed": {
                  "type": "boolean"
                },
                "monthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "pendingFailedAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "pendingQuantity": {
                  "default": null,
                  "minimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "appId",
                "skuCode",
                "displayName",
                "monthlyPriceCents",
                "effectiveMonthlyPriceCents",
                "booked",
                "installed",
                "grandfathered"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "billingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": "string"
          },
          "cancelAtPeriodEnd": {
            "type": "boolean"
          },
          "cancelEffectiveAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "cancelScheduledAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "currentPeriodEnd": {
            "format": "date-time",
            "type": "string"
          },
          "currentPeriodStart": {
            "format": "date-time",
            "type": "string"
          },
          "defaultPaymentMethod": {
            "properties": {
              "expiresAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "kind": {
                "enum": [
                  "card",
                  "sepa_debit"
                ],
                "type": "string"
              },
              "lastFour": {
                "pattern": "^\\d{4}$",
                "type": "string"
              },
              "stripePaymentMethodId": {
                "type": "string"
              }
            },
            "required": [
              "stripePaymentMethodId",
              "kind",
              "lastFour",
              "expiresAt"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "desiredPackage": {
            "properties": {
              "billingCycle": {
                "enum": [
                  "monthly",
                  "yearly"
                ],
                "type": "string"
              },
              "displays": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "packageCode": {
                "enum": [
                  "START",
                  "PRO",
                  "PREMIUM",
                  "ENTERPRISE"
                ],
                "type": "string"
              }
            },
            "required": [
              "packageCode",
              "displays",
              "billingCycle"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "dunning": {
            "properties": {
              "graceUntil": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "invoiceId": {
                "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "invoiceNumber": {
                "pattern": "^(INV|GS)-\\d{4}-\\d{4,}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastDunnedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "level": {
                "maximum": 2,
                "minimum": 0,
                "type": "integer"
              },
              "reminderSentAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "level",
              "reminderSentAt",
              "lastDunnedAt",
              "graceUntil",
              "invoiceId",
              "invoiceNumber"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "graceUntil": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "graceWindowEnd": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "invoiceWayApproved": {
            "type": "boolean"
          },
          "legacyItems": {
            "items": {
              "properties": {
                "description": {
                  "type": "string"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "grandfathered": {
                  "type": "boolean"
                },
                "pendingFailedAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "pendingQuantity": {
                  "default": null,
                  "minimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "quantity": {
                  "minimum": 0,
                  "type": "integer"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "skuCode",
                "displayName",
                "description",
                "quantity",
                "effectiveMonthlyPriceCents",
                "grandfathered"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "licenses": {
            "properties": {
              "booked": {
                "minimum": 0,
                "type": "integer"
              },
              "conflictUntil": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "free": {
                "minimum": 0,
                "type": "integer"
              },
              "frozen": {
                "default": 0,
                "minimum": 0,
                "type": "integer"
              },
              "pendingFailedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingQuantity": {
                "default": null,
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "used": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "booked",
              "used",
              "free"
            ],
            "type": "object"
          },
          "nextInvoice": {
            "$ref": "#/components/schemas/BillingPreviewResponse"
          },
          "overdueCutoff": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "packageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "packages": {
            "items": {
              "properties": {
                "available": {
                  "type": "boolean"
                },
                "code": {
                  "enum": [
                    "START",
                    "PRO",
                    "PREMIUM",
                    "ENTERPRISE"
                  ],
                  "type": "string"
                },
                "current": {
                  "type": "boolean"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "listPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "maxDisplays": {
                  "exclusiveMinimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "minDisplays": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "monthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "pending": {
                  "type": "boolean"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "code",
                "skuCode",
                "displayName",
                "monthlyPriceCents",
                "listPriceCents",
                "effectiveMonthlyPriceCents",
                "maxDisplays",
                "minDisplays",
                "current",
                "pending",
                "available"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "paymentWay": {
            "properties": {
              "kind": {
                "enum": [
                  "card",
                  "sepa_debit",
                  "invoice",
                  "none"
                ],
                "type": "string"
              },
              "nextChargeAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "paymentTermsDays": {
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "kind",
              "paymentTermsDays",
              "nextChargeAt"
            ],
            "type": "object"
          },
          "paymentWaySecured": {
            "type": "boolean"
          },
          "pendingBillingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pendingChangeEffectiveAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "pendingDisplays": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "pendingFailedAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "pendingPackageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pricing": {
            "properties": {
              "billableQuantity": {
                "minimum": 0,
                "type": "integer"
              },
              "currency": {
                "enum": [
                  "EUR"
                ],
                "type": "string"
              },
              "currentUnitPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "tiers": {
                "items": {
                  "properties": {
                    "unitPriceCents": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "upToQuantity": {
                      "exclusiveMinimum": 0,
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "upToQuantity",
                    "unitPriceCents"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "vatRatePercent": {
                "maximum": 100,
                "minimum": 0,
                "type": "number"
              },
              "yearlyDiscountPercent": {
                "maximum": 100,
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "tiers",
              "currency",
              "yearlyDiscountPercent",
              "vatRatePercent",
              "currentUnitPriceCents",
              "billableQuantity"
            ],
            "type": "object"
          },
          "readiness": {
            "properties": {
              "blockers": {
                "items": {
                  "enum": [
                    "billing-profile-missing",
                    "payment-way-missing",
                    "overdue-invoice",
                    "payment-failed",
                    "tenant-frozen",
                    "contract-suspended",
                    "cancel-pending",
                    "eu-b2b-vat-id-required",
                    "goods-abroad-unsupported",
                    "issuer-exemption-missing"
                  ],
                  "type": "string"
                },
                "type": "array"
              }
            },
            "required": [
              "blockers"
            ],
            "type": "object"
          },
          "source": {
            "enum": [
              "invoice",
              "stripe"
            ],
            "type": "string"
          },
          "specialConditionUntil": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "enum": [
              "trial",
              "active",
              "past_due",
              "canceled",
              "suspended"
            ],
            "type": "string"
          },
          "tenantStatus": {
            "enum": [
              "active",
              "frozen",
              "suspended"
            ],
            "type": "string"
          },
          "trialEndsAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "videoWalls": {
            "properties": {
              "available": {
                "type": "boolean"
              },
              "booked": {
                "minimum": 0,
                "type": "integer"
              },
              "displayName": {
                "type": "string"
              },
              "effectiveMonthlyPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "grandfathered": {
                "type": "boolean"
              },
              "monthlyPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "pendingFailedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingQuantity": {
                "default": null,
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "skuCode": {
                "maxLength": 60,
                "minLength": 3,
                "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                "type": "string"
              },
              "used": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "skuCode",
              "displayName",
              "booked",
              "used",
              "monthlyPriceCents",
              "effectiveMonthlyPriceCents",
              "grandfathered",
              "available"
            ],
            "type": "object"
          }
        },
        "required": [
          "licenses",
          "packageCode",
          "pendingPackageCode",
          "packages",
          "pricing",
          "apps",
          "videoWalls",
          "legacyItems",
          "billingCycle",
          "pendingBillingCycle",
          "status",
          "trialEndsAt",
          "graceUntil",
          "currentPeriodStart",
          "currentPeriodEnd",
          "source",
          "paymentWaySecured",
          "cancelAtPeriodEnd",
          "cancelScheduledAt",
          "cancelEffectiveAt",
          "tenantStatus",
          "graceWindowEnd",
          "overdueCutoff",
          "specialConditionUntil",
          "desiredPackage",
          "invoiceWayApproved",
          "defaultPaymentMethod",
          "paymentWay",
          "dunning",
          "nextInvoice",
          "readiness"
        ],
        "type": "object"
      },
      "ChangeUserPasswordRequest": {
        "example": {
          "currentPassword": "altes-kennwort-platzhalter",
          "newPassword": "neues-kennwort-platzhalter"
        },
        "properties": {
          "currentPassword": {
            "minLength": 1,
            "type": [
              "string",
              "null"
            ]
          },
          "newPassword": {
            "maxLength": 128,
            "minLength": 12,
            "type": "string"
          }
        },
        "required": [
          "currentPassword",
          "newPassword"
        ],
        "type": "object"
      },
      "ChangeUserPasswordResponse": {
        "example": {
          "changedAt": "2026-01-01T00:00:00.000Z"
        },
        "properties": {
          "changedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "changedAt"
        ],
        "type": "object"
      },
      "CheckoutDraft": {
        "example": {
          "checkoutRef": "cko_01KERPXZM0KAFWEG0000000001",
          "createdAt": "2026-08-16T09:10:00.000Z",
          "draft": {
            "apps": [
              "pharmacies-on-duty"
            ],
            "billingCycle": "monthly",
            "displays": 5,
            "hardware": [],
            "packageCode": "PRO",
            "videoWalls": 1
          },
          "entry": "display-counter",
          "expiresAt": "2026-08-23T09:10:00.000Z",
          "id": "cdr_01KERPXZM0ENTWRF0000000001",
          "orderNumber": null,
          "purpose": "order",
          "step": "review",
          "updatedAt": "2026-08-16T09:15:00.000Z"
        },
        "properties": {
          "checkoutRef": {
            "pattern": "^cko_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "draft": {
            "$ref": "#/components/schemas/BillingDraft"
          },
          "entry": {
            "enum": [
              "pricing-calculator",
              "pricing-page",
              "home-page",
              "shop",
              "content-page",
              "trial-card",
              "mail",
              "direct",
              "pairing",
              "display-counter",
              "app",
              "video-wall",
              "package",
              "billing-cycle",
              "hardware"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "pattern": "^cdr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "orderNumber": {
            "maxLength": 20,
            "type": [
              "string",
              "null"
            ]
          },
          "purpose": {
            "enum": [
              "order",
              "payment-way",
              "payment-method"
            ],
            "type": "string"
          },
          "step": {
            "enum": [
              "selection",
              "billing-profile",
              "payment-way",
              "review",
              "done"
            ],
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "checkoutRef",
          "step",
          "purpose",
          "entry",
          "draft",
          "orderNumber",
          "expiresAt",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "CheckoutDraftResponse": {
        "example": {
          "draft": {
            "checkoutRef": "cko_01KERPXZM0KAFWEG0000000001",
            "createdAt": "2026-08-16T09:10:00.000Z",
            "draft": {
              "apps": [
                "pharmacies-on-duty"
              ],
              "billingCycle": "monthly",
              "displays": 5,
              "hardware": [],
              "packageCode": "PRO",
              "videoWalls": 1
            },
            "entry": "display-counter",
            "expiresAt": "2026-08-23T09:10:00.000Z",
            "id": "cdr_01KERPXZM0ENTWRF0000000001",
            "orderNumber": null,
            "purpose": "order",
            "step": "review",
            "updatedAt": "2026-08-16T09:15:00.000Z"
          },
          "merged": false,
          "preview": {
            "blockers": [],
            "credit": null,
            "currency": "EUR",
            "dueToday": {
              "grossCents": 10849,
              "netCents": 9117,
              "vatCents": 1732
            },
            "effectiveAt": "2026-08-16T09:15:00.000Z",
            "endsTrial": false,
            "lines": [
              {
                "displayName": "Paket Pro",
                "kind": "recurring",
                "netAmountCents": 9620,
                "period": {
                  "end": "2026-09-16T09:15:00.000Z",
                  "start": "2026-08-16T09:15:00.000Z"
                },
                "quantity": 5,
                "skuCode": "PKG-PRO",
                "specialConditionUntil": null,
                "unitPriceCents": 1924
              },
              {
                "displayName": "Notdienst-Anzeige",
                "kind": "recurring",
                "netAmountCents": 900,
                "period": {
                  "end": "2026-09-16T09:15:00.000Z",
                  "start": "2026-08-16T09:15:00.000Z"
                },
                "quantity": 1,
                "skuCode": "APP-pharmacies-on-duty",
                "specialConditionUntil": null,
                "unitPriceCents": 900
              },
              {
                "displayName": "Leinwand",
                "kind": "recurring",
                "netAmountCents": 1900,
                "period": {
                  "end": "2026-09-16T09:15:00.000Z",
                  "start": "2026-08-16T09:15:00.000Z"
                },
                "quantity": 1,
                "skuCode": "LIZ-VIDEOWALL",
                "specialConditionUntil": null,
                "unitPriceCents": 1900
              },
              {
                "displayName": "Paket Starter — Gutschrift für 16 nicht verbrauchte Tage",
                "kind": "credit",
                "netAmountCents": -1893,
                "period": {
                  "end": "2026-08-31T23:59:59.000Z",
                  "start": "2026-08-01T00:00:00.000Z"
                },
                "quantity": -3,
                "skuCode": "PKG-START",
                "specialConditionUntil": null,
                "unitPriceCents": 631
              },
              {
                "displayName": "Notdienst-Anzeige — Gutschrift für 16 nicht verbrauchte Tage",
                "kind": "credit",
                "netAmountCents": -453,
                "period": {
                  "end": "2026-08-31T23:59:59.000Z",
                  "start": "2026-08-01T00:00:00.000Z"
                },
                "quantity": -1,
                "skuCode": "APP-pharmacies-on-duty",
                "specialConditionUntil": null,
                "unitPriceCents": 453
              },
              {
                "displayName": "Leinwand — Gutschrift für 16 nicht verbrauchte Tage",
                "kind": "credit",
                "netAmountCents": -957,
                "period": {
                  "end": "2026-08-31T23:59:59.000Z",
                  "start": "2026-08-01T00:00:00.000Z"
                },
                "quantity": -1,
                "skuCode": "LIZ-VIDEOWALL",
                "specialConditionUntil": null,
                "unitPriceCents": 957
              }
            ],
            "nextInvoiceAt": "2026-09-16T09:15:00.000Z",
            "nextPeriod": {
              "grossCents": 14780,
              "netCents": 12420,
              "vatCents": 2360
            },
            "partialCancellation": null,
            "pendingBillingCycle": null,
            "previewedAt": "2026-08-16T09:15:00.000Z",
            "previewToken": "bpv_01KERPXZM0VRSCHA0000000000",
            "rule": "R1",
            "targetState": [
              {
                "carriesDisplays": true,
                "currentQuantity": 3,
                "outcome": "changed",
                "packageCode": "PRO",
                "quantity": 5,
                "skuCode": "PKG-PRO"
              },
              {
                "carriesDisplays": false,
                "currentQuantity": 1,
                "outcome": "unchanged",
                "packageCode": null,
                "quantity": 1,
                "skuCode": "APP-pharmacies-on-duty"
              },
              {
                "carriesDisplays": false,
                "currentQuantity": 1,
                "outcome": "unchanged",
                "packageCode": null,
                "quantity": 1,
                "skuCode": "LIZ-VIDEOWALL"
              }
            ],
            "tax": {
              "category": "S",
              "exemptionCode": null,
              "hintKey": null,
              "ratePercent": 19,
              "requiresRecipientVatId": false,
              "ruleId": "de-domestic"
            },
            "tierScale": null,
            "trialCredit": null,
            "unchanged": false,
            "usedDisplays": 4,
            "validUntil": "2026-08-16T09:45:00.000Z"
          }
        },
        "properties": {
          "draft": {
            "$ref": "#/components/schemas/CheckoutDraft"
          },
          "merged": {
            "type": "boolean"
          },
          "preview": {
            "$ref": "#/components/schemas/BillingPreviewResponse"
          }
        },
        "required": [
          "draft",
          "preview",
          "merged"
        ],
        "type": "object"
      },
      "ChooseOrganizationRequest": {
        "example": {
          "choiceTicket": "lct_01KXZ89WQGTCKET00000000002",
          "deviceFingerprint": {
            "acceptLanguage": "de-DE,de;q=0.9",
            "geoip": "Hamburg, DE",
            "screenResolution": "2560x1440",
            "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0 Safari/537.36"
          },
          "organizationId": "tnt_01KERPXZM0ADERAPTHEKE00001"
        },
        "properties": {
          "choiceTicket": {
            "pattern": "^lct_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "deviceFingerprint": {
            "properties": {
              "acceptLanguage": {
                "type": "string"
              },
              "geoip": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "screenResolution": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "userAgent": {
                "type": "string"
              }
            },
            "required": [
              "userAgent",
              "acceptLanguage",
              "screenResolution",
              "geoip"
            ],
            "type": "object"
          },
          "organizationId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "choiceTicket",
          "organizationId",
          "deviceFingerprint"
        ],
        "type": "object"
      },
      "ClaimPairingCodeRequest": {
        "example": {
          "code": "K7QM4X"
        },
        "properties": {
          "code": {
            "pattern": "^[A-HJ-NP-Z2-9]{6}$",
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "type": "object"
      },
      "ClaimPairingCodeResponse": {
        "example": {
          "deviceId": "dev_01KRX5H0Z0GERAET0000000003",
          "playerIds": [
            "ply_01KRX5JVJ0SCREEN0000000003"
          ]
        },
        "properties": {
          "deviceId": {
            "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "playerIds": {
            "items": {
              "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "playerIds",
          "deviceId"
        ],
        "type": "object"
      },
      "ClearCommandHistoryResponse": {
        "example": {
          "deletedCount": 0,
          "keptOpen": 0
        },
        "properties": {
          "deletedCount": {
            "minimum": 0,
            "type": "integer"
          },
          "keptOpen": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "deletedCount",
          "keptOpen"
        ],
        "type": "object"
      },
      "ClearPlayerGeoLocationResponse": {
        "example": {
          "player": {
            "config": {
              "audioMuted": false,
              "brightness": 0,
              "contentFit": "contain",
              "identifyPulseColor": "#000000",
              "resolutionMode": "auto",
              "rotation": 0
            },
            "connector": "sample",
            "createdAt": "2026-01-01T00:00:00.000Z",
            "createdById": "usr_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "decommissionedAt": "2026-01-01T00:00:00.000Z",
            "description": "sample",
            "deviceId": "dev_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "deviceKind": "pi",
            "geoLocation": {
              "accuracyM": 0,
              "city": "sample",
              "country": "DE",
              "determinedAt": "2026-01-01T00:00:00.000Z",
              "lat": -90,
              "lng": -180,
              "postalCode": "sample",
              "region": "sample",
              "source": "wifi",
              "street": "sample"
            },
            "host": "szenera-os",
            "id": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "lastHeartbeatAt": "2026-01-01T00:00:00.000Z",
            "lastSnapshotHash": "sample",
            "lastTelemetry": {
              "agent": {
                "buildSha": "sample",
                "renderTokenExpiresAt": "2099-12-31T23:59:59.000Z",
                "version": "sample"
              },
              "appFailures": [
                {
                  "id": "sample",
                  "reason": "missing",
                  "since": "2026-01-01T00:00:00.000Z",
                  "version": "sample"
                }
              ],
              "apps": [
                {
                  "id": "sample",
                  "installedAt": "2026-01-01T00:00:00.000Z",
                  "sizeBytes": 0,
                  "version": "sample"
                }
              ],
              "chromium": {
                "cdpConnected": false,
                "lastFrameAt": "2026-01-01T00:00:00.000Z",
                "memoryMb": 0,
                "state": "rendering"
              },
              "cpuTempC": 1,
              "disk": {
                "rootTotal": 0,
                "rootUsed": 0,
                "stateTotal": 0,
                "stateUsed": 0
              },
              "display": {
                "connected": false,
                "connector": "sample",
                "diagonalInch": 1,
                "heightPx": 1,
                "manufacturer": "sample",
                "model": "sample",
                "refreshHz": 1,
                "serial": "sample",
                "widthPx": 1
              },
              "hardware": {
                "coreVolts": 1,
                "cpuCores": 1,
                "cpuModel": "sample",
                "kernel": "sample",
                "model": "sample",
                "serial": "sample",
                "storageHealthPercent": 0,
                "throttledEver": false,
                "throttledNow": false
              },
              "loadAvg": [
                0
              ],
              "mediaCache": {
                "entries": [
                  {
                    "ageSeconds": 0,
                    "assetId": "sample",
                    "mediaKey": "sample",
                    "present": false,
                    "sizeBytes": 0
                  }
                ],
                "entryCount": 0,
                "limitBytes": 0,
                "overflowBytes": 0,
                "presentCount": 0,
                "requiredBytes": 0,
                "usedBytes": 0
              },
              "memory": {
                "freeMb": 0,
                "total": 0,
                "used": 0
              },
              "network": {
                "apiLatencyMs": 0,
                "apiReachable": false,
                "gateway": "sample",
                "iface": "sample",
                "ip": "sample",
                "macAddress": "sample",
                "tailscaleConnected": false,
                "wifiChannel": 1,
                "wifiFrequencyMhz": 1,
                "wifiSignal": 1,
                "wifiSsid": "sample",
                "wifiTxRateMbps": 0
              },
              "rauc": {
                "bootedFromTryboot": false,
                "currentSlot": "sample",
                "lastSuccessAt": "2026-01-01T00:00:00.000Z"
              },
              "renderer": {
                "activatedAt": "2026-01-01T00:00:00.000Z",
                "build": "aaaaaaaaaaaa",
                "capabilities": [
                  "sample"
                ],
                "failures": 0,
                "linkOnline": false,
                "profile": "modern",
                "releaseSeq": 1,
                "resilience": "fresh",
                "source": "bundle",
                "state": "scene",
                "version": "1.0.0"
              },
              "screens": [
                {
                  "chromium": {
                    "cdpConnected": false,
                    "state": "rendering"
                  },
                  "powerIntent": "on",
                  "powerState": "on",
                  "renderer": {
                    "failures": 0,
                    "linkOnline": false,
                    "resilience": "fresh",
                    "state": "scene"
                  },
                  "screenIndex": 0
                }
              ],
              "snapshot": {
                "lastCheckedAt": "2026-01-01T00:00:00.000Z",
                "lastRefreshAt": "2026-01-01T00:00:00.000Z",
                "manifestHash": "sample",
                "stale": false
              },
              "time": {
                "ntpSynchronized": false,
                "offsetMs": 1,
                "timezone": "Europe/Berlin"
              },
              "uptime": 0
            },
            "locationId": "loc_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "name": "sample",
            "otaState": {
              "bootDurationMs": 0,
              "installedVersion": "sample",
              "lastError": {
                "at": "2026-01-01T00:00:00.000Z",
                "code": "sample",
                "message": "sample"
              },
              "lastTransitionAt": "2026-01-01T00:00:00.000Z",
              "phase": "idle",
              "rollbackReason": "sample",
              "targetVersion": "sample"
            },
            "screenIndex": 0,
            "status": "online",
            "suspendedAt": "2026-01-01T00:00:00.000Z",
            "suspendedReason": "tenant",
            "tagIds": [
              "ptg_01ARZ3NDEKTSV4RRFFQ69G5FAV"
            ],
            "tenantId": "tnt_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "updatedAt": "2026-01-01T00:00:00.000Z",
            "version": 0
          }
        },
        "properties": {
          "player": {
            "properties": {
              "config": {
                "properties": {
                  "audioMuted": {
                    "type": "boolean"
                  },
                  "brightness": {
                    "maximum": 100,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "contentFit": {
                    "anyOf": [
                      {
                        "enum": [
                          "contain"
                        ],
                        "type": "string"
                      },
                      {
                        "enum": [
                          "cover"
                        ],
                        "type": "string"
                      }
                    ],
                    "default": "contain"
                  },
                  "identifyPulseColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  },
                  "resolutionMode": {
                    "anyOf": [
                      {
                        "enum": [
                          "auto"
                        ],
                        "type": "string"
                      },
                      {
                        "properties": {
                          "height": {
                            "maximum": 4320,
                            "minimum": 1,
                            "type": "integer"
                          },
                          "width": {
                            "maximum": 7680,
                            "minimum": 1,
                            "type": "integer"
                          }
                        },
                        "required": [
                          "width",
                          "height"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "rotation": {
                    "anyOf": [
                      {
                        "enum": [
                          0
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          90
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          180
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          270
                        ],
                        "type": "number"
                      }
                    ]
                  }
                },
                "required": [
                  "audioMuted",
                  "brightness",
                  "rotation",
                  "resolutionMode",
                  "identifyPulseColor"
                ],
                "type": "object"
              },
              "connector": {
                "maxLength": 32,
                "minLength": 1,
                "type": [
                  "string",
                  "null"
                ]
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "createdById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "decommissionedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "description": {
                "maxLength": 500,
                "type": "string"
              },
              "deviceId": {
                "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "deviceKind": {
                "enum": [
                  "pi",
                  "browser"
                ],
                "type": "string"
              },
              "geoLocation": {
                "properties": {
                  "accuracyM": {
                    "minimum": 0,
                    "type": "number"
                  },
                  "city": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "country": {
                    "maxLength": 2,
                    "minLength": 2,
                    "type": "string"
                  },
                  "determinedAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "lat": {
                    "maximum": 90,
                    "minimum": -90,
                    "type": "number"
                  },
                  "lng": {
                    "maximum": 180,
                    "minimum": -180,
                    "type": "number"
                  },
                  "postalCode": {
                    "maxLength": 20,
                    "type": "string"
                  },
                  "region": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "source": {
                    "enum": [
                      "wifi",
                      "ip",
                      "manual"
                    ],
                    "type": "string"
                  },
                  "street": {
                    "maxLength": 200,
                    "type": "string"
                  }
                },
                "required": [
                  "lat",
                  "lng",
                  "accuracyM",
                  "source",
                  "determinedAt"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "host": {
                "enum": [
                  "szenera-os",
                  "fire-tv",
                  "tizen",
                  "webos",
                  "web-display"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "lastHeartbeatAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastSnapshotHash": {
                "maxLength": 128,
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastTelemetry": {
                "properties": {
                  "agent": {
                    "properties": {
                      "buildSha": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "renderTokenExpiresAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "version": {
                        "maxLength": 100,
                        "type": "string"
                      }
                    },
                    "required": [
                      "version"
                    ],
                    "type": "object"
                  },
                  "appFailures": {
                    "items": {
                      "properties": {
                        "id": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "reason": {
                          "enum": [
                            "missing",
                            "rejected",
                            "failed"
                          ],
                          "type": "string"
                        },
                        "since": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "version": {
                          "maxLength": 64,
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "version",
                        "reason",
                        "since"
                      ],
                      "type": "object"
                    },
                    "maxItems": 20,
                    "type": "array"
                  },
                  "apps": {
                    "items": {
                      "properties": {
                        "id": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "installedAt": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "sizeBytes": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "version": {
                          "maxLength": 64,
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "version"
                      ],
                      "type": "object"
                    },
                    "maxItems": 50,
                    "type": "array"
                  },
                  "chromium": {
                    "properties": {
                      "cdpConnected": {
                        "type": "boolean"
                      },
                      "lastFrameAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "memoryMb": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "state": {
                        "enum": [
                          "rendering",
                          "pairing",
                          "hung",
                          "starting",
                          "stopped",
                          "unplugged"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "state"
                    ],
                    "type": "object"
                  },
                  "cpuTempC": {
                    "type": "number"
                  },
                  "disk": {
                    "properties": {
                      "rootTotal": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "rootUsed": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "stateTotal": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "stateUsed": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "rootUsed",
                      "rootTotal",
                      "stateUsed",
                      "stateTotal"
                    ],
                    "type": "object"
                  },
                  "display": {
                    "properties": {
                      "connected": {
                        "type": "boolean"
                      },
                      "connector": {
                        "maxLength": 30,
                        "type": "string"
                      },
                      "diagonalInch": {
                        "type": "number"
                      },
                      "heightPx": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "manufacturer": {
                        "maxLength": 60,
                        "type": "string"
                      },
                      "model": {
                        "maxLength": 60,
                        "type": "string"
                      },
                      "refreshHz": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "serial": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "widthPx": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "hardware": {
                    "properties": {
                      "coreVolts": {
                        "type": "number"
                      },
                      "cpuCores": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "cpuModel": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "kernel": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "model": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "serial": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "storageHealthPercent": {
                        "maximum": 100,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "throttledEver": {
                        "type": "boolean"
                      },
                      "throttledNow": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "loadAvg": {
                    "items": {
                      "minimum": 0,
                      "type": "number"
                    },
                    "maxItems": 3,
                    "type": "array"
                  },
                  "mediaCache": {
                    "properties": {
                      "entries": {
                        "items": {
                          "properties": {
                            "ageSeconds": {
                              "minimum": 0,
                              "type": "integer"
                            },
                            "assetId": {
                              "maxLength": 30,
                              "type": "string"
                            },
                            "mediaKey": {
                              "maxLength": 128,
                              "minLength": 1,
                              "type": "string"
                            },
                            "present": {
                              "type": "boolean"
                            },
                            "sizeBytes": {
                              "minimum": 0,
                              "type": "integer"
                            }
                          },
                          "required": [
                            "mediaKey",
                            "present"
                          ],
                          "type": "object"
                        },
                        "maxItems": 200,
                        "type": "array"
                      },
                      "entryCount": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "limitBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "overflowBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "presentCount": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "requiredBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "usedBytes": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "limitBytes",
                      "usedBytes",
                      "requiredBytes",
                      "overflowBytes",
                      "entryCount",
                      "presentCount"
                    ],
                    "type": "object"
                  },
                  "memory": {
                    "properties": {
                      "freeMb": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "total": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "used": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "total",
                      "used",
                      "freeMb"
                    ],
                    "type": "object"
                  },
                  "network": {
                    "properties": {
                      "apiLatencyMs": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "apiReachable": {
                        "type": "boolean"
                      },
                      "gateway": {
                        "maxLength": 45,
                        "type": "string"
                      },
                      "iface": {
                        "maxLength": 20,
                        "type": "string"
                      },
                      "ip": {
                        "maxLength": 45,
                        "type": "string"
                      },
                      "macAddress": {
                        "maxLength": 17,
                        "type": "string"
                      },
                      "tailscaleConnected": {
                        "type": "boolean"
                      },
                      "wifiChannel": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "wifiFrequencyMhz": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "wifiSignal": {
                        "type": "integer"
                      },
                      "wifiSsid": {
                        "maxLength": 100,
                        "type": "string"
                      },
                      "wifiTxRateMbps": {
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "type": "object"
                  },
                  "rauc": {
                    "properties": {
                      "bootedFromTryboot": {
                        "type": "boolean"
                      },
                      "currentSlot": {
                        "maxLength": 50,
                        "type": "string"
                      },
                      "lastSuccessAt": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "required": [
                      "currentSlot",
                      "bootedFromTryboot"
                    ],
                    "type": "object"
                  },
                  "renderer": {
                    "properties": {
                      "activatedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "build": {
                        "pattern": "^[0-9a-f]{12}$",
                        "type": "string"
                      },
                      "capabilities": {
                        "items": {
                          "maxLength": 32,
                          "minLength": 1,
                          "type": "string"
                        },
                        "maxItems": 32,
                        "type": "array"
                      },
                      "failures": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "linkOnline": {
                        "type": "boolean"
                      },
                      "profile": {
                        "enum": [
                          "modern",
                          "legacy"
                        ],
                        "type": "string"
                      },
                      "releaseSeq": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "resilience": {
                        "enum": [
                          "fresh",
                          "stale-but-served",
                          "last-known-good",
                          "loading",
                          "error"
                        ],
                        "type": "string"
                      },
                      "source": {
                        "enum": [
                          "bundle",
                          "hosted"
                        ],
                        "type": "string"
                      },
                      "state": {
                        "enum": [
                          "scene",
                          "pairing",
                          "unassigned",
                          "loading",
                          "error",
                          "disconnected"
                        ],
                        "type": "string"
                      },
                      "version": {
                        "maxLength": 40,
                        "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "state"
                    ],
                    "type": "object"
                  },
                  "screens": {
                    "items": {
                      "properties": {
                        "chromium": {
                          "properties": {
                            "cdpConnected": {
                              "type": "boolean"
                            },
                            "state": {
                              "enum": [
                                "rendering",
                                "pairing",
                                "hung",
                                "starting",
                                "stopped",
                                "unplugged"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "state"
                          ],
                          "type": "object"
                        },
                        "powerIntent": {
                          "enum": [
                            "on",
                            "standby"
                          ],
                          "type": "string"
                        },
                        "powerState": {
                          "enum": [
                            "on",
                            "standby",
                            "unknown"
                          ],
                          "type": "string"
                        },
                        "renderer": {
                          "properties": {
                            "failures": {
                              "minimum": 0,
                              "type": "integer"
                            },
                            "linkOnline": {
                              "type": "boolean"
                            },
                            "resilience": {
                              "enum": [
                                "fresh",
                                "stale-but-served",
                                "last-known-good",
                                "loading",
                                "error"
                              ],
                              "type": "string"
                            },
                            "state": {
                              "enum": [
                                "scene",
                                "pairing",
                                "unassigned",
                                "loading",
                                "error",
                                "disconnected"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "state"
                          ],
                          "type": "object"
                        },
                        "screenIndex": {
                          "maximum": 7,
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "screenIndex"
                      ],
                      "type": "object"
                    },
                    "maxItems": 8,
                    "type": "array"
                  },
                  "snapshot": {
                    "properties": {
                      "lastCheckedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "lastRefreshAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "manifestHash": {
                        "maxLength": 128,
                        "type": "string"
                      },
                      "stale": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "manifestHash",
                      "stale",
                      "lastRefreshAt"
                    ],
                    "type": "object"
                  },
                  "time": {
                    "properties": {
                      "ntpSynchronized": {
                        "type": "boolean"
                      },
                      "offsetMs": {
                        "type": "integer"
                      },
                      "timezone": {
                        "maxLength": 60,
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uptime": {
                    "minimum": 0,
                    "type": "integer"
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "locationId": {
                "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "otaState": {
                "properties": {
                  "bootDurationMs": {
                    "minimum": 0,
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "installedVersion": {
                    "maxLength": 100,
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "lastError": {
                    "properties": {
                      "at": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "code": {
                        "maxLength": 100,
                        "type": "string"
                      },
                      "message": {
                        "maxLength": 500,
                        "type": "string"
                      }
                    },
                    "required": [
                      "code",
                      "message",
                      "at"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "lastTransitionAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "phase": {
                    "enum": [
                      "idle",
                      "downloading",
                      "installing",
                      "tryboot-waiting",
                      "completed",
                      "rolled-back",
                      "failed"
                    ],
                    "type": "string"
                  },
                  "rollbackReason": {
                    "maxLength": 500,
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "targetVersion": {
                    "maxLength": 100,
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "phase",
                  "targetVersion",
                  "installedVersion",
                  "lastTransitionAt",
                  "lastError",
                  "bootDurationMs",
                  "rollbackReason"
                ],
                "type": "object"
              },
              "screenIndex": {
                "maximum": 7,
                "minimum": 0,
                "type": "integer"
              },
              "status": {
                "enum": [
                  "online",
                  "stale",
                  "offline",
                  "paired-not-claimed",
                  "suspended",
                  "decommissioned"
                ],
                "type": "string"
              },
              "suspendedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "suspendedReason": {
                "enum": [
                  "tenant",
                  "quota"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "tagIds": {
                "items": {
                  "pattern": "^ptg_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "maxItems": 50,
                "type": "array"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "version": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "id",
              "tenantId",
              "deviceId",
              "connector",
              "screenIndex",
              "name",
              "description",
              "tagIds",
              "locationId",
              "config",
              "status",
              "suspendedReason",
              "lastHeartbeatAt",
              "createdById",
              "createdAt",
              "updatedAt",
              "decommissionedAt",
              "version",
              "geoLocation",
              "lastSnapshotHash",
              "lastTelemetry",
              "otaState"
            ],
            "type": "object"
          }
        },
        "required": [
          "player"
        ],
        "type": "object"
      },
      "ClearPlayerOverrideResponse": {
        "example": {
          "program": {
            "override": null,
            "playerId": "ply_01KHK34MQ0SCREEN0000000001",
            "program": {
              "kind": "schedule",
              "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001"
            },
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-20T09:15:00.000Z",
            "updatedById": "usr_01KERQ74K0TEAM000000000001",
            "version": 4
          }
        },
        "properties": {
          "program": {
            "properties": {
              "override": {
                "properties": {
                  "content": {
                    "oneOf": [
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "schedule"
                            ],
                            "type": "string"
                          },
                          "scheduleId": {
                            "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "scheduleId"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "scene"
                            ],
                            "type": "string"
                          },
                          "sceneId": {
                            "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "sceneId"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "playlist"
                            ],
                            "type": "string"
                          },
                          "playlistId": {
                            "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "playlistId"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "assetId": {
                            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          },
                          "kind": {
                            "enum": [
                              "media"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "assetId"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "setAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "setById": {
                    "anyOf": [
                      {
                        "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      {
                        "pattern": "^[0-9a-f]{64}$",
                        "type": "string"
                      }
                    ]
                  },
                  "until": {
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "required": [
                  "content",
                  "until",
                  "setAt",
                  "setById"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "playerId": {
                "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "program": {
                "oneOf": [
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "schedule"
                        ],
                        "type": "string"
                      },
                      "scheduleId": {
                        "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "scheduleId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "scene"
                        ],
                        "type": "string"
                      },
                      "sceneId": {
                        "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "sceneId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "playlist"
                        ],
                        "type": "string"
                      },
                      "playlistId": {
                        "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "playlistId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "assetId": {
                        "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "kind": {
                        "enum": [
                          "media"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "assetId"
                    ],
                    "type": "object"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "updatedById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  }
                ]
              },
              "version": {
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "playerId",
              "tenantId",
              "program",
              "override",
              "updatedById",
              "updatedAt",
              "version"
            ],
            "type": "object"
          }
        },
        "required": [
          "program"
        ],
        "type": "object"
      },
      "CloudConnection": {
        "example": {
          "accountLabel": "apotheke@demo.local",
          "accountSubject": "2f1c9d64-8a3b-4e57-9f02-6bd1c4a5e730",
          "brokenReason": null,
          "connectedByUserId": "usr_01KERQ74K0TEAM000000000001",
          "createdAt": "2026-01-12T09:00:00.000Z",
          "id": "cconn_01KT3WD680CNNECTMSGRAPH001",
          "lastVerifiedAt": "2026-07-20T09:14:32.000Z",
          "provider": "microsoft-graph",
          "scopes": [
            "Files.Read",
            "User.Read",
            "offline_access"
          ],
          "status": "connected",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-20T09:14:32.000Z"
        },
        "properties": {
          "accountLabel": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string"
          },
          "accountSubject": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "brokenReason": {
            "maxLength": 500,
            "type": [
              "string",
              "null"
            ]
          },
          "connectedByUserId": {
            "maxLength": 40,
            "minLength": 1,
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "pattern": "^cconn_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "lastVerifiedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "provider": {
            "$ref": "#/components/schemas/CloudConnectionProvider"
          },
          "scopes": {
            "items": {
              "maxLength": 128,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 32,
            "type": "array"
          },
          "status": {
            "$ref": "#/components/schemas/CloudConnectionStatus"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "provider",
          "accountLabel",
          "accountSubject",
          "scopes",
          "status",
          "brokenReason",
          "connectedByUserId",
          "lastVerifiedAt",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "CloudConnectionProvider": {
        "enum": [
          "microsoft-graph",
          "google-drive"
        ],
        "example": "microsoft-graph",
        "type": "string"
      },
      "CloudConnectionStatus": {
        "enum": [
          "connected",
          "broken",
          "revoked"
        ],
        "example": "connected",
        "type": "string"
      },
      "ConfirmHardwareInterestRequest": {
        "example": {
          "token": "vormerkung-bestaetigung-9f2c4d7a1b6e8305"
        },
        "properties": {
          "token": {
            "maxLength": 200,
            "minLength": 16,
            "type": "string"
          }
        },
        "required": [
          "token"
        ],
        "type": "object"
      },
      "ConfirmHardwareInterestResponse": {
        "example": {
          "alreadyConfirmed": false,
          "email": "julia.petersen@demo.local",
          "skuCode": "HW-PLAYER-4G"
        },
        "properties": {
          "alreadyConfirmed": {
            "type": "boolean"
          },
          "email": {
            "format": "email",
            "type": "string"
          },
          "skuCode": {
            "maxLength": 60,
            "minLength": 3,
            "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
            "type": "string"
          }
        },
        "required": [
          "skuCode",
          "email",
          "alreadyConfirmed"
        ],
        "type": "object"
      },
      "ConfirmUserMfaRequest": {
        "example": {
          "code": "481902"
        },
        "properties": {
          "code": {
            "pattern": "^\\d{6}$",
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "type": "object"
      },
      "ConfirmUserMfaResponse": {
        "example": {
          "recoveryCodes": [
            "A7K2-9QM4",
            "H3XD-5RT8",
            "P9WV-2NB6",
            "K4ML-7ZC3",
            "R6QT-8JD5",
            "M2NP-4KV9",
            "T8HB-3XR7",
            "D5JW-6QM2",
            "V3RK-9NT4",
            "B7ZP-2HD8"
          ]
        },
        "properties": {
          "recoveryCodes": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "recoveryCodes"
        ],
        "type": "object"
      },
      "ConnectedApplication": {
        "example": {
          "activeGrants": 2,
          "clientId": "oac_01KQRWJRC0ANZEGE0000000001",
          "clientUri": "https://anzeigen-assistent.demo.local",
          "grantedAt": "2026-06-18T14:22:00.000Z",
          "lastUsedAt": "2026-07-20T06:40:00.000Z",
          "logoUri": "https://anzeigen-assistent.demo.local/zeichen.png",
          "name": "Anzeigen-Assistent",
          "scopes": [
            "scene.read",
            "playlist.read"
          ]
        },
        "properties": {
          "activeGrants": {
            "minimum": 0,
            "type": "integer"
          },
          "clientId": {
            "pattern": "^oac_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "clientUri": {
            "type": [
              "string",
              "null"
            ]
          },
          "grantedAt": {
            "format": "date-time",
            "type": "string"
          },
          "lastUsedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "logoUri": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "maxLength": 120,
            "type": "string"
          },
          "scopes": {
            "items": {
              "maxLength": 80,
              "minLength": 3,
              "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)*$",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "clientId",
          "name",
          "clientUri",
          "logoUri",
          "scopes",
          "grantedAt",
          "lastUsedAt",
          "activeGrants"
        ],
        "type": "object"
      },
      "ConsumeMagicLinkRequest": {
        "example": {
          "deviceFingerprint": {
            "acceptLanguage": "de-DE,de;q=0.9",
            "geoip": "Hamburg, DE",
            "screenResolution": "2560x1440",
            "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0 Safari/537.36"
          },
          "token": "beispiel-anmeldelink-token-nicht-echt"
        },
        "properties": {
          "deviceFingerprint": {
            "properties": {
              "acceptLanguage": {
                "type": "string"
              },
              "geoip": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "screenResolution": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "userAgent": {
                "type": "string"
              }
            },
            "required": [
              "userAgent",
              "acceptLanguage",
              "screenResolution",
              "geoip"
            ],
            "type": "object"
          },
          "token": {
            "type": "string"
          }
        },
        "required": [
          "token",
          "deviceFingerprint"
        ],
        "type": "object"
      },
      "ConsumePasswordResetRequest": {
        "example": {
          "newPassword": "kennwort-platzhalter",
          "token": "beispiel-kennwort-token-nicht-echt"
        },
        "properties": {
          "newPassword": {
            "maxLength": 128,
            "minLength": 12,
            "type": "string"
          },
          "token": {
            "type": "string"
          }
        },
        "required": [
          "token",
          "newPassword"
        ],
        "type": "object"
      },
      "ConsumePasswordResetResponse": {
        "example": {
          "completed": true
        },
        "properties": {
          "completed": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "completed"
        ],
        "type": "object"
      },
      "ConsumeSsoRecoveryRequest": {
        "example": {
          "newPassword": "kennwort-platzhalter",
          "token": "beispiel-kennwort-token-nicht-echt"
        },
        "properties": {
          "newPassword": {
            "maxLength": 128,
            "minLength": 12,
            "type": "string"
          },
          "token": {
            "type": "string"
          }
        },
        "required": [
          "token",
          "newPassword"
        ],
        "type": "object"
      },
      "ConsumeSsoRecoveryResponse": {
        "example": {
          "completed": true,
          "windowExpiresAt": "2026-07-20T21:15:00.000Z"
        },
        "properties": {
          "completed": {
            "enum": [
              true
            ],
            "type": "boolean"
          },
          "windowExpiresAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "completed",
          "windowExpiresAt"
        ],
        "type": "object"
      },
      "CreateAdCampaignRequest": {
        "example": {
          "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
          "endsOn": "2026-10-31",
          "goal": "plays",
          "name": "Herbstpflege 2026",
          "note": "",
          "pricing": {
            "amountCents": 45000,
            "currency": "EUR",
            "model": "flat"
          },
          "startsOn": "2026-09-01",
          "status": "booked",
          "timezone": "Europe/Berlin"
        },
        "properties": {
          "advertiserId": {
            "pattern": "^adv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "endsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "goal": {
            "enum": [
              "plays",
              "airtime",
              "contacts"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "note": {
            "default": "",
            "maxLength": 1000,
            "type": "string"
          },
          "pricing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CampaignPricing"
              },
              {
                "default": {
                  "model": "none"
                }
              }
            ]
          },
          "startsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "status": {
            "default": "draft",
            "enum": [
              "draft",
              "booked"
            ],
            "type": "string"
          },
          "timezone": {
            "type": "string"
          }
        },
        "required": [
          "advertiserId",
          "name",
          "startsOn",
          "endsOn",
          "goal"
        ],
        "type": "object"
      },
      "CreateAdvertiserRequest": {
        "example": {
          "brands": [
            "Nordwind",
            "Nordwind Sensitiv"
          ],
          "contacts": [
            {
              "email": "lena.brandt@demo.local",
              "name": "Lena Brandt",
              "receivesProofs": true
            }
          ],
          "industry": "cosmetics",
          "name": "Nordwind Naturkosmetik GmbH",
          "note": "Rahmenvereinbarung für Herbst und Winter."
        },
        "properties": {
          "brands": {
            "default": [],
            "items": {
              "maxLength": 60,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 20,
            "type": "array"
          },
          "contacts": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/AdvertiserContact"
            },
            "maxItems": 10,
            "type": "array"
          },
          "industry": {
            "enum": [
              "cosmetics",
              "personal_care",
              "food_supplements",
              "otc_medicine",
              "medical_devices",
              "food_beverage",
              "automotive",
              "household",
              "services",
              "retail",
              "other"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "note": {
            "default": "",
            "maxLength": 1000,
            "type": "string"
          }
        },
        "required": [
          "name",
          "industry"
        ],
        "type": "object"
      },
      "CreateBookingLineRequest": {
        "example": {
          "commitment": {
            "quantity": 1800,
            "unit": "plays"
          },
          "creatives": [
            {
              "creativeId": "crv_01KXR4RZ80MTV0000000000001",
              "weight": 1
            }
          ],
          "dayparts": [
            {
              "daysOfWeek": [
                1,
                2,
                3,
                4,
                5
              ],
              "timeWindows": [
                {
                  "endTime": "18:30:00",
                  "startTime": "08:00:00"
                }
              ]
            },
            {
              "daysOfWeek": [
                6
              ],
              "timeWindows": [
                {
                  "endTime": "13:00:00",
                  "startTime": "09:00:00"
                }
              ]
            }
          ],
          "endsOn": "2026-10-25",
          "minZoneSharePermille": 250,
          "name": "Schaufenster im Oktober",
          "slotsPerPodTenths": 10,
          "spotDurationMs": 10000,
          "startsOn": "2026-10-05",
          "status": "active",
          "targeting": {
            "locationIds": [],
            "placements": [],
            "playerIds": [
              "ply_01KHK34MQ0SCREEN0000000001"
            ],
            "regionCodes": [],
            "tagIds": [],
            "tenantIds": [],
            "venueTypes": []
          }
        },
        "properties": {
          "commitment": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BookingCommitment"
              },
              {
                "default": null
              }
            ]
          },
          "creatives": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/BookingCreative"
            },
            "maxItems": 20,
            "type": "array"
          },
          "dayparts": {
            "default": [],
            "items": {
              "properties": {
                "daysOfWeek": {
                  "items": {
                    "maximum": 6,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "maxItems": 7,
                  "minItems": 1,
                  "type": "array"
                },
                "timeWindows": {
                  "items": {
                    "properties": {
                      "endTime": {
                        "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                        "type": "string"
                      },
                      "startTime": {
                        "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "startTime",
                      "endTime"
                    ],
                    "type": "object"
                  },
                  "maxItems": 8,
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "daysOfWeek",
                "timeWindows"
              ],
              "type": "object"
            },
            "maxItems": 8,
            "type": "array"
          },
          "endsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "minZoneSharePermille": {
            "default": 250,
            "maximum": 1000,
            "minimum": 0,
            "type": "integer"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "slotsPerPodTenths": {
            "maximum": 120,
            "minimum": 1,
            "type": "integer"
          },
          "spotDurationMs": {
            "enum": [
              5000,
              10000,
              15000,
              20000,
              30000
            ],
            "type": "integer"
          },
          "startsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "status": {
            "default": "active",
            "enum": [
              "active",
              "paused"
            ],
            "type": "string"
          },
          "targeting": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BookingTargetingInput"
              },
              {
                "default": {}
              }
            ]
          }
        },
        "required": [
          "name",
          "startsOn",
          "endsOn",
          "spotDurationMs",
          "slotsPerPodTenths"
        ],
        "type": "object"
      },
      "CreateCheckoutDraftRequest": {
        "example": {
          "draft": {
            "apps": [
              "pharmacies-on-duty"
            ],
            "billingCycle": "monthly",
            "displays": 5,
            "hardware": [],
            "packageCode": "PRO",
            "videoWalls": 1
          },
          "entry": "display-counter",
          "purpose": "order"
        },
        "properties": {
          "draft": {
            "$ref": "#/components/schemas/BillingDraft"
          },
          "entry": {
            "enum": [
              "pricing-calculator",
              "pricing-page",
              "home-page",
              "shop",
              "content-page",
              "trial-card",
              "mail",
              "direct",
              "pairing",
              "display-counter",
              "app",
              "video-wall",
              "package",
              "billing-cycle",
              "hardware"
            ],
            "type": "string"
          },
          "purpose": {
            "default": "order",
            "enum": [
              "order",
              "payment-way",
              "payment-method"
            ],
            "type": "string"
          }
        },
        "required": [
          "draft"
        ],
        "type": "object"
      },
      "CreateCreativeFromAssetRequest": {
        "example": {
          "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
          "assetId": "ast_01KXJY2V30MEDEN00000000004",
          "mandatoryText": null,
          "name": "Herbstpflege Schaufenster"
        },
        "properties": {
          "advertiserId": {
            "pattern": "^adv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "assetId": {
            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "mandatoryText": {
            "default": null,
            "maxLength": 300,
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "advertiserId",
          "name",
          "assetId"
        ],
        "type": "object"
      },
      "CreateDeviceReconnectLinkResponse": {
        "example": {
          "expiresAt": "2099-12-31T23:59:59.000Z",
          "reconnectUrl": "https://example.com",
          "token": "drc_01ARZ3NDEKTSV4RRFFQ69G5FAV"
        },
        "properties": {
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "reconnectUrl": {
            "format": "uri",
            "type": "string"
          },
          "token": {
            "pattern": "^drc_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "token",
          "reconnectUrl",
          "expiresAt"
        ],
        "type": "object"
      },
      "CreateDisplayGroupRequest": {
        "example": {
          "canvas": {
            "height": 1080,
            "width": 3840
          },
          "members": [
            {
              "playerId": "ply_01KHK34MQ0SCREEN0000000004",
              "rect": {
                "h": 1080,
                "w": 1920,
                "x": 0,
                "y": 0
              }
            },
            {
              "playerId": "ply_01KHK34MQ0SCREEN0000000005",
              "rect": {
                "h": 1080,
                "w": 1920,
                "x": 1920,
                "y": 0
              }
            }
          ],
          "name": "Schaufenster-Band"
        },
        "properties": {
          "canvas": {
            "properties": {
              "height": {
                "maximum": 8640,
                "minimum": 1,
                "type": "integer"
              },
              "width": {
                "maximum": 15360,
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "width",
              "height"
            ],
            "type": "object"
          },
          "members": {
            "items": {
              "properties": {
                "playerId": {
                  "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "rect": {
                  "properties": {
                    "h": {
                      "maximum": 8640,
                      "minimum": 1,
                      "type": "integer"
                    },
                    "w": {
                      "maximum": 15360,
                      "minimum": 1,
                      "type": "integer"
                    },
                    "x": {
                      "maximum": 15360,
                      "minimum": 0,
                      "type": "integer"
                    },
                    "y": {
                      "maximum": 8640,
                      "minimum": 0,
                      "type": "integer"
                    }
                  },
                  "required": [
                    "x",
                    "y",
                    "w",
                    "h"
                  ],
                  "type": "object"
                }
              },
              "required": [
                "playerId",
                "rect"
              ],
              "type": "object"
            },
            "maxItems": 16,
            "minItems": 1,
            "type": "array"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "name",
          "canvas",
          "members"
        ],
        "type": "object"
      },
      "CreateDisplayGroupResponse": {
        "example": {
          "displayGroup": {
            "canvas": {
              "height": 1080,
              "width": 3840
            },
            "createdAt": "2026-03-02T09:15:00.000Z",
            "id": "dgr_01KHK4A2S0WANDBAND00000001",
            "members": [
              {
                "playerId": "ply_01KHK34MQ0SCREEN0000000004",
                "rect": {
                  "h": 1080,
                  "w": 1920,
                  "x": 0,
                  "y": 0
                }
              },
              {
                "playerId": "ply_01KHK34MQ0SCREEN0000000005",
                "rect": {
                  "h": 1080,
                  "w": 1920,
                  "x": 1920,
                  "y": 0
                }
              }
            ],
            "name": "Schaufenster-Band",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-03-02T09:15:00.000Z"
          }
        },
        "properties": {
          "displayGroup": {
            "properties": {
              "canvas": {
                "properties": {
                  "height": {
                    "maximum": 8640,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "width": {
                    "maximum": 15360,
                    "minimum": 1,
                    "type": "integer"
                  }
                },
                "required": [
                  "width",
                  "height"
                ],
                "type": "object"
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "id": {
                "pattern": "^dgr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "members": {
                "items": {
                  "properties": {
                    "playerId": {
                      "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "rect": {
                      "properties": {
                        "h": {
                          "maximum": 8640,
                          "minimum": 1,
                          "type": "integer"
                        },
                        "w": {
                          "maximum": 15360,
                          "minimum": 1,
                          "type": "integer"
                        },
                        "x": {
                          "maximum": 15360,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "y": {
                          "maximum": 8640,
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "x",
                        "y",
                        "w",
                        "h"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "playerId",
                    "rect"
                  ],
                  "type": "object"
                },
                "maxItems": 16,
                "minItems": 1,
                "type": "array"
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "id",
              "tenantId",
              "name",
              "canvas",
              "members",
              "createdAt",
              "updatedAt"
            ],
            "type": "object"
          }
        },
        "required": [
          "displayGroup"
        ],
        "type": "object"
      },
      "CreateFolderRequest": {
        "example": {
          "name": "Videos",
          "parentFolderId": "fld_01KJ7MWKW0MAPPE00000000001"
        },
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "pattern": "^[^/]+$",
            "type": "string"
          },
          "parentFolderId": {
            "default": null,
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "CreateFolderResponse": {
        "example": {
          "createdAt": "2026-03-11T15:20:00.000Z",
          "createdById": "usr_01KFB7QPW0TEAM000000000002",
          "depth": 1,
          "id": "fld_01KKEQQF80MAPPE00000000003",
          "kind": "regular",
          "name": "Videos",
          "parentFolderId": "fld_01KJ7MWKW0MAPPE00000000001",
          "path": "/Angebote/Videos",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-03-11T15:20:00.000Z"
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "createdById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "depth": {
            "maximum": 7,
            "minimum": 0,
            "type": "integer"
          },
          "id": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "kind": {
            "default": "regular",
            "enum": [
              "regular",
              "brand"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "pattern": "^[^/]+$",
            "type": "string"
          },
          "parentFolderId": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "path": {
            "maxLength": 900,
            "minLength": 1,
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "parentFolderId",
          "name",
          "path",
          "depth",
          "createdById",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "CreateGrantRequest": {
        "example": {
          "expiresAt": "2026-09-30T21:59:59.000Z",
          "kind": "allow",
          "permissions": [
            "fleet.player.read"
          ],
          "reason": "Vertretung am Standort Altona bis Ende September.",
          "resourceId": "ply_01KHK34MQ0SCREEN0000000001",
          "resourceType": "player",
          "userId": "usr_01KGH9CHW0TEAM000000000003"
        },
        "properties": {
          "expiresAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "default": "allow",
            "enum": [
              "allow",
              "deny"
            ],
            "type": "string"
          },
          "permissions": {
            "items": {
              "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$",
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "reason": {
            "maxLength": 500,
            "type": "string"
          },
          "resourceId": {
            "minLength": 1,
            "type": "string"
          },
          "resourceType": {
            "enum": [
              "scene",
              "playlist",
              "schedule",
              "player",
              "device",
              "asset",
              "tenant",
              "audit-export"
            ],
            "type": "string"
          },
          "userId": {
            "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "userId",
          "resourceType",
          "resourceId",
          "permissions"
        ],
        "type": "object"
      },
      "CreateGrantResponse": {
        "example": {
          "grant": {
            "createdAt": "2026-06-30T07:45:00.000Z",
            "expiresAt": "2026-09-30T21:59:59.000Z",
            "grantedById": "usr_01KERQ74K0TEAM000000000001",
            "id": "grn_01KGH9ECF0GRANT00000000002",
            "kind": "allow",
            "permissions": [
              "fleet.player.read"
            ],
            "reason": "Vertretung am Standort Altona bis Ende September.",
            "resourceId": "ply_01KHK34MQ0SCREEN0000000001",
            "resourceType": "player",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "userId": "usr_01KGH9CHW0TEAM000000000003"
          }
        },
        "properties": {
          "grant": {
            "properties": {
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "expiresAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "grantedById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "id": {
                "pattern": "^grn_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "kind": {
                "enum": [
                  "allow",
                  "deny"
                ],
                "type": "string"
              },
              "permissions": {
                "items": {
                  "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$",
                  "type": "string"
                },
                "type": "array"
              },
              "reason": {
                "maxLength": 500,
                "type": [
                  "string",
                  "null"
                ]
              },
              "resourceId": {
                "type": "string"
              },
              "resourceType": {
                "enum": [
                  "scene",
                  "playlist",
                  "schedule",
                  "player",
                  "device",
                  "asset",
                  "tenant",
                  "audit-export"
                ],
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "userId": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              }
            },
            "required": [
              "id",
              "tenantId",
              "userId",
              "resourceType",
              "resourceId",
              "permissions",
              "kind",
              "grantedById",
              "reason",
              "expiresAt",
              "createdAt"
            ],
            "type": "object"
          }
        },
        "required": [
          "grant"
        ],
        "type": "object"
      },
      "CreateHardwareInterestRequest": {
        "example": {
          "companyName": "Adler-Apotheke Inh. Petra Weber e.K.",
          "consent": true,
          "contactName": "Julia Petersen",
          "email": "julia.petersen@demo.local",
          "note": "Zwei Geraete fuer die Filiale in Wandsbek.",
          "phone": "+49 40 1234567",
          "quantity": 2,
          "skuCode": "HW-PLAYER-4G"
        },
        "properties": {
          "companyName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "consent": {
            "enum": [
              true
            ],
            "type": "boolean"
          },
          "contactName": {
            "maxLength": 200,
            "type": [
              "string",
              "null"
            ]
          },
          "email": {
            "format": "email",
            "maxLength": 255,
            "type": "string"
          },
          "note": {
            "maxLength": 500,
            "type": [
              "string",
              "null"
            ]
          },
          "phone": {
            "maxLength": 40,
            "type": [
              "string",
              "null"
            ]
          },
          "quantity": {
            "default": 1,
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          "skuCode": {
            "maxLength": 60,
            "minLength": 3,
            "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
            "type": "string"
          }
        },
        "required": [
          "skuCode",
          "companyName",
          "email",
          "consent"
        ],
        "type": "object"
      },
      "CreateHardwareInterestResponse": {
        "example": {
          "confirmationEmail": "julia.petersen@demo.local"
        },
        "properties": {
          "confirmationEmail": {
            "format": "email",
            "type": "string"
          }
        },
        "required": [
          "confirmationEmail"
        ],
        "type": "object"
      },
      "CreateHardwareOrderRequest": {
        "example": {
          "acceptedTerms": true,
          "actsAsBusiness": true,
          "contact": {
            "companyName": "Adler-Apotheke Inh. Petra Weber e.K.",
            "contactName": "Julia Petersen",
            "email": "julia.petersen@demo.local",
            "phone": "+49 40 1234567"
          },
          "items": [
            {
              "quantity": 1,
              "skuCode": "HW-PLAYER-2G"
            }
          ],
          "note": null,
          "shippingAddress": {
            "addressLine1": "Wandsbeker Marktstraße 73",
            "addressLine2": null,
            "city": "Hamburg",
            "countryCode": "DE",
            "postalCode": "22041"
          }
        },
        "properties": {
          "acceptedTerms": {
            "enum": [
              true
            ],
            "type": "boolean"
          },
          "actsAsBusiness": {
            "enum": [
              true
            ],
            "type": "boolean"
          },
          "contact": {
            "properties": {
              "companyName": {
                "maxLength": 200,
                "type": [
                  "string",
                  "null"
                ]
              },
              "contactName": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "email": {
                "format": "email",
                "maxLength": 255,
                "type": "string"
              },
              "phone": {
                "maxLength": 40,
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "companyName",
              "contactName",
              "email",
              "phone"
            ],
            "type": "object"
          },
          "items": {
            "items": {
              "properties": {
                "quantity": {
                  "maximum": 50,
                  "minimum": 1,
                  "type": "integer"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "skuCode",
                "quantity"
              ],
              "type": "object"
            },
            "maxItems": 10,
            "minItems": 1,
            "type": "array"
          },
          "note": {
            "maxLength": 2000,
            "type": [
              "string",
              "null"
            ]
          },
          "shippingAddress": {
            "properties": {
              "addressLine1": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "addressLine2": {
                "maxLength": 200,
                "type": [
                  "string",
                  "null"
                ]
              },
              "city": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "countryCode": {
                "pattern": "^[A-Z]{2}$",
                "type": "string"
              },
              "postalCode": {
                "maxLength": 20,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "addressLine1",
              "addressLine2",
              "postalCode",
              "city",
              "countryCode"
            ],
            "type": "object"
          }
        },
        "required": [
          "contact",
          "shippingAddress",
          "items",
          "acceptedTerms",
          "actsAsBusiness"
        ],
        "type": "object"
      },
      "CreateHardwareOrderResponse": {
        "example": {
          "confirmationEmail": "julia.petersen@demo.local",
          "currency": "EUR",
          "grossCents": 17731,
          "items": [
            {
              "displayName": "Player Lite",
              "quantity": 1,
              "skuCode": "HW-PLAYER-2G",
              "unitPriceNetCents": 14900
            }
          ],
          "netCents": 14900,
          "orderNumber": "HWO-2026-0042",
          "vatCents": 2831,
          "vatRatePercent": 19
        },
        "properties": {
          "confirmationEmail": {
            "format": "email",
            "type": "string"
          },
          "currency": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string"
          },
          "grossCents": {
            "minimum": 0,
            "type": "integer"
          },
          "items": {
            "items": {
              "properties": {
                "displayName": {
                  "maxLength": 120,
                  "minLength": 1,
                  "type": "string"
                },
                "quantity": {
                  "maximum": 50,
                  "minimum": 1,
                  "type": "integer"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                },
                "unitPriceNetCents": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "skuCode",
                "quantity",
                "unitPriceNetCents",
                "displayName"
              ],
              "type": "object"
            },
            "minItems": 1,
            "type": "array"
          },
          "netCents": {
            "minimum": 0,
            "type": "integer"
          },
          "orderNumber": {
            "pattern": "^HWO-\\d{4}-\\d{4,}$",
            "type": "string"
          },
          "vatCents": {
            "minimum": 0,
            "type": "integer"
          },
          "vatRatePercent": {
            "maximum": 100,
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "orderNumber",
          "items",
          "currency",
          "vatRatePercent",
          "netCents",
          "vatCents",
          "grossCents",
          "confirmationEmail"
        ],
        "type": "object"
      },
      "CreateInterimProofRequest": {
        "example": {
          "bookingLineId": "bkl_01KXR4Q9T0BKNG000000000001",
          "from": "2026-10-01",
          "to": "2026-10-11"
        },
        "properties": {
          "bookingLineId": {
            "pattern": "^bkl_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "from": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "to": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          }
        },
        "required": [
          "bookingLineId"
        ],
        "type": "object"
      },
      "CreateInterimProofResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ProofSummary"
          },
          {
            "properties": {
              "addenda": {
                "items": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ProofReference"
                    },
                    {
                      "type": "object"
                    }
                  ]
                },
                "type": "array"
              },
              "batchMerkleRoot": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              },
              "dataSha256": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              },
              "deliveries": {
                "items": {
                  "$ref": "#/components/schemas/ProofDelivery"
                },
                "type": "array"
              },
              "figures": {
                "$ref": "#/components/schemas/ProofFigures"
              },
              "files": {
                "items": {
                  "$ref": "#/components/schemas/ProofFile"
                },
                "type": "array"
              },
              "manifestSha256": {
                "pattern": "^[a-f0-9]{64}$",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "figures",
              "dataSha256",
              "batchMerkleRoot",
              "manifestSha256",
              "files",
              "addenda",
              "deliveries"
            ],
            "type": "object"
          }
        ],
        "example": {
          "addenda": [],
          "addendumOf": null,
          "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
          "advertiserName": "Nordwind Naturkosmetik GmbH",
          "airtimeSeconds": 18320,
          "batchMerkleRoot": "c8ee2c3fc4b52fd3b6340b273b209c23bb6c0d14628a8b8acb56c7157a4e9339",
          "bookingLineId": "bkl_01KXR4Q9T0BKNG000000000001",
          "bookingLineName": "Schaufenster und Kasse",
          "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
          "campaignName": "Herbstpflege 2026",
          "checkCode": "WEYM-W7PA-6VT6",
          "closedAt": "2026-10-12T08:00:00.000Z",
          "dataSha256": "942905eb09e147401a15261b602738573f30cf0c0f0587bcbbf85c75329e68b0",
          "deliveries": [],
          "figures": {
            "captures": {
              "count": 0,
              "samples": []
            },
            "creatives": [
              {
                "approvedAt": "2026-08-26T07:55:00.000Z",
                "contentSha256": "7d2f4c1a9b3e6f58c0a1d2e3f4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3",
                "creativeId": "crv_01KXR4RZ80MTV0000000000001",
                "mandatoryTextChecked": false,
                "name": "Herbstpflege Schaufenster",
                "validPlays": 1832,
                "weight": 1
              }
            ],
            "distribution": {
              "curve": [
                {
                  "cumulativePlanned": 260,
                  "cumulativeValid": 250,
                  "day": "2026-10-01",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 520,
                  "cumulativeValid": 500,
                  "day": "2026-10-02",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 576,
                  "cumulativeValid": 552,
                  "day": "2026-10-03",
                  "plannedPlays": 56,
                  "validPlays": 52
                },
                {
                  "cumulativePlanned": 576,
                  "cumulativeValid": 552,
                  "day": "2026-10-04",
                  "plannedPlays": 0,
                  "validPlays": 0
                },
                {
                  "cumulativePlanned": 836,
                  "cumulativeValid": 802,
                  "day": "2026-10-05",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 1096,
                  "cumulativeValid": 1052,
                  "day": "2026-10-06",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 1356,
                  "cumulativeValid": 1302,
                  "day": "2026-10-07",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 1616,
                  "cumulativeValid": 1552,
                  "day": "2026-10-08",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 1876,
                  "cumulativeValid": 1802,
                  "day": "2026-10-09",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 1932,
                  "cumulativeValid": 1832,
                  "day": "2026-10-10",
                  "plannedPlays": 56,
                  "validPlays": 30
                },
                {
                  "cumulativePlanned": 1932,
                  "cumulativeValid": 1832,
                  "day": "2026-10-11",
                  "plannedPlays": 0,
                  "validPlays": 0
                }
              ],
              "dayparts": [
                {
                  "airtimeSeconds": 3660,
                  "displays": 2,
                  "key": "early",
                  "locations": 1,
                  "merged": false,
                  "mergedKeys": [],
                  "share": 0.1998,
                  "validPlays": 366
                },
                {
                  "airtimeSeconds": 3710,
                  "displays": 2,
                  "key": "morning",
                  "locations": 1,
                  "merged": false,
                  "mergedKeys": [],
                  "share": 0.2025,
                  "validPlays": 371
                },
                {
                  "airtimeSeconds": 3520,
                  "displays": 2,
                  "key": "midday",
                  "locations": 1,
                  "merged": false,
                  "mergedKeys": [],
                  "share": 0.1921,
                  "validPlays": 352
                },
                {
                  "airtimeSeconds": 5480,
                  "displays": 2,
                  "key": "afternoon",
                  "locations": 1,
                  "merged": false,
                  "mergedKeys": [],
                  "share": 0.2991,
                  "validPlays": 548
                },
                {
                  "airtimeSeconds": 1950,
                  "displays": 2,
                  "key": "evening",
                  "locations": 1,
                  "merged": false,
                  "mergedKeys": [],
                  "share": 0.1064,
                  "validPlays": 195
                }
              ],
              "locations": [
                {
                  "airtimeSeconds": 18320,
                  "city": "Hamburg",
                  "displays": 2,
                  "label": "Hamburg (227) · Apotheke",
                  "named": false,
                  "postalArea": "227",
                  "validPlays": 1832,
                  "venueType": "pharmacy"
                }
              ],
              "placements": [
                {
                  "airtimeSeconds": 18320,
                  "displays": 2,
                  "key": "merged",
                  "locations": 1,
                  "merged": true,
                  "mergedKeys": [
                    "checkout",
                    "window"
                  ],
                  "share": 1,
                  "validPlays": 1832
                }
              ],
              "regions": [
                {
                  "airtimeSeconds": 18320,
                  "displays": 2,
                  "key": "merged",
                  "locations": 1,
                  "merged": true,
                  "mergedKeys": [
                    "DE-HH"
                  ],
                  "share": 1,
                  "validPlays": 1832
                }
              ],
              "venueTypes": [
                {
                  "airtimeSeconds": 18320,
                  "displays": 2,
                  "key": "merged",
                  "locations": 1,
                  "merged": true,
                  "mergedKeys": [
                    "pharmacy"
                  ],
                  "share": 1,
                  "validPlays": 1832
                }
              ]
            },
            "kind": "interim",
            "method": {
              "contactModelVersion": 1,
              "dwellSeconds": {
                "checkout": 90,
                "other": 60,
                "sales_floor": 300,
                "waiting_area": 600,
                "window": 5
              },
              "limits": [
                "deviceKeyFile",
                "rendererCapture",
                "contactsModelled",
                "gapIsNotZero",
                "audienceSelfDeclared"
              ],
              "maxClockOffsetMs": 5000,
              "minCompletionPermille": 900,
              "minZoneSharePermille": 250,
              "networkParametersVersion": 2,
              "placementFactorPermille": {
                "checkout": 800,
                "other": 500,
                "sales_floor": 600,
                "waiting_area": 700,
                "window": 350
              },
              "ruleVersion": 1
            },
            "period": {
              "from": "2026-10-01",
              "timezone": "Europe/Berlin",
              "to": "2026-10-11"
            },
            "quality": {
              "coverage": {
                "lateHours": 2,
                "missingHours": 3,
                "onTimeHours": 165,
                "plannedHours": 170,
                "reportedHours": 167,
                "share": 0.9824
              },
              "failures": {
                "byReason": [
                  {
                    "plays": 4,
                    "reason": "render_error",
                    "share": 0.0976
                  },
                  {
                    "plays": 0,
                    "reason": "wrong_content",
                    "share": 0
                  },
                  {
                    "plays": 30,
                    "reason": "panel_off",
                    "share": 0.7317
                  },
                  {
                    "plays": 0,
                    "reason": "not_visible",
                    "share": 0
                  },
                  {
                    "plays": 0,
                    "reason": "zone_too_small",
                    "share": 0
                  },
                  {
                    "plays": 7,
                    "reason": "too_short",
                    "share": 0.1707
                  },
                  {
                    "plays": 0,
                    "reason": "outside_booking",
                    "share": 0
                  },
                  {
                    "plays": 0,
                    "reason": "clock_unreliable",
                    "share": 0
                  }
                ],
                "invalid": 41,
                "measured": 1873,
                "share": 0.0219
              },
              "late": {
                "hours": 2,
                "plays": 14,
                "share": 0.0075
              },
              "panelUnconfirmed": {
                "displays": 0,
                "share": 0,
                "validPlays": 0
              }
            },
            "records": {
              "batches": 522,
              "chain": {
                "fork": 0,
                "gap": 0,
                "ok": 522,
                "restart": 0
              },
              "devices": 2,
              "plays": 1873,
              "receivedBefore": "2026-10-12T08:00:00.000Z",
              "receivedFrom": null,
              "unsignedBatches": 0
            },
            "result": {
              "airtimeSeconds": 18320,
              "commitment": {
                "lineQuantity": 12000,
                "quantity": 2163.934,
                "unit": "plays"
              },
              "contacts": {
                "byGrade": [
                  {
                    "contacts": 6123,
                    "grade": "A",
                    "share": 1
                  }
                ],
                "contactModelVersion": 1,
                "gradeCExcluded": false,
                "total": 6123
              },
              "deliveredInUnit": 1832,
              "deliveryToPlan": 0.9482,
              "displays": {
                "reached": 2,
                "targeted": 2
              },
              "fulfilment": 0.8466,
              "locations": {
                "reached": 1,
                "targeted": 1
              },
              "plannedPlays": 1932,
              "plays": 1873,
              "validPlays": 1832
            },
            "schemaVersion": 1,
            "subject": {
              "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
              "advertiserName": "Nordwind Naturkosmetik GmbH",
              "bookingLineId": "bkl_01KXR4Q9T0BKNG000000000001",
              "bookingLineName": "Schaufenster und Kasse",
              "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
              "campaignName": "Herbstpflege 2026",
              "commitment": {
                "quantity": 12000,
                "unit": "plays"
              },
              "lineEndsOn": "2026-10-31",
              "lineStartsOn": "2026-09-01",
              "owner": "tenant",
              "slotsPerPodTenths": 10,
              "spotDurationMs": 10000,
              "targeting": {
                "displays": 2,
                "locations": 1,
                "placements": [
                  "window",
                  "checkout"
                ],
                "regionCodes": [
                  "DE-HH"
                ],
                "venueTypes": [
                  "pharmacy"
                ]
              },
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            }
          },
          "files": [
            {
              "id": "pfi_01KZ4T6M80DTA0431000000001",
              "kind": "pdf",
              "name": "SZN-2026-000431.pdf",
              "sha256": "741454899e9a9a9bd6ac01ec3eab88db774e2940d2d31dd67660d9c3548c8073",
              "sizeBytes": 298512
            },
            {
              "id": "pfi_01KZ4T6M80DTA0431000000002",
              "kind": "csv",
              "name": "SZN-2026-000431.csv",
              "sha256": "ec330505f237cf97747034233e00a9f86aebf5667cd1251c19c2655b3b4dcba8",
              "sizeBytes": 21877
            },
            {
              "id": "pfi_01KZ4T6M80DTA0431000000003",
              "kind": "manifest",
              "name": "SZN-2026-000431.manifest.json",
              "sha256": "0b890a0d60003ec75c55f0d217884c93f765e69ab6b666bde0f3a57ff1fff8f3",
              "sizeBytes": 54390
            }
          ],
          "fulfilment": 0.8466,
          "id": "prf_01KZ4T6M80NCHWS00000000431",
          "issuedAt": "2026-10-12T08:00:03.000Z",
          "keyId": "szn-proof-2026-02",
          "kind": "interim",
          "manifestSha256": "0b890a0d60003ec75c55f0d217884c93f765e69ab6b666bde0f3a57ff1fff8f3",
          "number": "SZN-2026-000431",
          "owner": "tenant",
          "period": {
            "from": "2026-10-01",
            "timezone": "Europe/Berlin",
            "to": "2026-10-11"
          },
          "periodCloseId": "pcl_01KZ4T6M80ZTRM000000000431",
          "retainedUntil": "2036-10-12T08:00:00.000Z",
          "signedAt": "2026-10-12T08:00:05.000Z",
          "status": "issued",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "validPlays": 1832
        }
      },
      "CreateLayoutTemplateRequest": {
        "example": {
          "canvas": {
            "height": 1920,
            "width": 1080
          },
          "description": "Kopfband für die Wortmarke, große Mittelfläche, Fußzeile für Hinweise.",
          "name": "Schaufenster Hochformat",
          "slots": {
            "fuss": {
              "h": 320,
              "w": 1080,
              "x": 0,
              "y": 1600,
              "zIndex": 1
            },
            "kopf": {
              "h": 320,
              "w": 1080,
              "x": 0,
              "y": 0,
              "zIndex": 0
            },
            "mitte": {
              "h": 1280,
              "w": 1080,
              "x": 0,
              "y": 320,
              "zIndex": 0
            }
          }
        },
        "properties": {
          "canvas": {
            "properties": {
              "height": {
                "maximum": 7680,
                "minimum": 320,
                "type": "integer"
              },
              "width": {
                "maximum": 7680,
                "minimum": 320,
                "type": "integer"
              }
            },
            "required": [
              "width",
              "height"
            ],
            "type": "object"
          },
          "description": {
            "default": "",
            "maxLength": 2000,
            "type": "string"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "slots": {
            "additionalProperties": {
              "properties": {
                "h": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "w": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "x": {
                  "minimum": 0,
                  "type": "integer"
                },
                "y": {
                  "minimum": 0,
                  "type": "integer"
                },
                "zIndex": {
                  "maximum": 1000,
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "x",
                "y",
                "w",
                "h",
                "zIndex"
              ],
              "type": "object"
            },
            "type": "object"
          }
        },
        "required": [
          "name",
          "canvas",
          "slots"
        ],
        "type": "object"
      },
      "CreateLayoutTemplateResponse": {
        "example": {
          "canvas": {
            "height": 1920,
            "width": 1080
          },
          "createdAt": "2026-03-02T09:10:00.000Z",
          "createdById": "usr_01KFB7QPW0TEAM000000000002",
          "description": "Kopfband für die Wortmarke, große Mittelfläche, Fußzeile für Hinweise.",
          "id": "lyt_01KJPWZGJ0RASTER0000000001",
          "isBuiltIn": false,
          "name": "Schaufenster Hochformat",
          "slots": {
            "fuss": {
              "h": 320,
              "w": 1080,
              "x": 0,
              "y": 1600,
              "zIndex": 1
            },
            "kopf": {
              "h": 320,
              "w": 1080,
              "x": 0,
              "y": 0,
              "zIndex": 0
            },
            "mitte": {
              "h": 1280,
              "w": 1080,
              "x": 0,
              "y": 320,
              "zIndex": 0
            }
          },
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-03-02T09:10:00.000Z"
        },
        "properties": {
          "canvas": {
            "properties": {
              "height": {
                "maximum": 7680,
                "minimum": 320,
                "type": "integer"
              },
              "width": {
                "maximum": 7680,
                "minimum": 320,
                "type": "integer"
              }
            },
            "required": [
              "width",
              "height"
            ],
            "type": "object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "createdById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "description": {
            "maxLength": 2000,
            "type": "string"
          },
          "id": {
            "pattern": "^(?:lyt_[0-9A-HJKMNP-TV-Z]{26}|standard-1x1|split-vertical|split-horizontal|grid-2x2|main-sidebar|main-sidebar-2|main-sidebar-3|thirds-vertical|quarters-vertical|header-main|main-ticker|header-main-ticker|sidebar-left-main|header-split|grid-3x2|main-sidebar-ticker|hero-strip-3|portrait-full|portrait-split|portrait-thirds|portrait-main-footer|portrait-half-grid-4|portrait-main-footer-2|portrait-main-footer-3|portrait-header-main|portrait-header-main-ticker|portrait-quarters|portrait-grid-2x3|portrait-hero-columns|ultra-full|ultra-halves|ultra-thirds|ultra-quarters|ultra-center-stage|ultra-main-sidebar|ultra-header-thirds|ultra-thirds-ticker)$",
            "type": "string"
          },
          "isBuiltIn": {
            "type": "boolean"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "slots": {
            "additionalProperties": {
              "properties": {
                "h": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "w": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "x": {
                  "minimum": 0,
                  "type": "integer"
                },
                "y": {
                  "minimum": 0,
                  "type": "integer"
                },
                "zIndex": {
                  "maximum": 1000,
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "x",
                "y",
                "w",
                "h",
                "zIndex"
              ],
              "type": "object"
            },
            "type": "object"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "name",
          "description",
          "canvas",
          "slots",
          "isBuiltIn",
          "createdById",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "CreateLocationRequest": {
        "example": {
          "address": {
            "city": "Hamburg",
            "country": "DE",
            "postalCode": "22765",
            "street": "Bahnhofstraße 12"
          },
          "coordinates": {
            "lat": 53.5511,
            "lng": 9.9937
          },
          "name": "Hauptstelle",
          "note": "Verkaufsraum und Schaufenster; der Beratungsraum liegt im ersten Stock.",
          "openingHours": {
            "specialDays": [],
            "weekly": {
              "fri": [],
              "mon": [],
              "sat": [],
              "sun": [],
              "thu": [],
              "tue": [],
              "wed": []
            }
          },
          "region": "DE-BW",
          "timeZone": "Europe/Berlin",
          "venueType": "pharmacy"
        },
        "properties": {
          "address": {
            "properties": {
              "city": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "country": {
                "pattern": "^[A-Z]{2}$",
                "type": "string"
              },
              "postalCode": {
                "maxLength": 20,
                "minLength": 1,
                "type": "string"
              },
              "street": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "street",
              "postalCode",
              "city",
              "country"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "coordinates": {
            "properties": {
              "lat": {
                "maximum": 90,
                "minimum": -90,
                "type": "number"
              },
              "lng": {
                "maximum": 180,
                "minimum": -180,
                "type": "number"
              }
            },
            "required": [
              "lat",
              "lng"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "note": {
            "maxLength": 500,
            "type": "string"
          },
          "openingHours": {
            "$ref": "#/components/schemas/OpeningHours"
          },
          "region": {
            "$ref": "#/components/schemas/LocationRegion"
          },
          "timeZone": {
            "type": "string"
          },
          "venueType": {
            "enum": [
              "pharmacy",
              "workshop",
              "bakery",
              "beverage_store",
              "grocery",
              "kiosk",
              "fitness_studio",
              "medical_practice",
              "retail",
              "other"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "name",
          "timeZone"
        ],
        "type": "object"
      },
      "CreateLocationResponse": {
        "example": {
          "location": {
            "address": {
              "city": "Hamburg",
              "country": "DE",
              "postalCode": "22765",
              "street": "Bahnhofstraße 12"
            },
            "coordinates": {
              "lat": 53.5511,
              "lng": 9.9937
            },
            "createdAt": "2026-02-16T11:20:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "id": "loc_01KHK4B3T0ADRESSE000000001",
            "name": "Hauptstelle",
            "note": "Verkaufsraum und Schaufenster; der Beratungsraum liegt im ersten Stock.",
            "openingHours": {
              "specialDays": [
                {
                  "closed": false,
                  "endDate": "2026-12-24",
                  "label": "Heiligabend",
                  "startDate": "2026-12-24",
                  "windows": [
                    {
                      "closes": "12:00",
                      "opens": "08:30"
                    }
                  ]
                },
                {
                  "closed": true,
                  "endDate": "2027-01-02",
                  "label": "Inventur",
                  "startDate": "2027-01-02",
                  "windows": []
                }
              ],
              "weekly": {
                "fri": [
                  {
                    "closes": "13:00",
                    "opens": "08:30"
                  },
                  {
                    "closes": "18:30",
                    "opens": "14:00"
                  }
                ],
                "mon": [
                  {
                    "closes": "13:00",
                    "opens": "08:30"
                  },
                  {
                    "closes": "18:30",
                    "opens": "14:00"
                  }
                ],
                "sat": [
                  {
                    "closes": "14:00",
                    "opens": "09:00"
                  }
                ],
                "sun": [],
                "thu": [
                  {
                    "closes": "13:00",
                    "opens": "08:30"
                  },
                  {
                    "closes": "18:30",
                    "opens": "14:00"
                  }
                ],
                "tue": [
                  {
                    "closes": "13:00",
                    "opens": "08:30"
                  },
                  {
                    "closes": "18:30",
                    "opens": "14:00"
                  }
                ],
                "wed": [
                  {
                    "closes": "13:00",
                    "opens": "08:30"
                  }
                ]
              }
            },
            "playerCount": 0,
            "region": "DE-HH",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "timeZone": "Europe/Berlin",
            "updatedAt": "2026-02-16T11:20:00.000Z",
            "venueType": "pharmacy",
            "version": 0
          }
        },
        "properties": {
          "location": {
            "properties": {
              "address": {
                "properties": {
                  "city": {
                    "maxLength": 120,
                    "minLength": 1,
                    "type": "string"
                  },
                  "country": {
                    "pattern": "^[A-Z]{2}$",
                    "type": "string"
                  },
                  "postalCode": {
                    "maxLength": 20,
                    "minLength": 1,
                    "type": "string"
                  },
                  "street": {
                    "maxLength": 200,
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "street",
                  "postalCode",
                  "city",
                  "country"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "coordinates": {
                "properties": {
                  "lat": {
                    "maximum": 90,
                    "minimum": -90,
                    "type": "number"
                  },
                  "lng": {
                    "maximum": 180,
                    "minimum": -180,
                    "type": "number"
                  }
                },
                "required": [
                  "lat",
                  "lng"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "createdById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "id": {
                "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "note": {
                "maxLength": 500,
                "type": "string"
              },
              "openingHours": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpeningHours"
                  },
                  {
                    "default": null
                  }
                ]
              },
              "playerCount": {
                "minimum": 0,
                "type": "integer"
              },
              "region": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LocationRegion"
                  },
                  {
                    "default": null
                  }
                ]
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "timeZone": {
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "venueType": {
                "default": null,
                "enum": [
                  "pharmacy",
                  "workshop",
                  "bakery",
                  "beverage_store",
                  "grocery",
                  "kiosk",
                  "fitness_studio",
                  "medical_practice",
                  "retail",
                  "other"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "version": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "id",
              "tenantId",
              "name",
              "address",
              "timeZone",
              "coordinates",
              "note",
              "createdById",
              "version",
              "createdAt",
              "updatedAt",
              "playerCount"
            ],
            "type": "object"
          }
        },
        "required": [
          "location"
        ],
        "type": "object"
      },
      "CreateMeHardwareInterestRequest": {
        "example": {
          "consent": true,
          "note": "Zwei Geraete fuer die Filiale in Wandsbek.",
          "quantity": 2,
          "skuCode": "HW-PLAYER-4G"
        },
        "properties": {
          "consent": {
            "enum": [
              true
            ],
            "type": "boolean"
          },
          "note": {
            "maxLength": 500,
            "type": [
              "string",
              "null"
            ]
          },
          "quantity": {
            "default": 1,
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          "skuCode": {
            "maxLength": 60,
            "minLength": 3,
            "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
            "type": "string"
          }
        },
        "required": [
          "skuCode",
          "consent"
        ],
        "type": "object"
      },
      "CreateMeHardwareInterestResponse": {
        "example": {
          "confirmationEmail": "julia.petersen@demo.local",
          "confirmed": true
        },
        "properties": {
          "confirmationEmail": {
            "format": "email",
            "type": "string"
          },
          "confirmed": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "confirmationEmail",
          "confirmed"
        ],
        "type": "object"
      },
      "CreateMeHardwareOrderRequest": {
        "example": {
          "acceptedTerms": true,
          "items": [
            {
              "quantity": 1,
              "skuCode": "HW-PLAYER-2G"
            }
          ],
          "note": null,
          "recipient": {
            "companyName": "Adler-Apotheke Filiale Eppendorf",
            "contactName": "Julia Petersen",
            "phone": "+49 40 1234567"
          },
          "shippingAddress": {
            "addressLine1": "Eppendorfer Baum 5",
            "addressLine2": null,
            "city": "Hamburg",
            "countryCode": "DE",
            "postalCode": "20249"
          }
        },
        "properties": {
          "acceptedTerms": {
            "enum": [
              true
            ],
            "type": "boolean"
          },
          "items": {
            "items": {
              "properties": {
                "quantity": {
                  "maximum": 50,
                  "minimum": 1,
                  "type": "integer"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "skuCode",
                "quantity"
              ],
              "type": "object"
            },
            "maxItems": 10,
            "minItems": 1,
            "type": "array"
          },
          "note": {
            "maxLength": 2000,
            "type": [
              "string",
              "null"
            ]
          },
          "recipient": {
            "properties": {
              "companyName": {
                "maxLength": 200,
                "type": [
                  "string",
                  "null"
                ]
              },
              "contactName": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "phone": {
                "maxLength": 40,
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "companyName",
              "contactName",
              "phone"
            ],
            "type": "object"
          },
          "shippingAddress": {
            "properties": {
              "addressLine1": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "addressLine2": {
                "maxLength": 200,
                "type": [
                  "string",
                  "null"
                ]
              },
              "city": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "countryCode": {
                "pattern": "^[A-Z]{2}$",
                "type": "string"
              },
              "postalCode": {
                "maxLength": 20,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "addressLine1",
              "addressLine2",
              "postalCode",
              "city",
              "countryCode"
            ],
            "type": "object"
          }
        },
        "required": [
          "items",
          "acceptedTerms"
        ],
        "type": "object"
      },
      "CreateMeHardwareOrderResponse": {
        "example": {
          "confirmationEmail": "buchhaltung@adler-apotheke.example",
          "currency": "EUR",
          "grossCents": 17731,
          "items": [
            {
              "displayName": "Player Lite",
              "quantity": 1,
              "skuCode": "HW-PLAYER-2G",
              "unitPriceNetCents": 14900
            }
          ],
          "netCents": 14900,
          "orderNumber": "HWO-2026-0042",
          "vatCents": 2831,
          "vatRatePercent": 19
        },
        "properties": {
          "confirmationEmail": {
            "format": "email",
            "type": "string"
          },
          "currency": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string"
          },
          "grossCents": {
            "minimum": 0,
            "type": "integer"
          },
          "items": {
            "items": {
              "properties": {
                "displayName": {
                  "maxLength": 120,
                  "minLength": 1,
                  "type": "string"
                },
                "quantity": {
                  "maximum": 50,
                  "minimum": 1,
                  "type": "integer"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                },
                "unitPriceNetCents": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "skuCode",
                "quantity",
                "unitPriceNetCents",
                "displayName"
              ],
              "type": "object"
            },
            "minItems": 1,
            "type": "array"
          },
          "netCents": {
            "minimum": 0,
            "type": "integer"
          },
          "orderNumber": {
            "pattern": "^HWO-\\d{4}-\\d{4,}$",
            "type": "string"
          },
          "vatCents": {
            "minimum": 0,
            "type": "integer"
          },
          "vatRatePercent": {
            "maximum": 100,
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "orderNumber",
          "items",
          "currency",
          "vatRatePercent",
          "netCents",
          "vatCents",
          "grossCents",
          "confirmationEmail"
        ],
        "type": "object"
      },
      "CreateMetricExportRequest": {
        "example": {
          "days": 30,
          "format": "pdf",
          "granularity": "1d",
          "groupBy": "playerId"
        },
        "properties": {
          "days": {
            "default": 30,
            "maximum": 365,
            "minimum": 1,
            "type": "integer"
          },
          "format": {
            "enum": [
              "csv",
              "json",
              "pdf"
            ],
            "type": "string"
          },
          "granularity": {
            "enum": [
              "1h",
              "1d"
            ],
            "type": "string"
          },
          "groupBy": {
            "enum": [
              "playerId",
              "deviceId",
              "sceneId",
              "appId"
            ],
            "type": "string"
          }
        },
        "required": [
          "format"
        ],
        "type": "object"
      },
      "CreateMetricExportResponse": {
        "example": {
          "expiresAt": "2026-07-20T09:30:00.000Z",
          "format": "pdf",
          "generatedReportId": "gnr_01KXYTWGG0BERCHT0000000002",
          "remaining": 2,
          "sizeBytes": 84120,
          "url": "https://s3.demo.local/signage-medien/berichte/gnr_01KXYTWGG0BERCHT0000000002.pdf",
          "window": {
            "days": 30,
            "from": "2026-06-20T09:15:00.000Z",
            "granularity": "1d",
            "to": "2026-07-20T09:15:00.000Z"
          }
        },
        "properties": {
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "format": {
            "enum": [
              "csv",
              "json",
              "pdf"
            ],
            "type": "string"
          },
          "generatedReportId": {
            "pattern": "^gnr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "remaining": {
            "minimum": 0,
            "type": "integer"
          },
          "sizeBytes": {
            "minimum": 0,
            "type": "integer"
          },
          "url": {
            "format": "uri",
            "type": "string"
          },
          "window": {
            "properties": {
              "days": {
                "maximum": 365,
                "minimum": 1,
                "type": "integer"
              },
              "from": {
                "format": "date-time",
                "type": "string"
              },
              "granularity": {
                "enum": [
                  "1h",
                  "1d"
                ],
                "type": "string"
              },
              "to": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "from",
              "to",
              "granularity",
              "days"
            ],
            "type": "object"
          }
        },
        "required": [
          "generatedReportId",
          "format",
          "window",
          "url",
          "expiresAt",
          "sizeBytes",
          "remaining"
        ],
        "type": "object"
      },
      "CreatePlayerTagRequest": {
        "example": {
          "color": "#1f6f4a",
          "name": "Schaufenster"
        },
        "properties": {
          "color": {
            "pattern": "^#[0-9a-fA-F]{6}$",
            "type": "string"
          },
          "name": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "name",
          "color"
        ],
        "type": "object"
      },
      "CreatePlayerTagResponse": {
        "example": {
          "tag": {
            "color": "#1f6f4a",
            "createdAt": "2026-02-16T11:40:00.000Z",
            "id": "ptg_01KHK403M0TAG0000000000001",
            "name": "Schaufenster",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          }
        },
        "properties": {
          "tag": {
            "properties": {
              "color": {
                "pattern": "^#[0-9a-fA-F]{6}$",
                "type": "string"
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "id": {
                "pattern": "^ptg_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "name": {
                "maxLength": 50,
                "minLength": 1,
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              }
            },
            "required": [
              "id",
              "tenantId",
              "name",
              "color",
              "createdAt"
            ],
            "type": "object"
          }
        },
        "required": [
          "tag"
        ],
        "type": "object"
      },
      "CreatePlaylistRequest": {
        "example": {
          "defaultItemDurationMs": 20000,
          "defaultTransition": {
            "durationMs": 400,
            "kind": "fade"
          },
          "description": "Begrüßung und Wochenangebot im Wechsel — läuft während der Öffnungszeiten.",
          "items": [
            {
              "durationMs": 20000,
              "id": "pli_01KWV920R8ENTRY00000000001",
              "kind": "scene",
              "sceneId": "scn_01KJPX8NH0SZENE00000000001",
              "sceneVersionId": "scv_01KWV8RTT0VERSN00000000001",
              "transition": {
                "durationMs": 400,
                "kind": "fade"
              }
            }
          ],
          "name": "Tagesprogramm",
          "source": {
            "kind": "manual"
          }
        },
        "properties": {
          "defaultItemDurationMs": {
            "default": 10000,
            "maximum": 86400000,
            "minimum": 1000,
            "type": "integer"
          },
          "defaultTransition": {
            "default": {
              "durationMs": 600,
              "kind": "fade"
            },
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "none"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "durationMs": {
                    "maximum": 60000,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "fade"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "durationMs"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "direction": {
                    "enum": [
                      "left",
                      "right",
                      "up",
                      "down"
                    ],
                    "type": "string"
                  },
                  "durationMs": {
                    "maximum": 60000,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "slide"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "durationMs"
                ],
                "type": "object"
              }
            ]
          },
          "description": {
            "default": "",
            "maxLength": 2000,
            "type": "string"
          },
          "items": {
            "items": {
              "oneOf": [
                {
                  "properties": {
                    "durationMs": {
                      "default": null,
                      "maximum": 86400000,
                      "minimum": 1000,
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "id": {
                      "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "kind": {
                      "enum": [
                        "scene"
                      ],
                      "type": "string"
                    },
                    "sceneId": {
                      "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "sceneVersionId": {
                      "default": null,
                      "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "transition": {
                      "default": null,
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "none"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "fade"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "direction": {
                              "enum": [
                                "left",
                                "right",
                                "up",
                                "down"
                              ],
                              "type": "string"
                            },
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "slide"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "sceneId"
                  ],
                  "type": "object"
                },
                {
                  "properties": {
                    "assetId": {
                      "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "durationMs": {
                      "default": null,
                      "maximum": 86400000,
                      "minimum": 1000,
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "fit": {
                      "default": "cover",
                      "enum": [
                        "cover",
                        "contain"
                      ],
                      "type": "string"
                    },
                    "id": {
                      "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "kind": {
                      "enum": [
                        "asset"
                      ],
                      "type": "string"
                    },
                    "transition": {
                      "default": null,
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "none"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "fade"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "direction": {
                              "enum": [
                                "left",
                                "right",
                                "up",
                                "down"
                              ],
                              "type": "string"
                            },
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "slide"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "assetId"
                  ],
                  "type": "object"
                },
                {
                  "properties": {
                    "fallback": {
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "scene"
                              ],
                              "type": "string"
                            },
                            "sceneId": {
                              "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            },
                            "sceneVersionId": {
                              "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "kind",
                            "sceneId",
                            "sceneVersionId"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "assetId": {
                              "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            },
                            "fit": {
                              "default": "cover",
                              "enum": [
                                "cover",
                                "contain"
                              ],
                              "type": "string"
                            },
                            "kind": {
                              "enum": [
                                "asset"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "assetId"
                          ],
                          "type": "object"
                        }
                      ]
                    },
                    "id": {
                      "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "kind": {
                      "enum": [
                        "adPod"
                      ],
                      "type": "string"
                    },
                    "networkPositions": {
                      "default": 0,
                      "maximum": 12,
                      "minimum": 0,
                      "type": "integer"
                    },
                    "positions": {
                      "maximum": 12,
                      "minimum": 1,
                      "type": "integer"
                    },
                    "spotDurationMs": {
                      "enum": [
                        5000,
                        10000,
                        15000,
                        20000,
                        30000
                      ],
                      "type": "integer"
                    },
                    "transition": {
                      "default": null,
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "none"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "fade"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "direction": {
                              "enum": [
                                "left",
                                "right",
                                "up",
                                "down"
                              ],
                              "type": "string"
                            },
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "slide"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "positions",
                    "spotDurationMs",
                    "fallback"
                  ],
                  "type": "object"
                }
              ]
            },
            "maxItems": 100,
            "type": "array"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "source": {
            "default": {
              "kind": "manual"
            },
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "manual"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "folderId": {
                    "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "includeSubfolders": {
                    "default": true,
                    "type": "boolean"
                  },
                  "kind": {
                    "enum": [
                      "folder"
                    ],
                    "type": "string"
                  },
                  "mediaKinds": {
                    "default": [
                      "image",
                      "video"
                    ],
                    "items": {
                      "enum": [
                        "image",
                        "video"
                      ],
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "sortBy": {
                    "default": "name-asc",
                    "enum": [
                      "name-asc",
                      "name-desc",
                      "created-desc",
                      "created-asc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "folderId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "tags"
                    ],
                    "type": "string"
                  },
                  "mediaKinds": {
                    "default": [
                      "image",
                      "video"
                    ],
                    "items": {
                      "enum": [
                        "image",
                        "video"
                      ],
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "sortBy": {
                    "default": "name-asc",
                    "enum": [
                      "name-asc",
                      "name-desc",
                      "created-desc",
                      "created-asc"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "items": {
                      "maxLength": 50,
                      "minLength": 1,
                      "type": "string"
                    },
                    "maxItems": 10,
                    "minItems": 1,
                    "type": "array"
                  }
                },
                "required": [
                  "kind",
                  "tags"
                ],
                "type": "object"
              }
            ]
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "CreatePlaylistResponse": {
        "example": {
          "autoSummary": null,
          "createdAt": "2026-07-06T08:35:00.000Z",
          "createdById": "usr_01KFB7QPW0TEAM000000000002",
          "defaultItemDurationMs": 20000,
          "defaultTransition": {
            "durationMs": 400,
            "kind": "fade"
          },
          "description": "Begrüßung und Wochenangebot im Wechsel — läuft während der Öffnungszeiten.",
          "id": "pll_01KWV91ZS0PRGRAMM000000001",
          "items": [
            {
              "durationMs": 20000,
              "id": "pli_01KWV920R8ENTRY00000000001",
              "kind": "scene",
              "order": 0,
              "sceneId": "scn_01KJPX8NH0SZENE00000000001",
              "sceneVersionId": "scv_01KWV8RTT0VERSN00000000001",
              "transition": {
                "durationMs": 400,
                "kind": "fade"
              }
            },
            {
              "durationMs": 25000,
              "id": "pli_01KWV921QGENTRY00000000002",
              "kind": "scene",
              "order": 1,
              "sceneId": "scn_01KJWKGJM0SZENE00000000002",
              "sceneVersionId": "scv_01KXD78M20VERSN00000000002",
              "transition": {
                "durationMs": 400,
                "kind": "fade"
              }
            }
          ],
          "name": "Tagesprogramm",
          "source": {
            "kind": "manual"
          },
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-13T07:52:00.000Z",
          "version": 6
        },
        "properties": {
          "autoSummary": {
            "properties": {
              "capped": {
                "type": "boolean"
              },
              "count": {
                "minimum": 0,
                "type": "integer"
              },
              "firstItems": {
                "items": {
                  "oneOf": [
                    {
                      "properties": {
                        "durationMs": {
                          "maximum": 86400000,
                          "minimum": 1000,
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "id": {
                          "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "kind": {
                          "enum": [
                            "scene"
                          ],
                          "type": "string"
                        },
                        "order": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "sceneId": {
                          "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "sceneVersionId": {
                          "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "transition": {
                          "oneOf": [
                            {
                              "properties": {
                                "kind": {
                                  "enum": [
                                    "none"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "fade"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "direction": {
                                  "enum": [
                                    "left",
                                    "right",
                                    "up",
                                    "down"
                                  ],
                                  "type": "string"
                                },
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "slide"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "kind",
                        "id",
                        "sceneId",
                        "sceneVersionId",
                        "durationMs",
                        "transition",
                        "order"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "assetId": {
                          "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "durationMs": {
                          "maximum": 86400000,
                          "minimum": 1000,
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "fit": {
                          "default": "cover",
                          "enum": [
                            "cover",
                            "contain"
                          ],
                          "type": "string"
                        },
                        "id": {
                          "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "kind": {
                          "enum": [
                            "asset"
                          ],
                          "type": "string"
                        },
                        "order": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "transition": {
                          "oneOf": [
                            {
                              "properties": {
                                "kind": {
                                  "enum": [
                                    "none"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "fade"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "direction": {
                                  "enum": [
                                    "left",
                                    "right",
                                    "up",
                                    "down"
                                  ],
                                  "type": "string"
                                },
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "slide"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "kind",
                        "id",
                        "assetId",
                        "durationMs",
                        "transition",
                        "order"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "fallback": {
                          "oneOf": [
                            {
                              "properties": {
                                "kind": {
                                  "enum": [
                                    "scene"
                                  ],
                                  "type": "string"
                                },
                                "sceneId": {
                                  "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                                  "type": "string"
                                },
                                "sceneVersionId": {
                                  "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                }
                              },
                              "required": [
                                "kind",
                                "sceneId",
                                "sceneVersionId"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "assetId": {
                                  "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                                  "type": "string"
                                },
                                "fit": {
                                  "default": "cover",
                                  "enum": [
                                    "cover",
                                    "contain"
                                  ],
                                  "type": "string"
                                },
                                "kind": {
                                  "enum": [
                                    "asset"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "assetId"
                              ],
                              "type": "object"
                            }
                          ]
                        },
                        "id": {
                          "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "kind": {
                          "enum": [
                            "adPod"
                          ],
                          "type": "string"
                        },
                        "networkPositions": {
                          "maximum": 12,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "order": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "positions": {
                          "maximum": 12,
                          "minimum": 1,
                          "type": "integer"
                        },
                        "spotDurationMs": {
                          "enum": [
                            5000,
                            10000,
                            15000,
                            20000,
                            30000
                          ],
                          "type": "integer"
                        },
                        "transition": {
                          "oneOf": [
                            {
                              "properties": {
                                "kind": {
                                  "enum": [
                                    "none"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "fade"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "direction": {
                                  "enum": [
                                    "left",
                                    "right",
                                    "up",
                                    "down"
                                  ],
                                  "type": "string"
                                },
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "slide"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "kind",
                        "id",
                        "positions",
                        "networkPositions",
                        "spotDurationMs",
                        "fallback",
                        "transition",
                        "order"
                      ],
                      "type": "object"
                    }
                  ]
                },
                "maxItems": 3,
                "type": "array"
              }
            },
            "required": [
              "count",
              "capped",
              "firstItems"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "createdById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "defaultItemDurationMs": {
            "maximum": 86400000,
            "minimum": 1000,
            "type": "integer"
          },
          "defaultTransition": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "none"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "durationMs": {
                    "maximum": 60000,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "fade"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "durationMs"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "direction": {
                    "enum": [
                      "left",
                      "right",
                      "up",
                      "down"
                    ],
                    "type": "string"
                  },
                  "durationMs": {
                    "maximum": 60000,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "slide"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "durationMs"
                ],
                "type": "object"
              }
            ]
          },
          "description": {
            "maxLength": 2000,
            "type": "string"
          },
          "id": {
            "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "items": {
            "items": {
              "oneOf": [
                {
                  "properties": {
                    "durationMs": {
                      "maximum": 86400000,
                      "minimum": 1000,
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "id": {
                      "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "kind": {
                      "enum": [
                        "scene"
                      ],
                      "type": "string"
                    },
                    "order": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "sceneId": {
                      "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "sceneVersionId": {
                      "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "transition": {
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "none"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "fade"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "direction": {
                              "enum": [
                                "left",
                                "right",
                                "up",
                                "down"
                              ],
                              "type": "string"
                            },
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "slide"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "id",
                    "sceneId",
                    "sceneVersionId",
                    "durationMs",
                    "transition",
                    "order"
                  ],
                  "type": "object"
                },
                {
                  "properties": {
                    "assetId": {
                      "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "durationMs": {
                      "maximum": 86400000,
                      "minimum": 1000,
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "fit": {
                      "default": "cover",
                      "enum": [
                        "cover",
                        "contain"
                      ],
                      "type": "string"
                    },
                    "id": {
                      "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "kind": {
                      "enum": [
                        "asset"
                      ],
                      "type": "string"
                    },
                    "order": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "transition": {
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "none"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "fade"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "direction": {
                              "enum": [
                                "left",
                                "right",
                                "up",
                                "down"
                              ],
                              "type": "string"
                            },
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "slide"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "id",
                    "assetId",
                    "durationMs",
                    "transition",
                    "order"
                  ],
                  "type": "object"
                },
                {
                  "properties": {
                    "fallback": {
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "scene"
                              ],
                              "type": "string"
                            },
                            "sceneId": {
                              "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            },
                            "sceneVersionId": {
                              "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "kind",
                            "sceneId",
                            "sceneVersionId"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "assetId": {
                              "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            },
                            "fit": {
                              "default": "cover",
                              "enum": [
                                "cover",
                                "contain"
                              ],
                              "type": "string"
                            },
                            "kind": {
                              "enum": [
                                "asset"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "assetId"
                          ],
                          "type": "object"
                        }
                      ]
                    },
                    "id": {
                      "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "kind": {
                      "enum": [
                        "adPod"
                      ],
                      "type": "string"
                    },
                    "networkPositions": {
                      "maximum": 12,
                      "minimum": 0,
                      "type": "integer"
                    },
                    "order": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "positions": {
                      "maximum": 12,
                      "minimum": 1,
                      "type": "integer"
                    },
                    "spotDurationMs": {
                      "enum": [
                        5000,
                        10000,
                        15000,
                        20000,
                        30000
                      ],
                      "type": "integer"
                    },
                    "transition": {
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "none"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "fade"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "direction": {
                              "enum": [
                                "left",
                                "right",
                                "up",
                                "down"
                              ],
                              "type": "string"
                            },
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "slide"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "id",
                    "positions",
                    "networkPositions",
                    "spotDurationMs",
                    "fallback",
                    "transition",
                    "order"
                  ],
                  "type": "object"
                }
              ]
            },
            "type": "array"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "source": {
            "default": {
              "kind": "manual"
            },
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "manual"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "folderId": {
                    "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "includeSubfolders": {
                    "default": true,
                    "type": "boolean"
                  },
                  "kind": {
                    "enum": [
                      "folder"
                    ],
                    "type": "string"
                  },
                  "mediaKinds": {
                    "default": [
                      "image",
                      "video"
                    ],
                    "items": {
                      "enum": [
                        "image",
                        "video"
                      ],
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "sortBy": {
                    "default": "name-asc",
                    "enum": [
                      "name-asc",
                      "name-desc",
                      "created-desc",
                      "created-asc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "folderId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "tags"
                    ],
                    "type": "string"
                  },
                  "mediaKinds": {
                    "default": [
                      "image",
                      "video"
                    ],
                    "items": {
                      "enum": [
                        "image",
                        "video"
                      ],
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "sortBy": {
                    "default": "name-asc",
                    "enum": [
                      "name-asc",
                      "name-desc",
                      "created-desc",
                      "created-asc"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "items": {
                      "maxLength": 50,
                      "minLength": 1,
                      "type": "string"
                    },
                    "maxItems": 10,
                    "minItems": 1,
                    "type": "array"
                  }
                },
                "required": [
                  "kind",
                  "tags"
                ],
                "type": "object"
              }
            ]
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "tenantId",
          "name",
          "description",
          "items",
          "defaultItemDurationMs",
          "defaultTransition",
          "createdById",
          "createdAt",
          "updatedAt",
          "version"
        ],
        "type": "object"
      },
      "CreateReportRequest": {
        "example": {
          "description": "Wie viele Stunden jeder Bildschirm in der vergangenen Woche gespielt hat und wie viel seiner Planzeit er sichtbar war.",
          "name": "Spielzeit je Bildschirm",
          "query": {
            "dimensions": [
              "player"
            ],
            "filters": {},
            "granularity": "auto",
            "limit": null,
            "measures": [
              "airtimeSeconds",
              "availability"
            ],
            "perspective": "venue",
            "sort": {
              "direction": "desc",
              "measure": "airtimeSeconds"
            },
            "timezone": "Europe/Berlin",
            "window": {
              "kind": "previousWeek"
            }
          },
          "schedule": {
            "dayOfWeek": 1,
            "hour": 6,
            "kind": "weekly"
          },
          "scheduleFormat": "pdf",
          "visibility": "tenant-shared"
        },
        "properties": {
          "description": {
            "default": "",
            "maxLength": 1000,
            "type": "string"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "query": {
            "$ref": "#/components/schemas/SavedExploreQuery"
          },
          "schedule": {
            "default": null,
            "oneOf": [
              {
                "properties": {
                  "hour": {
                    "maximum": 23,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "daily"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "hour"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "dayOfWeek": {
                    "maximum": 6,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "hour": {
                    "maximum": 23,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "weekly"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "dayOfWeek",
                  "hour"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "dayOfMonth": {
                    "maximum": 28,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "hour": {
                    "maximum": 23,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "monthly"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "dayOfMonth",
                  "hour"
                ],
                "type": "object"
              },
              {
                "type": "null"
              }
            ]
          },
          "scheduleFormat": {
            "default": "csv",
            "enum": [
              "csv",
              "pdf"
            ],
            "type": "string"
          },
          "visibility": {
            "default": "private",
            "enum": [
              "private",
              "tenant-shared"
            ],
            "type": "string"
          }
        },
        "required": [
          "name",
          "query"
        ],
        "type": "object"
      },
      "CreateReportResponse": {
        "example": {
          "createdAt": "2026-04-02T08:00:00.000Z",
          "description": "Wie viele Stunden jeder Bildschirm in der vergangenen Woche gespielt hat und wie viel seiner Planzeit er sichtbar war.",
          "id": "anr_01KN6K9M00BERCHT0000000001",
          "lastRunAt": "2026-07-20T04:00:00.000Z",
          "lastRunError": null,
          "lastRunStatus": "ok",
          "name": "Spielzeit je Bildschirm",
          "ownerUserId": "usr_01KERQ74K0TEAM000000000001",
          "query": {
            "dimensions": [
              "player"
            ],
            "filters": {},
            "granularity": "auto",
            "limit": null,
            "measures": [
              "airtimeSeconds",
              "availability"
            ],
            "perspective": "venue",
            "sort": {
              "direction": "desc",
              "measure": "airtimeSeconds"
            },
            "timezone": "Europe/Berlin",
            "window": {
              "kind": "previousWeek"
            }
          },
          "schedule": {
            "dayOfWeek": 1,
            "hour": 6,
            "kind": "weekly"
          },
          "scheduleFormat": "pdf",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-06T09:20:00.000Z",
          "visibility": "tenant-shared"
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "maxLength": 1000,
            "type": "string"
          },
          "id": {
            "pattern": "^anr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "lastRunAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "lastRunError": {
            "maxLength": 200,
            "type": [
              "string",
              "null"
            ]
          },
          "lastRunStatus": {
            "enum": [
              "ok",
              "failed"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "ownerUserId": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "query": {
            "$ref": "#/components/schemas/SavedExploreQuery"
          },
          "schedule": {
            "oneOf": [
              {
                "properties": {
                  "hour": {
                    "maximum": 23,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "daily"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "hour"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "dayOfWeek": {
                    "maximum": 6,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "hour": {
                    "maximum": 23,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "weekly"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "dayOfWeek",
                  "hour"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "dayOfMonth": {
                    "maximum": 28,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "hour": {
                    "maximum": 23,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "monthly"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "dayOfMonth",
                  "hour"
                ],
                "type": "object"
              },
              {
                "type": "null"
              }
            ]
          },
          "scheduleFormat": {
            "enum": [
              "csv",
              "pdf"
            ],
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "visibility": {
            "enum": [
              "private",
              "tenant-shared"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "name",
          "description",
          "query",
          "schedule",
          "ownerUserId",
          "visibility",
          "scheduleFormat",
          "createdAt",
          "updatedAt",
          "lastRunAt",
          "lastRunStatus",
          "lastRunError"
        ],
        "type": "object"
      },
      "CreateRoleRequest": {
        "example": {
          "description": "Lesekonto für den Betrieb — Startseite, Player und Apps, keine Bearbeitung.",
          "name": "Ansicht",
          "permissions": [
            "scene.list",
            "scene.read",
            "playlist.list",
            "asset.list",
            "asset.read",
            "fleet.player.read"
          ],
          "scopeRestrictions": [
            {
              "kind": "resource-set",
              "resourceIds": [
                "ply_01KHK34MQ0SCREEN0000000001"
              ],
              "resourceType": "player"
            }
          ]
        },
        "properties": {
          "description": {
            "default": "",
            "maxLength": 500,
            "type": "string"
          },
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "permissions": {
            "items": {
              "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$",
              "type": "string"
            },
            "type": "array"
          },
          "scopeRestrictions": {
            "default": [
              {
                "kind": "all"
              }
            ],
            "items": {
              "oneOf": [
                {
                  "properties": {
                    "kind": {
                      "enum": [
                        "all"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "kind"
                  ],
                  "type": "object"
                },
                {
                  "properties": {
                    "kind": {
                      "enum": [
                        "resource-set"
                      ],
                      "type": "string"
                    },
                    "resourceIds": {
                      "items": {
                        "type": "string"
                      },
                      "minItems": 1,
                      "type": "array"
                    },
                    "resourceType": {
                      "enum": [
                        "scene",
                        "playlist",
                        "schedule",
                        "player",
                        "device",
                        "asset",
                        "tenant",
                        "audit-export"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "kind",
                    "resourceType",
                    "resourceIds"
                  ],
                  "type": "object"
                }
              ]
            },
            "type": "array"
          }
        },
        "required": [
          "name",
          "permissions"
        ],
        "type": "object"
      },
      "CreateRoleResponse": {
        "example": {
          "role": {
            "createdAt": "2026-03-21T16:20:00.000Z",
            "description": "Lesekonto für den Betrieb — Startseite, Player und Apps, keine Bearbeitung.",
            "id": "rol_01KERPYYW0RECHT00000000003",
            "isBuiltIn": false,
            "name": "Ansicht",
            "permissions": [
              "scene.list",
              "scene.read",
              "playlist.list",
              "asset.list",
              "asset.read",
              "fleet.player.read"
            ],
            "scopeRestrictions": [
              {
                "kind": "resource-set",
                "resourceIds": [
                  "ply_01KHK34MQ0SCREEN0000000001"
                ],
                "resourceType": "player"
              }
            ],
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-03-21T16:20:00.000Z",
            "version": 0
          }
        },
        "properties": {
          "role": {
            "properties": {
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "description": {
                "maxLength": 500,
                "type": "string"
              },
              "id": {
                "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "isBuiltIn": {
                "type": "boolean"
              },
              "name": {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              "permissions": {
                "items": {
                  "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$",
                  "type": "string"
                },
                "type": "array"
              },
              "scopeRestrictions": {
                "items": {
                  "oneOf": [
                    {
                      "properties": {
                        "kind": {
                          "enum": [
                            "all"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "kind": {
                          "enum": [
                            "resource-set"
                          ],
                          "type": "string"
                        },
                        "resourceIds": {
                          "items": {
                            "type": "string"
                          },
                          "minItems": 1,
                          "type": "array"
                        },
                        "resourceType": {
                          "enum": [
                            "scene",
                            "playlist",
                            "schedule",
                            "player",
                            "device",
                            "asset",
                            "tenant",
                            "audit-export"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind",
                        "resourceType",
                        "resourceIds"
                      ],
                      "type": "object"
                    }
                  ]
                },
                "type": "array"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "version": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "id",
              "tenantId",
              "name",
              "description",
              "isBuiltIn",
              "permissions",
              "scopeRestrictions",
              "version",
              "createdAt",
              "updatedAt"
            ],
            "type": "object"
          }
        },
        "required": [
          "role"
        ],
        "type": "object"
      },
      "CreateSceneFromTemplateRequest": {
        "example": {
          "name": "Willkommen Ottensen",
          "templateId": "sct_01KE70EHG0MSTER00000000001"
        },
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "templateId": {
            "pattern": "^sct_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "templateId",
          "name"
        ],
        "type": "object"
      },
      "CreateSceneRequest": {
        "example": {
          "canvas": {
            "height": 1920,
            "width": 1080
          },
          "description": "Entwurf für den Abendbetrieb im Wartebereich.",
          "layoutTemplateId": "portrait-split",
          "name": "Notdienst & Wetter"
        },
        "properties": {
          "canvas": {
            "properties": {
              "height": {
                "maximum": 7680,
                "minimum": 320,
                "type": "integer"
              },
              "width": {
                "maximum": 7680,
                "minimum": 320,
                "type": "integer"
              }
            },
            "required": [
              "width",
              "height"
            ],
            "type": "object"
          },
          "description": {
            "default": "",
            "maxLength": 2000,
            "type": "string"
          },
          "layoutTemplateId": {
            "default": null,
            "pattern": "^(?:lyt_[0-9A-HJKMNP-TV-Z]{26}|standard-1x1|split-vertical|split-horizontal|grid-2x2|main-sidebar|main-sidebar-2|main-sidebar-3|thirds-vertical|quarters-vertical|header-main|main-ticker|header-main-ticker|sidebar-left-main|header-split|grid-3x2|main-sidebar-ticker|hero-strip-3|portrait-full|portrait-split|portrait-thirds|portrait-main-footer|portrait-half-grid-4|portrait-main-footer-2|portrait-main-footer-3|portrait-header-main|portrait-header-main-ticker|portrait-quarters|portrait-grid-2x3|portrait-hero-columns|ultra-full|ultra-halves|ultra-thirds|ultra-quarters|ultra-center-stage|ultra-main-sidebar|ultra-header-thirds|ultra-thirds-ticker)$",
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "CreateScheduleItemRequest": {
        "example": {
          "content": {
            "kind": "scene",
            "sceneId": "scn_01KJWKGJM0SZENE00000000002"
          },
          "label": "Angebote Mittagszeit",
          "paused": false,
          "recurrence": {
            "daysOfWeek": [
              1,
              2,
              3,
              4,
              5
            ],
            "kind": "weekly",
            "timeWindows": [
              {
                "endTime": "14:00:00",
                "startTime": "11:30:00"
              }
            ],
            "timezone": "Europe/Berlin"
          }
        },
        "properties": {
          "content": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "scene"
                    ],
                    "type": "string"
                  },
                  "sceneId": {
                    "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "sceneId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "playlist"
                    ],
                    "type": "string"
                  },
                  "playlistId": {
                    "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "playlistId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "assetId": {
                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "media"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "assetId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "pause"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              }
            ]
          },
          "label": {
            "default": null,
            "maxLength": 200,
            "type": [
              "string",
              "null"
            ]
          },
          "paused": {
            "default": false,
            "type": "boolean"
          },
          "recurrence": {
            "oneOf": [
              {
                "properties": {
                  "endsAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "once"
                    ],
                    "type": "string"
                  },
                  "startsAt": {
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "startsAt",
                  "endsAt"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "daily"
                    ],
                    "type": "string"
                  },
                  "timeWindows": {
                    "items": {
                      "properties": {
                        "endTime": {
                          "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                          "type": "string"
                        },
                        "startTime": {
                          "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                          "type": "string"
                        }
                      },
                      "required": [
                        "startTime",
                        "endTime"
                      ],
                      "type": "object"
                    },
                    "maxItems": 8,
                    "minItems": 1,
                    "type": "array"
                  },
                  "timezone": {
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "timeWindows",
                  "timezone"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "daysOfWeek": {
                    "items": {
                      "maximum": 6,
                      "minimum": 0,
                      "type": "integer"
                    },
                    "maxItems": 7,
                    "type": "array"
                  },
                  "kind": {
                    "enum": [
                      "weekly"
                    ],
                    "type": "string"
                  },
                  "timeWindows": {
                    "items": {
                      "properties": {
                        "endTime": {
                          "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                          "type": "string"
                        },
                        "startTime": {
                          "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                          "type": "string"
                        }
                      },
                      "required": [
                        "startTime",
                        "endTime"
                      ],
                      "type": "object"
                    },
                    "maxItems": 8,
                    "minItems": 1,
                    "type": "array"
                  },
                  "timezone": {
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "daysOfWeek",
                  "timeWindows",
                  "timezone"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "daysOfMonth": {
                    "items": {
                      "maximum": 31,
                      "minimum": 1,
                      "type": "integer"
                    },
                    "maxItems": 31,
                    "type": "array"
                  },
                  "kind": {
                    "enum": [
                      "monthly"
                    ],
                    "type": "string"
                  },
                  "timeWindows": {
                    "items": {
                      "properties": {
                        "endTime": {
                          "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                          "type": "string"
                        },
                        "startTime": {
                          "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                          "type": "string"
                        }
                      },
                      "required": [
                        "startTime",
                        "endTime"
                      ],
                      "type": "object"
                    },
                    "maxItems": 8,
                    "minItems": 1,
                    "type": "array"
                  },
                  "timezone": {
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "daysOfMonth",
                  "timeWindows",
                  "timezone"
                ],
                "type": "object"
              }
            ]
          }
        },
        "required": [
          "content",
          "recurrence"
        ],
        "type": "object"
      },
      "CreateScheduleItemResponse": {
        "example": {
          "item": {
            "content": {
              "kind": "scene",
              "sceneId": "scn_01KJWKGJM0SZENE00000000002"
            },
            "createdAt": "2026-07-06T09:05:00.000Z",
            "id": "sci_01KWVAFRM0PNKT000000000001",
            "label": "Angebote Mittagszeit",
            "paused": false,
            "recurrence": {
              "daysOfWeek": [
                1,
                2,
                3,
                4,
                5
              ],
              "kind": "weekly",
              "timeWindows": [
                {
                  "endTime": "14:00:00",
                  "startTime": "11:30:00"
                }
              ],
              "timezone": "Europe/Berlin"
            },
            "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-06T09:05:00.000Z"
          },
          "scheduleVersion": 8
        },
        "properties": {
          "item": {
            "properties": {
              "content": {
                "oneOf": [
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "scene"
                        ],
                        "type": "string"
                      },
                      "sceneId": {
                        "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "sceneId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "playlist"
                        ],
                        "type": "string"
                      },
                      "playlistId": {
                        "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "playlistId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "assetId": {
                        "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "kind": {
                        "enum": [
                          "media"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "assetId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "pause"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind"
                    ],
                    "type": "object"
                  }
                ]
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "id": {
                "pattern": "^sci_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "label": {
                "maxLength": 200,
                "type": [
                  "string",
                  "null"
                ]
              },
              "paused": {
                "type": "boolean"
              },
              "recurrence": {
                "oneOf": [
                  {
                    "properties": {
                      "endsAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "kind": {
                        "enum": [
                          "once"
                        ],
                        "type": "string"
                      },
                      "startsAt": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "startsAt",
                      "endsAt"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "daily"
                        ],
                        "type": "string"
                      },
                      "timeWindows": {
                        "items": {
                          "properties": {
                            "endTime": {
                              "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                              "type": "string"
                            },
                            "startTime": {
                              "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                              "type": "string"
                            }
                          },
                          "required": [
                            "startTime",
                            "endTime"
                          ],
                          "type": "object"
                        },
                        "maxItems": 8,
                        "minItems": 1,
                        "type": "array"
                      },
                      "timezone": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "timeWindows",
                      "timezone"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "daysOfWeek": {
                        "items": {
                          "maximum": 6,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "maxItems": 7,
                        "type": "array"
                      },
                      "kind": {
                        "enum": [
                          "weekly"
                        ],
                        "type": "string"
                      },
                      "timeWindows": {
                        "items": {
                          "properties": {
                            "endTime": {
                              "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                              "type": "string"
                            },
                            "startTime": {
                              "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                              "type": "string"
                            }
                          },
                          "required": [
                            "startTime",
                            "endTime"
                          ],
                          "type": "object"
                        },
                        "maxItems": 8,
                        "minItems": 1,
                        "type": "array"
                      },
                      "timezone": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "daysOfWeek",
                      "timeWindows",
                      "timezone"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "daysOfMonth": {
                        "items": {
                          "maximum": 31,
                          "minimum": 1,
                          "type": "integer"
                        },
                        "maxItems": 31,
                        "type": "array"
                      },
                      "kind": {
                        "enum": [
                          "monthly"
                        ],
                        "type": "string"
                      },
                      "timeWindows": {
                        "items": {
                          "properties": {
                            "endTime": {
                              "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                              "type": "string"
                            },
                            "startTime": {
                              "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                              "type": "string"
                            }
                          },
                          "required": [
                            "startTime",
                            "endTime"
                          ],
                          "type": "object"
                        },
                        "maxItems": 8,
                        "minItems": 1,
                        "type": "array"
                      },
                      "timezone": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "daysOfMonth",
                      "timeWindows",
                      "timezone"
                    ],
                    "type": "object"
                  }
                ]
              },
              "scheduleId": {
                "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "id",
              "scheduleId",
              "tenantId",
              "label",
              "content",
              "recurrence",
              "paused",
              "createdAt",
              "updatedAt"
            ],
            "type": "object"
          },
          "scheduleVersion": {
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "item",
          "scheduleVersion"
        ],
        "type": "object"
      },
      "CreateScheduleRequest": {
        "example": {
          "basis": {
            "kind": "pause"
          },
          "name": "Feiertagsprogramm"
        },
        "properties": {
          "basis": {
            "default": {
              "kind": "pause"
            },
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "scene"
                    ],
                    "type": "string"
                  },
                  "sceneId": {
                    "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "sceneId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "playlist"
                    ],
                    "type": "string"
                  },
                  "playlistId": {
                    "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "playlistId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "assetId": {
                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "media"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "assetId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "pause"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              }
            ]
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "CreateScheduleResponse": {
        "example": {
          "schedule": {
            "basis": {
              "kind": "pause"
            },
            "createdAt": "2026-07-20T09:15:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "id": "sch_01KWVARXK0ZETPAN0000000002",
            "items": [],
            "name": "Feiertagsprogramm",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-20T09:15:00.000Z",
            "version": 1
          }
        },
        "properties": {
          "schedule": {
            "properties": {
              "basis": {
                "oneOf": [
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "scene"
                        ],
                        "type": "string"
                      },
                      "sceneId": {
                        "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "sceneId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "playlist"
                        ],
                        "type": "string"
                      },
                      "playlistId": {
                        "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "playlistId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "assetId": {
                        "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "kind": {
                        "enum": [
                          "media"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "assetId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "pause"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind"
                    ],
                    "type": "object"
                  }
                ]
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "createdById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  }
                ]
              },
              "id": {
                "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "items": {
                "items": {
                  "properties": {
                    "content": {
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "scene"
                              ],
                              "type": "string"
                            },
                            "sceneId": {
                              "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "sceneId"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "playlist"
                              ],
                              "type": "string"
                            },
                            "playlistId": {
                              "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "playlistId"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "assetId": {
                              "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            },
                            "kind": {
                              "enum": [
                                "media"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "assetId"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "pause"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        }
                      ]
                    },
                    "createdAt": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "id": {
                      "pattern": "^sci_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "label": {
                      "maxLength": 200,
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "paused": {
                      "type": "boolean"
                    },
                    "recurrence": {
                      "oneOf": [
                        {
                          "properties": {
                            "endsAt": {
                              "format": "date-time",
                              "type": "string"
                            },
                            "kind": {
                              "enum": [
                                "once"
                              ],
                              "type": "string"
                            },
                            "startsAt": {
                              "format": "date-time",
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "startsAt",
                            "endsAt"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "daily"
                              ],
                              "type": "string"
                            },
                            "timeWindows": {
                              "items": {
                                "properties": {
                                  "endTime": {
                                    "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                                    "type": "string"
                                  },
                                  "startTime": {
                                    "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "startTime",
                                  "endTime"
                                ],
                                "type": "object"
                              },
                              "maxItems": 8,
                              "minItems": 1,
                              "type": "array"
                            },
                            "timezone": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "timeWindows",
                            "timezone"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "daysOfWeek": {
                              "items": {
                                "maximum": 6,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "maxItems": 7,
                              "type": "array"
                            },
                            "kind": {
                              "enum": [
                                "weekly"
                              ],
                              "type": "string"
                            },
                            "timeWindows": {
                              "items": {
                                "properties": {
                                  "endTime": {
                                    "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                                    "type": "string"
                                  },
                                  "startTime": {
                                    "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "startTime",
                                  "endTime"
                                ],
                                "type": "object"
                              },
                              "maxItems": 8,
                              "minItems": 1,
                              "type": "array"
                            },
                            "timezone": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "daysOfWeek",
                            "timeWindows",
                            "timezone"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "daysOfMonth": {
                              "items": {
                                "maximum": 31,
                                "minimum": 1,
                                "type": "integer"
                              },
                              "maxItems": 31,
                              "type": "array"
                            },
                            "kind": {
                              "enum": [
                                "monthly"
                              ],
                              "type": "string"
                            },
                            "timeWindows": {
                              "items": {
                                "properties": {
                                  "endTime": {
                                    "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                                    "type": "string"
                                  },
                                  "startTime": {
                                    "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "startTime",
                                  "endTime"
                                ],
                                "type": "object"
                              },
                              "maxItems": 8,
                              "minItems": 1,
                              "type": "array"
                            },
                            "timezone": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "daysOfMonth",
                            "timeWindows",
                            "timezone"
                          ],
                          "type": "object"
                        }
                      ]
                    },
                    "scheduleId": {
                      "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "tenantId": {
                      "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "updatedAt": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "scheduleId",
                    "tenantId",
                    "label",
                    "content",
                    "recurrence",
                    "paused",
                    "createdAt",
                    "updatedAt"
                  ],
                  "type": "object"
                },
                "maxItems": 200,
                "type": "array"
              },
              "name": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "version": {
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "id",
              "tenantId",
              "name",
              "basis",
              "items",
              "createdById",
              "createdAt",
              "updatedAt",
              "version"
            ],
            "type": "object"
          }
        },
        "required": [
          "schedule"
        ],
        "type": "object"
      },
      "CreateShareLinkRequest": {
        "example": {
          "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
          "expiresInDays": 90,
          "label": "Agentur Berger"
        },
        "properties": {
          "advertiserId": {
            "pattern": "^adv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "expiresInDays": {
            "maximum": 365,
            "minimum": 1,
            "type": "integer"
          },
          "label": {
            "maxLength": 120,
            "type": "string"
          }
        },
        "required": [
          "advertiserId",
          "label",
          "expiresInDays"
        ],
        "type": "object"
      },
      "CreateShareLinkResponse": {
        "example": {
          "shareLink": {
            "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
            "advertiserName": "Nordwind Naturkosmetik GmbH",
            "createdAt": "2026-10-12T08:00:00.000Z",
            "expiresAt": "2027-01-10T08:00:00.000Z",
            "id": "shl_01KZ8VBN40VRWS000000000001",
            "label": "Agentur Berger",
            "lastUsedAt": null,
            "owner": "tenant",
            "revokedAt": null,
            "state": "active"
          },
          "token": "QHarGvKfElKjVULehOA2mGIKOeOFm8Dro1rCfC9r0zQ",
          "url": "https://www.demo.local/campaign-report?token=QHarGvKfElKjVULehOA2mGIKOeOFm8Dro1rCfC9r0zQ"
        },
        "properties": {
          "shareLink": {
            "$ref": "#/components/schemas/ShareLink"
          },
          "token": {
            "type": "string"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "shareLink",
          "token",
          "url"
        ],
        "type": "object"
      },
      "CreateSmartBucketRequest": {
        "example": {
          "filter": {
            "includeDeleted": false,
            "includeSubfolders": true,
            "mimeTypes": [
              "image/jpeg",
              "image/png"
            ],
            "sortBy": "created-desc",
            "status": "ready",
            "tags": [
              "angebot"
            ]
          },
          "isShared": true,
          "name": "Aktuelle Angebote"
        },
        "properties": {
          "filter": {
            "properties": {
              "folderId": {
                "anyOf": [
                  {
                    "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "enum": [
                      "root"
                    ],
                    "type": "string"
                  },
                  {
                    "type": "null"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "includeDeleted": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "enum": [
                      "true",
                      "false"
                    ],
                    "type": "string"
                  }
                ]
              },
              "includeSubfolders": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "enum": [
                      "true",
                      "false"
                    ],
                    "type": "string"
                  }
                ]
              },
              "maxSizeBytes": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "mimeTypes": {
                "anyOf": [
                  {
                    "items": {
                      "enum": [
                        "image/jpeg",
                        "image/png",
                        "image/webp",
                        "image/svg+xml",
                        "video/mp4",
                        "video/webm",
                        "application/pdf"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  {
                    "enum": [
                      "image/jpeg",
                      "image/png",
                      "image/webp",
                      "image/svg+xml",
                      "video/mp4",
                      "video/webm",
                      "application/pdf"
                    ],
                    "type": "string"
                  }
                ]
              },
              "minSizeBytes": {
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "search": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "sortBy": {
                "enum": [
                  "name-asc",
                  "name-desc",
                  "created-desc",
                  "created-asc",
                  "size-asc",
                  "size-desc",
                  "type-asc",
                  "type-desc"
                ],
                "type": "string"
              },
              "status": {
                "enum": [
                  "uploading",
                  "processing",
                  "ready",
                  "error"
                ],
                "type": "string"
              },
              "tags": {
                "anyOf": [
                  {
                    "items": {
                      "maxLength": 50,
                      "minLength": 1,
                      "type": "string"
                    },
                    "maxItems": 10,
                    "type": "array"
                  },
                  {
                    "maxLength": 50,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "uploadedAfter": {
                "format": "date-time",
                "type": "string"
              },
              "uploadedBefore": {
                "format": "date-time",
                "type": "string"
              },
              "usage": {
                "enum": [
                  "used",
                  "unused"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "isShared": {
            "default": false,
            "type": "boolean"
          },
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "name",
          "filter"
        ],
        "type": "object"
      },
      "CreateSmartBucketResponse": {
        "example": {
          "createdAt": "2026-03-02T09:40:00.000Z",
          "createdById": "usr_01KFB7QPW0TEAM000000000002",
          "filter": {
            "includeDeleted": false,
            "includeSubfolders": true,
            "mimeTypes": [
              "image/jpeg",
              "image/png"
            ],
            "sortBy": "created-desc",
            "status": "ready",
            "tags": [
              "angebot"
            ]
          },
          "id": "smb_01KJPYPEC0SMART00000000001",
          "isShared": true,
          "name": "Aktuelle Angebote",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-06-29T07:50:00.000Z"
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "createdById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "filter": {
            "properties": {
              "folderId": {
                "anyOf": [
                  {
                    "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "enum": [
                      "root"
                    ],
                    "type": "string"
                  },
                  {
                    "type": "null"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "includeDeleted": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "enum": [
                      "true",
                      "false"
                    ],
                    "type": "string"
                  }
                ]
              },
              "includeSubfolders": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "enum": [
                      "true",
                      "false"
                    ],
                    "type": "string"
                  }
                ]
              },
              "maxSizeBytes": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "mimeTypes": {
                "anyOf": [
                  {
                    "items": {
                      "enum": [
                        "image/jpeg",
                        "image/png",
                        "image/webp",
                        "image/svg+xml",
                        "video/mp4",
                        "video/webm",
                        "application/pdf"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  {
                    "enum": [
                      "image/jpeg",
                      "image/png",
                      "image/webp",
                      "image/svg+xml",
                      "video/mp4",
                      "video/webm",
                      "application/pdf"
                    ],
                    "type": "string"
                  }
                ]
              },
              "minSizeBytes": {
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "search": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "sortBy": {
                "enum": [
                  "name-asc",
                  "name-desc",
                  "created-desc",
                  "created-asc",
                  "size-asc",
                  "size-desc",
                  "type-asc",
                  "type-desc"
                ],
                "type": "string"
              },
              "status": {
                "enum": [
                  "uploading",
                  "processing",
                  "ready",
                  "error"
                ],
                "type": "string"
              },
              "tags": {
                "anyOf": [
                  {
                    "items": {
                      "maxLength": 50,
                      "minLength": 1,
                      "type": "string"
                    },
                    "maxItems": 10,
                    "type": "array"
                  },
                  {
                    "maxLength": 50,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "uploadedAfter": {
                "format": "date-time",
                "type": "string"
              },
              "uploadedBefore": {
                "format": "date-time",
                "type": "string"
              },
              "usage": {
                "enum": [
                  "used",
                  "unused"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "id": {
            "pattern": "^smb_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "isShared": {
            "type": "boolean"
          },
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "name",
          "filter",
          "isShared",
          "createdById",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "CreateSsoProviderRequest": {
        "example": {
          "clientId": "signage-portal",
          "clientSecret": "aus-dem-passwort-tresor-einsetzen",
          "defaultRoleId": "rol_01KERPYYW0RECHT00000000003",
          "displayName": "Adler-Apotheke Firmenkonto",
          "issuer": "https://anmeldung.adler-apotheke.demo.local",
          "jitProvisioning": true
        },
        "properties": {
          "clientId": {
            "maxLength": 256,
            "minLength": 1,
            "type": "string"
          },
          "clientSecret": {
            "maxLength": 512,
            "minLength": 1,
            "type": "string"
          },
          "defaultRoleId": {
            "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "displayName": {
            "maxLength": 60,
            "minLength": 1,
            "type": "string"
          },
          "issuer": {
            "format": "uri",
            "type": "string"
          },
          "jitProvisioning": {
            "default": false,
            "type": "boolean"
          }
        },
        "required": [
          "displayName",
          "issuer",
          "clientId",
          "clientSecret",
          "defaultRoleId"
        ],
        "type": "object"
      },
      "CreateSyncedFolderRequest": {
        "example": {
          "connectionId": "cconn_01KT3WD680CNNECTMSGRAPH001",
          "remoteFolderId": "01BYE5RZ6QN3ZWBTUFOFD3IFTLFPQBCXYZ",
          "targetFolderId": "fld_01KJ7MWKW0MAPPE00000000001"
        },
        "properties": {
          "connectionId": {
            "pattern": "^cconn_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "remoteFolderId": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "targetFolderId": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "connectionId",
          "remoteFolderId",
          "targetFolderId"
        ],
        "type": "object"
      },
      "CreateSyncedFolderResponse": {
        "example": {
          "connectionId": "cconn_01KT3WD680CNNECTMSGRAPH001",
          "createdAt": "2026-07-20T09:30:00.000Z",
          "id": "syf_01KT3WD680SYNCFDR000000001",
          "lastError": null,
          "lastRunAt": null,
          "remoteFolderId": "01BYE5RZ6QN3ZWBTUFOFD3IFTLFPQBCXYZ",
          "remoteFolderPath": "Schaufenster",
          "status": "active",
          "targetFolderId": "fld_01KJ7MWKW0MAPPE00000000001",
          "updatedAt": "2026-07-20T09:15:00.000Z"
        },
        "properties": {
          "connectionId": {
            "pattern": "^cconn_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "pattern": "^syf_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "lastError": {
            "maxLength": 500,
            "type": [
              "string",
              "null"
            ]
          },
          "lastRunAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "remoteFolderId": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "remoteFolderPath": {
            "maxLength": 1000,
            "minLength": 1,
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "paused"
            ],
            "type": "string"
          },
          "targetFolderId": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "connectionId",
          "remoteFolderId",
          "remoteFolderPath",
          "targetFolderId",
          "status",
          "lastRunAt",
          "lastError",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "CreateUserRequest": {
        "example": {
          "email": "m.sander@demo.local",
          "emailAlreadyVerified": false,
          "federatedCredential": false,
          "initialRoles": [
            {
              "expiresAt": null,
              "roleId": "rol_01KERPYXWRRECHT00000000002"
            }
          ],
          "password": "kennwort-platzhalter",
          "profile": {
            "displayName": "Merve Sander",
            "locale": "de-DE",
            "timezone": "Europe/Berlin"
          }
        },
        "properties": {
          "email": {
            "format": "email",
            "maxLength": 254,
            "type": "string"
          },
          "emailAlreadyVerified": {
            "default": false,
            "type": "boolean"
          },
          "federatedCredential": {
            "type": "boolean"
          },
          "initialRoles": {
            "items": {
              "properties": {
                "expiresAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "roleId": {
                  "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                }
              },
              "required": [
                "roleId"
              ],
              "type": "object"
            },
            "maxItems": 1,
            "minItems": 1,
            "type": "array"
          },
          "password": {
            "maxLength": 128,
            "minLength": 12,
            "type": "string"
          },
          "profile": {
            "properties": {
              "displayName": {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              "locale": {
                "default": "de-DE",
                "pattern": "^[a-z]{2}(-[A-Z]{2})?$",
                "type": "string"
              },
              "timezone": {
                "default": "Europe/Berlin",
                "type": "string"
              }
            },
            "required": [
              "displayName"
            ],
            "type": "object"
          }
        },
        "required": [
          "email",
          "profile",
          "initialRoles"
        ],
        "type": "object"
      },
      "CreateUserResponse": {
        "example": {
          "user": {
            "createdAt": "2026-02-03T08:20:00.000Z",
            "deletedAt": null,
            "email": "m.sander@demo.local",
            "emailVerifiedAt": null,
            "hasPassword": false,
            "id": "usr_01KGH9CHW0TEAM000000000003",
            "lastLoginAt": null,
            "mfaEnabled": false,
            "mfaEnabledAt": null,
            "profile": {
              "avatarAssetRef": null,
              "displayName": "Merve Sander",
              "locale": "de-DE",
              "timezone": "Europe/Berlin"
            },
            "roleAssignments": [
              {
                "assignedAt": "2026-02-03T08:21:00.000Z",
                "assignedById": "usr_01KERQ74K0TEAM000000000001",
                "expiresAt": "2026-12-31T23:59:59.000Z",
                "roleId": "rol_01KERPYYW0RECHT00000000003"
              }
            ],
            "roleVersion": 1,
            "status": "pending",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-02-03T08:21:00.000Z"
          }
        },
        "properties": {
          "user": {
            "properties": {
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "deletedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "email": {
                "format": "email",
                "maxLength": 254,
                "type": "string"
              },
              "emailVerifiedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "hasPassword": {
                "type": "boolean"
              },
              "id": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "lastLoginAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "mfaEnabled": {
                "type": "boolean"
              },
              "mfaEnabledAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "profile": {
                "properties": {
                  "avatarAssetRef": {
                    "properties": {
                      "assetId": {
                        "description": "Datei-Kennung|Kennung der Datei in der Medienbibliothek.",
                        "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "variantSet": {
                        "description": "Fassungen|Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                        "items": {
                          "enum": [
                            "original",
                            "thumbnail",
                            "preview",
                            "webp",
                            "playback"
                          ],
                          "type": "string"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "assetId",
                      "variantSet"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "displayName": {
                    "maxLength": 100,
                    "minLength": 1,
                    "type": "string"
                  },
                  "locale": {
                    "default": "de-DE",
                    "pattern": "^[a-z]{2}(-[A-Z]{2})?$",
                    "type": "string"
                  },
                  "timezone": {
                    "default": "Europe/Berlin",
                    "type": "string"
                  }
                },
                "required": [
                  "displayName",
                  "avatarAssetRef"
                ],
                "type": "object"
              },
              "roleAssignments": {
                "items": {
                  "properties": {
                    "assignedAt": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "assignedById": {
                      "anyOf": [
                        {
                          "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        {
                          "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        {
                          "enum": [
                            "scim-directory"
                          ],
                          "type": "string"
                        },
                        {
                          "enum": [
                            "role-expiry"
                          ],
                          "type": "string"
                        }
                      ]
                    },
                    "expiresAt": {
                      "format": "date-time",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "roleId": {
                      "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    }
                  },
                  "required": [
                    "roleId",
                    "assignedAt",
                    "assignedById",
                    "expiresAt"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "roleVersion": {
                "minimum": 0,
                "type": "integer"
              },
              "status": {
                "enum": [
                  "pending",
                  "active",
                  "suspended",
                  "deleted"
                ],
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "id",
              "tenantId",
              "email",
              "emailVerifiedAt",
              "profile",
              "roleAssignments",
              "roleVersion",
              "status",
              "createdAt",
              "updatedAt",
              "deletedAt",
              "lastLoginAt",
              "mfaEnabledAt",
              "mfaEnabled",
              "hasPassword"
            ],
            "type": "object"
          }
        },
        "required": [
          "user"
        ],
        "type": "object"
      },
      "CreateWebDisplayRequest": {
        "example": {
          "locationId": "loc_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "name": "sample"
        },
        "properties": {
          "locationId": {
            "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          }
        },
        "type": "object"
      },
      "CreateWebDisplayResponse": {
        "example": {
          "connectUrl": "https://example.com",
          "expiresAt": "2099-12-31T23:59:59.000Z",
          "playerId": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "token": "drc_01ARZ3NDEKTSV4RRFFQ69G5FAV"
        },
        "properties": {
          "connectUrl": {
            "format": "uri",
            "type": "string"
          },
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "playerId": {
            "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "token": {
            "pattern": "^drc_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "playerId",
          "token",
          "connectUrl",
          "expiresAt"
        ],
        "type": "object"
      },
      "CreateWebhookEndpointRequest": {
        "example": {
          "events": [
            "composition.scene.published",
            "scheduling.playlist.updated",
            "media-library.asset.ready"
          ],
          "url": "https://warenwirtschaft.demo.local/hooks/signage"
        },
        "properties": {
          "events": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "url",
          "events"
        ],
        "type": "object"
      },
      "CreateWebhookEndpointResponse": {
        "example": {
          "endpoint": {
            "active": true,
            "consecutiveFailures": 0,
            "createdAt": "2026-04-21T13:00:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "events": [
              "composition.scene.published",
              "scheduling.playlist.updated",
              "media-library.asset.ready"
            ],
            "id": "whk_01KPR20K40WEBHK00000000001",
            "lastDeliveryAt": null,
            "lastFailureAt": null,
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "url": "https://warenwirtschaft.demo.local/hooks/signage"
          },
          "secret": "whsec_9tR4mZpQ2xVs7KdHc3JnFb6yWa8EgTu1"
        },
        "properties": {
          "endpoint": {
            "properties": {
              "active": {
                "type": "boolean"
              },
              "consecutiveFailures": {
                "minimum": 0,
                "type": "integer"
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "createdById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "events": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "id": {
                "pattern": "^whk_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "lastDeliveryAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastFailureAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "url": {
                "format": "uri",
                "type": "string"
              }
            },
            "required": [
              "id",
              "tenantId",
              "url",
              "events",
              "active",
              "createdById",
              "createdAt",
              "lastDeliveryAt",
              "lastFailureAt",
              "consecutiveFailures"
            ],
            "type": "object"
          },
          "secret": {
            "pattern": "^whsec_[A-Za-z0-9_-]{32,}$",
            "type": "string"
          }
        },
        "required": [
          "endpoint",
          "secret"
        ],
        "type": "object"
      },
      "Creative": {
        "example": {
          "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
          "approval": {
            "decidedAt": "2026-08-26T07:55:00.000Z",
            "decidedBy": {
              "kind": "user",
              "userRef": "usr_01KERQ74K0TEAM000000000001"
            },
            "note": "",
            "status": "approved"
          },
          "contentSha256": "7d2f4c1a9b3e6f58c0a1d2e3f4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3",
          "createdAt": "2026-08-25T14:30:00.000Z",
          "durationMs": null,
          "height": 1080,
          "id": "crv_01KXR4RZ80MTV0000000000001",
          "mandatoryText": null,
          "media": {
            "assetId": "ast_01KXJY2V30MEDEN00000000004",
            "source": "tenant_asset"
          },
          "mediaType": "image",
          "name": "Herbstpflege Schaufenster",
          "owner": {
            "kind": "tenant",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          },
          "status": "active",
          "updatedAt": "2026-08-26T07:55:00.000Z",
          "version": 1,
          "width": 1920
        },
        "properties": {
          "advertiserId": {
            "pattern": "^adv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "approval": {
            "$ref": "#/components/schemas/CreativeApproval"
          },
          "contentSha256": {
            "pattern": "^[a-f0-9]{64}$",
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "durationMs": {
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "height": {
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "id": {
            "pattern": "^crv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "mandatoryText": {
            "maxLength": 300,
            "type": [
              "string",
              "null"
            ]
          },
          "media": {
            "$ref": "#/components/schemas/CreativeMedia"
          },
          "mediaType": {
            "enum": [
              "image",
              "video"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "owner": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "tenant"
                    ],
                    "type": "string"
                  },
                  "tenantId": {
                    "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "tenantId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "network"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              }
            ]
          },
          "status": {
            "enum": [
              "active",
              "archived"
            ],
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "minimum": 0,
            "type": "integer"
          },
          "width": {
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "advertiserId",
          "owner",
          "name",
          "media",
          "mediaType",
          "durationMs",
          "contentSha256",
          "width",
          "height",
          "mandatoryText",
          "approval",
          "status",
          "version",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "CreativeApproval": {
        "example": {
          "decidedAt": "2026-08-26T07:55:00.000Z",
          "decidedBy": {
            "kind": "user",
            "userRef": "usr_01KERQ74K0TEAM000000000001"
          },
          "note": "",
          "status": "approved"
        },
        "properties": {
          "decidedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "decidedBy": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "user"
                    ],
                    "type": "string"
                  },
                  "userRef": {
                    "anyOf": [
                      {
                        "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      {
                        "pattern": "^[0-9a-f]{64}$",
                        "type": "string"
                      }
                    ]
                  }
                },
                "required": [
                  "kind",
                  "userRef"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "operator"
                    ],
                    "type": "string"
                  },
                  "operatorId": {
                    "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "operatorId"
                ],
                "type": "object"
              },
              {
                "type": "null"
              }
            ]
          },
          "note": {
            "maxLength": 500,
            "type": "string"
          },
          "status": {
            "enum": [
              "pending",
              "approved",
              "rejected"
            ],
            "type": "string"
          }
        },
        "required": [
          "status",
          "decidedAt",
          "decidedBy",
          "note"
        ],
        "type": "object"
      },
      "CreativeMedia": {
        "example": {
          "assetId": "ast_01KXJY2V30MEDEN00000000004",
          "source": "tenant_asset"
        },
        "oneOf": [
          {
            "properties": {
              "assetId": {
                "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "source": {
                "enum": [
                  "tenant_asset"
                ],
                "type": "string"
              }
            },
            "required": [
              "source",
              "assetId"
            ],
            "type": "object"
          },
          {
            "properties": {
              "mimeType": {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              "sizeBytes": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "source": {
                "enum": [
                  "network_file"
                ],
                "type": "string"
              }
            },
            "required": [
              "source",
              "mimeType",
              "sizeBytes"
            ],
            "type": "object"
          }
        ]
      },
      "DecideCreativeApprovalRequest": {
        "example": {
          "decision": "approved",
          "mandatoryTextChecks": {
            "legible": true,
            "presentInCreative": true
          },
          "note": ""
        },
        "properties": {
          "decision": {
            "enum": [
              "approved",
              "rejected"
            ],
            "type": "string"
          },
          "mandatoryTextChecks": {
            "$ref": "#/components/schemas/MandatoryTextChecks"
          },
          "note": {
            "default": "",
            "maxLength": 500,
            "type": "string"
          }
        },
        "required": [
          "decision"
        ],
        "type": "object"
      },
      "DecideJoinRequestResponse": {
        "example": {
          "createdAt": "2026-07-19T11:30:00.000Z",
          "decidedAt": "2026-07-20T09:15:00.000Z",
          "decidedById": "usr_01KERQ74K0TEAM000000000001",
          "displayName": "Tobias Reuter",
          "email": "t.reuter@demo.local",
          "expiresAt": "2026-08-02T11:30:00.000Z",
          "id": "ojr_01KXN1AAR0ANFRAGE000000001",
          "invitationId": "ivt_01KXN1B2H0ENADNG0000000002",
          "message": "Ich übernehme ab August die Schaufenster-Gestaltung und brauche Zugang zu den Szenen.",
          "status": "accepted",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "decidedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "decidedById": {
            "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "displayName": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "email": {
            "format": "email",
            "maxLength": 254,
            "type": "string"
          },
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "pattern": "^ojr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "invitationId": {
            "type": [
              "string",
              "null"
            ]
          },
          "message": {
            "maxLength": 1000,
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "enum": [
              "pending",
              "accepted",
              "rejected",
              "expired"
            ],
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "email",
          "displayName",
          "message",
          "status",
          "expiresAt",
          "decidedAt",
          "decidedById",
          "invitationId",
          "createdAt"
        ],
        "type": "object"
      },
      "DecideReregistrationRequest": {
        "example": {
          "decision": "keep"
        },
        "oneOf": [
          {
            "properties": {
              "decision": {
                "enum": [
                  "keep"
                ],
                "type": "string"
              }
            },
            "required": [
              "decision"
            ],
            "type": "object"
          },
          {
            "properties": {
              "decision": {
                "enum": [
                  "reconnect"
                ],
                "type": "string"
              }
            },
            "required": [
              "decision"
            ],
            "type": "object"
          },
          {
            "properties": {
              "decision": {
                "enum": [
                  "block"
                ],
                "type": "string"
              },
              "reason": {
                "maxLength": 500,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "decision",
              "reason"
            ],
            "type": "object"
          }
        ]
      },
      "DecideReregistrationResponse": {
        "example": {
          "decision": "keep",
          "deviceId": "dev_01KHK32T40GERAET0000000001",
          "reregistrationAllowedUntil": "2026-07-21T08:59:00.000Z",
          "status": "active"
        },
        "properties": {
          "decision": {
            "enum": [
              "keep",
              "reconnect",
              "block"
            ],
            "type": "string"
          },
          "deviceId": {
            "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "reregistrationAllowedUntil": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "enum": [
              "unclaimed",
              "active",
              "blocked"
            ],
            "type": "string"
          }
        },
        "required": [
          "deviceId",
          "decision",
          "status",
          "reregistrationAllowedUntil"
        ],
        "type": "object"
      },
      "DeleteAuditExportResponse": {
        "example": {
          "deleted": true
        },
        "properties": {
          "deleted": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "deleted"
        ],
        "type": "object"
      },
      "DeleteDisplayGroupResponse": {
        "example": {
          "deleted": true,
          "displayGroupId": "dgr_01KHK4A2S0WANDBAND00000001"
        },
        "properties": {
          "deleted": {
            "enum": [
              true
            ],
            "type": "boolean"
          },
          "displayGroupId": {
            "pattern": "^dgr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "deleted",
          "displayGroupId"
        ],
        "type": "object"
      },
      "DeleteLocationResponse": {
        "example": {
          "deleted": true,
          "locationId": "loc_01KHK4B3T0ADRESSE000000001"
        },
        "properties": {
          "deleted": {
            "enum": [
              true
            ],
            "type": "boolean"
          },
          "locationId": {
            "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "deleted",
          "locationId"
        ],
        "type": "object"
      },
      "DeletePlayerResponse": {
        "example": {
          "deleted": true,
          "deviceReleased": false,
          "playerId": "ply_01KRX5JVJ0SCREEN0000000003"
        },
        "properties": {
          "deleted": {
            "enum": [
              true
            ],
            "type": "boolean"
          },
          "deviceReleased": {
            "type": "boolean"
          },
          "playerId": {
            "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "deleted",
          "playerId",
          "deviceReleased"
        ],
        "type": "object"
      },
      "DeletePlayerTagResponse": {
        "example": {
          "deleted": true,
          "playerTagId": "ptg_01KHK41Y70TAG0000000000002"
        },
        "properties": {
          "deleted": {
            "enum": [
              true
            ],
            "type": "boolean"
          },
          "playerTagId": {
            "pattern": "^ptg_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "deleted",
          "playerTagId"
        ],
        "type": "object"
      },
      "DeleteReportResponse": {
        "example": {
          "deletedGeneratedReports": 6
        },
        "properties": {
          "deletedGeneratedReports": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "deletedGeneratedReports"
        ],
        "type": "object"
      },
      "DeleteRoleResponse": {
        "example": {
          "deleted": true
        },
        "properties": {
          "deleted": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "deleted"
        ],
        "type": "object"
      },
      "DeleteScheduleItemResponse": {
        "example": {
          "scheduleVersion": 8
        },
        "properties": {
          "scheduleVersion": {
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "scheduleVersion"
        ],
        "type": "object"
      },
      "DeleteSsoProviderResponse": {
        "example": {
          "deleted": true
        },
        "properties": {
          "deleted": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "deleted"
        ],
        "type": "object"
      },
      "DeleteTenantRequest": {
        "example": {
          "confirmationSlug": "adler-apotheke"
        },
        "properties": {
          "confirmationSlug": {
            "pattern": "^[a-z][a-z0-9-]{2,32}$",
            "type": "string"
          }
        },
        "required": [
          "confirmationSlug"
        ],
        "type": "object"
      },
      "DeleteTenantResponse": {
        "example": {
          "deleted": true
        },
        "properties": {
          "deleted": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "deleted"
        ],
        "type": "object"
      },
      "DeleteUserRequest": {
        "example": {
          "reason": "gdpr-self-request"
        },
        "properties": {
          "reason": {
            "enum": [
              "gdpr-self-request",
              "tenant-suspended-cascade",
              "tenant-deleted-cascade",
              "operator-compliance",
              "admin-cleanup"
            ],
            "type": "string"
          }
        },
        "required": [
          "reason"
        ],
        "type": "object"
      },
      "DeleteUserResponse": {
        "example": {
          "estimatedDurationMs": 45000,
          "pseudonymizationJobId": "psj_01KWGK5E40DSGV000000000001",
          "pseudonymPreview": "b2f80a41d76c395ee0138b5a4c9d27f6103e8ab7592c4df081a63be95d7c024f"
        },
        "properties": {
          "estimatedDurationMs": {
            "minimum": 0,
            "type": "integer"
          },
          "pseudonymizationJobId": {
            "pattern": "^psj_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "pseudonymPreview": {
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          }
        },
        "required": [
          "pseudonymizationJobId",
          "estimatedDurationMs",
          "pseudonymPreview"
        ],
        "type": "object"
      },
      "DeleteWebDisplayResponse": {
        "example": {
          "deleted": true,
          "playerId": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV"
        },
        "properties": {
          "deleted": {
            "enum": [
              true
            ],
            "type": "boolean"
          },
          "playerId": {
            "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "deleted",
          "playerId"
        ],
        "type": "object"
      },
      "DeleteWebhookEndpointResponse": {
        "example": {
          "deleted": true
        },
        "properties": {
          "deleted": {
            "type": "boolean"
          }
        },
        "required": [
          "deleted"
        ],
        "type": "object"
      },
      "DenyAuthorizationResponse": {
        "example": {
          "redirectUri": "sample"
        },
        "properties": {
          "redirectUri": {
            "type": "string"
          }
        },
        "required": [
          "redirectUri"
        ],
        "type": "object"
      },
      "DeviceCapabilities": {
        "example": {
          "compute": {
            "ramMb": 8192,
            "storageGb": 64
          },
          "deviceKind": "pi-5",
          "media": {
            "hardwareCodecs": [
              "hevc"
            ],
            "videoPlane": true
          },
          "outputs": [
            {
              "connected": true,
              "connector": "HDMI-A-1",
              "controls": {
                "ddcBrightness": true
              },
              "edid": {
                "diagonalInch": 23.8,
                "manufacturer": "PHL",
                "model": "243V7",
                "serial": "AU02341G"
              },
              "heightPx": 1080,
              "refreshHz": 60,
              "widthPx": 1920
            },
            {
              "connected": false,
              "connector": "HDMI-A-2"
            }
          ],
          "reportedAt": "2026-07-20T09:14:32.000Z",
          "software": {
            "agent": {
              "buildSha": "7d3f0b2c91ae",
              "loopback": 1,
              "releaseSeq": 12,
              "version": "1.8.3"
            },
            "channel": "stable",
            "os": {
              "launcher": 1,
              "releaseSeq": 3,
              "version": "2026.6.1"
            },
            "renderer": {
              "activatedAt": "2026-07-20T08:21:40.000Z",
              "build": "c41e09a7f2b3",
              "profile": "modern",
              "releaseSeq": 41,
              "source": "bundle",
              "version": "0.4.12"
            }
          }
        },
        "properties": {
          "compute": {
            "properties": {
              "ramMb": {
                "maximum": 1048576,
                "minimum": 0,
                "type": "integer"
              },
              "storageGb": {
                "maximum": 1048576,
                "minimum": 0,
                "type": "number"
              }
            },
            "type": "object"
          },
          "deviceKind": {
            "enum": [
              "pi-5",
              "pi-4",
              "linux-generic",
              "browser"
            ],
            "type": "string"
          },
          "host": {
            "properties": {
              "bootStart": {
                "type": "boolean"
              },
              "bridge": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "displayPower": {
                "type": "boolean"
              },
              "edition": {
                "enum": [
                  "consumer",
                  "business"
                ],
                "type": "string"
              },
              "packageVersion": {
                "maxLength": 40,
                "type": "string"
              },
              "platform": {
                "enum": [
                  "tizen",
                  "webos",
                  "android",
                  "firetv",
                  "vega",
                  "extension"
                ],
                "type": "string"
              },
              "reboot": {
                "type": "boolean"
              },
              "screenshot": {
                "type": "boolean"
              }
            },
            "required": [
              "platform",
              "screenshot",
              "reboot",
              "displayPower"
            ],
            "type": "object"
          },
          "media": {
            "properties": {
              "hardwareCodecs": {
                "items": {
                  "maxLength": 32,
                  "type": "string"
                },
                "maxItems": 16,
                "type": "array"
              },
              "videoPlane": {
                "type": "boolean"
              }
            },
            "required": [
              "videoPlane",
              "hardwareCodecs"
            ],
            "type": "object"
          },
          "outputs": {
            "items": {
              "properties": {
                "connected": {
                  "type": "boolean"
                },
                "connector": {
                  "maxLength": 32,
                  "type": "string"
                },
                "controls": {
                  "properties": {
                    "cecPower": {
                      "type": "boolean"
                    },
                    "ddcBrightness": {
                      "type": "boolean"
                    },
                    "ddcPower": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "edid": {
                  "properties": {
                    "diagonalInch": {
                      "exclusiveMinimum": 0,
                      "maximum": 500,
                      "type": "number"
                    },
                    "manufacturer": {
                      "maxLength": 16,
                      "type": "string"
                    },
                    "model": {
                      "maxLength": 64,
                      "type": "string"
                    },
                    "serial": {
                      "maxLength": 64,
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "heightPx": {
                  "maximum": 8640,
                  "type": "integer"
                },
                "refreshHz": {
                  "maximum": 480,
                  "type": "integer"
                },
                "widthPx": {
                  "maximum": 15360,
                  "type": "integer"
                }
              },
              "required": [
                "connector",
                "connected"
              ],
              "type": "object"
            },
            "maxItems": 8,
            "type": "array"
          },
          "reportedAt": {
            "format": "date-time",
            "type": "string"
          },
          "software": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceSoftware"
              },
              {
                "type": "object"
              }
            ]
          }
        },
        "required": [
          "deviceKind",
          "compute",
          "media",
          "outputs",
          "reportedAt"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "DeviceSoftware": {
        "example": {
          "agent": {
            "buildSha": "sample",
            "loopback": 1,
            "releaseSeq": 1,
            "version": "sample"
          },
          "channel": "stable",
          "host": {
            "bridge": 1,
            "edition": "consumer",
            "packageVersion": "sample",
            "platform": "tizen"
          },
          "os": {
            "launcher": 1,
            "releaseSeq": 1,
            "version": "sample"
          },
          "renderer": {
            "activatedAt": "2026-01-01T00:00:00.000Z",
            "build": "aaaaaaaaaaaa",
            "capabilities": [
              "sample"
            ],
            "profile": "modern",
            "releaseSeq": 1,
            "source": "bundle",
            "version": "1.0.0"
          }
        },
        "properties": {
          "agent": {
            "properties": {
              "buildSha": {
                "maxLength": 64,
                "type": "string"
              },
              "loopback": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "releaseSeq": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "version": {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "version"
            ],
            "type": "object"
          },
          "channel": {
            "enum": [
              "stable",
              "beta",
              "canary"
            ],
            "type": "string"
          },
          "host": {
            "properties": {
              "bridge": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "edition": {
                "enum": [
                  "consumer",
                  "business"
                ],
                "type": "string"
              },
              "packageVersion": {
                "maxLength": 40,
                "type": "string"
              },
              "platform": {
                "enum": [
                  "tizen",
                  "webos",
                  "android",
                  "firetv",
                  "vega",
                  "extension"
                ],
                "type": "string"
              }
            },
            "required": [
              "platform"
            ],
            "type": "object"
          },
          "os": {
            "properties": {
              "launcher": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "releaseSeq": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "version": {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "version"
            ],
            "type": "object"
          },
          "renderer": {
            "properties": {
              "activatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "build": {
                "pattern": "^[0-9a-f]{12}$",
                "type": "string"
              },
              "capabilities": {
                "items": {
                  "maxLength": 32,
                  "minLength": 1,
                  "type": "string"
                },
                "maxItems": 32,
                "type": "array"
              },
              "profile": {
                "enum": [
                  "modern",
                  "legacy"
                ],
                "type": "string"
              },
              "releaseSeq": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "source": {
                "enum": [
                  "bundle",
                  "hosted"
                ],
                "type": "string"
              },
              "version": {
                "maxLength": 40,
                "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$",
                "type": "string"
              }
            },
            "required": [
              "source"
            ],
            "type": "object"
          }
        },
        "type": [
          "object",
          "null"
        ]
      },
      "DeviceSoftwareTarget": {
        "example": {
          "agent": {
            "build": "aaaaaaaaaaaa",
            "releasedAt": "2026-01-01T00:00:00.000Z",
            "releaseSeq": 1,
            "version": "sample"
          },
          "os": {
            "build": "aaaaaaaaaaaa",
            "releasedAt": "2026-01-01T00:00:00.000Z",
            "releaseSeq": 1,
            "version": "sample"
          },
          "renderer": {
            "build": "aaaaaaaaaaaa",
            "releasedAt": "2026-01-01T00:00:00.000Z",
            "releaseSeq": 1,
            "version": "sample"
          }
        },
        "properties": {
          "agent": {
            "properties": {
              "build": {
                "pattern": "^[0-9a-f]{12}$",
                "type": "string"
              },
              "releasedAt": {
                "format": "date-time",
                "type": "string"
              },
              "releaseSeq": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "version": {
                "maxLength": 40,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "build",
              "version",
              "releaseSeq",
              "releasedAt"
            ],
            "type": "object"
          },
          "os": {
            "properties": {
              "build": {
                "pattern": "^[0-9a-f]{12}$",
                "type": "string"
              },
              "releasedAt": {
                "format": "date-time",
                "type": "string"
              },
              "releaseSeq": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "version": {
                "maxLength": 40,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "build",
              "version",
              "releaseSeq",
              "releasedAt"
            ],
            "type": "object"
          },
          "renderer": {
            "properties": {
              "build": {
                "pattern": "^[0-9a-f]{12}$",
                "type": "string"
              },
              "releasedAt": {
                "format": "date-time",
                "type": "string"
              },
              "releaseSeq": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "version": {
                "maxLength": 40,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "build",
              "version",
              "releaseSeq",
              "releasedAt"
            ],
            "type": "object"
          }
        },
        "type": "object"
      },
      "DiffSceneVersionsResponse": {
        "example": {
          "addedWidgetIds": [
            "wgi_01KJPXAG40WDGET00000000001"
          ],
          "canvasChanged": false,
          "changedWidgets": [
            {
              "changedFields": [
                "config",
                "frame"
              ],
              "widgetInstanceId": "wgi_01KJPXCAQ0WDGET00000000002"
            }
          ],
          "fromVersionId": "scv_01KV5K0JE0VERSN00000000003",
          "layoutTemplateChanged": true,
          "removedWidgetIds": [],
          "toVersionId": "scv_01KWV8RTT0VERSN00000000001",
          "transitionsChanged": true
        },
        "properties": {
          "addedWidgetIds": {
            "items": {
              "pattern": "^wgi_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "type": "array"
          },
          "canvasChanged": {
            "type": "boolean"
          },
          "changedWidgets": {
            "items": {
              "properties": {
                "changedFields": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "widgetInstanceId": {
                  "pattern": "^wgi_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                }
              },
              "required": [
                "widgetInstanceId",
                "changedFields"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "fromVersionId": {
            "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "layoutTemplateChanged": {
            "type": "boolean"
          },
          "removedWidgetIds": {
            "items": {
              "pattern": "^wgi_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "type": "array"
          },
          "toVersionId": {
            "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "transitionsChanged": {
            "type": "boolean"
          }
        },
        "required": [
          "fromVersionId",
          "toVersionId",
          "addedWidgetIds",
          "removedWidgetIds",
          "changedWidgets",
          "canvasChanged",
          "layoutTemplateChanged",
          "transitionsChanged"
        ],
        "type": "object"
      },
      "DisableUserMfaRequest": {
        "example": {
          "challenge": {
            "code": "123456",
            "kind": "totp"
          },
          "reason": "Neues Telefon, zweiter Faktor wird neu eingerichtet."
        },
        "properties": {
          "challenge": {
            "oneOf": [
              {
                "properties": {
                  "code": {
                    "pattern": "^\\d{6}$",
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "totp"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "code"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "code": {
                    "minLength": 1,
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "recovery"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "code"
                ],
                "type": "object"
              }
            ]
          }
        },
        "required": [
          "challenge"
        ],
        "type": "object"
      },
      "DisableUserMfaResponse": {
        "example": {
          "mfaEnabled": false
        },
        "properties": {
          "mfaEnabled": {
            "enum": [
              false
            ],
            "type": "boolean"
          }
        },
        "required": [
          "mfaEnabled"
        ],
        "type": "object"
      },
      "DiscardCheckoutDraftResponse": {
        "example": {
          "discarded": true
        },
        "properties": {
          "discarded": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "discarded"
        ],
        "type": "object"
      },
      "DisconnectAccountResponse": {
        "example": {
          "disconnected": true
        },
        "properties": {
          "disconnected": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "disconnected"
        ],
        "type": "object"
      },
      "DisconnectCloudConnectionResponse": {
        "example": {
          "connection": {
            "accountLabel": "apotheke@demo.local",
            "accountSubject": "2f1c9d64-8a3b-4e57-9f02-6bd1c4a5e730",
            "brokenReason": null,
            "connectedByUserId": "usr_01KERQ74K0TEAM000000000001",
            "createdAt": "2026-01-12T09:00:00.000Z",
            "id": "cconn_01KT3WD680CNNECTMSGRAPH001",
            "lastVerifiedAt": "2026-07-20T09:14:32.000Z",
            "provider": "microsoft-graph",
            "scopes": [
              "Files.Read",
              "User.Read",
              "offline_access"
            ],
            "status": "revoked",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-20T09:15:00.000Z"
          }
        },
        "properties": {
          "connection": {
            "$ref": "#/components/schemas/CloudConnection"
          }
        },
        "required": [
          "connection"
        ],
        "type": "object"
      },
      "DismissNotificationResponse": {
        "example": {
          "actionUrl": "/players/ply_01KHK3FM90SCREEN0000000002",
          "bodyKey": "notification.fleet.player-offline.body",
          "bodyParams": {
            "playerId": "ply_01KHK3FM90SCREEN0000000002",
            "playerName": "Wartebereich"
          },
          "createdAt": "2026-07-19T21:14:00.000Z",
          "dismissedAt": "2026-07-20T09:15:00.000Z",
          "expiresAt": null,
          "groupKey": "fleet.player-offline:playerId:ply_01KHK3FM90SCREEN0000000002",
          "id": "ntf_01KXY3N3E0HNWES00000000001",
          "kind": "fleet.player-offline",
          "readAt": "2026-07-20T09:15:00.000Z",
          "severity": "warning",
          "titleKey": "notification.fleet.player-offline.title",
          "titleParams": {}
        },
        "properties": {
          "actionUrl": {
            "maxLength": 2000,
            "pattern": "^(\\/(?!\\/)|https:\\/\\/)",
            "type": [
              "string",
              "null"
            ]
          },
          "bodyKey": {
            "pattern": "^[a-z0-9]+(\\.[a-z0-9-]+)+$",
            "type": "string"
          },
          "bodyParams": {
            "additionalProperties": {},
            "type": "object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "dismissedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "expiresAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "groupKey": {
            "type": "string"
          },
          "id": {
            "pattern": "^ntf_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "kind": {
            "enum": [
              "invitation.accepted",
              "invitation.expired",
              "join-request.received",
              "security.theft-detected",
              "security.impersonation-started",
              "security.password-changed",
              "security.mfa-disabled",
              "security.sso-changed",
              "security.api-key-created",
              "security.custom-domain-removed",
              "identity.role-changed",
              "billing.invoice-paid",
              "billing.invoice-issued",
              "billing.payment-failed",
              "billing.past-due",
              "billing.trial-ending",
              "billing.frozen",
              "billing.unfrozen",
              "billing.vat-id-invalid",
              "billing.license-conflict",
              "billing.override-ending",
              "billing.change-failed",
              "billing.cancel-scheduled",
              "analytics.report-failed",
              "analytics.report-ready",
              "audit.export-ready",
              "media.processing-failed",
              "composition.integrity-issue",
              "fleet.player-offline",
              "fleet.command-failed",
              "identity.device-reregistration-requested",
              "integrations.cloud-connection-broken",
              "integrations.webhook-disabled",
              "marketplace.pending-reacceptance",
              "app-catalog.release-retired",
              "marketplace.release-switched",
              "marketplace.install-requested",
              "marketplace.update-decision-requested",
              "marketplace.app-installed",
              "marketplace.update-declined",
              "marketplace.data-deletion-scheduled",
              "tenancy.suspended",
              "tenancy.deletion-warning",
              "tenancy.reactivated",
              "tenancy.custom-domain-verified",
              "tenancy.sso-break-glass-used",
              "ops.maintenance",
              "ops.maintenance-canceled",
              "ops.incident",
              "ops.incident-resolved",
              "ops.broadcast"
            ],
            "type": "string"
          },
          "readAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "severity": {
            "enum": [
              "info",
              "success",
              "warning",
              "error"
            ],
            "type": "string"
          },
          "titleKey": {
            "pattern": "^[a-z0-9]+(\\.[a-z0-9-]+)+$",
            "type": "string"
          },
          "titleParams": {
            "additionalProperties": {},
            "type": "object"
          }
        },
        "required": [
          "id",
          "kind",
          "titleKey",
          "titleParams",
          "bodyKey",
          "bodyParams",
          "severity",
          "actionUrl",
          "readAt",
          "dismissedAt",
          "createdAt",
          "expiresAt",
          "groupKey"
        ],
        "type": "object"
      },
      "DisplayInventory": {
        "example": {
          "diagonalInches": 55,
          "networkEnabled": false,
          "orientation": "landscape",
          "placement": "window",
          "placementFactorPermille": null,
          "playerId": "ply_01KHK34MQ0SCREEN0000000001",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-08-20T09:00:00.000Z",
          "version": 1
        },
        "properties": {
          "diagonalInches": {
            "maximum": 150,
            "minimum": 7,
            "type": [
              "integer",
              "null"
            ]
          },
          "networkEnabled": {
            "type": "boolean"
          },
          "orientation": {
            "enum": [
              "landscape",
              "portrait"
            ],
            "type": "string"
          },
          "placement": {
            "enum": [
              "window",
              "sales_floor",
              "checkout",
              "waiting_area",
              "other"
            ],
            "type": "string"
          },
          "placementFactorPermille": {
            "maximum": 1000,
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "playerId": {
            "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "playerId",
          "tenantId",
          "placement",
          "diagonalInches",
          "orientation",
          "placementFactorPermille",
          "networkEnabled",
          "version",
          "updatedAt"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "DisplayInventoryEntry": {
        "example": {
          "inventory": {
            "diagonalInches": 55,
            "networkEnabled": false,
            "orientation": "landscape",
            "placement": "window",
            "placementFactorPermille": null,
            "playerId": "ply_01KHK34MQ0SCREEN0000000001",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-08-20T09:00:00.000Z",
            "version": 1
          },
          "locationId": "loc_01KHK4B3T0ADRESSE000000001",
          "networkEffective": false,
          "playerId": "ply_01KHK34MQ0SCREEN0000000001",
          "playerName": "Schaufenster Eingang",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "tenantParticipates": false
        },
        "properties": {
          "inventory": {
            "$ref": "#/components/schemas/DisplayInventory"
          },
          "locationId": {
            "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "networkEffective": {
            "type": "boolean"
          },
          "playerId": {
            "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "playerName": {
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "tenantParticipates": {
            "type": "boolean"
          }
        },
        "required": [
          "playerId",
          "playerName",
          "tenantId",
          "locationId",
          "inventory",
          "tenantParticipates",
          "networkEffective"
        ],
        "type": "object"
      },
      "EffectiveChannelPreferences": {
        "example": {
          "email": "off",
          "emailAvailable": false,
          "emailDigestAvailable": false,
          "emailForced": false,
          "inApp": false,
          "inAppAvailable": false,
          "inAppForced": false,
          "quietHoursApply": false,
          "reason": {
            "code": "own-account",
            "permission": "sample"
          }
        },
        "properties": {
          "email": {
            "enum": [
              "off",
              "immediate",
              "digest"
            ],
            "type": "string"
          },
          "emailAvailable": {
            "type": "boolean"
          },
          "emailDigestAvailable": {
            "type": "boolean"
          },
          "emailForced": {
            "type": "boolean"
          },
          "inApp": {
            "type": "boolean"
          },
          "inAppAvailable": {
            "type": "boolean"
          },
          "inAppForced": {
            "type": "boolean"
          },
          "quietHoursApply": {
            "type": "boolean"
          },
          "reason": {
            "$ref": "#/components/schemas/NotificationAudienceReason"
          }
        },
        "required": [
          "inApp",
          "email",
          "inAppAvailable",
          "emailAvailable",
          "emailDigestAvailable",
          "inAppForced",
          "emailForced",
          "quietHoursApply",
          "reason"
        ],
        "type": "object"
      },
      "EnableUserMfaRequest": {
        "example": {
          "password": "kennwort-platzhalter"
        },
        "properties": {
          "password": {
            "minLength": 1,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "password"
        ],
        "type": "object"
      },
      "EnableUserMfaResponse": {
        "example": {
          "otpauthUri": "otpauth://totp/Szenera:deniz.acar@demo.local?secret=BEISPIELGEHEIMNISNICHTECHT&issuer=Szenera",
          "qrSvg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 33 33\"><rect width=\"33\" height=\"33\" fill=\"#fff\"/></svg>",
          "totpSecret": "BEISPIELGEHEIMNISNICHTECHT"
        },
        "properties": {
          "otpauthUri": {
            "type": "string"
          },
          "qrSvg": {
            "type": "string"
          },
          "totpSecret": {
            "type": "string"
          }
        },
        "required": [
          "totpSecret",
          "otpauthUri",
          "qrSvg"
        ],
        "type": "object"
      },
      "ErrorBody": {
        "example": {
          "code": "Conflict.OptimisticLock",
          "correlationId": "cor_01KXZACQD0KETTE00000000001",
          "details": {
            "actualVersion": 4,
            "expectedVersion": 3,
            "sceneId": "scn_01KJPX8NH0SZENE00000000001"
          },
          "message": "Die Szene „Willkommen & Öffnungszeiten\" wurde zwischenzeitlich geändert. Bitte neu laden und erneut speichern.",
          "traceId": "trc_01KXZACQD0PFAD000000000001"
        },
        "properties": {
          "code": {
            "pattern": "^[A-Z][a-zA-Z]+\\.[A-Z][a-zA-Z0-9]+$",
            "type": "string"
          },
          "correlationId": {
            "maxLength": 128,
            "type": "string"
          },
          "details": {},
          "externalService": {
            "type": "string"
          },
          "message": {
            "maxLength": 1000,
            "minLength": 1,
            "type": "string"
          },
          "retryAfterSeconds": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "stack": {
            "type": "string"
          },
          "traceId": {
            "pattern": "^trc_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "code",
          "message",
          "traceId"
        ],
        "type": "object"
      },
      "ExcludedDisplay": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ReachDisplay"
          },
          {
            "properties": {
              "reason": {
                "enum": [
                  "display_inactive",
                  "not_selected",
                  "region_mismatch",
                  "venue_type_mismatch",
                  "placement_mismatch",
                  "tenant_not_targeted",
                  "tenant_not_participating",
                  "network_disabled",
                  "industry_excluded",
                  "orientation_mismatch"
                ],
                "type": "string"
              }
            },
            "required": [
              "reason"
            ],
            "type": "object"
          }
        ],
        "example": {
          "locationId": null,
          "locationName": null,
          "playerId": "ply_01KHK3FM90SCREEN0000000006",
          "playerName": "Kasse 2",
          "reason": "display_inactive",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
        }
      },
      "ExecuteAdHocQueryRequest": {
        "example": {
          "granularity": "1d",
          "groupBy": [
            "playerId"
          ],
          "metric": "player.online_seconds",
          "timeRange": {
            "kind": "relative",
            "lastNDays": 7
          }
        },
        "properties": {
          "granularity": {
            "enum": [
              "1h",
              "1d"
            ],
            "type": "string"
          },
          "groupBy": {
            "items": {
              "enum": [
                "playerId",
                "deviceId",
                "sceneId",
                "appId"
              ],
              "type": "string"
            },
            "maxItems": 2,
            "type": "array"
          },
          "metric": {
            "pattern": "^[a-z][a-z0-9-]*\\.[a-z][a-z0-9_]*$",
            "type": "string"
          },
          "timeRange": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "relative"
                    ],
                    "type": "string"
                  },
                  "lastNDays": {
                    "maximum": 365,
                    "minimum": 1,
                    "type": "integer"
                  }
                },
                "required": [
                  "kind",
                  "lastNDays"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "from": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "absolute"
                    ],
                    "type": "string"
                  },
                  "to": {
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "from",
                  "to"
                ],
                "type": "object"
              }
            ]
          }
        },
        "required": [
          "metric",
          "groupBy",
          "timeRange",
          "granularity"
        ],
        "type": "object"
      },
      "ExecuteAdHocQueryResponse": {
        "example": {
          "granularity": "1d",
          "metric": "player.online_seconds",
          "rows": [
            {
              "bucketStart": "2026-07-13T00:00:00.000Z",
              "playerId": "ply_01KHK34MQ0SCREEN0000000001",
              "value": 37800
            },
            {
              "bucketStart": "2026-07-13T00:00:00.000Z",
              "playerId": "ply_01KHK3FM90SCREEN0000000002",
              "value": 30240
            },
            {
              "bucketStart": "2026-07-14T00:00:00.000Z",
              "playerId": "ply_01KHK34MQ0SCREEN0000000001",
              "value": 37620
            }
          ],
          "totalRows": 14
        },
        "properties": {
          "granularity": {
            "enum": [
              "1h",
              "1d"
            ],
            "type": "string"
          },
          "metric": {
            "pattern": "^[a-z][a-z0-9-]*\\.[a-z][a-z0-9_]*$",
            "type": "string"
          },
          "rows": {
            "items": {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "type": "object"
            },
            "type": "array"
          },
          "totalRows": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "metric",
          "granularity",
          "rows",
          "totalRows"
        ],
        "type": "object"
      },
      "ExploreDimensionColumn": {
        "example": {
          "key": "period",
          "label": "sample"
        },
        "properties": {
          "key": {
            "enum": [
              "period",
              "month",
              "week",
              "day",
              "weekday",
              "daypart",
              "hour",
              "hourOfDay",
              "network",
              "region",
              "venueType",
              "location",
              "player",
              "placement",
              "tag",
              "group",
              "owner",
              "advertiser",
              "campaign",
              "bookingLine",
              "creative",
              "contentKind",
              "schedule",
              "playlist",
              "scene",
              "asset",
              "status",
              "late",
              "grade",
              "play"
            ],
            "type": "string"
          },
          "label": {
            "type": "string"
          }
        },
        "required": [
          "key",
          "label"
        ],
        "type": "object"
      },
      "ExploreDimensionValue": {
        "example": {
          "label": "sample",
          "value": "sample"
        },
        "properties": {
          "label": {
            "type": "string"
          },
          "value": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "value",
          "label"
        ],
        "type": "object"
      },
      "ExploreFilters": {
        "default": {},
        "example": {},
        "properties": {
          "advertiserIds": {
            "items": {
              "pattern": "^adv_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array"
          },
          "assetIds": {
            "items": {
              "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 500,
            "minItems": 1,
            "type": "array"
          },
          "bookingLineIds": {
            "items": {
              "pattern": "^bkl_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 200,
            "minItems": 1,
            "type": "array"
          },
          "campaignIds": {
            "items": {
              "pattern": "^acp_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array"
          },
          "contentKinds": {
            "items": {
              "enum": [
                "scene",
                "media",
                "creative",
                "fallback"
              ],
              "type": "string"
            },
            "maxItems": 4,
            "minItems": 1,
            "type": "array"
          },
          "creativeIds": {
            "items": {
              "pattern": "^crv_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 200,
            "minItems": 1,
            "type": "array"
          },
          "dayparts": {
            "items": {
              "enum": [
                "early",
                "morning",
                "midday",
                "afternoon",
                "evening",
                "night"
              ],
              "type": "string"
            },
            "maxItems": 6,
            "minItems": 1,
            "type": "array"
          },
          "grades": {
            "items": {
              "anyOf": [
                {
                  "enum": [
                    "A",
                    "B",
                    "C"
                  ],
                  "type": "string"
                },
                {
                  "enum": [
                    "none"
                  ],
                  "type": "string"
                }
              ]
            },
            "maxItems": 4,
            "minItems": 1,
            "type": "array"
          },
          "groupIds": {
            "items": {
              "pattern": "^dgr_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 50,
            "minItems": 1,
            "type": "array"
          },
          "hoursOfDay": {
            "items": {
              "maximum": 23,
              "minimum": 0,
              "type": "integer"
            },
            "maxItems": 24,
            "minItems": 1,
            "type": "array"
          },
          "late": {
            "type": "boolean"
          },
          "locationIds": {
            "items": {
              "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 200,
            "minItems": 1,
            "type": "array"
          },
          "owners": {
            "items": {
              "enum": [
                "tenant",
                "network"
              ],
              "type": "string"
            },
            "maxItems": 2,
            "minItems": 1,
            "type": "array"
          },
          "placements": {
            "items": {
              "enum": [
                "window",
                "sales_floor",
                "checkout",
                "waiting_area",
                "other"
              ],
              "type": "string"
            },
            "maxItems": 5,
            "minItems": 1,
            "type": "array"
          },
          "playerIds": {
            "items": {
              "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 500,
            "minItems": 1,
            "type": "array"
          },
          "playlistIds": {
            "items": {
              "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 200,
            "minItems": 1,
            "type": "array"
          },
          "regionCodes": {
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/LocationRegion"
                },
                {
                  "type": "string"
                }
              ]
            },
            "maxItems": 50,
            "minItems": 1,
            "type": "array"
          },
          "sceneIds": {
            "items": {
              "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 200,
            "minItems": 1,
            "type": "array"
          },
          "scheduleIds": {
            "items": {
              "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array"
          },
          "statuses": {
            "items": {
              "enum": [
                "pending",
                "valid",
                "render_error",
                "wrong_content",
                "panel_off",
                "not_visible",
                "zone_too_small",
                "too_short",
                "outside_booking",
                "not_planned",
                "clock_unreliable"
              ],
              "type": "string"
            },
            "maxItems": 10,
            "minItems": 1,
            "type": "array"
          },
          "tagIds": {
            "items": {
              "pattern": "^ptg_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 50,
            "minItems": 1,
            "type": "array"
          },
          "venueTypes": {
            "items": {
              "enum": [
                "pharmacy",
                "workshop",
                "bakery",
                "beverage_store",
                "grocery",
                "kiosk",
                "fitness_studio",
                "medical_practice",
                "retail",
                "other"
              ],
              "type": "string"
            },
            "maxItems": 10,
            "minItems": 1,
            "type": "array"
          },
          "weekdays": {
            "items": {
              "maximum": 7,
              "minimum": 1,
              "type": "integer"
            },
            "maxItems": 7,
            "minItems": 1,
            "type": "array"
          }
        },
        "type": "object"
      },
      "ExploreMeasureColumn": {
        "example": {
          "bounded": false,
          "class": "measured",
          "key": "plannedSeconds",
          "label": "sample",
          "method": {
            "contactModel": 1,
            "networkParameters": 1,
            "validityRule": 1
          },
          "unit": "seconds"
        },
        "properties": {
          "bounded": {
            "type": "boolean"
          },
          "class": {
            "enum": [
              "measured",
              "derived",
              "modelled"
            ],
            "type": "string"
          },
          "key": {
            "enum": [
              "plannedSeconds",
              "visibleSeconds",
              "availability",
              "gapHours",
              "lateHours",
              "renderErrors",
              "plays",
              "validPlays",
              "airtimeSeconds",
              "plannedPlays",
              "fulfilment",
              "pacing",
              "failureRate",
              "screenShare",
              "reachedLocations",
              "contacts",
              "contactValueCents",
              "audienceGradeMix",
              "fillRate"
            ],
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "method": {
            "$ref": "#/components/schemas/ExploreMethod"
          },
          "unit": {
            "enum": [
              "seconds",
              "hours",
              "count",
              "ratio",
              "cents"
            ],
            "type": "string"
          }
        },
        "required": [
          "key",
          "label",
          "class",
          "unit",
          "method",
          "bounded"
        ],
        "type": "object"
      },
      "ExploreMethod": {
        "example": {
          "contactModel": 1,
          "networkParameters": 1,
          "validityRule": 1
        },
        "properties": {
          "contactModel": {
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "networkParameters": {
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "validityRule": {
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "validityRule",
          "contactModel",
          "networkParameters"
        ],
        "type": "object"
      },
      "ExploreNotice": {
        "example": {
          "code": "windowClampedByPackage",
          "params": {
            "sample": "sample"
          },
          "text": "sample"
        },
        "properties": {
          "code": {
            "enum": [
              "windowClampedByPackage",
              "windowClampedByRetention",
              "teaser",
              "smallCellsMerged",
              "gradeCExcluded",
              "gradeCEstimated",
              "noAudienceProfile",
              "openGaps",
              "pendingPlays",
              "currentAssignment",
              "noBookings"
            ],
            "type": "string"
          },
          "params": {
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "type": "object"
          },
          "text": {
            "type": "string"
          }
        },
        "required": [
          "code",
          "params",
          "text"
        ],
        "type": "object"
      },
      "ExploreQuery": {
        "example": {
          "dimensions": [
            "player"
          ],
          "filters": {},
          "granularity": "auto",
          "limit": null,
          "measures": [
            "airtimeSeconds",
            "availability"
          ],
          "perspective": "venue",
          "sort": {
            "direction": "asc",
            "measure": "availability"
          },
          "window": {
            "from": "2026-10-05",
            "timezone": "Europe/Berlin",
            "to": "2026-10-11"
          }
        },
        "properties": {
          "dimensions": {
            "default": [],
            "items": {
              "enum": [
                "period",
                "month",
                "week",
                "day",
                "weekday",
                "daypart",
                "hour",
                "hourOfDay",
                "network",
                "region",
                "venueType",
                "location",
                "player",
                "placement",
                "tag",
                "group",
                "owner",
                "advertiser",
                "campaign",
                "bookingLine",
                "creative",
                "contentKind",
                "schedule",
                "playlist",
                "scene",
                "asset",
                "status",
                "late",
                "grade",
                "play"
              ],
              "type": "string"
            },
            "maxItems": 3,
            "type": "array"
          },
          "filters": {
            "$ref": "#/components/schemas/ExploreFilters"
          },
          "granularity": {
            "default": "auto",
            "enum": [
              "auto",
              "hour",
              "day"
            ],
            "type": "string"
          },
          "limit": {
            "default": null,
            "maximum": 5000,
            "minimum": 1,
            "type": [
              "integer",
              "null"
            ]
          },
          "measures": {
            "items": {
              "enum": [
                "plannedSeconds",
                "visibleSeconds",
                "availability",
                "gapHours",
                "lateHours",
                "renderErrors",
                "plays",
                "validPlays",
                "airtimeSeconds",
                "plannedPlays",
                "fulfilment",
                "pacing",
                "failureRate",
                "screenShare",
                "reachedLocations",
                "contacts",
                "contactValueCents",
                "audienceGradeMix",
                "fillRate"
              ],
              "type": "string"
            },
            "maxItems": 6,
            "minItems": 1,
            "type": "array"
          },
          "perspective": {
            "default": "venue",
            "enum": [
              "venue",
              "network",
              "advertiser"
            ],
            "type": "string"
          },
          "sort": {
            "$ref": "#/components/schemas/ExploreSort"
          },
          "window": {
            "$ref": "#/components/schemas/ExploreWindow"
          }
        },
        "required": [
          "measures",
          "window"
        ],
        "type": "object"
      },
      "ExploreResolvedWindow": {
        "example": {
          "from": "2026-07-08",
          "requestedFrom": "2026-07-08",
          "requestedTo": "2026-07-08",
          "timezone": "Europe/Berlin",
          "to": "2026-07-08"
        },
        "properties": {
          "from": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "requestedFrom": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "requestedTo": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "timezone": {
            "type": "string"
          },
          "to": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          }
        },
        "required": [
          "from",
          "to",
          "timezone",
          "requestedFrom",
          "requestedTo"
        ],
        "type": "object"
      },
      "ExploreRow": {
        "example": {
          "dimensions": [
            {
              "label": "sample",
              "value": "sample"
            }
          ],
          "merged": false,
          "upper": [
            1
          ],
          "values": [
            1
          ]
        },
        "properties": {
          "dimensions": {
            "items": {
              "$ref": "#/components/schemas/ExploreDimensionValue"
            },
            "type": "array"
          },
          "merged": {
            "type": "boolean"
          },
          "upper": {
            "items": {
              "type": [
                "number",
                "null"
              ]
            },
            "type": "array"
          },
          "values": {
            "items": {
              "type": [
                "number",
                "null"
              ]
            },
            "type": "array"
          }
        },
        "required": [
          "dimensions",
          "values",
          "upper",
          "merged"
        ],
        "type": "object"
      },
      "ExploreSort": {
        "default": null,
        "example": {
          "direction": "asc",
          "measure": "plannedSeconds"
        },
        "properties": {
          "direction": {
            "enum": [
              "asc",
              "desc"
            ],
            "type": "string"
          },
          "measure": {
            "enum": [
              "plannedSeconds",
              "visibleSeconds",
              "availability",
              "gapHours",
              "lateHours",
              "renderErrors",
              "plays",
              "validPlays",
              "airtimeSeconds",
              "plannedPlays",
              "fulfilment",
              "pacing",
              "failureRate",
              "screenShare",
              "reachedLocations",
              "contacts",
              "contactValueCents",
              "audienceGradeMix",
              "fillRate"
            ],
            "type": "string"
          }
        },
        "required": [
          "measure",
          "direction"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "ExploreSuggestion": {
        "example": {
          "key": "byPlayerInsteadOfLocation",
          "label": "sample",
          "query": {
            "dimensions": [],
            "filters": {},
            "granularity": "auto",
            "limit": 1,
            "measures": [
              "plannedSeconds"
            ],
            "perspective": "venue",
            "sort": {
              "direction": "asc",
              "measure": "plannedSeconds"
            },
            "window": {
              "from": "2026-07-08",
              "timezone": "Europe/Berlin",
              "to": "2026-07-08"
            }
          }
        },
        "properties": {
          "key": {
            "enum": [
              "byPlayerInsteadOfLocation",
              "compareWithPreviousPeriod",
              "onlyAdPods",
              "byWeekInsteadOfDay",
              "byBookingLine",
              "byHourOfDay"
            ],
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "query": {
            "$ref": "#/components/schemas/ExploreQuery"
          }
        },
        "required": [
          "key",
          "label",
          "query"
        ],
        "type": "object"
      },
      "ExploreTotals": {
        "example": {
          "upper": [
            1
          ],
          "values": [
            1
          ]
        },
        "properties": {
          "upper": {
            "items": {
              "type": [
                "number",
                "null"
              ]
            },
            "type": "array"
          },
          "values": {
            "items": {
              "type": [
                "number",
                "null"
              ]
            },
            "type": "array"
          }
        },
        "required": [
          "values",
          "upper"
        ],
        "type": "object"
      },
      "ExploreWindow": {
        "example": {
          "from": "2026-07-08",
          "timezone": "Europe/Berlin",
          "to": "2026-07-08"
        },
        "properties": {
          "from": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "timezone": {
            "type": "string"
          },
          "to": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          }
        },
        "required": [
          "from",
          "to"
        ],
        "type": "object"
      },
      "ExportExploreRequest": {
        "example": {
          "format": "pdf",
          "query": {
            "dimensions": [
              "player"
            ],
            "filters": {},
            "granularity": "auto",
            "limit": null,
            "measures": [
              "airtimeSeconds",
              "availability"
            ],
            "perspective": "venue",
            "sort": {
              "direction": "asc",
              "measure": "availability"
            },
            "window": {
              "from": "2026-10-05",
              "timezone": "Europe/Berlin",
              "to": "2026-10-11"
            }
          },
          "title": "Verfügbarkeit je Display"
        },
        "properties": {
          "format": {
            "enum": [
              "csv",
              "pdf"
            ],
            "type": "string"
          },
          "query": {
            "$ref": "#/components/schemas/ExploreQuery"
          },
          "title": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "query",
          "format"
        ],
        "type": "object"
      },
      "ExportExploreResponse": {
        "example": {
          "expiresAt": "2026-10-12T05:45:00.000Z",
          "format": "pdf",
          "generatedReportId": "gnr_01KYB4C2D0BERCHT0000000003",
          "remaining": 2,
          "rowCount": 3,
          "sizeBytes": 41872,
          "url": "https://s3.demo.local/signage-medien/berichte/gnr_01KYB4C2D0BERCHT0000000003.pdf?X-Amz-Expires=900"
        },
        "properties": {
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "format": {
            "enum": [
              "csv",
              "pdf"
            ],
            "type": "string"
          },
          "generatedReportId": {
            "pattern": "^gnr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "remaining": {
            "maximum": 3,
            "minimum": 0,
            "type": "integer"
          },
          "rowCount": {
            "minimum": 0,
            "type": "integer"
          },
          "sizeBytes": {
            "minimum": 0,
            "type": "integer"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "generatedReportId",
          "format",
          "url",
          "expiresAt",
          "sizeBytes",
          "rowCount",
          "remaining"
        ],
        "type": "object"
      },
      "FederatedIdentityPublic": {
        "example": {
          "email": "deniz.acar@demo.local",
          "emailIsPrivateRelay": false,
          "id": "fid_01KT3WPB70FDERTE0000000001",
          "issuer": {
            "kind": "social",
            "provider": "google"
          },
          "lastLoginAt": "2026-07-18T16:20:00.000Z",
          "linkedAt": "2026-06-02T10:05:00.000Z"
        },
        "properties": {
          "email": {
            "maxLength": 254,
            "type": [
              "string",
              "null"
            ]
          },
          "emailIsPrivateRelay": {
            "type": "boolean"
          },
          "id": {
            "pattern": "^fid_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "issuer": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "social"
                    ],
                    "type": "string"
                  },
                  "provider": {
                    "enum": [
                      "google",
                      "microsoft",
                      "apple"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "provider"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "sso"
                    ],
                    "type": "string"
                  },
                  "providerId": {
                    "pattern": "^ssop_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "providerId"
                ],
                "type": "object"
              }
            ]
          },
          "lastLoginAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "linkedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "issuer",
          "email",
          "emailIsPrivateRelay",
          "linkedAt",
          "lastLoginAt"
        ],
        "type": "object"
      },
      "GetActiveMaintenanceWindowResponse": {
        "example": {
          "blockMutations": true,
          "description": "Wir heben die Datenbank auf eine neue Hauptversion. Das Portal ist in dieser Zeit nur lesend erreichbar; die Bildschirme spielen unverändert weiter.",
          "id": "mtw_01KX5TYBW0WARTNG0000000001",
          "scheduledEnd": "2026-07-26T03:00:00.000Z",
          "scheduledStart": "2026-07-26T01:00:00.000Z",
          "showBanner": true,
          "status": "notified",
          "title": "Datenbank-Update"
        },
        "properties": {
          "blockMutations": {
            "type": "boolean"
          },
          "description": {
            "type": "string"
          },
          "id": {
            "pattern": "^mtw_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "scheduledEnd": {
            "format": "date-time",
            "type": "string"
          },
          "scheduledStart": {
            "format": "date-time",
            "type": "string"
          },
          "showBanner": {
            "type": "boolean"
          },
          "status": {
            "enum": [
              "planned",
              "notified",
              "active",
              "completed",
              "canceled"
            ],
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "description",
          "scheduledStart",
          "scheduledEnd",
          "status",
          "showBanner",
          "blockMutations"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "GetActivityFeedResponse": {
        "example": {
          "items": [
            {
              "actorDisplayName": "Deniz Acar",
              "actorKind": "user",
              "actorRef": "usr_01KFB7QPW0TEAM000000000002",
              "eventType": "composition.scene.published",
              "id": "aud_01KXZACQD0PRTK000000000001",
              "metadata": {
                "correlationId": "cor_01KXZACQD0KETTE00000000001",
                "impersonatorRef": null,
                "sourceDomain": "composition",
                "traceId": "trc_01KXZACQD0TRACE00000000001"
              },
              "occurredAt": "2026-07-20T08:31:00.000Z",
              "payload": {
                "appVersionPins": {},
                "at": "2026-07-20T08:31:00.000Z",
                "contentHash": "b2f80a41d76c395ee0138b5a4c9d27f6103e8ab7592c4df081a63be95d7c024f",
                "publishedById": "usr_01KFB7QPW0TEAM000000000002",
                "sceneId": "scn_01KJWKGJM0SZENE00000000002",
                "sceneVersionId": "scv_01KXD78M20VERSN00000000002",
                "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
                "versionNumber": 9
              },
              "payloadRedacted": false,
              "pseudonymized": false,
              "resourceDisplayName": "Angebote der Woche",
              "resourceId": "scn_01KJWKGJM0SZENE00000000002",
              "resourceType": "scene",
              "severity": "info",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            },
            {
              "actorDisplayName": "Julia Petersen",
              "actorKind": "user",
              "actorRef": "usr_01KERQ74K0TEAM000000000001",
              "eventType": "sessions.login.succeeded",
              "id": "aud_01KXZ8AT10PRTK000000000002",
              "metadata": {
                "correlationId": null,
                "impersonatorRef": null,
                "sourceDomain": "sessions",
                "traceId": "trc_01KXZ8AT10TRACE00000000002"
              },
              "occurredAt": "2026-07-20T07:55:00.000Z",
              "payload": {
                "at": "2026-07-20T07:55:00.000Z",
                "kind": "user",
                "method": "password",
                "sessionId": "ses_01KXZ8AT10SESSN00000000001",
                "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
                "userId": "usr_01KERQ74K0TEAM000000000001"
              },
              "payloadRedacted": false,
              "pseudonymized": false,
              "resourceDisplayName": null,
              "resourceId": null,
              "resourceType": null,
              "severity": "info",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            }
          ],
          "nextCursor": "YXVkOjIwMjYtMDctMjA",
          "total": 342
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "actorDisplayName": {
                  "default": null,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "actorKind": {
                  "enum": [
                    "user",
                    "operator",
                    "apiKey",
                    "operatorApiKey",
                    "oauth",
                    "device",
                    "renderer",
                    "scim",
                    "impersonation",
                    "anonymous",
                    "system"
                  ],
                  "type": "string"
                },
                "actorRef": {
                  "type": "string"
                },
                "eventType": {
                  "type": "string"
                },
                "id": {
                  "pattern": "^aud_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "metadata": {
                  "properties": {
                    "correlationId": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "impersonatorRef": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "sourceDomain": {
                      "type": "string"
                    },
                    "traceId": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "traceId",
                    "correlationId",
                    "sourceDomain",
                    "impersonatorRef"
                  ],
                  "type": "object"
                },
                "occurredAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "payload": {},
                "payloadRedacted": {
                  "default": false,
                  "type": "boolean"
                },
                "pseudonymized": {
                  "type": "boolean"
                },
                "resourceDisplayName": {
                  "default": null,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "resourceId": {
                  "default": null,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "resourceType": {
                  "default": null,
                  "enum": [
                    "scene",
                    "playlist",
                    "schedule",
                    "player",
                    "device",
                    "asset",
                    "folder",
                    "layout-template",
                    "report",
                    "user",
                    "role"
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "severity": {
                  "default": "info",
                  "enum": [
                    "debug",
                    "info",
                    "warn",
                    "error"
                  ],
                  "type": "string"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "occurredAt",
                "eventType",
                "actorRef",
                "actorKind",
                "tenantId",
                "metadata",
                "pseudonymized"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "GetAnalyticsCatalogResponse": {
        "example": {
          "dayparts": [
            {
              "fromHour": 0,
              "key": "early",
              "label": "sample",
              "toHour": 1
            }
          ],
          "dimensions": [
            {
              "available": {
                "allowed": false,
                "reason": "notPerContent",
                "reasonText": "sample"
              },
              "family": "time",
              "key": "period",
              "label": "sample",
              "level": 0,
              "option": "sample",
              "timeKind": "calendar"
            }
          ],
          "limits": {
            "maxDimensions": 1,
            "maxHourlyWindowDays": 1,
            "maxMeasures": 1,
            "maxRows": 1,
            "maxWindowDays": 1,
            "smallCellMinLocations": 1
          },
          "locale": "de",
          "measures": [
            {
              "aggregation": {
                "kind": "sum"
              },
              "available": {
                "allowed": false,
                "reason": "notPerContent",
                "reasonText": "sample"
              },
              "bounded": false,
              "class": "measured",
              "definition": "sample",
              "dimensions": {
                "advertiser": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "asset": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "bookingLine": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "campaign": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "contentKind": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "creative": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "day": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "daypart": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "grade": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "group": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "hour": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "hourOfDay": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "late": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "location": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "month": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "network": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "owner": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "period": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "placement": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "play": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "player": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "playlist": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "region": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "scene": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "schedule": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "status": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "tag": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "venueType": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "week": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                },
                "weekday": {
                  "allowed": false,
                  "reason": "notPerContent",
                  "reasonText": "sample"
                }
              },
              "group": "operations",
              "key": "plannedSeconds",
              "label": "sample",
              "requires": "campaignScope",
              "unit": "seconds"
            }
          ],
          "perspective": "venue",
          "reasons": [
            {
              "key": "notPerContent",
              "text": "sample"
            }
          ],
          "starterQuestions": [
            {
              "description": "sample",
              "key": "sample",
              "label": "sample",
              "query": {
                "dimensions": [],
                "filters": {},
                "granularity": "auto",
                "limit": 1,
                "measures": [
                  "plannedSeconds"
                ],
                "perspective": "venue",
                "sort": {
                  "direction": "asc",
                  "measure": "plannedSeconds"
                }
              },
              "windowDays": 1
            }
          ]
        },
        "properties": {
          "dayparts": {
            "items": {
              "$ref": "#/components/schemas/CatalogDaypart"
            },
            "type": "array"
          },
          "dimensions": {
            "items": {
              "$ref": "#/components/schemas/CatalogDimension"
            },
            "type": "array"
          },
          "limits": {
            "$ref": "#/components/schemas/CatalogLimits"
          },
          "locale": {
            "enum": [
              "de",
              "en"
            ],
            "type": "string"
          },
          "measures": {
            "items": {
              "$ref": "#/components/schemas/CatalogMeasure"
            },
            "type": "array"
          },
          "perspective": {
            "enum": [
              "venue",
              "network",
              "advertiser"
            ],
            "type": "string"
          },
          "reasons": {
            "items": {
              "properties": {
                "key": {
                  "enum": [
                    "notPerContent",
                    "notPerStatus",
                    "tooFineForModelled",
                    "finerThanLocation",
                    "playLevelExportOnly",
                    "needsCampaignFilter",
                    "perLineOnly",
                    "notPlannedPerCreative",
                    "needsGradeDimension",
                    "networkOnly",
                    "notInPerspective",
                    "mixesContentAndAdvertising",
                    "tooManyDimensions",
                    "needsHourGranularity"
                  ],
                  "type": "string"
                },
                "text": {
                  "type": "string"
                }
              },
              "required": [
                "key",
                "text"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "starterQuestions": {
            "items": {
              "$ref": "#/components/schemas/CatalogStarterQuestion"
            },
            "type": "array"
          }
        },
        "required": [
          "perspective",
          "locale",
          "measures",
          "dimensions",
          "reasons",
          "dayparts",
          "starterQuestions",
          "limits"
        ],
        "type": "object"
      },
      "GetAnalyticsOverviewResponse": {
        "example": {
          "airtimeByKind": {
            "directSeconds": 13860,
            "fallbackSeconds": 1200,
            "networkSeconds": 0,
            "ownContentSeconds": 594240
          },
          "anomalies": [
            {
              "action": "checkPanelSchedule",
              "campaign": null,
              "content": null,
              "count": null,
              "deadline": null,
              "from": "2026-10-08T13:00:00.000Z",
              "impactHours": 4,
              "key": "panelOff:ply_01KHK3FM90SCREEN0000000002:2026-10-08T13:00:00.000Z",
              "kind": "panelOff",
              "locationName": null,
              "lostAdPlays": 0,
              "lostPlays": 720,
              "playerId": "ply_01KHK3FM90SCREEN0000000002",
              "playerName": "Wartebereich",
              "severity": "warning",
              "state": "open",
              "to": "2026-10-08T17:00:00.000Z"
            },
            {
              "action": "checkDisplay",
              "campaign": {
                "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
                "name": "Herbstpflege 2026"
              },
              "content": null,
              "count": null,
              "deadline": "2026-10-17T09:00:00.000Z",
              "from": "2026-10-10T08:00:00.000Z",
              "impactHours": 3,
              "key": "gap:ply_01KHK34MQ0SCREEN0000000001:2026-10-10T08:00:00.000Z",
              "kind": "gap",
              "locationName": "Hauptstelle",
              "lostAdPlays": 54,
              "lostPlays": 540,
              "playerId": "ply_01KHK34MQ0SCREEN0000000001",
              "playerName": "Schaufenster Eingang",
              "severity": "danger",
              "state": "open",
              "to": "2026-10-10T11:00:00.000Z"
            },
            {
              "action": "replaceFile",
              "campaign": null,
              "content": {
                "id": "ast_01KW95DD30MEDEN00000000001",
                "kind": "asset",
                "name": "angebot-der-woche.jpg"
              },
              "count": 6,
              "deadline": null,
              "from": "2026-10-06T08:12:00.000Z",
              "impactHours": 0.25,
              "key": "renderErrors:ply_01KRX5JVJ0SCREEN0000000003:2026-10-06T08:12:00.000Z",
              "kind": "renderErrors",
              "locationName": null,
              "lostAdPlays": 0,
              "lostPlays": 6,
              "playerId": "ply_01KRX5JVJ0SCREEN0000000003",
              "playerName": "Beratungsraum",
              "severity": "warning",
              "state": "open",
              "to": "2026-10-06T08:40:00.000Z"
            }
          ],
          "availability": {
            "upper": 0.9625,
            "value": 0.9458
          },
          "campaigns": [
            {
              "advertiserName": "Nordwind Naturkosmetik GmbH",
              "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
              "creditCents": null,
              "displays": 2,
              "endsOn": "2026-10-31",
              "expectedShare": 0.6429,
              "fulfilment": 0.6607,
              "name": "Herbstpflege 2026",
              "owner": "tenant",
              "pacing": 1.0277,
              "phase": "running",
              "startsOn": "2026-09-01",
              "windowPlannedPlays": 1442,
              "windowValidPlays": 1386
            }
          ],
          "completeness": {
            "late": 5,
            "missing": 5,
            "onTime": 170,
            "plannedHours": 180
          },
          "computedAt": "2026-10-12T05:30:00.000Z",
          "grid": {
            "days": [
              "2026-10-05",
              "2026-10-06",
              "2026-10-07",
              "2026-10-08",
              "2026-10-09",
              "2026-10-10",
              "2026-10-11"
            ],
            "firstHour": 8,
            "lastHour": 18,
            "rows": [
              {
                "availability": {
                  "upper": 0.975,
                  "value": 0.925
                },
                "cells": [
                  {
                    "day": "2026-10-10",
                    "gapSeconds": 0,
                    "hiddenSeconds": 0,
                    "hour": 9,
                    "late": false,
                    "panelOffSeconds": 0,
                    "plannedSeconds": 3600,
                    "renderErrors": 0,
                    "state": "visible",
                    "visibleSeconds": 3600
                  },
                  {
                    "day": "2026-10-10",
                    "gapSeconds": 3600,
                    "hiddenSeconds": 0,
                    "hour": 10,
                    "late": false,
                    "panelOffSeconds": 0,
                    "plannedSeconds": 3600,
                    "renderErrors": 0,
                    "state": "missing",
                    "visibleSeconds": 0
                  }
                ],
                "diagonalInches": 55,
                "locationId": "loc_01KHK4B3T0ADRESSE000000001",
                "locationName": "Hauptstelle",
                "name": "Schaufenster Eingang",
                "placement": "window",
                "playerId": "ply_01KHK34MQ0SCREEN0000000001"
              },
              {
                "availability": {
                  "upper": 0.9333,
                  "value": 0.9333
                },
                "cells": [
                  {
                    "day": "2026-10-08",
                    "gapSeconds": 0,
                    "hiddenSeconds": 0,
                    "hour": 15,
                    "late": false,
                    "panelOffSeconds": 3600,
                    "plannedSeconds": 3600,
                    "renderErrors": 0,
                    "state": "panelOff",
                    "visibleSeconds": 0
                  }
                ],
                "diagonalInches": 43,
                "locationId": null,
                "locationName": null,
                "name": "Wartebereich",
                "placement": "waiting_area",
                "playerId": "ply_01KHK3FM90SCREEN0000000002"
              },
              {
                "availability": {
                  "upper": 0.9792,
                  "value": 0.9792
                },
                "cells": [
                  {
                    "day": "2026-10-06",
                    "gapSeconds": 0,
                    "hiddenSeconds": 3600,
                    "hour": 10,
                    "late": true,
                    "panelOffSeconds": 0,
                    "plannedSeconds": 3600,
                    "renderErrors": 6,
                    "state": "hidden",
                    "visibleSeconds": 0
                  }
                ],
                "diagonalInches": 32,
                "locationId": null,
                "locationName": null,
                "name": "Beratungsraum",
                "placement": "sales_floor",
                "playerId": "ply_01KRX5JVJ0SCREEN0000000003"
              }
            ]
          },
          "largestOpenGap": {
            "deadline": "2026-10-17T09:00:00.000Z",
            "from": "2026-10-10T08:00:00.000Z",
            "locationName": "Hauptstelle",
            "playerId": "ply_01KHK34MQ0SCREEN0000000001",
            "playerName": "Schaufenster Eingang",
            "seconds": 10800,
            "to": "2026-10-10T11:00:00.000Z"
          },
          "losses": {
            "gap": [
              {
                "from": "2026-10-10T08:00:00.000Z",
                "locationName": "Hauptstelle",
                "playerId": "ply_01KHK34MQ0SCREEN0000000001",
                "playerName": "Schaufenster Eingang",
                "seconds": 10800,
                "to": "2026-10-10T11:00:00.000Z"
              }
            ],
            "hidden": [
              {
                "from": "2026-10-06T08:00:00.000Z",
                "locationName": null,
                "playerId": "ply_01KRX5JVJ0SCREEN0000000003",
                "playerName": "Beratungsraum",
                "seconds": 3600,
                "to": "2026-10-06T09:00:00.000Z"
              }
            ],
            "panelOff": [
              {
                "from": "2026-10-08T13:00:00.000Z",
                "locationName": null,
                "playerId": "ply_01KHK3FM90SCREEN0000000002",
                "playerName": "Wartebereich",
                "seconds": 14400,
                "to": "2026-10-08T17:00:00.000Z"
              }
            ]
          },
          "notices": [
            {
              "code": "openGaps",
              "params": {
                "deadline": "2026-10-17T09:00:00.000Z",
                "hours": 3
              },
              "text": "3 Planstunden sind noch nicht gemeldet und können bis 17.10.2026, 11:00 nachkommen. Die Zahlen können noch steigen."
            }
          ],
          "openGaps": [
            {
              "deadline": "2026-10-17T09:00:00.000Z",
              "from": "2026-10-10T08:00:00.000Z",
              "locationName": "Hauptstelle",
              "playerId": "ply_01KHK34MQ0SCREEN0000000001",
              "playerName": "Schaufenster Eingang",
              "seconds": 10800,
              "to": "2026-10-10T11:00:00.000Z"
            }
          ],
          "previousAvailability": 0.9312,
          "tiles": {
            "displays": 3,
            "gapHours": 4.8,
            "lateHours": 5,
            "locations": 1,
            "ownAirtimeSeconds": 594240,
            "plays": 21540,
            "renderErrors": 6,
            "validPlays": 21312
          },
          "timeBalance": {
            "errorSeconds": 900,
            "gapFinalSeconds": 6300,
            "gapOpenSeconds": 10800,
            "hiddenSeconds": 3600,
            "panelOffSeconds": 14400,
            "plannedSeconds": 648000,
            "visibleSeconds": 612900
          },
          "topContent": [
            {
              "airtimeSeconds": 251280,
              "content": {
                "id": "scn_01KJPX8NH0SZENE00000000001",
                "kind": "scene",
                "name": "Willkommen & Öffnungszeiten"
              },
              "plays": 8376
            },
            {
              "airtimeSeconds": 214560,
              "content": {
                "id": "scn_01KJWKGJM0SZENE00000000002",
                "kind": "scene",
                "name": "Angebote der Woche"
              },
              "plays": 7152
            },
            {
              "airtimeSeconds": 70200,
              "content": {
                "id": "ast_01KKEQYSM0MEDEN00000000002",
                "kind": "asset",
                "name": "wartebereich-schleife.mp4"
              },
              "plays": 585
            }
          ],
          "window": {
            "from": "2026-10-05",
            "historyDays": 90,
            "requestedFrom": "2026-10-05",
            "requestedTo": "2026-10-11",
            "teaser": false,
            "timezone": "Europe/Berlin",
            "to": "2026-10-11"
          }
        },
        "properties": {
          "airtimeByKind": {
            "$ref": "#/components/schemas/AnalyticsAirtimeByKind"
          },
          "anomalies": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsAnomaly"
            },
            "type": "array"
          },
          "availability": {
            "$ref": "#/components/schemas/AnalyticsAvailabilityRange"
          },
          "campaigns": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsOverviewCampaign"
            },
            "type": "array"
          },
          "completeness": {
            "$ref": "#/components/schemas/AnalyticsCompleteness"
          },
          "computedAt": {
            "format": "date-time",
            "type": "string"
          },
          "grid": {
            "$ref": "#/components/schemas/AnalyticsOverviewGrid"
          },
          "largestOpenGap": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AnalyticsOpenGap"
              },
              {
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "losses": {
            "$ref": "#/components/schemas/AnalyticsLossDetails"
          },
          "notices": {
            "items": {
              "$ref": "#/components/schemas/ExploreNotice"
            },
            "type": "array"
          },
          "openGaps": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsOpenGap"
            },
            "type": "array"
          },
          "previousAvailability": {
            "maximum": 1,
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "tiles": {
            "$ref": "#/components/schemas/AnalyticsOverviewTiles"
          },
          "timeBalance": {
            "$ref": "#/components/schemas/AnalyticsTimeBalance"
          },
          "topContent": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsTopContentEntry"
            },
            "type": "array"
          },
          "window": {
            "$ref": "#/components/schemas/AnalyticsViewWindow"
          }
        },
        "required": [
          "window",
          "tiles",
          "availability",
          "previousAvailability",
          "timeBalance",
          "losses",
          "openGaps",
          "largestOpenGap",
          "completeness",
          "airtimeByKind",
          "campaigns",
          "grid",
          "topContent",
          "anomalies",
          "notices",
          "computedAt"
        ],
        "type": "object"
      },
      "GetAppBookingPreviewResponse": {
        "example": {
          "action": "book",
          "appId": "pharmacies-on-duty",
          "currency": "EUR",
          "currentPeriodEnd": "2026-08-31T23:59:59.000Z",
          "displayName": "Notdienst-Anzeige",
          "dueToday": {
            "grossCents": 3566,
            "netCents": 2997,
            "vatCents": 569
          },
          "effectiveAt": "2026-08-12T12:00:00.000Z",
          "monthlyPriceCents": 900,
          "rule": "R1",
          "targetState": [
            {
              "carriesDisplays": true,
              "currentQuantity": 3,
              "outcome": "unchanged",
              "packageCode": "START",
              "quantity": 3,
              "skuCode": "PKG-START"
            },
            {
              "carriesDisplays": false,
              "currentQuantity": 1,
              "outcome": "unchanged",
              "packageCode": null,
              "quantity": 1,
              "skuCode": "LIZ-VIDEOWALL"
            },
            {
              "carriesDisplays": false,
              "currentQuantity": 0,
              "outcome": "changed",
              "packageCode": null,
              "quantity": 1,
              "skuCode": "APP-pharmacies-on-duty"
            }
          ],
          "vatRatePercent": 19
        },
        "properties": {
          "action": {
            "enum": [
              "book",
              "cancel"
            ],
            "type": "string"
          },
          "appId": {
            "type": "string"
          },
          "currency": {
            "enum": [
              "EUR"
            ],
            "type": "string"
          },
          "currentPeriodEnd": {
            "format": "date-time",
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "dueToday": {
            "$ref": "#/components/schemas/BillingAmountBlock"
          },
          "effectiveAt": {
            "format": "date-time",
            "type": "string"
          },
          "monthlyPriceCents": {
            "minimum": 0,
            "type": "integer"
          },
          "rule": {
            "enum": [
              "R1",
              "R2"
            ],
            "type": "string"
          },
          "targetState": {
            "items": {
              "$ref": "#/components/schemas/BillingTargetStatePosition"
            },
            "type": "array"
          },
          "vatRatePercent": {
            "maximum": 100,
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "appId",
          "displayName",
          "monthlyPriceCents",
          "action",
          "rule",
          "effectiveAt",
          "targetState",
          "dueToday",
          "currentPeriodEnd",
          "currency",
          "vatRatePercent"
        ],
        "type": "object"
      },
      "GetAppDataResponse": {
        "example": {
          "appId": "pharmacies-on-duty",
          "deletion": null,
          "installed": true,
          "inventory": {
            "resources": [
              {
                "count": 2,
                "id": "pharmacies-on-duty-location",
                "name": "Standorte"
              },
              {
                "count": 14,
                "id": "pharmacies-on-duty-schedule",
                "name": "Dienstpläne"
              }
            ],
            "total": 16
          },
          "retention": "kept"
        },
        "properties": {
          "appId": {
            "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
            "type": "string"
          },
          "deletion": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AppDataDeletion"
              },
              {
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "installed": {
            "type": "boolean"
          },
          "inventory": {
            "$ref": "#/components/schemas/AppDataInventory"
          },
          "retention": {
            "enum": [
              "kept",
              "deleted"
            ],
            "type": "string"
          }
        },
        "required": [
          "appId",
          "installed",
          "inventory",
          "retention",
          "deletion"
        ],
        "type": "object"
      },
      "GetAppUpdateResponse": {
        "example": {
          "decisionRequest": {
            "appId": "pharmacies-on-duty",
            "kind": "update-decision",
            "message": null,
            "requestedAt": "2026-07-19T10:00:00.000Z",
            "requestedById": "usr_01KFB7QPW0TEAM000000000002",
            "version": "2.0.1"
          },
          "update": {
            "appId": "pharmacies-on-duty",
            "changes": {
              "dataAccess": {
                "addedReads": [],
                "addedWrites": [],
                "removedReads": [],
                "removedWrites": []
              },
              "permissions": {
                "added": [
                  {
                    "defaultRoles": [
                      "OWNER"
                    ],
                    "description": "Die App importiert Notdienstpläne aus einer Datei oder löst einen Abruf der Quelle aus.",
                    "key": "pharmacies-on-duty.schedule.import",
                    "label": "Notdienstpläne importieren"
                  }
                ],
                "removed": []
              },
              "terms": {
                "after": {
                  "key": "notdienst.bedingungen.v1",
                  "summary": "Notdienstdaten stammen von der Landesapothekerkammer und können sich kurzfristig ändern.",
                  "termsPath": "/app-bedingungen/notdienst"
                },
                "before": {
                  "key": "notdienst.bedingungen.v1",
                  "summary": "Notdienstdaten stammen von der Landesapothekerkammer und können sich kurzfristig ändern.",
                  "termsPath": "/app-bedingungen/notdienst"
                },
                "changed": false
              }
            },
            "consequences": {
              "playing": [
                {
                  "sceneCount": 1,
                  "version": "2.0.0"
                }
              ],
              "sceneCount": 1,
              "widgetsHiddenInEditor": true
            },
            "deadline": null,
            "displayName": "Notdienst",
            "from": {
              "releaseId": "arl_01KP5RMC40AVERSN0000000005",
              "version": "2.0.0"
            },
            "notes": {
              "locale": "de-DE",
              "text": "Notdienstpläne lassen sich jetzt aus einer Datei importieren."
            },
            "reasons": [
              "permissions"
            ],
            "rejectable": true,
            "securityAdvisory": null,
            "state": "pending",
            "to": {
              "channel": "stable",
              "manifestHash": "6232f20f63df0aaff6984f3ba10b3b4fac21d45ce4b9546614b37d4d712d2c19",
              "releaseId": "arl_01KX0P4XW0AVERSN0000000002",
              "version": "2.0.1"
            }
          }
        },
        "properties": {
          "decisionRequest": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AppOwnerRequestView"
              },
              {
                "default": null,
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "update": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AppUpdate"
              },
              {
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          }
        },
        "required": [
          "update"
        ],
        "type": "object"
      },
      "GetAppVersionHistoryResponse": {
        "example": {
          "appId": "pharmacies-on-duty",
          "versions": [
            {
              "note": {
                "locale": "de-DE",
                "text": "Notdienstpläne lassen sich jetzt aus einer Datei übernehmen. Regionale Quellen werden zuverlässiger gelesen."
              },
              "releaseId": "arl_01KX0P4XW0AVERSN0000000002",
              "retired": false,
              "stableSince": "2026-07-16T08:00:00.000Z",
              "version": "2.0.1"
            },
            {
              "note": null,
              "releaseId": "arl_01KP5RMC40AVERSN0000000005",
              "retired": false,
              "stableSince": "2026-04-10T09:30:00.000Z",
              "version": "2.0.0"
            }
          ]
        },
        "properties": {
          "appId": {
            "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
            "type": "string"
          },
          "versions": {
            "items": {
              "$ref": "#/components/schemas/AppVersionHistoryEntry"
            },
            "type": "array"
          }
        },
        "required": [
          "appId",
          "versions"
        ],
        "type": "object"
      },
      "GetAssetDownloadUrlResponse": {
        "example": {
          "expiresInSeconds": 300,
          "url": "https://s3.demo.local/signage-medien/ast_01KW95DD30MEDEN00000000001/original.jpg"
        },
        "properties": {
          "expiresInSeconds": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "url",
          "expiresInSeconds"
        ],
        "type": "object"
      },
      "GetAssetResponse": {
        "example": {
          "createdAt": "2026-06-29T07:45:00.000Z",
          "deletedAt": null,
          "dimensions": {
            "height": 1080,
            "width": 1920
          },
          "durationSeconds": null,
          "errorMessage": null,
          "folderId": "fld_01KJ7MWKW0MAPPE00000000001",
          "id": "ast_01KW95DD30MEDEN00000000001",
          "mimeType": "image/jpeg",
          "name": "angebot-der-woche.jpg",
          "originalFileName": "Angebot der Woche KW30.jpg",
          "pageCount": 1,
          "purgeAt": null,
          "sha256": "9d4f2b8c1e07a5364bd80f9127ce5a3b6408df215c93ea7b0d6154f8a2b3c70e",
          "sizeBytes": 1842331,
          "source": null,
          "status": "ready",
          "tags": [
            "angebot",
            "schaufenster"
          ],
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-06-29T07:46:12.000Z",
          "uploadedById": "usr_01KFB7QPW0TEAM000000000002",
          "variants": [
            {
              "generatedAt": "2026-06-29T07:45:41.000Z",
              "height": 270,
              "id": "asv_01KW95F7P0VARANT0000000001",
              "kind": "thumbnail-md",
              "sizeBytes": 38214,
              "width": 480
            },
            {
              "generatedAt": "2026-06-29T07:46:12.000Z",
              "height": 1080,
              "id": "asv_01KERR4E30VARANT0000000002",
              "kind": "preview-1080",
              "sizeBytes": 612844,
              "width": 1920
            }
          ],
          "videoCodec": null
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "deletedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "dimensions": {
            "properties": {
              "height": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "width": {
                "exclusiveMinimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "width",
              "height"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "durationSeconds": {
            "exclusiveMinimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "errorMessage": {
            "maxLength": 1000,
            "type": [
              "string",
              "null"
            ]
          },
          "folderId": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "mimeType": {
            "enum": [
              "image/jpeg",
              "image/png",
              "image/webp",
              "image/svg+xml",
              "video/mp4",
              "video/webm",
              "application/pdf"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "originalFileName": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "pageCount": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "purgeAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "sha256": {
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "sizeBytes": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "source": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetSource"
              },
              {
                "default": null,
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "status": {
            "enum": [
              "uploading",
              "processing",
              "ready",
              "error"
            ],
            "type": "string"
          },
          "tags": {
            "items": {
              "maxLength": 50,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 50,
            "type": "array"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "uploadedById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "variants": {
            "items": {
              "properties": {
                "blank": {
                  "type": "boolean"
                },
                "codec": {
                  "maxLength": 31,
                  "minLength": 1,
                  "type": "string"
                },
                "generatedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "height": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "id": {
                  "pattern": "^asv_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "kind": {
                  "anyOf": [
                    {
                      "enum": [
                        "thumbnail-sm",
                        "thumbnail-md",
                        "thumbnail-lg",
                        "preview-720",
                        "preview-1080",
                        "webp-original-size",
                        "playback-1080"
                      ],
                      "type": "string"
                    },
                    {
                      "pattern": "^page-([1-9][0-9]{0,2})$",
                      "type": "string"
                    },
                    {
                      "pattern": "^page-([1-9][0-9]{0,2})-sm$",
                      "type": "string"
                    }
                  ]
                },
                "sha256": {
                  "pattern": "^[0-9a-f]{64}$",
                  "type": "string"
                },
                "sizeBytes": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "width": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "kind",
                "width",
                "height",
                "sizeBytes",
                "generatedAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "videoCodec": {
            "default": null,
            "maxLength": 31,
            "minLength": 1,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "tenantId",
          "folderId",
          "name",
          "originalFileName",
          "mimeType",
          "sizeBytes",
          "sha256",
          "tags",
          "dimensions",
          "durationSeconds",
          "uploadedById",
          "status",
          "errorMessage",
          "createdAt",
          "updatedAt",
          "deletedAt",
          "variants",
          "purgeAt"
        ],
        "type": "object"
      },
      "GetAssetUsagesResponse": {
        "example": [
          {
            "assetId": "ast_01KW95DD30MEDEN00000000001",
            "recordedAt": "2026-07-13T07:50:00.000Z",
            "refId": "scv_01KXD78M20VERSN00000000002",
            "source": "scene-version"
          },
          {
            "assetId": "ast_01KW95DD30MEDEN00000000001",
            "recordedAt": "2026-05-04T10:15:00.000Z",
            "refId": "pli_01KKER9V4GENTRY00000000004",
            "source": "playlist-item"
          }
        ],
        "items": {
          "properties": {
            "assetId": {
              "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "recordedAt": {
              "format": "date-time",
              "type": "string"
            },
            "refId": {
              "maxLength": 64,
              "minLength": 1,
              "type": "string"
            },
            "source": {
              "enum": [
                "scene-version",
                "tenant-branding",
                "playlist-item"
              ],
              "type": "string"
            }
          },
          "required": [
            "assetId",
            "source",
            "refId",
            "recordedAt"
          ],
          "type": "object"
        },
        "type": "array"
      },
      "GetAssetVariantUrlRequest": {
        "example": {
          "kind": "preview-1080"
        },
        "properties": {
          "kind": {
            "anyOf": [
              {
                "enum": [
                  "thumbnail-sm",
                  "thumbnail-md",
                  "thumbnail-lg",
                  "preview-720",
                  "preview-1080",
                  "webp-original-size",
                  "playback-1080"
                ],
                "type": "string"
              },
              {
                "pattern": "^page-([1-9][0-9]{0,2})$",
                "type": "string"
              },
              {
                "pattern": "^page-([1-9][0-9]{0,2})-sm$",
                "type": "string"
              }
            ]
          }
        },
        "required": [
          "kind"
        ],
        "type": "object"
      },
      "GetAssetVariantUrlResponse": {
        "example": {
          "expiresInSeconds": 300,
          "url": "https://s3.demo.local/signage-medien/ast_01KW95DD30MEDEN00000000001/preview-1080.jpg"
        },
        "properties": {
          "expiresInSeconds": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "url",
          "expiresInSeconds"
        ],
        "type": "object"
      },
      "GetAuditEntryDetailResponse": {
        "example": {
          "actorDisplayName": "Deniz Acar",
          "actorKind": "user",
          "actorRef": "usr_01KFB7QPW0TEAM000000000002",
          "eventType": "composition.scene.published",
          "id": "aud_01KXZACQD0PRTK000000000001",
          "metadata": {
            "correlationId": "cor_01KXZACQD0KETTE00000000001",
            "impersonatorRef": null,
            "sourceDomain": "composition",
            "traceId": "trc_01KXZACQD0TRACE00000000001"
          },
          "occurredAt": "2026-07-20T08:31:00.000Z",
          "payload": {
            "appVersionPins": {},
            "at": "2026-07-20T08:31:00.000Z",
            "contentHash": "b2f80a41d76c395ee0138b5a4c9d27f6103e8ab7592c4df081a63be95d7c024f",
            "publishedById": "usr_01KFB7QPW0TEAM000000000002",
            "sceneId": "scn_01KJWKGJM0SZENE00000000002",
            "sceneVersionId": "scv_01KXD78M20VERSN00000000002",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "versionNumber": 9
          },
          "payloadRedacted": false,
          "pseudonymized": false,
          "resourceDisplayName": "Angebote der Woche",
          "resourceId": "scn_01KJWKGJM0SZENE00000000002",
          "resourceType": "scene",
          "severity": "info",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
        },
        "properties": {
          "actorDisplayName": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "actorKind": {
            "enum": [
              "user",
              "operator",
              "apiKey",
              "operatorApiKey",
              "oauth",
              "device",
              "renderer",
              "scim",
              "impersonation",
              "anonymous",
              "system"
            ],
            "type": "string"
          },
          "actorRef": {
            "type": "string"
          },
          "eventType": {
            "type": "string"
          },
          "id": {
            "pattern": "^aud_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "metadata": {
            "properties": {
              "correlationId": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "impersonatorRef": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "sourceDomain": {
                "type": "string"
              },
              "traceId": {
                "type": "string"
              }
            },
            "required": [
              "traceId",
              "correlationId",
              "sourceDomain",
              "impersonatorRef"
            ],
            "type": "object"
          },
          "occurredAt": {
            "format": "date-time",
            "type": "string"
          },
          "payload": {},
          "payloadRedacted": {
            "default": false,
            "type": "boolean"
          },
          "pseudonymized": {
            "type": "boolean"
          },
          "resourceDisplayName": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "resourceId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "resourceType": {
            "default": null,
            "enum": [
              "scene",
              "playlist",
              "schedule",
              "player",
              "device",
              "asset",
              "folder",
              "layout-template",
              "report",
              "user",
              "role"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "severity": {
            "default": "info",
            "enum": [
              "debug",
              "info",
              "warn",
              "error"
            ],
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "occurredAt",
          "eventType",
          "actorRef",
          "actorKind",
          "tenantId",
          "metadata",
          "pseudonymized"
        ],
        "type": "object"
      },
      "GetAuthorizationRequestResponse": {
        "example": {
          "client": {
            "clientId": "oac_01KQRWJRC0ANZEGE0000000001",
            "clientUri": "https://anzeigen-assistent.demo.local",
            "logoUri": "https://anzeigen-assistent.demo.local/zeichen.png",
            "name": "Anzeigen-Assistent",
            "redirectHost": "127.0.0.1:8765"
          },
          "expiresAt": "2026-07-20T09:25:00.000Z",
          "requestedScopes": [
            {
              "blockedBecause": null,
              "granted": true,
              "scope": "scene.read"
            },
            {
              "blockedBecause": null,
              "granted": true,
              "scope": "playlist.read"
            },
            {
              "blockedBecause": "not-held-by-user",
              "granted": false,
              "scope": "billing.manage"
            }
          ],
          "requestId": "oar_01KQRWJRC0ANFRAGE000000001",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "tenantName": "Adler-Apotheke"
        },
        "properties": {
          "client": {
            "$ref": "#/components/schemas/OAuthClientConsentView"
          },
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "requestedScopes": {
            "items": {
              "properties": {
                "blockedBecause": {
                  "enum": [
                    "not-delegatable",
                    "not-held-by-user"
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "granted": {
                  "type": "boolean"
                },
                "scope": {
                  "maxLength": 80,
                  "minLength": 3,
                  "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)*$",
                  "type": "string"
                }
              },
              "required": [
                "scope",
                "granted",
                "blockedBecause"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "requestId": {
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "tenantName": {
            "maxLength": 200,
            "type": "string"
          }
        },
        "required": [
          "requestId",
          "client",
          "requestedScopes",
          "tenantId",
          "tenantName",
          "expiresAt"
        ],
        "type": "object"
      },
      "GetBillingCyclePreviewResponse": {
        "example": {
          "blockers": [],
          "credit": null,
          "currency": "EUR",
          "dueToday": {
            "grossCents": 54954,
            "netCents": 46180,
            "vatCents": 8774
          },
          "effectiveAt": "2026-08-12T12:00:00.000Z",
          "inTrial": false,
          "nextInvoiceAt": "2027-08-12T12:00:00.000Z",
          "nextPeriod": {
            "grossCents": 58441,
            "netCents": 49110,
            "vatCents": 9331
          },
          "partialCancellation": null,
          "pendingBillingCycle": null,
          "remainingCreditCents": 2930,
          "rule": "R1",
          "targetCycle": "yearly",
          "targetState": [
            {
              "carriesDisplays": true,
              "currentQuantity": 3,
              "outcome": "unchanged",
              "packageCode": "START",
              "quantity": 3,
              "skuCode": "PKG-START"
            },
            {
              "carriesDisplays": false,
              "currentQuantity": 1,
              "outcome": "unchanged",
              "packageCode": null,
              "quantity": 1,
              "skuCode": "APP-pharmacies-on-duty"
            }
          ],
          "tax": {
            "category": "S",
            "exemptionCode": null,
            "hintKey": null,
            "ratePercent": 19,
            "requiresRecipientVatId": false,
            "ruleId": "de-domestic"
          },
          "unchanged": false,
          "usedDisplays": 4
        },
        "properties": {
          "blockers": {
            "items": {
              "enum": [
                "billing-profile-missing",
                "payment-way-missing",
                "overdue-invoice",
                "payment-failed",
                "tenant-frozen",
                "contract-suspended",
                "cancel-pending",
                "eu-b2b-vat-id-required",
                "goods-abroad-unsupported",
                "issuer-exemption-missing"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "credit": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BillingAmountBlock"
              },
              {
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "currency": {
            "enum": [
              "EUR"
            ],
            "type": "string"
          },
          "dueToday": {
            "$ref": "#/components/schemas/BillingAmountBlock"
          },
          "effectiveAt": {
            "format": "date-time",
            "type": "string"
          },
          "inTrial": {
            "type": "boolean"
          },
          "nextInvoiceAt": {
            "format": "date-time",
            "type": "string"
          },
          "nextPeriod": {
            "$ref": "#/components/schemas/BillingAmountBlock"
          },
          "partialCancellation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BillingPartialCancellation"
              },
              {
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "pendingBillingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "remainingCreditCents": {
            "minimum": 0,
            "type": "integer"
          },
          "rule": {
            "enum": [
              "R1",
              "R2"
            ],
            "type": "string"
          },
          "targetCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": "string"
          },
          "targetState": {
            "items": {
              "$ref": "#/components/schemas/BillingTargetStatePosition"
            },
            "type": "array"
          },
          "tax": {
            "$ref": "#/components/schemas/TaxOutcome"
          },
          "unchanged": {
            "type": "boolean"
          },
          "usedDisplays": {
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "targetCycle",
          "rule",
          "effectiveAt",
          "nextInvoiceAt",
          "dueToday",
          "nextPeriod",
          "credit",
          "remainingCreditCents",
          "tax",
          "currency",
          "targetState",
          "pendingBillingCycle",
          "usedDisplays",
          "partialCancellation",
          "unchanged",
          "blockers",
          "inTrial"
        ],
        "type": "object"
      },
      "GetBillingOrderResponse": {
        "example": {
          "creditNote": null,
          "dueToday": {
            "grossCents": 10849,
            "netCents": 9117,
            "vatCents": 1732
          },
          "effectiveAt": "2026-08-16T09:15:00.000Z",
          "hardwareOrderNumber": null,
          "immediateCharge": null,
          "invoiceAmount": null,
          "invoiceId": "inv_01KYXGSD80RECHNNG000000002",
          "invoiceNumber": "INV-2026-0044",
          "lines": [
            {
              "displayName": "Paket Pro",
              "kind": "recurring",
              "netAmountCents": 9620,
              "period": {
                "end": "2026-09-16T09:15:00.000Z",
                "start": "2026-08-16T09:15:00.000Z"
              },
              "quantity": 5,
              "skuCode": "PKG-PRO",
              "specialConditionUntil": null,
              "unitPriceCents": 1924
            },
            {
              "displayName": "Notdienst-Anzeige",
              "kind": "recurring",
              "netAmountCents": 900,
              "period": {
                "end": "2026-09-16T09:15:00.000Z",
                "start": "2026-08-16T09:15:00.000Z"
              },
              "quantity": 1,
              "skuCode": "APP-pharmacies-on-duty",
              "specialConditionUntil": null,
              "unitPriceCents": 900
            },
            {
              "displayName": "Leinwand",
              "kind": "recurring",
              "netAmountCents": 1900,
              "period": {
                "end": "2026-09-16T09:15:00.000Z",
                "start": "2026-08-16T09:15:00.000Z"
              },
              "quantity": 1,
              "skuCode": "LIZ-VIDEOWALL",
              "specialConditionUntil": null,
              "unitPriceCents": 1900
            },
            {
              "displayName": "Paket Starter — Gutschrift für 16 nicht verbrauchte Tage",
              "kind": "credit",
              "netAmountCents": -1893,
              "period": {
                "end": "2026-08-31T23:59:59.000Z",
                "start": "2026-08-01T00:00:00.000Z"
              },
              "quantity": -3,
              "skuCode": "PKG-START",
              "specialConditionUntil": null,
              "unitPriceCents": 631
            },
            {
              "displayName": "Notdienst-Anzeige — Gutschrift für 16 nicht verbrauchte Tage",
              "kind": "credit",
              "netAmountCents": -453,
              "period": {
                "end": "2026-08-31T23:59:59.000Z",
                "start": "2026-08-01T00:00:00.000Z"
              },
              "quantity": -1,
              "skuCode": "APP-pharmacies-on-duty",
              "specialConditionUntil": null,
              "unitPriceCents": 453
            },
            {
              "displayName": "Leinwand — Gutschrift für 16 nicht verbrauchte Tage",
              "kind": "credit",
              "netAmountCents": -957,
              "period": {
                "end": "2026-08-31T23:59:59.000Z",
                "start": "2026-08-01T00:00:00.000Z"
              },
              "quantity": -1,
              "skuCode": "LIZ-VIDEOWALL",
              "specialConditionUntil": null,
              "unitPriceCents": 957
            }
          ],
          "orderNumber": "BST-2026-0311",
          "overview": {
            "apps": [
              {
                "appId": "pharmacies-on-duty",
                "booked": true,
                "displayName": "Notdienst-Anzeige",
                "effectiveMonthlyPriceCents": 900,
                "grandfathered": false,
                "installed": true,
                "monthlyPriceCents": 900,
                "pendingFailedAt": null,
                "pendingQuantity": null,
                "skuCode": "APP-pharmacies-on-duty"
              }
            ],
            "billingCycle": "monthly",
            "cancelAtPeriodEnd": false,
            "cancelEffectiveAt": null,
            "cancelScheduledAt": null,
            "currentPeriodEnd": "2026-09-16T09:15:00.000Z",
            "currentPeriodStart": "2026-08-16T09:15:00.000Z",
            "defaultPaymentMethod": null,
            "desiredPackage": null,
            "dunning": null,
            "graceUntil": null,
            "graceWindowEnd": null,
            "invoiceWayApproved": true,
            "legacyItems": [
              {
                "description": "Anmeldung über das Firmen-Login der Organisation (SSO) — jetzt Teil von Enterprise.",
                "displayName": "Enterprise-Anmeldung",
                "effectiveMonthlyPriceCents": 0,
                "grandfathered": true,
                "pendingFailedAt": null,
                "pendingQuantity": null,
                "quantity": 1,
                "skuCode": "ADDON-SSO"
              }
            ],
            "licenses": {
              "booked": 5,
              "conflictUntil": null,
              "free": 1,
              "frozen": 0,
              "pendingFailedAt": null,
              "pendingQuantity": null,
              "used": 4
            },
            "nextInvoice": {
              "blockers": [],
              "credit": null,
              "currency": "EUR",
              "dueToday": {
                "grossCents": 0,
                "netCents": 0,
                "vatCents": 0
              },
              "effectiveAt": "2026-09-16T09:15:00.000Z",
              "endsTrial": false,
              "lines": [
                {
                  "displayName": "Paket Pro",
                  "kind": "recurring",
                  "netAmountCents": 9620,
                  "period": null,
                  "quantity": 5,
                  "skuCode": "PKG-PRO",
                  "specialConditionUntil": null,
                  "unitPriceCents": 1924
                },
                {
                  "displayName": "Notdienst-Anzeige",
                  "kind": "recurring",
                  "netAmountCents": 900,
                  "period": null,
                  "quantity": 1,
                  "skuCode": "APP-pharmacies-on-duty",
                  "specialConditionUntil": null,
                  "unitPriceCents": 900
                },
                {
                  "displayName": "Leinwand",
                  "kind": "recurring",
                  "netAmountCents": 1900,
                  "period": null,
                  "quantity": 1,
                  "skuCode": "LIZ-VIDEOWALL",
                  "specialConditionUntil": null,
                  "unitPriceCents": 1900
                }
              ],
              "nextInvoiceAt": "2026-09-16T09:15:00.000Z",
              "nextPeriod": {
                "grossCents": 14780,
                "netCents": 12420,
                "vatCents": 2360
              },
              "partialCancellation": null,
              "pendingBillingCycle": null,
              "previewedAt": "2026-08-16T09:15:00.000Z",
              "previewToken": "bpv_01KERPXZM0DANACH0000000000",
              "rule": "R2",
              "targetState": [
                {
                  "carriesDisplays": true,
                  "currentQuantity": 5,
                  "outcome": "unchanged",
                  "packageCode": "PRO",
                  "quantity": 5,
                  "skuCode": "PKG-PRO"
                },
                {
                  "carriesDisplays": false,
                  "currentQuantity": 1,
                  "outcome": "unchanged",
                  "packageCode": null,
                  "quantity": 1,
                  "skuCode": "APP-pharmacies-on-duty"
                },
                {
                  "carriesDisplays": false,
                  "currentQuantity": 1,
                  "outcome": "unchanged",
                  "packageCode": null,
                  "quantity": 1,
                  "skuCode": "LIZ-VIDEOWALL"
                }
              ],
              "tax": {
                "category": "S",
                "exemptionCode": null,
                "hintKey": null,
                "ratePercent": 19,
                "requiresRecipientVatId": false,
                "ruleId": "de-domestic"
              },
              "tierScale": null,
              "trialCredit": null,
              "unchanged": true,
              "usedDisplays": 4,
              "validUntil": "2026-08-16T09:45:00.000Z"
            },
            "overdueCutoff": null,
            "packageCode": "PRO",
            "packages": [
              {
                "available": true,
                "code": "START",
                "current": false,
                "displayName": "Starter",
                "effectiveMonthlyPriceCents": 1490,
                "listPriceCents": 1490,
                "maxDisplays": null,
                "minDisplays": 1,
                "monthlyPriceCents": 1490,
                "pending": false,
                "skuCode": "PKG-START"
              },
              {
                "available": true,
                "code": "PRO",
                "current": true,
                "displayName": "Pro",
                "effectiveMonthlyPriceCents": 2290,
                "listPriceCents": 2290,
                "maxDisplays": null,
                "minDisplays": 1,
                "monthlyPriceCents": 2290,
                "pending": false,
                "skuCode": "PKG-PRO"
              },
              {
                "available": true,
                "code": "PREMIUM",
                "current": false,
                "displayName": "Premium",
                "effectiveMonthlyPriceCents": 2790,
                "listPriceCents": 2790,
                "maxDisplays": null,
                "minDisplays": 5,
                "monthlyPriceCents": 2790,
                "pending": false,
                "skuCode": "PKG-PREMIUM"
              },
              {
                "available": false,
                "code": "ENTERPRISE",
                "current": false,
                "displayName": "Enterprise",
                "effectiveMonthlyPriceCents": 0,
                "listPriceCents": 0,
                "maxDisplays": null,
                "minDisplays": 1,
                "monthlyPriceCents": 0,
                "pending": false,
                "skuCode": "PKG-ENTERPRISE"
              }
            ],
            "paymentWay": {
              "kind": "invoice",
              "nextChargeAt": null,
              "paymentTermsDays": 14
            },
            "paymentWaySecured": true,
            "pendingBillingCycle": null,
            "pendingChangeEffectiveAt": null,
            "pendingDisplays": null,
            "pendingFailedAt": null,
            "pendingPackageCode": null,
            "pricing": {
              "billableQuantity": 5,
              "currency": "EUR",
              "currentUnitPriceCents": 1924,
              "tiers": [],
              "vatRatePercent": 19,
              "yearlyDiscountPercent": 15
            },
            "readiness": {
              "blockers": []
            },
            "source": "invoice",
            "specialConditionUntil": null,
            "status": "active",
            "tenantStatus": "active",
            "trialEndsAt": null,
            "videoWalls": {
              "available": true,
              "booked": 1,
              "displayName": "Leinwand",
              "effectiveMonthlyPriceCents": 1900,
              "grandfathered": false,
              "monthlyPriceCents": 1900,
              "pendingFailedAt": null,
              "pendingQuantity": null,
              "skuCode": "LIZ-VIDEOWALL",
              "used": 1
            }
          },
          "rule": "R1"
        },
        "properties": {
          "creditNote": {
            "default": null,
            "properties": {
              "amountCents": {
                "minimum": 0,
                "type": "integer"
              },
              "invoiceId": {
                "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "invoiceNumber": {
                "maxLength": 20,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "invoiceId",
              "invoiceNumber",
              "amountCents"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "dueToday": {
            "$ref": "#/components/schemas/BillingAmountBlock"
          },
          "effectiveAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "hardwareOrderNumber": {
            "maxLength": 30,
            "type": [
              "string",
              "null"
            ]
          },
          "immediateCharge": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BillingImmediateCharge"
              },
              {
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "invoiceAmount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BillingAmountBlock"
              },
              {
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "invoiceId": {
            "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "invoiceNumber": {
            "maxLength": 20,
            "type": [
              "string",
              "null"
            ]
          },
          "lines": {
            "items": {
              "$ref": "#/components/schemas/BillingPreviewLine"
            },
            "type": "array"
          },
          "orderNumber": {
            "pattern": "^BST-\\d{4}-\\d{4,}$",
            "type": "string"
          },
          "overview": {
            "$ref": "#/components/schemas/GetLicensingOverviewResponse"
          },
          "rule": {
            "default": null,
            "enum": [
              "R1",
              "R2"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "orderNumber",
          "overview",
          "invoiceId",
          "invoiceNumber",
          "invoiceAmount",
          "immediateCharge",
          "hardwareOrderNumber",
          "lines",
          "dueToday"
        ],
        "type": "object"
      },
      "GetBillingProfileResponse": {
        "example": {
          "profile": {
            "addressLine1": "Wandsbeker Marktstraße 73",
            "addressLine2": null,
            "city": "Hamburg",
            "companyName": "Adler-Apotheke Inh. Petra Weber e.K.",
            "contactPerson": "Petra Weber",
            "countryCode": "DE",
            "createdAt": "2026-01-12T09:02:00.000Z",
            "customerNumber": 1000,
            "documentLanguage": "de",
            "id": "bpr_01J5N2A8K3RB6QH9YVW4ZT0AAA",
            "invoiceEmail": "buchhaltung@adler-apotheke.example",
            "paymentTermsDays": null,
            "postalCode": "22041",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-06-02T08:40:00.000Z",
            "vatId": "DE812345678",
            "vatIdCheckAttemptAt": "2026-08-16T09:12:00.000Z",
            "vatIdCheckAttempts": 0,
            "vatIdCheckedAt": "2026-08-16T09:12:00.000Z",
            "vatIdCheckRequestId": "DE-2026-08-16-4471903",
            "vatIdStatus": "confirmed"
          }
        },
        "properties": {
          "profile": {
            "properties": {
              "addressLine1": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "addressLine2": {
                "maxLength": 200,
                "type": [
                  "string",
                  "null"
                ]
              },
              "city": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "companyName": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "contactPerson": {
                "default": null,
                "maxLength": 200,
                "type": [
                  "string",
                  "null"
                ]
              },
              "countryCode": {
                "pattern": "^[A-Z]{2}$",
                "type": "string"
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "customerNumber": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "documentLanguage": {
                "default": "de",
                "enum": [
                  "de",
                  "en"
                ],
                "type": "string"
              },
              "id": {
                "pattern": "^bpr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "invoiceEmail": {
                "format": "email",
                "maxLength": 255,
                "type": "string"
              },
              "paymentTermsDays": {
                "exclusiveMinimum": 0,
                "maximum": 90,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "postalCode": {
                "maxLength": 20,
                "minLength": 1,
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "vatId": {
                "maxLength": 30,
                "type": [
                  "string",
                  "null"
                ]
              },
              "vatIdCheckAttemptAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "vatIdCheckAttempts": {
                "default": 0,
                "minimum": 0,
                "type": "integer"
              },
              "vatIdCheckedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "vatIdCheckRequestId": {
                "default": null,
                "maxLength": 60,
                "type": [
                  "string",
                  "null"
                ]
              },
              "vatIdStatus": {
                "default": "none",
                "enum": [
                  "none",
                  "format-only",
                  "confirmed",
                  "invalid",
                  "unavailable"
                ],
                "type": "string"
              }
            },
            "required": [
              "id",
              "tenantId",
              "customerNumber",
              "companyName",
              "addressLine1",
              "addressLine2",
              "postalCode",
              "city",
              "countryCode",
              "vatId",
              "invoiceEmail",
              "paymentTermsDays",
              "createdAt",
              "updatedAt"
            ],
            "type": [
              "object",
              "null"
            ]
          }
        },
        "required": [
          "profile"
        ],
        "type": "object"
      },
      "GetCampaignDeliveryResponse": {
        "example": {
          "asOf": "2026-10-11",
          "campaign": {
            "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
            "advertiserName": "Nordwind Naturkosmetik GmbH",
            "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
            "dayCount": 61,
            "dayNumber": 42,
            "endsOn": "2026-10-31",
            "goal": "plays",
            "name": "Herbstpflege 2026",
            "owner": "tenant",
            "phase": "running",
            "startsOn": "2026-09-01",
            "status": "booked",
            "timezone": "Europe/Berlin"
          },
          "contacts": {
            "byGrade": [
              {
                "contacts": 39640,
                "grade": "A",
                "locations": [
                  {
                    "companionFactor": 1.3,
                    "label": "Hauptstelle",
                    "measuredFrom": "2026-03-02",
                    "source": "counter"
                  }
                ],
                "share": 1
              }
            ],
            "contactModelVersion": 1,
            "gradeCIncluded": false,
            "total": 39640
          },
          "coverage": {
            "availability": {
              "upper": 0.9642,
              "value": 0.96
            },
            "plannedSeconds": 2592000,
            "reportingDisplays": 2,
            "targetedDisplays": 2,
            "targetedLocations": 1,
            "visibleSeconds": 2488320
          },
          "curve": [
            {
              "cumulativeForecast": null,
              "cumulativeForecastHigh": null,
              "cumulativeForecastLow": null,
              "cumulativePlanned": 7980,
              "cumulativeValid": 7862,
              "day": "2026-10-09",
              "plannedPlays": 210,
              "preview": false,
              "validPlays": 206
            },
            {
              "cumulativeForecast": null,
              "cumulativeForecastHigh": null,
              "cumulativeForecastLow": null,
              "cumulativePlanned": 8100,
              "cumulativeValid": 7928,
              "day": "2026-10-10",
              "plannedPlays": 120,
              "preview": false,
              "validPlays": 66
            },
            {
              "cumulativeForecast": 8134,
              "cumulativeForecastHigh": 8141,
              "cumulativeForecastLow": 8113,
              "cumulativePlanned": 8310,
              "cumulativeValid": null,
              "day": "2026-10-12",
              "plannedPlays": 210,
              "preview": true,
              "validPlays": null
            },
            {
              "cumulativeForecast": 12333,
              "cumulativeForecastHigh": 12480,
              "cumulativeForecastLow": 11890,
              "cumulativePlanned": 12600,
              "cumulativeValid": null,
              "day": "2026-10-31",
              "plannedPlays": 120,
              "preview": true,
              "validPlays": null
            }
          ],
          "distribution": {
            "daypart": [
              {
                "airtimeSeconds": 21400,
                "contacts": 10700,
                "detail": null,
                "displays": 2,
                "key": "morning",
                "label": "Vormittag",
                "locations": 1,
                "merged": false,
                "share": 0.2699,
                "validPlays": 2140
              },
              {
                "airtimeSeconds": 19800,
                "contacts": 9900,
                "detail": null,
                "displays": 2,
                "key": "midday",
                "label": "Mittag",
                "locations": 1,
                "merged": false,
                "share": 0.2497,
                "validPlays": 1980
              },
              {
                "airtimeSeconds": 28500,
                "contacts": 14250,
                "detail": null,
                "displays": 2,
                "key": "afternoon",
                "label": "Nachmittag",
                "locations": 1,
                "merged": false,
                "share": 0.3595,
                "validPlays": 2850
              },
              {
                "airtimeSeconds": 9580,
                "contacts": 4790,
                "detail": null,
                "displays": 2,
                "key": "evening",
                "label": "Abend",
                "locations": 1,
                "merged": false,
                "share": 0.1208,
                "validPlays": 958
              }
            ],
            "location": [
              {
                "airtimeSeconds": 46120,
                "contacts": 39640,
                "detail": "Hamburg",
                "displays": 1,
                "key": "loc_01KHK4B3T0ADRESSE000000001",
                "label": "Hauptstelle",
                "locations": 1,
                "merged": false,
                "share": 0.5817,
                "validPlays": 4612
              },
              {
                "airtimeSeconds": 33160,
                "contacts": 0,
                "detail": null,
                "displays": 1,
                "key": "none",
                "label": "Ohne Angabe",
                "locations": 0,
                "merged": false,
                "share": 0.4183,
                "validPlays": 3316
              }
            ],
            "placement": [
              {
                "airtimeSeconds": 46120,
                "contacts": 39640,
                "detail": null,
                "displays": 1,
                "key": "window",
                "label": "Schaufenster",
                "locations": 1,
                "merged": false,
                "share": 0.5817,
                "validPlays": 4612
              },
              {
                "airtimeSeconds": 33160,
                "contacts": 0,
                "detail": null,
                "displays": 1,
                "key": "checkout",
                "label": "Kasse",
                "locations": 0,
                "merged": false,
                "share": 0.4183,
                "validPlays": 3316
              }
            ],
            "region": [
              {
                "airtimeSeconds": 46120,
                "contacts": 39640,
                "detail": null,
                "displays": 1,
                "key": "DE-HH",
                "label": "Hamburg",
                "locations": 1,
                "merged": false,
                "share": 0.5817,
                "validPlays": 4612
              },
              {
                "airtimeSeconds": 33160,
                "contacts": 0,
                "detail": null,
                "displays": 1,
                "key": "none",
                "label": "Ohne Angabe",
                "locations": 0,
                "merged": false,
                "share": 0.4183,
                "validPlays": 3316
              }
            ],
            "venueType": [
              {
                "airtimeSeconds": 46120,
                "contacts": 39640,
                "detail": null,
                "displays": 1,
                "key": "pharmacy",
                "label": "Apotheke",
                "locations": 1,
                "merged": false,
                "share": 0.5817,
                "validPlays": 4612
              },
              {
                "airtimeSeconds": 33160,
                "contacts": 0,
                "detail": null,
                "displays": 1,
                "key": "none",
                "label": "Ohne Angabe",
                "locations": 0,
                "merged": false,
                "share": 0.4183,
                "validPlays": 3316
              }
            ]
          },
          "failures": {
            "byReason": [
              {
                "plays": 146,
                "reason": "too_short",
                "share": 0.5141
              },
              {
                "plays": 100,
                "reason": "panel_off",
                "share": 0.3521
              },
              {
                "plays": 38,
                "reason": "render_error",
                "share": 0.1338
              }
            ],
            "invalidPlays": 284,
            "openGapPlace": "Schaufenster Eingang, Hamburg",
            "openGapPlays": 54,
            "panelUnconfirmedPlace": "Kasse 2",
            "panelUnconfirmedPlays": 3316,
            "shareOfPlanned": 0.0351
          },
          "from": "2026-09-01",
          "lines": [
            {
              "bookingLineId": "bkl_01KXR4Q9T0BKNG000000000001",
              "endsOn": "2026-10-31",
              "name": "Schaufenster und Kasse",
              "panelUnconfirmedShare": 0.4183,
              "reachedDisplays": 2,
              "startsOn": "2026-09-01",
              "state": {
                "commitment": {
                  "quantity": 12000,
                  "unit": "plays"
                },
                "delivered": {
                  "airtimeSeconds": 79280,
                  "contacts": 39640,
                  "plays": 8212,
                  "validPlays": 7928
                },
                "deliveredInUnit": 7928,
                "expectedShare": 0.6429,
                "forecast": {
                  "at": "2026-10-31",
                  "high": 12480,
                  "highShare": 1.04,
                  "low": 11890,
                  "lowShare": 0.9908,
                  "share": 1.0278,
                  "value": 12333
                },
                "fulfilment": 0.6607,
                "pacing": 1.0277,
                "plannedPlaysToDate": 8100,
                "plannedPlaysTotal": 12600,
                "risk": "warning",
                "riskPlace": "Schaufenster Eingang, Hamburg",
                "riskReason": "reportingGaps",
                "riskText": "Schaufenster Eingang, Hamburg meldet sich nicht"
              },
              "targetedDisplays": 2
            }
          ],
          "method": {
            "contactModel": 1,
            "networkParameters": null,
            "validityRule": 1
          },
          "notices": [
            {
              "code": "openGaps",
              "params": {
                "deadline": "2026-10-17T09:00:00.000Z",
                "hours": 3
              },
              "text": "3 Planstunden sind noch nicht gemeldet und können bis 17.10.2026, 11:00 nachkommen. Die Zahlen können noch steigen."
            }
          ],
          "periods": [
            {
              "closeDueOn": "2026-10-09",
              "closes": [
                {
                  "closedAt": "2026-10-09T04:00:00.000Z",
                  "kind": "closing",
                  "number": "NW-2026-09-0001",
                  "periodCloseId": "pcl_01KYAZ4M80PRFNG00000000001",
                  "signedAt": "2026-10-09T04:00:03.000Z"
                }
              ],
              "from": "2026-09-01",
              "month": "2026-09",
              "plannedPlays": 6000,
              "state": "closed",
              "to": "2026-09-30",
              "validPlays": 5874
            },
            {
              "closeDueOn": "2026-11-09",
              "closes": [],
              "from": "2026-10-01",
              "month": "2026-10",
              "plannedPlays": 6600,
              "state": "interim",
              "to": "2026-10-31",
              "validPlays": 2054
            }
          ],
          "summary": {
            "commitment": {
              "quantity": 12000,
              "unit": "plays"
            },
            "delivered": {
              "airtimeSeconds": 79280,
              "contacts": 39640,
              "plays": 8212,
              "validPlays": 7928
            },
            "deliveredInUnit": 7928,
            "expectedShare": 0.6429,
            "forecast": {
              "at": "2026-10-31",
              "high": 12480,
              "highShare": 1.04,
              "low": 11890,
              "lowShare": 0.9908,
              "share": 1.0278,
              "value": 12333
            },
            "fulfilment": 0.6607,
            "pacing": 1.0277,
            "plannedPlaysToDate": 8100,
            "plannedPlaysTotal": 12600,
            "risk": "warning",
            "riskPlace": "Schaufenster Eingang, Hamburg",
            "riskReason": "reportingGaps",
            "riskText": "Schaufenster Eingang, Hamburg meldet sich nicht"
          },
          "to": "2026-10-11"
        },
        "properties": {
          "asOf": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "campaign": {
            "$ref": "#/components/schemas/AnalyticsDeliveryCampaign"
          },
          "contacts": {
            "$ref": "#/components/schemas/AnalyticsContactsByGrade"
          },
          "coverage": {
            "$ref": "#/components/schemas/AnalyticsDeliveryCoverage"
          },
          "curve": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsDeliveryCurvePoint"
            },
            "type": "array"
          },
          "distribution": {
            "$ref": "#/components/schemas/AnalyticsDeliveryDistribution"
          },
          "failures": {
            "$ref": "#/components/schemas/AnalyticsDeliveryFailures"
          },
          "from": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "lines": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsLineDelivery"
            },
            "type": "array"
          },
          "method": {
            "$ref": "#/components/schemas/ExploreMethod"
          },
          "notices": {
            "items": {
              "$ref": "#/components/schemas/ExploreNotice"
            },
            "type": "array"
          },
          "periods": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsDeliveryPeriod"
            },
            "type": "array"
          },
          "summary": {
            "$ref": "#/components/schemas/AnalyticsDeliveryState"
          },
          "to": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          }
        },
        "required": [
          "campaign",
          "from",
          "to",
          "asOf",
          "method",
          "summary",
          "lines",
          "curve",
          "distribution",
          "failures",
          "contacts",
          "coverage",
          "periods",
          "notices"
        ],
        "type": "object"
      },
      "GetCommandOutputUrlResponse": {
        "example": {
          "expiresInSeconds": 1,
          "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
          "url": "https://example.com"
        },
        "properties": {
          "expiresInSeconds": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "sha256": {
            "pattern": "^[a-f0-9]{64}$",
            "type": "string"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "url",
          "expiresInSeconds",
          "sha256"
        ],
        "type": "object"
      },
      "GetCommandResponse": {
        "example": {
          "command": {
            "ackAt": "2026-07-20T08:55:02.000Z",
            "completedAt": "2026-07-20T08:55:09.000Z",
            "deviceId": "dev_01KHK32T40GERAET0000000001",
            "dispatchedAt": "2026-07-20T08:55:01.000Z",
            "errorMessage": null,
            "id": "cmd_01KXZBRNN0BEFEH00000000002",
            "issuedAt": "2026-07-20T08:55:00.000Z",
            "issuedById": "usr_01KFB7QPW0TEAM000000000002",
            "kind": "screenshot",
            "output": null,
            "outputRef": {
              "s3Key": "befehle/cmd_01KXZBRNN0BEFEH00000000002/bildschirmfoto.png",
              "sha256": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95"
            },
            "payload": null,
            "playerId": "ply_01KHK34MQ0SCREEN0000000001",
            "status": "completed",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          }
        },
        "properties": {
          "command": {
            "properties": {
              "ackAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "completedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "deviceId": {
                "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "dispatchedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "errorMessage": {
                "maxLength": 500,
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^cmd_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "issuedAt": {
                "format": "date-time",
                "type": "string"
              },
              "issuedById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "kind": {
                "enum": [
                  "reboot",
                  "refresh-snapshot",
                  "screenshot",
                  "identify",
                  "locate",
                  "tail-log",
                  "set-config",
                  "mark-good",
                  "check-ota",
                  "display-power",
                  "display-source"
                ],
                "type": "string"
              },
              "output": {},
              "outputRef": {
                "properties": {
                  "s3Key": {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  },
                  "sha256": {
                    "pattern": "^[a-f0-9]{64}$",
                    "type": "string"
                  }
                },
                "required": [
                  "s3Key",
                  "sha256"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "payload": {},
              "playerId": {
                "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "enum": [
                  "pending",
                  "dispatched",
                  "ack-received",
                  "completed",
                  "failed",
                  "timeout"
                ],
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              }
            },
            "required": [
              "id",
              "deviceId",
              "playerId",
              "tenantId",
              "kind",
              "status",
              "outputRef",
              "errorMessage",
              "issuedById",
              "issuedAt",
              "dispatchedAt",
              "ackAt",
              "completedAt"
            ],
            "type": "object"
          }
        },
        "required": [
          "command"
        ],
        "type": "object"
      },
      "GetContentDetailResponse": {
        "example": {
          "content": {
            "id": "scn_01KJWKGJM0SZENE00000000002",
            "kind": "scene",
            "name": "Angebote der Woche"
          },
          "days": [
            {
              "airtimeSeconds": 39600,
              "day": "2026-10-09",
              "plays": 1320
            },
            {
              "airtimeSeconds": 12960,
              "day": "2026-10-10",
              "plays": 432
            },
            {
              "airtimeSeconds": 0,
              "day": "2026-10-11",
              "plays": 0
            }
          ],
          "notices": [
            {
              "code": "openGaps",
              "params": {
                "deadline": "2026-10-17T09:00:00.000Z",
                "hours": 3
              },
              "text": "3 Planstunden sind noch nicht gemeldet und können bis 17.10.2026, 11:00 nachkommen. Die Zahlen können noch steigen."
            }
          ],
          "places": [
            {
              "airtimeSeconds": 160920,
              "id": "ply_01KHK34MQ0SCREEN0000000001",
              "locationName": "Hauptstelle",
              "name": "Schaufenster Eingang",
              "plays": 5364
            },
            {
              "airtimeSeconds": 53640,
              "id": "ply_01KHK3FM90SCREEN0000000002",
              "locationName": null,
              "name": "Wartebereich",
              "plays": 1788
            }
          ],
          "profile": [
            {
              "airtimeSeconds": 3960,
              "hourOfDay": 10,
              "plays": 132,
              "weekday": 1
            },
            {
              "airtimeSeconds": 1080,
              "hourOfDay": 10,
              "plays": 36,
              "weekday": 6
            },
            {
              "airtimeSeconds": 2160,
              "hourOfDay": 11,
              "plays": 72,
              "weekday": 6
            }
          ],
          "totals": {
            "airtimeSeconds": 214560,
            "displays": 2,
            "locations": 1,
            "plays": 7152,
            "validPlays": 7120
          },
          "window": {
            "from": "2026-10-05",
            "historyDays": 90,
            "requestedFrom": "2026-10-05",
            "requestedTo": "2026-10-11",
            "teaser": false,
            "timezone": "Europe/Berlin",
            "to": "2026-10-11"
          }
        },
        "properties": {
          "content": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AnalyticsContentRef"
              },
              {
                "type": "object"
              }
            ]
          },
          "days": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsContentDay"
            },
            "type": "array"
          },
          "notices": {
            "items": {
              "$ref": "#/components/schemas/ExploreNotice"
            },
            "type": "array"
          },
          "places": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsContentPlaceEntry"
            },
            "type": "array"
          },
          "profile": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsContentProfileCell"
            },
            "type": "array"
          },
          "totals": {
            "properties": {
              "airtimeSeconds": {
                "minimum": 0,
                "type": "number"
              },
              "displays": {
                "minimum": 0,
                "type": "integer"
              },
              "locations": {
                "minimum": 0,
                "type": "integer"
              },
              "plays": {
                "minimum": 0,
                "type": "integer"
              },
              "validPlays": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "airtimeSeconds",
              "plays",
              "validPlays",
              "displays",
              "locations"
            ],
            "type": "object"
          },
          "window": {
            "$ref": "#/components/schemas/AnalyticsViewWindow"
          }
        },
        "required": [
          "window",
          "content",
          "totals",
          "profile",
          "places",
          "days",
          "notices"
        ],
        "type": "object"
      },
      "GetContentRankingResponse": {
        "example": {
          "items": [
            {
              "airtimeSeconds": 251280,
              "content": {
                "id": "scn_01KJPX8NH0SZENE00000000001",
                "kind": "scene",
                "name": "Willkommen & Öffnungszeiten"
              },
              "displays": 3,
              "locations": 1,
              "plays": 8376,
              "shareOfOwnAirtime": 0.4229,
              "validPlays": 8342
            },
            {
              "airtimeSeconds": 214560,
              "content": {
                "id": "scn_01KJWKGJM0SZENE00000000002",
                "kind": "scene",
                "name": "Angebote der Woche"
              },
              "displays": 2,
              "locations": 1,
              "plays": 7152,
              "shareOfOwnAirtime": 0.3611,
              "validPlays": 7120
            },
            {
              "airtimeSeconds": 58200,
              "content": {
                "id": "scn_01KTM1Z2Q0SZENE00000000003",
                "kind": "scene",
                "name": "Notdienst & Wetter"
              },
              "displays": 1,
              "locations": 1,
              "plays": 1940,
              "shareOfOwnAirtime": 0.0979,
              "validPlays": 1936
            }
          ],
          "kind": "scene",
          "notices": [
            {
              "code": "openGaps",
              "params": {
                "deadline": "2026-10-17T09:00:00.000Z",
                "hours": 3
              },
              "text": "3 Planstunden sind noch nicht gemeldet und können bis 17.10.2026, 11:00 nachkommen. Die Zahlen können noch steigen."
            }
          ],
          "ownAirtimeSeconds": 594240,
          "window": {
            "from": "2026-10-05",
            "historyDays": 90,
            "requestedFrom": "2026-10-05",
            "requestedTo": "2026-10-11",
            "teaser": false,
            "timezone": "Europe/Berlin",
            "to": "2026-10-11"
          }
        },
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsContentRankingEntry"
            },
            "type": "array"
          },
          "kind": {
            "enum": [
              "scene",
              "playlist",
              "asset"
            ],
            "type": "string"
          },
          "notices": {
            "items": {
              "$ref": "#/components/schemas/ExploreNotice"
            },
            "type": "array"
          },
          "ownAirtimeSeconds": {
            "minimum": 0,
            "type": "number"
          },
          "window": {
            "$ref": "#/components/schemas/AnalyticsViewWindow"
          }
        },
        "required": [
          "window",
          "kind",
          "ownAirtimeSeconds",
          "items",
          "notices"
        ],
        "type": "object"
      },
      "GetCustomDomainStatusResponse": {
        "example": {
          "cnameTarget": "edge.signage.demo.local",
          "customDomain": "anzeige.adler-apotheke.demo.local",
          "recordName": "_signage-verify.anzeige.adler-apotheke.demo.local",
          "verification": {
            "domain": "anzeige.adler-apotheke.demo.local",
            "requestedAt": "2026-07-14T09:20:00.000Z",
            "status": "pending",
            "verificationToken": "sgnv-8f21c7d40ab3e59d",
            "verifiedAt": null
          }
        },
        "properties": {
          "cnameTarget": {
            "type": [
              "string",
              "null"
            ]
          },
          "customDomain": {
            "maxLength": 253,
            "pattern": "^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$",
            "type": [
              "string",
              "null"
            ]
          },
          "recordName": {
            "type": [
              "string",
              "null"
            ]
          },
          "verification": {
            "properties": {
              "domain": {
                "maxLength": 253,
                "pattern": "^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$",
                "type": "string"
              },
              "requestedAt": {
                "format": "date-time",
                "type": "string"
              },
              "status": {
                "enum": [
                  "pending",
                  "verified",
                  "failed"
                ],
                "type": "string"
              },
              "verificationToken": {
                "maxLength": 64,
                "minLength": 8,
                "type": [
                  "string",
                  "null"
                ]
              },
              "verifiedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "domain",
              "status",
              "requestedAt",
              "verifiedAt",
              "verificationToken"
            ],
            "type": [
              "object",
              "null"
            ]
          }
        },
        "required": [
          "customDomain",
          "verification",
          "cnameTarget",
          "recordName"
        ],
        "type": "object"
      },
      "GetDeviceResponse": {
        "example": {
          "device": {
            "blockedAt": null,
            "blockedById": null,
            "blockedReason": null,
            "certExpiresAt": "2027-02-16T11:24:12.000Z",
            "certFingerprint": "3ad7c19e05b842f6971cd0e3ba586f24709dc1b83e5a4670f92db8c1057ae43b",
            "certIssuedAt": "2026-02-16T11:24:12.000Z",
            "certRotatedFromId": null,
            "channel": "stable",
            "createdAt": "2026-02-16T11:24:00.000Z",
            "deviceKind": "pi-5",
            "displays": [
              {
                "connector": "HDMI-A-1",
                "lastHeartbeatAt": "2026-07-20T09:14:32.000Z",
                "name": "Schaufenster Eingang",
                "playerId": "ply_01KHK34MQ0SCREEN0000000001",
                "screenIndex": 0,
                "status": "online"
              }
            ],
            "hardwareInfo": {
              "firstSeenAt": "2026-02-16T11:24:00.000Z",
              "macMasked": "b8:27:**:**:**:4f",
              "model": "Raspberry Pi 5 Model B Rev 1.0",
              "osVersion": "2026.6.1",
              "serialMasked": "****d31c"
            },
            "hardwareSerial": "10000000c2b3d31c",
            "id": "dev_01KHK32T40GERAET0000000001",
            "kind": "pi",
            "lastSeenAt": "2026-07-20T09:14:32.000Z",
            "name": "Player D31C",
            "pendingWipeLevel": null,
            "reregistrationAllowedUntil": null,
            "reregistrationAttempts": 0,
            "reregistrationRequestedAt": null,
            "reregistrationSourceIp": null,
            "software": {
              "agent": {
                "buildSha": "7d3f0b2c91ae",
                "loopback": 1,
                "releaseSeq": 12,
                "version": "1.8.3"
              },
              "channel": "stable",
              "os": {
                "launcher": 1,
                "releaseSeq": 3,
                "version": "2026.6.1"
              },
              "renderer": {
                "activatedAt": "2026-07-20T08:21:40.000Z",
                "build": "c41e09a7f2b3",
                "profile": "modern",
                "releaseSeq": 41,
                "source": "bundle",
                "version": "0.4.12"
              }
            },
            "softwareTarget": {
              "agent": {
                "build": "7d3f0b2c91ae",
                "releasedAt": "2026-07-14T10:05:00.000Z",
                "releaseSeq": 12,
                "version": "1.8.3"
              },
              "os": {
                "build": "e94b1c7d20a5",
                "releasedAt": "2026-06-25T08:00:00.000Z",
                "releaseSeq": 3,
                "version": "2026.6.1"
              },
              "renderer": {
                "build": "c41e09a7f2b3",
                "releasedAt": "2026-07-20T08:15:00.000Z",
                "releaseSeq": 41,
                "version": "0.4.12"
              }
            },
            "status": "active",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          },
          "deviceCapabilities": {
            "compute": {
              "ramMb": 8192,
              "storageGb": 64
            },
            "deviceKind": "pi-5",
            "media": {
              "hardwareCodecs": [
                "hevc"
              ],
              "videoPlane": true
            },
            "outputs": [
              {
                "connected": true,
                "connector": "HDMI-A-1",
                "controls": {
                  "ddcBrightness": true
                },
                "edid": {
                  "diagonalInch": 23.8,
                  "manufacturer": "PHL",
                  "model": "243V7",
                  "serial": "AU02341G"
                },
                "heightPx": 1080,
                "refreshHz": 60,
                "widthPx": 1920
              },
              {
                "connected": false,
                "connector": "HDMI-A-2"
              }
            ],
            "reportedAt": "2026-07-20T09:14:32.000Z",
            "software": {
              "agent": {
                "buildSha": "7d3f0b2c91ae",
                "loopback": 1,
                "releaseSeq": 12,
                "version": "1.8.3"
              },
              "channel": "stable",
              "os": {
                "launcher": 1,
                "releaseSeq": 3,
                "version": "2026.6.1"
              },
              "renderer": {
                "activatedAt": "2026-07-20T08:21:40.000Z",
                "build": "c41e09a7f2b3",
                "profile": "modern",
                "releaseSeq": 41,
                "source": "bundle",
                "version": "0.4.12"
              }
            }
          },
          "reportedState": {
            "geoLocation": {
              "accuracyM": 28,
              "city": "Hamburg",
              "country": "DE",
              "determinedAt": "2026-07-18T06:12:00.000Z",
              "lat": 53.5511,
              "lng": 9.9937,
              "postalCode": "22765",
              "region": "Hamburg",
              "source": "wifi",
              "street": "Bahnhofstraße 12"
            },
            "lastSnapshotHash": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95",
            "lastTelemetry": {
              "agent": {
                "buildSha": "9f41c0e7b2",
                "renderTokenExpiresAt": "2099-12-31T23:59:59.000Z",
                "version": "1.8.3"
              },
              "apps": [
                {
                  "id": "pharmacies-on-duty",
                  "installedAt": "2026-07-14T04:12:51.000Z",
                  "sizeBytes": 1248576,
                  "version": "1.4.0"
                },
                {
                  "id": "weather",
                  "installedAt": "2026-06-28T03:41:09.000Z",
                  "sizeBytes": 486400,
                  "version": "2.1.3"
                }
              ],
              "chromium": {
                "cdpConnected": true,
                "lastFrameAt": "2026-07-20T09:14:32.000Z",
                "memoryMb": 612,
                "state": "rendering"
              },
              "cpuTempC": 57.4,
              "disk": {
                "rootTotal": 15032385536,
                "rootUsed": 6442450944,
                "stateTotal": 120259084288,
                "stateUsed": 15032385536
              },
              "display": {
                "connected": true,
                "connector": "HDMI-A-1",
                "diagonalInch": 42.5,
                "heightPx": 2160,
                "manufacturer": "SAM",
                "model": "SAMSUNG",
                "widthPx": 3840
              },
              "hardware": {
                "coreVolts": 0.9,
                "cpuCores": 4,
                "cpuModel": "Cortex-A76",
                "kernel": "6.12.96+rpt-rpi-2712",
                "model": "Raspberry Pi 5 Model B Rev 1.0",
                "serial": "10000000d4e5f6a7",
                "storageHealthPercent": 98,
                "throttledEver": false,
                "throttledNow": false
              },
              "loadAvg": [
                0.07,
                0.09,
                0.08
              ],
              "mediaCache": {
                "entries": [
                  {
                    "ageSeconds": 7412,
                    "assetId": "ast_01KW95DD30MEDEN00000000001",
                    "mediaKey": "9d4f2b8c1e07a5364bd80f9127ce5a3b6408df215c93ea7b0d6154f8a2b3c70e-webp",
                    "present": true,
                    "sizeBytes": 1884160
                  },
                  {
                    "ageSeconds": 7412,
                    "assetId": "ast_01KXJY2V30MEDEN00000000004",
                    "mediaKey": "8b3c07e2f5914da6c0b78e34215fd9c608a7b3e1420d95f6ca87b0e39d152c4f-webp",
                    "present": true,
                    "sizeBytes": 428241
                  },
                  {
                    "assetId": "ast_01KKEQYSM0MEDEN00000000002",
                    "mediaKey": "41a7c0e93b2d58f6041e7cb85d29a3f70c6b1948de52370af8b6c1d094e2537a-playback",
                    "present": false,
                    "sizeBytes": 262227456
                  }
                ],
                "entryCount": 3,
                "limitBytes": 10737418240,
                "overflowBytes": 0,
                "presentCount": 2,
                "requiredBytes": 264539857,
                "usedBytes": 2312401
              },
              "memory": {
                "freeMb": 6656,
                "total": 8192,
                "used": 1536
              },
              "network": {
                "apiLatencyMs": 76,
                "apiReachable": true,
                "gateway": "192.0.2.1",
                "iface": "wlan0",
                "ip": "192.0.2.24",
                "macAddress": "2c:cf:67:92:fb:76",
                "tailscaleConnected": false,
                "wifiChannel": 36,
                "wifiFrequencyMhz": 5180,
                "wifiSignal": -68,
                "wifiSsid": "Apotheke-Backoffice",
                "wifiTxRateMbps": 433.3
              },
              "rauc": {
                "bootedFromTryboot": false,
                "currentSlot": "A",
                "lastSuccessAt": "2026-07-20T09:14:32.000Z"
              },
              "renderer": {
                "activatedAt": "2026-01-01T00:00:00.000Z",
                "build": "aaaaaaaaaaaa",
                "capabilities": [
                  "adPods"
                ],
                "failures": 0,
                "linkOnline": false,
                "profile": "modern",
                "releaseSeq": 1,
                "resilience": "fresh",
                "source": "bundle",
                "state": "scene",
                "version": "1.0.0"
              },
              "screens": [
                {
                  "chromium": {
                    "cdpConnected": false,
                    "state": "rendering"
                  },
                  "powerIntent": "on",
                  "powerState": "on",
                  "renderer": {
                    "failures": 0,
                    "linkOnline": false,
                    "resilience": "fresh",
                    "state": "scene"
                  },
                  "screenIndex": 0
                }
              ],
              "snapshot": {
                "lastCheckedAt": "2026-07-20T09:12:04.000Z",
                "lastRefreshAt": "2026-07-20T06:00:12.000Z",
                "manifestHash": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95",
                "stale": false
              },
              "time": {
                "ntpSynchronized": true,
                "offsetMs": 12,
                "timezone": "Europe/Berlin"
              },
              "uptime": 431520
            },
            "otaState": {
              "bootDurationMs": 41200,
              "installedVersion": "2026.6.1",
              "lastError": null,
              "lastTransitionAt": "2026-07-16T02:14:38.000Z",
              "phase": "completed",
              "rollbackReason": null,
              "targetVersion": "2026.6.1"
            }
          },
          "unassignedOutputs": [
            {
              "connected": false,
              "connector": "HDMI-A-2"
            }
          ]
        },
        "properties": {
          "device": {
            "properties": {
              "blockedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "blockedById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "blockedReason": {
                "maxLength": 500,
                "type": [
                  "string",
                  "null"
                ]
              },
              "certExpiresAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "certFingerprint": {
                "pattern": "^[0-9a-f]{64}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "certIssuedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "certRotatedFromId": {
                "pattern": "^[0-9a-f]{64}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "channel": {
                "enum": [
                  "stable",
                  "beta",
                  "canary"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "deviceKind": {
                "enum": [
                  "pi-5",
                  "pi-4",
                  "linux-generic",
                  "browser"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "displays": {
                "items": {
                  "properties": {
                    "connector": {
                      "maxLength": 32,
                      "minLength": 1,
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "lastHeartbeatAt": {
                      "format": "date-time",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "name": {
                      "type": "string"
                    },
                    "playerId": {
                      "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "screenIndex": {
                      "maximum": 7,
                      "minimum": 0,
                      "type": "integer"
                    },
                    "status": {
                      "enum": [
                        "online",
                        "stale",
                        "offline",
                        "paired-not-claimed",
                        "suspended",
                        "decommissioned"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "playerId",
                    "name",
                    "screenIndex",
                    "connector",
                    "status",
                    "lastHeartbeatAt"
                  ],
                  "type": "object"
                },
                "maxItems": 8,
                "type": "array"
              },
              "hardwareInfo": {
                "properties": {
                  "firstSeenAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "macMasked": {
                    "type": "string"
                  },
                  "model": {
                    "type": "string"
                  },
                  "osVersion": {
                    "type": "string"
                  },
                  "serialMasked": {
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "serialMasked",
                  "macMasked",
                  "osVersion",
                  "firstSeenAt"
                ],
                "type": "object"
              },
              "hardwareSerial": {
                "maxLength": 64,
                "type": "string"
              },
              "id": {
                "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "kind": {
                "enum": [
                  "pi",
                  "browser"
                ],
                "type": "string"
              },
              "lastSeenAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "pendingWipeLevel": {
                "enum": [
                  "tenant-data",
                  "factory"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "reregistrationAllowedUntil": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "reregistrationAttempts": {
                "minimum": 0,
                "type": "integer"
              },
              "reregistrationRequestedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "reregistrationSourceIp": {
                "maxLength": 45,
                "type": [
                  "string",
                  "null"
                ]
              },
              "software": {
                "$ref": "#/components/schemas/DeviceSoftware"
              },
              "softwareTarget": {
                "$ref": "#/components/schemas/DeviceSoftwareTarget"
              },
              "status": {
                "enum": [
                  "unclaimed",
                  "active",
                  "blocked"
                ],
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "name",
              "tenantId",
              "kind",
              "hardwareSerial",
              "certFingerprint",
              "certIssuedAt",
              "certExpiresAt",
              "certRotatedFromId",
              "status",
              "createdAt",
              "blockedAt",
              "blockedById",
              "blockedReason",
              "pendingWipeLevel",
              "reregistrationRequestedAt",
              "reregistrationAttempts",
              "reregistrationSourceIp",
              "reregistrationAllowedUntil",
              "hardwareInfo",
              "deviceKind",
              "software",
              "channel",
              "softwareTarget",
              "displays",
              "lastSeenAt"
            ],
            "type": "object"
          },
          "deviceCapabilities": {
            "$ref": "#/components/schemas/DeviceCapabilities"
          },
          "reportedState": {
            "properties": {
              "geoLocation": {
                "properties": {
                  "accuracyM": {
                    "minimum": 0,
                    "type": "number"
                  },
                  "city": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "country": {
                    "maxLength": 2,
                    "minLength": 2,
                    "type": "string"
                  },
                  "determinedAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "lat": {
                    "maximum": 90,
                    "minimum": -90,
                    "type": "number"
                  },
                  "lng": {
                    "maximum": 180,
                    "minimum": -180,
                    "type": "number"
                  },
                  "postalCode": {
                    "maxLength": 20,
                    "type": "string"
                  },
                  "region": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "source": {
                    "enum": [
                      "wifi",
                      "ip",
                      "manual"
                    ],
                    "type": "string"
                  },
                  "street": {
                    "maxLength": 200,
                    "type": "string"
                  }
                },
                "required": [
                  "lat",
                  "lng",
                  "accuracyM",
                  "source",
                  "determinedAt"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "lastSnapshotHash": {
                "maxLength": 128,
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastTelemetry": {
                "properties": {
                  "agent": {
                    "properties": {
                      "buildSha": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "renderTokenExpiresAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "version": {
                        "maxLength": 100,
                        "type": "string"
                      }
                    },
                    "required": [
                      "version"
                    ],
                    "type": "object"
                  },
                  "appFailures": {
                    "items": {
                      "properties": {
                        "id": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "reason": {
                          "enum": [
                            "missing",
                            "rejected",
                            "failed"
                          ],
                          "type": "string"
                        },
                        "since": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "version": {
                          "maxLength": 64,
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "version",
                        "reason",
                        "since"
                      ],
                      "type": "object"
                    },
                    "maxItems": 20,
                    "type": "array"
                  },
                  "apps": {
                    "items": {
                      "properties": {
                        "id": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "installedAt": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "sizeBytes": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "version": {
                          "maxLength": 64,
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "version"
                      ],
                      "type": "object"
                    },
                    "maxItems": 50,
                    "type": "array"
                  },
                  "chromium": {
                    "properties": {
                      "cdpConnected": {
                        "type": "boolean"
                      },
                      "lastFrameAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "memoryMb": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "state": {
                        "enum": [
                          "rendering",
                          "pairing",
                          "hung",
                          "starting",
                          "stopped",
                          "unplugged"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "state"
                    ],
                    "type": "object"
                  },
                  "cpuTempC": {
                    "type": "number"
                  },
                  "disk": {
                    "properties": {
                      "rootTotal": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "rootUsed": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "stateTotal": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "stateUsed": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "rootUsed",
                      "rootTotal",
                      "stateUsed",
                      "stateTotal"
                    ],
                    "type": "object"
                  },
                  "display": {
                    "properties": {
                      "connected": {
                        "type": "boolean"
                      },
                      "connector": {
                        "maxLength": 30,
                        "type": "string"
                      },
                      "diagonalInch": {
                        "type": "number"
                      },
                      "heightPx": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "manufacturer": {
                        "maxLength": 60,
                        "type": "string"
                      },
                      "model": {
                        "maxLength": 60,
                        "type": "string"
                      },
                      "refreshHz": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "serial": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "widthPx": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "hardware": {
                    "properties": {
                      "coreVolts": {
                        "type": "number"
                      },
                      "cpuCores": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "cpuModel": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "kernel": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "model": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "serial": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "storageHealthPercent": {
                        "maximum": 100,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "throttledEver": {
                        "type": "boolean"
                      },
                      "throttledNow": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "loadAvg": {
                    "items": {
                      "minimum": 0,
                      "type": "number"
                    },
                    "maxItems": 3,
                    "type": "array"
                  },
                  "mediaCache": {
                    "properties": {
                      "entries": {
                        "items": {
                          "properties": {
                            "ageSeconds": {
                              "minimum": 0,
                              "type": "integer"
                            },
                            "assetId": {
                              "maxLength": 30,
                              "type": "string"
                            },
                            "mediaKey": {
                              "maxLength": 128,
                              "minLength": 1,
                              "type": "string"
                            },
                            "present": {
                              "type": "boolean"
                            },
                            "sizeBytes": {
                              "minimum": 0,
                              "type": "integer"
                            }
                          },
                          "required": [
                            "mediaKey",
                            "present"
                          ],
                          "type": "object"
                        },
                        "maxItems": 200,
                        "type": "array"
                      },
                      "entryCount": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "limitBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "overflowBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "presentCount": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "requiredBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "usedBytes": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "limitBytes",
                      "usedBytes",
                      "requiredBytes",
                      "overflowBytes",
                      "entryCount",
                      "presentCount"
                    ],
                    "type": "object"
                  },
                  "memory": {
                    "properties": {
                      "freeMb": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "total": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "used": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "total",
                      "used",
                      "freeMb"
                    ],
                    "type": "object"
                  },
                  "network": {
                    "properties": {
                      "apiLatencyMs": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "apiReachable": {
                        "type": "boolean"
                      },
                      "gateway": {
                        "maxLength": 45,
                        "type": "string"
                      },
                      "iface": {
                        "maxLength": 20,
                        "type": "string"
                      },
                      "ip": {
                        "maxLength": 45,
                        "type": "string"
                      },
                      "macAddress": {
                        "maxLength": 17,
                        "type": "string"
                      },
                      "tailscaleConnected": {
                        "type": "boolean"
                      },
                      "wifiChannel": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "wifiFrequencyMhz": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "wifiSignal": {
                        "type": "integer"
                      },
                      "wifiSsid": {
                        "maxLength": 100,
                        "type": "string"
                      },
                      "wifiTxRateMbps": {
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "type": "object"
                  },
                  "rauc": {
                    "properties": {
                      "bootedFromTryboot": {
                        "type": "boolean"
                      },
                      "currentSlot": {
                        "maxLength": 50,
                        "type": "string"
                      },
                      "lastSuccessAt": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "required": [
                      "currentSlot",
                      "bootedFromTryboot"
                    ],
                    "type": "object"
                  },
                  "renderer": {
                    "properties": {
                      "activatedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "build": {
                        "pattern": "^[0-9a-f]{12}$",
                        "type": "string"
                      },
                      "capabilities": {
                        "items": {
                          "maxLength": 32,
                          "minLength": 1,
                          "type": "string"
                        },
                        "maxItems": 32,
                        "type": "array"
                      },
                      "failures": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "linkOnline": {
                        "type": "boolean"
                      },
                      "profile": {
                        "enum": [
                          "modern",
                          "legacy"
                        ],
                        "type": "string"
                      },
                      "releaseSeq": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "resilience": {
                        "enum": [
                          "fresh",
                          "stale-but-served",
                          "last-known-good",
                          "loading",
                          "error"
                        ],
                        "type": "string"
                      },
                      "source": {
                        "enum": [
                          "bundle",
                          "hosted"
                        ],
                        "type": "string"
                      },
                      "state": {
                        "enum": [
                          "scene",
                          "pairing",
                          "unassigned",
                          "loading",
                          "error",
                          "disconnected"
                        ],
                        "type": "string"
                      },
                      "version": {
                        "maxLength": 40,
                        "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "state"
                    ],
                    "type": "object"
                  },
                  "screens": {
                    "items": {
                      "properties": {
                        "chromium": {
                          "properties": {
                            "cdpConnected": {
                              "type": "boolean"
                            },
                            "state": {
                              "enum": [
                                "rendering",
                                "pairing",
                                "hung",
                                "starting",
                                "stopped",
                                "unplugged"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "state"
                          ],
                          "type": "object"
                        },
                        "powerIntent": {
                          "enum": [
                            "on",
                            "standby"
                          ],
                          "type": "string"
                        },
                        "powerState": {
                          "enum": [
                            "on",
                            "standby",
                            "unknown"
                          ],
                          "type": "string"
                        },
                        "renderer": {
                          "properties": {
                            "failures": {
                              "minimum": 0,
                              "type": "integer"
                            },
                            "linkOnline": {
                              "type": "boolean"
                            },
                            "resilience": {
                              "enum": [
                                "fresh",
                                "stale-but-served",
                                "last-known-good",
                                "loading",
                                "error"
                              ],
                              "type": "string"
                            },
                            "state": {
                              "enum": [
                                "scene",
                                "pairing",
                                "unassigned",
                                "loading",
                                "error",
                                "disconnected"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "state"
                          ],
                          "type": "object"
                        },
                        "screenIndex": {
                          "maximum": 7,
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "screenIndex"
                      ],
                      "type": "object"
                    },
                    "maxItems": 8,
                    "type": "array"
                  },
                  "snapshot": {
                    "properties": {
                      "lastCheckedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "lastRefreshAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "manifestHash": {
                        "maxLength": 128,
                        "type": "string"
                      },
                      "stale": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "manifestHash",
                      "stale",
                      "lastRefreshAt"
                    ],
                    "type": "object"
                  },
                  "time": {
                    "properties": {
                      "ntpSynchronized": {
                        "type": "boolean"
                      },
                      "offsetMs": {
                        "type": "integer"
                      },
                      "timezone": {
                        "maxLength": 60,
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uptime": {
                    "minimum": 0,
                    "type": "integer"
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "otaState": {
                "properties": {
                  "bootDurationMs": {
                    "minimum": 0,
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "installedVersion": {
                    "maxLength": 100,
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "lastError": {
                    "properties": {
                      "at": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "code": {
                        "maxLength": 100,
                        "type": "string"
                      },
                      "message": {
                        "maxLength": 500,
                        "type": "string"
                      }
                    },
                    "required": [
                      "code",
                      "message",
                      "at"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "lastTransitionAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "phase": {
                    "enum": [
                      "idle",
                      "downloading",
                      "installing",
                      "tryboot-waiting",
                      "completed",
                      "rolled-back",
                      "failed"
                    ],
                    "type": "string"
                  },
                  "rollbackReason": {
                    "maxLength": 500,
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "targetVersion": {
                    "maxLength": 100,
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "phase",
                  "targetVersion",
                  "installedVersion",
                  "lastTransitionAt",
                  "lastError",
                  "bootDurationMs",
                  "rollbackReason"
                ],
                "type": "object"
              }
            },
            "required": [
              "geoLocation",
              "lastSnapshotHash",
              "lastTelemetry",
              "otaState"
            ],
            "type": "object"
          },
          "unassignedOutputs": {
            "items": {
              "properties": {
                "connected": {
                  "type": "boolean"
                },
                "connector": {
                  "maxLength": 32,
                  "type": "string"
                },
                "controls": {
                  "properties": {
                    "cecPower": {
                      "type": "boolean"
                    },
                    "ddcBrightness": {
                      "type": "boolean"
                    },
                    "ddcPower": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "edid": {
                  "properties": {
                    "diagonalInch": {
                      "exclusiveMinimum": 0,
                      "maximum": 500,
                      "type": "number"
                    },
                    "manufacturer": {
                      "maxLength": 16,
                      "type": "string"
                    },
                    "model": {
                      "maxLength": 64,
                      "type": "string"
                    },
                    "serial": {
                      "maxLength": 64,
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "heightPx": {
                  "maximum": 8640,
                  "type": "integer"
                },
                "refreshHz": {
                  "maximum": 480,
                  "type": "integer"
                },
                "widthPx": {
                  "maximum": 15360,
                  "type": "integer"
                }
              },
              "required": [
                "connector",
                "connected"
              ],
              "type": "object"
            },
            "maxItems": 8,
            "type": "array"
          }
        },
        "required": [
          "device",
          "deviceCapabilities",
          "reportedState",
          "unassignedOutputs"
        ],
        "type": "object"
      },
      "GetDisplayAddressResponse": {
        "example": {
          "url": "https://webplayer.signage.example"
        },
        "properties": {
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "GetDisplayGroupResponse": {
        "example": {
          "displayGroup": {
            "canvas": {
              "height": 1080,
              "width": 3840
            },
            "createdAt": "2026-03-02T09:15:00.000Z",
            "id": "dgr_01KHK4A2S0WANDBAND00000001",
            "members": [
              {
                "playerId": "ply_01KHK34MQ0SCREEN0000000004",
                "rect": {
                  "h": 1080,
                  "w": 1920,
                  "x": 0,
                  "y": 0
                }
              },
              {
                "playerId": "ply_01KHK34MQ0SCREEN0000000005",
                "rect": {
                  "h": 1080,
                  "w": 1920,
                  "x": 1920,
                  "y": 0
                }
              }
            ],
            "name": "Schaufenster-Band",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-03-02T09:15:00.000Z"
          }
        },
        "properties": {
          "displayGroup": {
            "properties": {
              "canvas": {
                "properties": {
                  "height": {
                    "maximum": 8640,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "width": {
                    "maximum": 15360,
                    "minimum": 1,
                    "type": "integer"
                  }
                },
                "required": [
                  "width",
                  "height"
                ],
                "type": "object"
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "id": {
                "pattern": "^dgr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "members": {
                "items": {
                  "properties": {
                    "playerId": {
                      "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "rect": {
                      "properties": {
                        "h": {
                          "maximum": 8640,
                          "minimum": 1,
                          "type": "integer"
                        },
                        "w": {
                          "maximum": 15360,
                          "minimum": 1,
                          "type": "integer"
                        },
                        "x": {
                          "maximum": 15360,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "y": {
                          "maximum": 8640,
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "x",
                        "y",
                        "w",
                        "h"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "playerId",
                    "rect"
                  ],
                  "type": "object"
                },
                "maxItems": 16,
                "minItems": 1,
                "type": "array"
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "id",
              "tenantId",
              "name",
              "canvas",
              "members",
              "createdAt",
              "updatedAt"
            ],
            "type": "object"
          }
        },
        "required": [
          "displayGroup"
        ],
        "type": "object"
      },
      "GetDunningNoticePdfResponse": {
        "example": {
          "expiresInSeconds": 300,
          "url": "https://s3.demo.local/signage-medien/rechnungen/MA-2026-0009.pdf"
        },
        "properties": {
          "expiresInSeconds": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "url",
          "expiresInSeconds"
        ],
        "type": "object"
      },
      "GetEffectivePermissionsResponse": {
        "example": {
          "permissions": [
            "scene.list",
            "scene.read",
            "scene.create",
            "scene.update",
            "scene.publish",
            "playlist.list",
            "playlist.update",
            "schedule.list",
            "schedule.update",
            "asset.list",
            "asset.read",
            "asset.upload",
            "fleet.player.list",
            "fleet.player.read"
          ]
        },
        "properties": {
          "permissions": {
            "items": {
              "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "permissions"
        ],
        "type": "object"
      },
      "GetEngagementSnapshotResponse": {
        "example": {
          "computedAt": "2026-07-20T09:15:00.000Z",
          "data": {
            "activePlayersLast24h": 2,
            "avgPlayerUptimePct": 96.4,
            "publishedScenesLast30d": 3,
            "storageUsedGb": 3.4,
            "topPlayers": [
              {
                "playerId": "ply_01KHK34MQ0SCREEN0000000001",
                "uptimeHours": 167.5
              },
              {
                "playerId": "ply_01KHK3FM90SCREEN0000000002",
                "uptimeHours": 151.2
              }
            ],
            "topScenes": [
              {
                "displayHours": 62.5,
                "sceneId": "scn_01KJPX8NH0SZENE00000000001",
                "sceneName": "Willkommen"
              },
              {
                "displayHours": 41.8,
                "sceneId": "scn_01KJWKGJM0SZENE00000000002",
                "sceneName": "Angebote der Woche"
              }
            ],
            "totalAssets": 4,
            "totalPlayers": 3,
            "totalScenes": 4
          },
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "validUntil": "2026-07-20T10:15:00.000Z"
        },
        "properties": {
          "computedAt": {
            "format": "date-time",
            "type": "string"
          },
          "data": {
            "properties": {
              "activePlayersLast24h": {
                "minimum": 0,
                "type": "integer"
              },
              "avgPlayerUptimePct": {
                "maximum": 100,
                "minimum": 0,
                "type": "number"
              },
              "publishedScenesLast30d": {
                "minimum": 0,
                "type": "integer"
              },
              "storageUsedGb": {
                "minimum": 0,
                "type": "number"
              },
              "topPlayers": {
                "items": {
                  "properties": {
                    "playerId": {
                      "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "uptimeHours": {
                      "minimum": 0,
                      "type": "number"
                    }
                  },
                  "required": [
                    "playerId",
                    "uptimeHours"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "topScenes": {
                "items": {
                  "properties": {
                    "displayHours": {
                      "minimum": 0,
                      "type": "number"
                    },
                    "sceneId": {
                      "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "sceneName": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "sceneId",
                    "sceneName",
                    "displayHours"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "totalAssets": {
                "minimum": 0,
                "type": "integer"
              },
              "totalPlayers": {
                "minimum": 0,
                "type": "integer"
              },
              "totalScenes": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "totalPlayers",
              "activePlayersLast24h",
              "totalScenes",
              "publishedScenesLast30d",
              "totalAssets",
              "storageUsedGb",
              "topPlayers",
              "topScenes",
              "avgPlayerUptimePct"
            ],
            "type": "object"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "validUntil": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "tenantId",
          "computedAt",
          "validUntil",
          "data"
        ],
        "type": "object"
      },
      "GetExportDownloadUrlResponse": {
        "example": {
          "expiresAt": "2026-07-20T10:15:00.000Z",
          "url": "https://s3.demo.local/signage-medien/protokoll-ausfuhr/adler-apotheke-2026-q2.csv"
        },
        "properties": {
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "url",
          "expiresAt"
        ],
        "type": "object"
      },
      "GetHygieneResponse": {
        "example": {
          "computedAt": "2026-07-20T09:15:00.000Z",
          "dormantSince": "P90D",
          "findings": [
            {
              "count": 2,
              "kind": "unused-assets",
              "list": {
                "path": "/assets",
                "query": {
                  "usage": "unused"
                }
              }
            },
            {
              "count": 1,
              "kind": "unassigned-scenes",
              "list": {
                "path": "/scenes",
                "query": {
                  "assignment": "none",
                  "status": "published"
                }
              }
            },
            {
              "count": 1,
              "kind": "players-without-program",
              "list": {
                "path": "/players",
                "query": {
                  "program": "none"
                }
              }
            },
            {
              "count": 1,
              "kind": "players-offline",
              "list": {
                "path": "/players",
                "query": {
                  "offlineSince": "P7D"
                }
              }
            },
            {
              "count": 2,
              "kind": "dormant-users",
              "list": {
                "path": "/users",
                "query": {
                  "lastLoginBefore": "2026-04-21T09:15:00.000Z"
                }
              }
            },
            {
              "count": 0,
              "kind": "dead-webhooks",
              "list": {
                "path": "/webhooks",
                "query": {
                  "status": "dead"
                }
              }
            }
          ],
          "offlineSince": "P7D"
        },
        "properties": {
          "computedAt": {
            "format": "date-time",
            "type": "string"
          },
          "dormantSince": {
            "pattern": "^P(?!$)(?:(\\d+)W|(?:(\\d+)D)?(?:T(?!$)(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+)S)?)?)$",
            "type": "string"
          },
          "findings": {
            "items": {
              "properties": {
                "count": {
                  "minimum": 0,
                  "type": "integer"
                },
                "kind": {
                  "enum": [
                    "unused-assets",
                    "unassigned-scenes",
                    "players-without-program",
                    "players-offline",
                    "dormant-users",
                    "dead-webhooks"
                  ],
                  "type": "string"
                },
                "list": {
                  "properties": {
                    "path": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "query": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "path",
                    "query"
                  ],
                  "type": "object"
                }
              },
              "required": [
                "kind",
                "count",
                "list"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "offlineSince": {
            "pattern": "^P(?!$)(?:(\\d+)W|(?:(\\d+)D)?(?:T(?!$)(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+)S)?)?)$",
            "type": "string"
          }
        },
        "required": [
          "computedAt",
          "offlineSince",
          "dormantSince",
          "findings"
        ],
        "type": "object"
      },
      "GetInstalledAppResponse": {
        "example": {
          "entry": {
            "appId": "opening-hours",
            "data": {
              "connects": [],
              "dataAccess": {
                "external": [],
                "reads": [
                  "player-location",
                  "location-hours"
                ],
                "retention": "kept",
                "writes": []
              },
              "privacy": {
                "recipients": [],
                "retention": "kept",
                "storesOwnData": false
              },
              "resources": [],
              "terms": {
                "summary": "Die App zeigt die Öffnungszeiten, die Ihre Organisation am Standort pflegt, als Vorgabe die des Standorts, dem das Display zugeordnet ist. Die gesetzlichen Feiertage rechnen wir aus dem gewählten Bundesland, ohne Gewähr. Feiertage einzelner Gemeinden tragen Sie als Sondertermin ein. Für richtige Zeiten sind Sie verantwortlich. Die App liest nur Name, Ort, Zeitzone und Öffnungszeiten des Standorts und überträgt nichts an Dritte.",
                "termsPath": "/app-bedingungen/oeffnungszeiten"
              },
              "unlocks": []
            },
            "head": {
              "category": "geschaeft",
              "description": "Ob Ihr Standort gerade geöffnet hat, bis wann, heute und die Woche.",
              "displayName": "Öffnungszeiten",
              "facts": {
                "channel": "stable",
                "locales": [
                  "de-DE"
                ],
                "releasedAt": "2026-05-04T08:00:00.000Z",
                "version": "1.1.0"
              },
              "iconUrl": "/v1/apps/opening-hours/1.1.0/store/icon.svg",
              "marks": {
                "essential": false,
                "exempt": true,
                "prerelease": null,
                "tier": "pro",
                "trial": false
              },
              "publisher": {
                "name": "Szenera",
                "verified": true
              },
              "tagline": "Ob Sie gerade geöffnet haben, auf jedem Display.",
              "vertical": null
            },
            "manifestHash": "f7109661d73894249520ae9291e790eb1d9629f6c9afb25a1491c5f34d6b7174",
            "overview": {
              "compatibility": {
                "hosts": [
                  "szenera-os",
                  "fire-tv",
                  "tizen",
                  "webos",
                  "web-display"
                ],
                "offline": "last-known",
                "orientations": [
                  "landscape",
                  "portrait"
                ]
              },
              "description": "Die App zeigt groß, ob Ihr Standort gerade geöffnet hat, und darunter, bis wann oder wann Sie wieder öffnen. Dazu die Zeiten von heute und die Woche, gleiche Tage zusammengefasst. Die Zeiten pflegen Sie einmal am Standort, die gesetzlichen Feiertage rechnet Szenera aus dem Bundesland. Jedes Display zeigt die Zeiten seines Standorts, so genügt eine Szene für alle Filialen.",
              "highlights": [
                {
                  "description": "Die Zeiten stehen am Standort. Jedes Display zeigt die seines Standorts, ohne eigene Szene je Filiale.",
                  "title": "Einmal pflegen, überall richtig"
                },
                {
                  "description": "Die gesetzlichen Feiertage rechnet Szenera aus dem Bundesland. Sondertermine wie Inventur oder Betriebsurlaub gehen vor.",
                  "title": "Feiertage von selbst"
                },
                {
                  "description": "Der Zustand rechnet sich jede Minute aus Ihren Zeiten und kann nicht veralten, mit Mittagspause und Zeiten über Mitternacht.",
                  "title": "Geöffnet, Schließt bald, Geschlossen"
                }
              ],
              "related": [
                {
                  "appId": "pharmacies-on-duty",
                  "displayName": "Notdienst",
                  "iconUrl": "/v1/apps/pharmacies-on-duty/2.0.1/store/icon.svg",
                  "tagline": "Wer heute Nacht Dienst hat — automatisch auf dem Schaufenster."
                },
                {
                  "appId": "notice-board",
                  "displayName": "Aushang",
                  "iconUrl": "/v1/apps/notice-board/1.0.0/store/icon.svg",
                  "tagline": "Der Zettel an der Tür, sauber gesetzt statt ausgedruckt."
                }
              ],
              "whatsNew": null
            },
            "ownerRequest": null,
            "quickFacts": {
              "external": false,
              "locales": [
                "de-DE"
              ],
              "ownData": 0,
              "runsOn": {
                "displays": {
                  "compatible": 3,
                  "total": 3
                },
                "hosts": [
                  "szenera-os",
                  "fire-tv",
                  "tizen",
                  "webos",
                  "web-display"
                ]
              },
              "setupSteps": 3,
              "views": 5
            },
            "retainedData": null,
            "setup": {
              "permissions": [],
              "publisher": {
                "name": "Szenera",
                "verified": true
              },
              "steps": [
                {
                  "description": "Auf der Seite des Standorts unter „Öffnungszeiten“ die Zeiten je Wochentag eintragen und das Bundesland wählen.",
                  "done": true,
                  "target": {
                    "kind": "scene"
                  },
                  "title": "Zeiten am Standort eintragen"
                },
                {
                  "description": "Jedes Display einem Standort zuordnen. Es zeigt dann die Zeiten dieses Standorts.",
                  "done": true,
                  "target": {
                    "kind": "scene"
                  },
                  "title": "Displays zuordnen"
                },
                {
                  "description": "Das Widget im Szenen-Editor auf die Fläche ziehen, eine Vorlage und einen Hintergrund wählen.",
                  "done": true,
                  "target": {
                    "kind": "scene"
                  },
                  "title": "Widget platzieren"
                }
              ],
              "technical": {
                "appId": "opening-hours",
                "category": "geschaeft",
                "channel": "stable",
                "signed": true,
                "sizeBytes": 268412,
                "version": "1.1.0"
              }
            },
            "situation": {
              "action": "open-app",
              "installed": {
                "releaseId": "arl_01KRZY8ZW0AVERSN0000000003",
                "version": "1.1.0"
              },
              "kind": "installed",
              "offer": {
                "kind": "exempt"
              },
              "reason": {
                "code": "installed",
                "sceneCount": 1,
                "setup": {
                  "done": 3,
                  "total": 3
                },
                "version": "1.1.0"
              },
              "state": "installed",
              "update": null
            },
            "textLocale": "de-DE",
            "versions": [
              {
                "consent": null,
                "current": true,
                "installed": true,
                "note": {
                  "locale": "de-DE",
                  "text": "- Sondertermine für einen ganzen Zeitraum"
                },
                "releasedAt": "2026-05-04T08:00:00.000Z",
                "releaseId": "arl_01KRZY8ZW0AVERSN0000000003",
                "retirement": null,
                "version": "1.1.0"
              },
              {
                "consent": null,
                "current": false,
                "installed": false,
                "note": null,
                "releasedAt": "2026-01-20T08:00:00.000Z",
                "releaseId": "arl_01KJ7BEG20AVERSN0000000006",
                "retirement": null,
                "version": "1.0.4"
              }
            ],
            "views": {
              "mainViewUrl": "/v1/apps/opening-hours/1.1.0/store/screenshots/opening-hours--week.png",
              "sceneExampleUrl": "/v1/apps/opening-hours/1.1.0/store/scene-example.png",
              "widgets": [
                {
                  "description": "Ob der Standort gerade geöffnet hat, bis wann, heute und die Woche.",
                  "id": "opening-hours",
                  "name": "Öffnungszeiten",
                  "views": [
                    {
                      "aspect": "16:9",
                      "description": "Groß, ob geöffnet ist, darunter bis wann oder wann wieder.",
                      "id": "status",
                      "imageUrl": "/v1/apps/opening-hours/1.1.0/store/screenshots/opening-hours--status.png",
                      "label": "Jetzt",
                      "primary": false
                    },
                    {
                      "aspect": "16:9",
                      "description": "Der Zustand groß, darunter heute und die Woche, gleiche Tage zusammengefasst.",
                      "id": "week",
                      "imageUrl": "/v1/apps/opening-hours/1.1.0/store/screenshots/opening-hours--week.png",
                      "label": "Woche",
                      "primary": true
                    },
                    {
                      "aspect": "16:9",
                      "description": "Quer: der Zustand oben, darunter heute neben der Woche.",
                      "id": "split",
                      "imageUrl": "/v1/apps/opening-hours/1.1.0/store/screenshots/opening-hours--split.png",
                      "label": "Heute und Woche",
                      "primary": false
                    },
                    {
                      "aspect": "9:16",
                      "description": "Der Zustand oben, heute und die Tage untereinander, für den Rand einer Szene.",
                      "id": "column",
                      "imageUrl": "/v1/apps/opening-hours/1.1.0/store/screenshots/opening-hours--column.png",
                      "label": "Spalte",
                      "primary": false
                    },
                    {
                      "aspect": "16:9",
                      "description": "Eine Zeile mit dem Zustand und bis wann, in der Breite dazu der nächste Tag mit anderen Zeiten.",
                      "id": "bar",
                      "imageUrl": "/v1/apps/opening-hours/1.1.0/store/screenshots/opening-hours--bar.png",
                      "label": "Leiste",
                      "primary": false
                    }
                  ]
                }
              ]
            }
          },
          "grant": {
            "appId": "opening-hours",
            "bundleSizeBytes": 268412,
            "category": "geschaeft",
            "coreFeature": null,
            "coverUrl": "/apps/opening-hours/thumbnails/opening-hours--week.png",
            "displayName": "Öffnungszeiten",
            "effect": {
              "reason": "ok",
              "status": "active"
            },
            "grantId": "tag_01KJ7BEFX0GRANT00000000003",
            "iconUrl": "/apps/opening-hours/icon.svg",
            "installedAt": "2026-02-09T10:20:00.000Z",
            "installedVersion": "1.1.0",
            "platformStatus": "active",
            "resources": [],
            "sceneCount": 1,
            "status": "active",
            "tagline": "Ob Sie gerade geöffnet haben, auf jedem Display.",
            "tier": "pro"
          },
          "history": {
            "acceptanceHistory": [
              {
                "acceptedAt": "2026-06-11T04:15:00.000Z",
                "acceptedById": "usr_01KERQ74K0TEAM000000000001",
                "acceptedVia": "auto",
                "appId": "opening-hours",
                "grantId": "tag_01KJ7BEFX0GRANT00000000003",
                "id": "aar_01KRZYA0X0ZSTMMNG000000002",
                "manifestHash": "f7109661d73894249520ae9291e790eb1d9629f6c9afb25a1491c5f34d6b7174",
                "permissions": [],
                "reasons": [],
                "releaseId": "arl_01KRZY8ZW0AVERSN0000000003",
                "resourceTypes": [],
                "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
                "version": "1.1.0"
              },
              {
                "acceptedAt": "2026-02-09T10:20:00.000Z",
                "acceptedById": "usr_01KERQ74K0TEAM000000000001",
                "acceptedVia": "manual",
                "appId": "opening-hours",
                "grantId": "tag_01KJ7BEFX0GRANT00000000003",
                "id": "aar_01KJ7BEG20ZSTMMNG000000001",
                "manifestHash": "b1719f11c555c2066539c64f1b76ddb82f89a2ede86847f422bffaa87ce1d871",
                "permissions": [],
                "reasons": [],
                "releaseId": "arl_01KJ7BEG20AVERSN0000000006",
                "resourceTypes": [],
                "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
                "version": "1.0.4"
              }
            ],
            "grant": {
              "acceptedAt": "2026-06-11T04:15:00.000Z",
              "acceptedById": "usr_01KERQ74K0TEAM000000000001",
              "acceptedManifestHash": "f7109661d73894249520ae9291e790eb1d9629f6c9afb25a1491c5f34d6b7174",
              "appId": "opening-hours",
              "declinedAt": null,
              "declinedReleaseId": null,
              "declinedVersion": null,
              "id": "tag_01KJ7BEFX0GRANT00000000003",
              "installedAt": "2026-02-09T10:20:00.000Z",
              "installedById": "usr_01KERQ74K0TEAM000000000001",
              "installedReleaseId": "arl_01KRZY8ZW0AVERSN0000000003",
              "installedVersion": "1.1.0",
              "pendingDeadline": null,
              "pendingManifestHash": null,
              "pendingReasons": [],
              "pendingReleaseId": null,
              "status": "active",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "uninstalledAt": null,
              "uninstalledById": null
            }
          },
          "scenes": [
            {
              "name": "Willkommen",
              "sceneId": "scn_01KJPX8NH0SZENE00000000001"
            }
          ]
        },
        "properties": {
          "entry": {
            "$ref": "#/components/schemas/StoreEntryView"
          },
          "grant": {
            "properties": {
              "appId": {
                "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                "type": "string"
              },
              "bundleSizeBytes": {
                "minimum": 0,
                "type": "integer"
              },
              "category": {
                "enum": [
                  "zeit",
                  "information",
                  "web-video",
                  "gestaltung",
                  "geschaeft"
                ],
                "type": "string"
              },
              "coreFeature": {
                "default": null,
                "enum": [
                  "canvas"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "coverUrl": {
                "default": "",
                "type": "string"
              },
              "displayName": {
                "type": "string"
              },
              "effect": {
                "properties": {
                  "reason": {
                    "enum": [
                      "ok",
                      "pro-required",
                      "premium-required",
                      "booking-required",
                      "exempt"
                    ],
                    "type": "string"
                  },
                  "status": {
                    "enum": [
                      "active",
                      "locked"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "status",
                  "reason"
                ],
                "type": "object"
              },
              "grantId": {
                "pattern": "^tag_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "iconUrl": {
                "type": "string"
              },
              "installedAt": {
                "format": "date-time",
                "type": "string"
              },
              "installedVersion": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": "string"
              },
              "platformStatus": {
                "enum": [
                  "active",
                  "beta",
                  "disabled"
                ],
                "type": "string"
              },
              "resources": {
                "default": [],
                "items": {
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "slug": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "slug",
                    "name"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "sceneCount": {
                "minimum": 0,
                "type": "integer"
              },
              "status": {
                "enum": [
                  "active",
                  "pending-reacceptance",
                  "uninstalled"
                ],
                "type": "string"
              },
              "tagline": {
                "type": "string"
              },
              "tier": {
                "default": "standard",
                "enum": [
                  "standard",
                  "pro",
                  "premium",
                  "addon"
                ],
                "type": "string"
              }
            },
            "required": [
              "grantId",
              "appId",
              "installedVersion",
              "status",
              "installedAt",
              "displayName",
              "iconUrl",
              "platformStatus",
              "effect",
              "sceneCount"
            ],
            "type": "object"
          },
          "history": {
            "$ref": "#/components/schemas/AppInstallationHistory"
          },
          "scenes": {
            "items": {
              "properties": {
                "name": {
                  "type": "string"
                },
                "sceneId": {
                  "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                }
              },
              "required": [
                "sceneId",
                "name"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "entry",
          "grant",
          "history",
          "scenes"
        ],
        "type": "object"
      },
      "GetInvitationByTokenResponse": {
        "example": {
          "defaultRoleId": "rol_01KERPYXWRRECHT00000000002",
          "email": "m.sander@demo.local",
          "expiresAt": "2026-07-23T14:05:00.000Z",
          "invitedByName": "Julia Petersen",
          "tenantName": "Adler-Apotheke"
        },
        "properties": {
          "defaultRoleId": {
            "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "email": {
            "format": "email",
            "maxLength": 254,
            "type": "string"
          },
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "invitedByName": {
            "type": "string"
          },
          "tenantName": {
            "type": "string"
          }
        },
        "required": [
          "email",
          "tenantName",
          "invitedByName",
          "defaultRoleId",
          "expiresAt"
        ],
        "type": "object"
      },
      "GetInvoiceCountsResponse": {
        "example": {
          "all": 9,
          "creditNotes": 1,
          "dunned": 1,
          "open": 2,
          "overdue": 1,
          "paid": 6,
          "voided": 0
        },
        "properties": {
          "all": {
            "minimum": 0,
            "type": "integer"
          },
          "creditNotes": {
            "minimum": 0,
            "type": "integer"
          },
          "dunned": {
            "minimum": 0,
            "type": "integer"
          },
          "open": {
            "minimum": 0,
            "type": "integer"
          },
          "overdue": {
            "minimum": 0,
            "type": "integer"
          },
          "paid": {
            "minimum": 0,
            "type": "integer"
          },
          "voided": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "all",
          "open",
          "overdue",
          "paid",
          "creditNotes",
          "dunned",
          "voided"
        ],
        "type": "object"
      },
      "GetInvoicePdfResponse": {
        "example": {
          "url": "https://s3.demo.local/signage-medien/rechnungen/INV-2026-0042.pdf"
        },
        "properties": {
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "GetInvoiceResponse": {
        "example": {
          "amountCents": 8211,
          "amountDueCents": 8211,
          "correctedGrossCents": 0,
          "correctedInvoiceId": null,
          "createdAt": "2026-07-01T02:00:00.000Z",
          "creditAnchor": null,
          "creditedByInvoiceId": null,
          "creditSettlement": "settled",
          "currency": "EUR",
          "documentKind": "invoice",
          "dueAt": "2026-07-15T00:00:00.000Z",
          "dunningLevel": 0,
          "graceUntil": null,
          "hardwareOrderId": null,
          "hasEInvoiceXml": false,
          "hasPdf": false,
          "id": "inv_01KWDPF480RECHNNG000000001",
          "invoiceNumber": "INV-2026-0042",
          "issuedAt": "2026-07-01T02:00:00.000Z",
          "kind": "periodic",
          "lastDunnedAt": "2026-01-01T00:00:00.000Z",
          "lines": [
            {
              "amountCents": 6000,
              "description": "Player-Lizenz",
              "id": "inl_01J5N2A8K3RB6QH9YVW4ZT0P01",
              "invoiceId": "inv_01KWDPF480RECHNNG000000001",
              "periodEnd": null,
              "periodStart": null,
              "position": 1,
              "quantity": 3,
              "skuCode": "LIZ-PLAYER",
              "unitPriceCents": 2000
            },
            {
              "amountCents": 900,
              "description": "Notdienst-Anzeige",
              "id": "inl_01J5N2A8K3RB6QH9YVW4ZT0P02",
              "invoiceId": "inv_01KWDPF480RECHNNG000000001",
              "periodEnd": null,
              "periodStart": null,
              "position": 2,
              "quantity": 1,
              "skuCode": "APP-pharmacies-on-duty",
              "unitPriceCents": 900
            }
          ],
          "netAmountCents": 6900,
          "paidAt": "2026-07-01T02:02:00.000Z",
          "payment": null,
          "periodEnd": "2026-07-31T23:59:59.000Z",
          "periodStart": "2026-07-01T00:00:00.000Z",
          "recipientVatId": null,
          "recipientVatIdConfirmedAt": null,
          "reminderSentAt": null,
          "source": "invoice",
          "status": "paid",
          "subscriptionId": "sub_01KERQ1MT0VERTRAG000000001",
          "taxCategory": "S",
          "taxExemptionCode": null,
          "taxRuleId": "de-domestic",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "vatAmountCents": 1311,
          "vatRatePercent": 19,
          "voidedAt": null
        },
        "properties": {
          "amountCents": {
            "type": "integer"
          },
          "amountDueCents": {
            "type": "integer"
          },
          "correctedGrossCents": {
            "default": 0,
            "minimum": 0,
            "type": "integer"
          },
          "correctedInvoiceId": {
            "default": null,
            "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "creditAnchor": {
            "default": null,
            "maxLength": 80,
            "type": [
              "string",
              "null"
            ]
          },
          "creditedByInvoiceId": {
            "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "creditSettlement": {
            "default": null,
            "enum": [
              "settled",
              "payable"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "currency": {
            "enum": [
              "EUR"
            ],
            "type": "string"
          },
          "documentKind": {
            "default": "invoice",
            "enum": [
              "invoice",
              "credit_note"
            ],
            "type": "string"
          },
          "dueAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "dunningLevel": {
            "default": 0,
            "maximum": 2,
            "minimum": 0,
            "type": "integer"
          },
          "graceUntil": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "hardwareOrderId": {
            "default": null,
            "pattern": "^hwo_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "hasEInvoiceXml": {
            "type": "boolean"
          },
          "hasPdf": {
            "type": "boolean"
          },
          "id": {
            "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "invoiceNumber": {
            "pattern": "^(INV|GS)-\\d{4}-\\d{4,}$",
            "type": "string"
          },
          "issuedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "enum": [
              "periodic",
              "interim",
              "one_time"
            ],
            "type": "string"
          },
          "lastDunnedAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "lines": {
            "items": {
              "properties": {
                "amountCents": {
                  "type": "integer"
                },
                "description": {
                  "maxLength": 255,
                  "minLength": 1,
                  "type": "string"
                },
                "id": {
                  "pattern": "^inl_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "invoiceId": {
                  "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "periodEnd": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "periodStart": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "position": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "quantity": {
                  "type": "integer"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                },
                "unitPriceCents": {
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "invoiceId",
                "position",
                "skuCode",
                "description",
                "quantity",
                "unitPriceCents",
                "amountCents",
                "periodStart",
                "periodEnd"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "netAmountCents": {
            "type": [
              "integer",
              "null"
            ]
          },
          "paidAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "payment": {
            "$ref": "#/components/schemas/InvoicePaymentBlock"
          },
          "periodEnd": {
            "format": "date-time",
            "type": "string"
          },
          "periodStart": {
            "format": "date-time",
            "type": "string"
          },
          "recipientVatId": {
            "default": null,
            "maxLength": 30,
            "type": [
              "string",
              "null"
            ]
          },
          "recipientVatIdConfirmedAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "reminderSentAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "source": {
            "enum": [
              "invoice",
              "stripe"
            ],
            "type": "string"
          },
          "status": {
            "enum": [
              "draft",
              "open",
              "paid",
              "uncollectible",
              "void",
              "refunded"
            ],
            "type": "string"
          },
          "subscriptionId": {
            "pattern": "^sub_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "taxCategory": {
            "default": null,
            "enum": [
              "S",
              "AE",
              "K",
              "G",
              "E",
              "O"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "taxExemptionCode": {
            "default": null,
            "maxLength": 20,
            "type": [
              "string",
              "null"
            ]
          },
          "taxRuleId": {
            "default": null,
            "enum": [
              "de-domestic",
              "eu-b2b-reverse",
              "third-country",
              "issuer-exempt"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "vatAmountCents": {
            "type": [
              "integer",
              "null"
            ]
          },
          "vatRatePercent": {
            "maximum": 100,
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "voidedAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "tenantId",
          "subscriptionId",
          "source",
          "kind",
          "invoiceNumber",
          "amountCents",
          "netAmountCents",
          "vatRatePercent",
          "vatAmountCents",
          "currency",
          "status",
          "periodStart",
          "periodEnd",
          "issuedAt",
          "dueAt",
          "paidAt",
          "createdAt",
          "hasPdf",
          "hasEInvoiceXml",
          "reminderSentAt",
          "graceUntil",
          "creditedByInvoiceId",
          "amountDueCents",
          "lines",
          "payment"
        ],
        "type": "object"
      },
      "GetInvoiceXmlResponse": {
        "example": {
          "fileName": "sample",
          "url": "https://example.com"
        },
        "properties": {
          "fileName": {
            "type": "string"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "url",
          "fileName"
        ],
        "type": "object"
      },
      "GetLayoutTemplateResponse": {
        "example": {
          "canvas": {
            "height": 1920,
            "width": 1080
          },
          "createdAt": "2026-03-02T09:10:00.000Z",
          "createdById": "usr_01KFB7QPW0TEAM000000000002",
          "description": "Kopfband für die Wortmarke, große Mittelfläche, Fußzeile für Hinweise.",
          "id": "lyt_01KJPWZGJ0RASTER0000000001",
          "isBuiltIn": false,
          "name": "Schaufenster Hochformat",
          "slots": {
            "fuss": {
              "h": 320,
              "w": 1080,
              "x": 0,
              "y": 1600,
              "zIndex": 1
            },
            "kopf": {
              "h": 320,
              "w": 1080,
              "x": 0,
              "y": 0,
              "zIndex": 0
            },
            "mitte": {
              "h": 1280,
              "w": 1080,
              "x": 0,
              "y": 320,
              "zIndex": 0
            }
          },
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-03-02T09:10:00.000Z"
        },
        "properties": {
          "canvas": {
            "properties": {
              "height": {
                "maximum": 7680,
                "minimum": 320,
                "type": "integer"
              },
              "width": {
                "maximum": 7680,
                "minimum": 320,
                "type": "integer"
              }
            },
            "required": [
              "width",
              "height"
            ],
            "type": "object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "createdById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "description": {
            "maxLength": 2000,
            "type": "string"
          },
          "id": {
            "pattern": "^(?:lyt_[0-9A-HJKMNP-TV-Z]{26}|standard-1x1|split-vertical|split-horizontal|grid-2x2|main-sidebar|main-sidebar-2|main-sidebar-3|thirds-vertical|quarters-vertical|header-main|main-ticker|header-main-ticker|sidebar-left-main|header-split|grid-3x2|main-sidebar-ticker|hero-strip-3|portrait-full|portrait-split|portrait-thirds|portrait-main-footer|portrait-half-grid-4|portrait-main-footer-2|portrait-main-footer-3|portrait-header-main|portrait-header-main-ticker|portrait-quarters|portrait-grid-2x3|portrait-hero-columns|ultra-full|ultra-halves|ultra-thirds|ultra-quarters|ultra-center-stage|ultra-main-sidebar|ultra-header-thirds|ultra-thirds-ticker)$",
            "type": "string"
          },
          "isBuiltIn": {
            "type": "boolean"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "slots": {
            "additionalProperties": {
              "properties": {
                "h": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "w": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "x": {
                  "minimum": 0,
                  "type": "integer"
                },
                "y": {
                  "minimum": 0,
                  "type": "integer"
                },
                "zIndex": {
                  "maximum": 1000,
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "x",
                "y",
                "w",
                "h",
                "zIndex"
              ],
              "type": "object"
            },
            "type": "object"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "name",
          "description",
          "canvas",
          "slots",
          "isBuiltIn",
          "createdById",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "GetLicenseQuantityPreviewResponse": {
        "example": {
          "count": 4,
          "currency": "EUR",
          "currentPeriodEnd": "2026-08-31T23:59:59.000Z",
          "dueToday": {
            "grossCents": 4383,
            "netCents": 3683,
            "vatCents": 700
          },
          "effectiveAt": "2026-08-12T12:00:00.000Z",
          "inTrial": false,
          "minDisplays": 1,
          "nextPeriodTotalCents": 7808,
          "rule": "R1",
          "targetState": [
            {
              "carriesDisplays": true,
              "currentQuantity": 3,
              "outcome": "changed",
              "packageCode": "START",
              "quantity": 4,
              "skuCode": "PKG-START"
            },
            {
              "carriesDisplays": false,
              "currentQuantity": 1,
              "outcome": "unchanged",
              "packageCode": null,
              "quantity": 1,
              "skuCode": "APP-pharmacies-on-duty"
            },
            {
              "carriesDisplays": false,
              "currentQuantity": 1,
              "outcome": "unchanged",
              "packageCode": null,
              "quantity": 1,
              "skuCode": "LIZ-VIDEOWALL"
            }
          ],
          "vatRatePercent": 19
        },
        "properties": {
          "count": {
            "minimum": 0,
            "type": "integer"
          },
          "currency": {
            "enum": [
              "EUR"
            ],
            "type": "string"
          },
          "currentPeriodEnd": {
            "format": "date-time",
            "type": "string"
          },
          "dueToday": {
            "$ref": "#/components/schemas/BillingAmountBlock"
          },
          "effectiveAt": {
            "format": "date-time",
            "type": "string"
          },
          "inTrial": {
            "type": "boolean"
          },
          "minDisplays": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "nextPeriodTotalCents": {
            "minimum": 0,
            "type": "integer"
          },
          "rule": {
            "enum": [
              "R1",
              "R2"
            ],
            "type": "string"
          },
          "targetState": {
            "items": {
              "$ref": "#/components/schemas/BillingTargetStatePosition"
            },
            "type": "array"
          },
          "vatRatePercent": {
            "maximum": 100,
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "count",
          "minDisplays",
          "rule",
          "effectiveAt",
          "targetState",
          "dueToday",
          "nextPeriodTotalCents",
          "vatRatePercent",
          "currentPeriodEnd",
          "currency",
          "inTrial"
        ],
        "type": "object"
      },
      "GetLicensingOverviewResponse": {
        "example": {
          "apps": [
            {
              "appId": "pharmacies-on-duty",
              "booked": true,
              "displayName": "Notdienst-Anzeige",
              "effectiveMonthlyPriceCents": 900,
              "grandfathered": false,
              "installed": true,
              "monthlyPriceCents": 900,
              "pendingFailedAt": null,
              "pendingQuantity": null,
              "skuCode": "APP-pharmacies-on-duty"
            }
          ],
          "billingCycle": "monthly",
          "cancelAtPeriodEnd": false,
          "cancelEffectiveAt": null,
          "cancelScheduledAt": null,
          "currentPeriodEnd": "2026-08-31T23:59:59.000Z",
          "currentPeriodStart": "2026-08-01T00:00:00.000Z",
          "defaultPaymentMethod": null,
          "desiredPackage": null,
          "dunning": null,
          "graceUntil": null,
          "graceWindowEnd": null,
          "invoiceWayApproved": true,
          "legacyItems": [
            {
              "description": "Anmeldung über das Firmen-Login der Organisation (SSO) — jetzt Teil von Enterprise.",
              "displayName": "Enterprise-Anmeldung",
              "effectiveMonthlyPriceCents": 0,
              "grandfathered": true,
              "pendingFailedAt": null,
              "pendingQuantity": null,
              "quantity": 1,
              "skuCode": "ADDON-SSO"
            }
          ],
          "licenses": {
            "booked": 3,
            "conflictUntil": null,
            "free": 0,
            "frozen": 1,
            "pendingFailedAt": "2026-08-01T00:05:00.000Z",
            "pendingQuantity": 2,
            "used": 4
          },
          "nextInvoice": {
            "blockers": [],
            "credit": null,
            "currency": "EUR",
            "dueToday": {
              "grossCents": 0,
              "netCents": 0,
              "vatCents": 0
            },
            "effectiveAt": "2026-08-31T23:59:59.000Z",
            "endsTrial": false,
            "lines": [
              {
                "displayName": "Paket Starter",
                "kind": "recurring",
                "netAmountCents": 3756,
                "period": null,
                "quantity": 3,
                "skuCode": "PKG-START",
                "specialConditionUntil": null,
                "unitPriceCents": 1252
              },
              {
                "displayName": "Notdienst-Anzeige",
                "kind": "recurring",
                "netAmountCents": 900,
                "period": null,
                "quantity": 1,
                "skuCode": "APP-pharmacies-on-duty",
                "specialConditionUntil": null,
                "unitPriceCents": 900
              },
              {
                "displayName": "Leinwand",
                "kind": "recurring",
                "netAmountCents": 1900,
                "period": null,
                "quantity": 1,
                "skuCode": "LIZ-VIDEOWALL",
                "specialConditionUntil": null,
                "unitPriceCents": 1900
              }
            ],
            "nextInvoiceAt": "2026-08-31T23:59:59.000Z",
            "nextPeriod": {
              "grossCents": 7802,
              "netCents": 6556,
              "vatCents": 1246
            },
            "partialCancellation": null,
            "pendingBillingCycle": null,
            "previewedAt": "2026-08-16T09:15:00.000Z",
            "previewToken": "bpv_01KERPXZM0NAECHSTE00000000",
            "rule": "R2",
            "targetState": [
              {
                "carriesDisplays": true,
                "currentQuantity": 3,
                "outcome": "unchanged",
                "packageCode": "START",
                "quantity": 3,
                "skuCode": "PKG-START"
              },
              {
                "carriesDisplays": false,
                "currentQuantity": 1,
                "outcome": "unchanged",
                "packageCode": null,
                "quantity": 1,
                "skuCode": "APP-pharmacies-on-duty"
              },
              {
                "carriesDisplays": false,
                "currentQuantity": 1,
                "outcome": "unchanged",
                "packageCode": null,
                "quantity": 1,
                "skuCode": "LIZ-VIDEOWALL"
              }
            ],
            "tax": {
              "category": "S",
              "exemptionCode": null,
              "hintKey": null,
              "ratePercent": 19,
              "requiresRecipientVatId": false,
              "ruleId": "de-domestic"
            },
            "tierScale": null,
            "trialCredit": null,
            "unchanged": true,
            "usedDisplays": 4,
            "validUntil": "2026-08-16T09:45:00.000Z"
          },
          "overdueCutoff": null,
          "packageCode": "START",
          "packages": [
            {
              "available": true,
              "code": "START",
              "current": true,
              "displayName": "Starter",
              "effectiveMonthlyPriceCents": 1490,
              "listPriceCents": 1490,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 1490,
              "pending": false,
              "skuCode": "PKG-START"
            },
            {
              "available": true,
              "code": "PRO",
              "current": false,
              "displayName": "Pro",
              "effectiveMonthlyPriceCents": 2290,
              "listPriceCents": 2290,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 2290,
              "pending": false,
              "skuCode": "PKG-PRO"
            },
            {
              "available": true,
              "code": "PREMIUM",
              "current": false,
              "displayName": "Premium",
              "effectiveMonthlyPriceCents": 2790,
              "listPriceCents": 2790,
              "maxDisplays": null,
              "minDisplays": 5,
              "monthlyPriceCents": 2790,
              "pending": false,
              "skuCode": "PKG-PREMIUM"
            },
            {
              "available": false,
              "code": "ENTERPRISE",
              "current": false,
              "displayName": "Enterprise",
              "effectiveMonthlyPriceCents": 0,
              "listPriceCents": 0,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 0,
              "pending": false,
              "skuCode": "PKG-ENTERPRISE"
            }
          ],
          "paymentWay": {
            "kind": "invoice",
            "nextChargeAt": null,
            "paymentTermsDays": 14
          },
          "paymentWaySecured": true,
          "pendingBillingCycle": null,
          "pendingChangeEffectiveAt": "2026-08-31T23:59:59.000Z",
          "pendingDisplays": null,
          "pendingFailedAt": null,
          "pendingPackageCode": null,
          "pricing": {
            "billableQuantity": 3,
            "currency": "EUR",
            "currentUnitPriceCents": 1252,
            "tiers": [],
            "vatRatePercent": 19,
            "yearlyDiscountPercent": 15
          },
          "readiness": {
            "blockers": []
          },
          "source": "invoice",
          "specialConditionUntil": null,
          "status": "active",
          "tenantStatus": "active",
          "trialEndsAt": null,
          "videoWalls": {
            "available": true,
            "booked": 1,
            "displayName": "Leinwand",
            "effectiveMonthlyPriceCents": 1900,
            "grandfathered": false,
            "monthlyPriceCents": 1900,
            "pendingFailedAt": null,
            "pendingQuantity": null,
            "skuCode": "LIZ-VIDEOWALL",
            "used": 1
          }
        },
        "properties": {
          "apps": {
            "items": {
              "properties": {
                "appId": {
                  "type": "string"
                },
                "booked": {
                  "type": "boolean"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "grandfathered": {
                  "type": "boolean"
                },
                "installed": {
                  "type": "boolean"
                },
                "monthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "pendingFailedAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "pendingQuantity": {
                  "default": null,
                  "minimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "appId",
                "skuCode",
                "displayName",
                "monthlyPriceCents",
                "effectiveMonthlyPriceCents",
                "booked",
                "installed",
                "grandfathered"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "billingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": "string"
          },
          "cancelAtPeriodEnd": {
            "type": "boolean"
          },
          "cancelEffectiveAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "cancelScheduledAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "currentPeriodEnd": {
            "format": "date-time",
            "type": "string"
          },
          "currentPeriodStart": {
            "format": "date-time",
            "type": "string"
          },
          "defaultPaymentMethod": {
            "properties": {
              "expiresAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "kind": {
                "enum": [
                  "card",
                  "sepa_debit"
                ],
                "type": "string"
              },
              "lastFour": {
                "pattern": "^\\d{4}$",
                "type": "string"
              },
              "stripePaymentMethodId": {
                "type": "string"
              }
            },
            "required": [
              "stripePaymentMethodId",
              "kind",
              "lastFour",
              "expiresAt"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "desiredPackage": {
            "properties": {
              "billingCycle": {
                "enum": [
                  "monthly",
                  "yearly"
                ],
                "type": "string"
              },
              "displays": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "packageCode": {
                "enum": [
                  "START",
                  "PRO",
                  "PREMIUM",
                  "ENTERPRISE"
                ],
                "type": "string"
              }
            },
            "required": [
              "packageCode",
              "displays",
              "billingCycle"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "dunning": {
            "properties": {
              "graceUntil": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "invoiceId": {
                "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "invoiceNumber": {
                "pattern": "^(INV|GS)-\\d{4}-\\d{4,}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastDunnedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "level": {
                "maximum": 2,
                "minimum": 0,
                "type": "integer"
              },
              "reminderSentAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "level",
              "reminderSentAt",
              "lastDunnedAt",
              "graceUntil",
              "invoiceId",
              "invoiceNumber"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "graceUntil": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "graceWindowEnd": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "invoiceWayApproved": {
            "type": "boolean"
          },
          "legacyItems": {
            "items": {
              "properties": {
                "description": {
                  "type": "string"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "grandfathered": {
                  "type": "boolean"
                },
                "pendingFailedAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "pendingQuantity": {
                  "default": null,
                  "minimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "quantity": {
                  "minimum": 0,
                  "type": "integer"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "skuCode",
                "displayName",
                "description",
                "quantity",
                "effectiveMonthlyPriceCents",
                "grandfathered"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "licenses": {
            "properties": {
              "booked": {
                "minimum": 0,
                "type": "integer"
              },
              "conflictUntil": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "free": {
                "minimum": 0,
                "type": "integer"
              },
              "frozen": {
                "default": 0,
                "minimum": 0,
                "type": "integer"
              },
              "pendingFailedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingQuantity": {
                "default": null,
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "used": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "booked",
              "used",
              "free"
            ],
            "type": "object"
          },
          "nextInvoice": {
            "$ref": "#/components/schemas/BillingPreviewResponse"
          },
          "overdueCutoff": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "packageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "packages": {
            "items": {
              "properties": {
                "available": {
                  "type": "boolean"
                },
                "code": {
                  "enum": [
                    "START",
                    "PRO",
                    "PREMIUM",
                    "ENTERPRISE"
                  ],
                  "type": "string"
                },
                "current": {
                  "type": "boolean"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "listPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "maxDisplays": {
                  "exclusiveMinimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "minDisplays": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "monthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "pending": {
                  "type": "boolean"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "code",
                "skuCode",
                "displayName",
                "monthlyPriceCents",
                "listPriceCents",
                "effectiveMonthlyPriceCents",
                "maxDisplays",
                "minDisplays",
                "current",
                "pending",
                "available"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "paymentWay": {
            "properties": {
              "kind": {
                "enum": [
                  "card",
                  "sepa_debit",
                  "invoice",
                  "none"
                ],
                "type": "string"
              },
              "nextChargeAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "paymentTermsDays": {
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "kind",
              "paymentTermsDays",
              "nextChargeAt"
            ],
            "type": "object"
          },
          "paymentWaySecured": {
            "type": "boolean"
          },
          "pendingBillingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pendingChangeEffectiveAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "pendingDisplays": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "pendingFailedAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "pendingPackageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pricing": {
            "properties": {
              "billableQuantity": {
                "minimum": 0,
                "type": "integer"
              },
              "currency": {
                "enum": [
                  "EUR"
                ],
                "type": "string"
              },
              "currentUnitPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "tiers": {
                "items": {
                  "properties": {
                    "unitPriceCents": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "upToQuantity": {
                      "exclusiveMinimum": 0,
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "upToQuantity",
                    "unitPriceCents"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "vatRatePercent": {
                "maximum": 100,
                "minimum": 0,
                "type": "number"
              },
              "yearlyDiscountPercent": {
                "maximum": 100,
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "tiers",
              "currency",
              "yearlyDiscountPercent",
              "vatRatePercent",
              "currentUnitPriceCents",
              "billableQuantity"
            ],
            "type": "object"
          },
          "readiness": {
            "properties": {
              "blockers": {
                "items": {
                  "enum": [
                    "billing-profile-missing",
                    "payment-way-missing",
                    "overdue-invoice",
                    "payment-failed",
                    "tenant-frozen",
                    "contract-suspended",
                    "cancel-pending",
                    "eu-b2b-vat-id-required",
                    "goods-abroad-unsupported",
                    "issuer-exemption-missing"
                  ],
                  "type": "string"
                },
                "type": "array"
              }
            },
            "required": [
              "blockers"
            ],
            "type": "object"
          },
          "source": {
            "enum": [
              "invoice",
              "stripe"
            ],
            "type": "string"
          },
          "specialConditionUntil": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "enum": [
              "trial",
              "active",
              "past_due",
              "canceled",
              "suspended"
            ],
            "type": "string"
          },
          "tenantStatus": {
            "enum": [
              "active",
              "frozen",
              "suspended"
            ],
            "type": "string"
          },
          "trialEndsAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "videoWalls": {
            "properties": {
              "available": {
                "type": "boolean"
              },
              "booked": {
                "minimum": 0,
                "type": "integer"
              },
              "displayName": {
                "type": "string"
              },
              "effectiveMonthlyPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "grandfathered": {
                "type": "boolean"
              },
              "monthlyPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "pendingFailedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingQuantity": {
                "default": null,
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "skuCode": {
                "maxLength": 60,
                "minLength": 3,
                "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                "type": "string"
              },
              "used": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "skuCode",
              "displayName",
              "booked",
              "used",
              "monthlyPriceCents",
              "effectiveMonthlyPriceCents",
              "grandfathered",
              "available"
            ],
            "type": "object"
          }
        },
        "required": [
          "licenses",
          "packageCode",
          "pendingPackageCode",
          "packages",
          "pricing",
          "apps",
          "videoWalls",
          "legacyItems",
          "billingCycle",
          "pendingBillingCycle",
          "status",
          "trialEndsAt",
          "graceUntil",
          "currentPeriodStart",
          "currentPeriodEnd",
          "source",
          "paymentWaySecured",
          "cancelAtPeriodEnd",
          "cancelScheduledAt",
          "cancelEffectiveAt",
          "tenantStatus",
          "graceWindowEnd",
          "overdueCutoff",
          "specialConditionUntil",
          "desiredPackage",
          "invoiceWayApproved",
          "defaultPaymentMethod",
          "paymentWay",
          "dunning",
          "nextInvoice",
          "readiness"
        ],
        "type": "object"
      },
      "GetLocationResponse": {
        "example": {
          "location": {
            "address": {
              "city": "Hamburg",
              "country": "DE",
              "postalCode": "22765",
              "street": "Bahnhofstraße 12"
            },
            "coordinates": {
              "lat": 53.5511,
              "lng": 9.9937
            },
            "createdAt": "2026-02-16T11:20:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "id": "loc_01KHK4B3T0ADRESSE000000001",
            "name": "Hauptstelle",
            "note": "Verkaufsraum und Schaufenster; der Beratungsraum liegt im ersten Stock.",
            "openingHours": {
              "specialDays": [
                {
                  "closed": false,
                  "endDate": "2026-12-24",
                  "label": "Heiligabend",
                  "startDate": "2026-12-24",
                  "windows": [
                    {
                      "closes": "12:00",
                      "opens": "08:30"
                    }
                  ]
                },
                {
                  "closed": true,
                  "endDate": "2027-01-02",
                  "label": "Inventur",
                  "startDate": "2027-01-02",
                  "windows": []
                }
              ],
              "weekly": {
                "fri": [
                  {
                    "closes": "13:00",
                    "opens": "08:30"
                  },
                  {
                    "closes": "18:30",
                    "opens": "14:00"
                  }
                ],
                "mon": [
                  {
                    "closes": "13:00",
                    "opens": "08:30"
                  },
                  {
                    "closes": "18:30",
                    "opens": "14:00"
                  }
                ],
                "sat": [
                  {
                    "closes": "14:00",
                    "opens": "09:00"
                  }
                ],
                "sun": [],
                "thu": [
                  {
                    "closes": "13:00",
                    "opens": "08:30"
                  },
                  {
                    "closes": "18:30",
                    "opens": "14:00"
                  }
                ],
                "tue": [
                  {
                    "closes": "13:00",
                    "opens": "08:30"
                  },
                  {
                    "closes": "18:30",
                    "opens": "14:00"
                  }
                ],
                "wed": [
                  {
                    "closes": "13:00",
                    "opens": "08:30"
                  }
                ]
              }
            },
            "playerCount": 3,
            "region": "DE-HH",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "timeZone": "Europe/Berlin",
            "updatedAt": "2026-02-16T11:20:00.000Z",
            "venueType": "pharmacy",
            "version": 0
          }
        },
        "properties": {
          "location": {
            "properties": {
              "address": {
                "properties": {
                  "city": {
                    "maxLength": 120,
                    "minLength": 1,
                    "type": "string"
                  },
                  "country": {
                    "pattern": "^[A-Z]{2}$",
                    "type": "string"
                  },
                  "postalCode": {
                    "maxLength": 20,
                    "minLength": 1,
                    "type": "string"
                  },
                  "street": {
                    "maxLength": 200,
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "street",
                  "postalCode",
                  "city",
                  "country"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "coordinates": {
                "properties": {
                  "lat": {
                    "maximum": 90,
                    "minimum": -90,
                    "type": "number"
                  },
                  "lng": {
                    "maximum": 180,
                    "minimum": -180,
                    "type": "number"
                  }
                },
                "required": [
                  "lat",
                  "lng"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "createdById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "id": {
                "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "note": {
                "maxLength": 500,
                "type": "string"
              },
              "openingHours": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpeningHours"
                  },
                  {
                    "default": null
                  }
                ]
              },
              "playerCount": {
                "minimum": 0,
                "type": "integer"
              },
              "region": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LocationRegion"
                  },
                  {
                    "default": null
                  }
                ]
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "timeZone": {
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "venueType": {
                "default": null,
                "enum": [
                  "pharmacy",
                  "workshop",
                  "bakery",
                  "beverage_store",
                  "grocery",
                  "kiosk",
                  "fitness_studio",
                  "medical_practice",
                  "retail",
                  "other"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "version": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "id",
              "tenantId",
              "name",
              "address",
              "timeZone",
              "coordinates",
              "note",
              "createdById",
              "version",
              "createdAt",
              "updatedAt",
              "playerCount"
            ],
            "type": "object"
          }
        },
        "required": [
          "location"
        ],
        "type": "object"
      },
      "GetMetricDetailResponse": {
        "example": {
          "breakdown": [
            {
              "dimension": "playerId",
              "key": "ply_01KHK34MQ0SCREEN0000000001",
              "label": "Schaufenster Eingang",
              "share": 0.594,
              "value": 98400
            },
            {
              "dimension": "playerId",
              "key": "ply_01KHK3FM90SCREEN0000000002",
              "label": "Wartebereich",
              "share": 0.406,
              "value": 67260
            }
          ],
          "breakdownDimension": "playerId",
          "breakdownRemainder": 0,
          "summary": {
            "aggregation": "sum",
            "dimensions": [
              "playerId"
            ],
            "group": "players",
            "metric": "player.online_seconds",
            "points": [
              {
                "bucketStart": "2026-07-16T00:00:00.000Z",
                "value": 41820
              },
              {
                "bucketStart": "2026-07-17T00:00:00.000Z",
                "value": 43140
              },
              {
                "bucketStart": "2026-07-18T00:00:00.000Z",
                "value": 28500
              },
              {
                "bucketStart": "2026-07-19T00:00:00.000Z",
                "value": 12240
              },
              {
                "bucketStart": "2026-07-20T00:00:00.000Z",
                "value": 39960
              }
            ],
            "previousTotal": 141300,
            "total": 165660,
            "unit": "seconds"
          },
          "window": {
            "days": 30,
            "from": "2026-06-20T09:15:00.000Z",
            "granularity": "1d",
            "to": "2026-07-20T09:15:00.000Z"
          }
        },
        "properties": {
          "breakdown": {
            "items": {
              "properties": {
                "dimension": {
                  "enum": [
                    "playerId",
                    "deviceId",
                    "sceneId",
                    "appId"
                  ],
                  "type": "string"
                },
                "key": {
                  "type": "string"
                },
                "label": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "share": {
                  "maximum": 1,
                  "minimum": 0,
                  "type": "number"
                },
                "value": {
                  "type": "number"
                }
              },
              "required": [
                "dimension",
                "key",
                "label",
                "value",
                "share"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "breakdownDimension": {
            "enum": [
              "playerId",
              "deviceId",
              "sceneId",
              "appId"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "breakdownRemainder": {
            "type": "number"
          },
          "summary": {
            "properties": {
              "aggregation": {
                "enum": [
                  "sum",
                  "avg",
                  "max"
                ],
                "type": "string"
              },
              "dimensions": {
                "items": {
                  "enum": [
                    "playerId",
                    "deviceId",
                    "sceneId",
                    "appId"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "group": {
                "enum": [
                  "players",
                  "scenes",
                  "media",
                  "apps"
                ],
                "type": "string"
              },
              "metric": {
                "pattern": "^[a-z][a-z0-9-]*\\.[a-z][a-z0-9_]*$",
                "type": "string"
              },
              "points": {
                "items": {
                  "properties": {
                    "bucketStart": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "value": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "bucketStart",
                    "value"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "previousTotal": {
                "type": "number"
              },
              "total": {
                "type": "number"
              },
              "unit": {
                "enum": [
                  "count",
                  "seconds",
                  "bytes",
                  "ratio",
                  "load"
                ],
                "type": "string"
              }
            },
            "required": [
              "metric",
              "group",
              "unit",
              "aggregation",
              "dimensions",
              "points",
              "total",
              "previousTotal"
            ],
            "type": "object"
          },
          "window": {
            "properties": {
              "days": {
                "maximum": 365,
                "minimum": 1,
                "type": "integer"
              },
              "from": {
                "format": "date-time",
                "type": "string"
              },
              "granularity": {
                "enum": [
                  "1h",
                  "1d"
                ],
                "type": "string"
              },
              "to": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "from",
              "to",
              "granularity",
              "days"
            ],
            "type": "object"
          }
        },
        "required": [
          "window",
          "summary",
          "breakdownDimension",
          "breakdown",
          "breakdownRemainder"
        ],
        "type": "object"
      },
      "GetMetricsOverviewResponse": {
        "example": {
          "entries": [
            {
              "aggregation": "sum",
              "dimensions": [
                "playerId"
              ],
              "group": "players",
              "metric": "player.online_seconds",
              "points": [
                {
                  "bucketStart": "2026-07-16T00:00:00.000Z",
                  "value": 41820
                },
                {
                  "bucketStart": "2026-07-17T00:00:00.000Z",
                  "value": 43140
                },
                {
                  "bucketStart": "2026-07-18T00:00:00.000Z",
                  "value": 28500
                },
                {
                  "bucketStart": "2026-07-19T00:00:00.000Z",
                  "value": 12240
                },
                {
                  "bucketStart": "2026-07-20T00:00:00.000Z",
                  "value": 39960
                }
              ],
              "previousTotal": 141300,
              "total": 165660,
              "unit": "seconds"
            },
            {
              "aggregation": "sum",
              "dimensions": [],
              "group": "media",
              "metric": "asset.upload_count",
              "points": [
                {
                  "bucketStart": "2026-07-16T00:00:00.000Z",
                  "value": 3
                },
                {
                  "bucketStart": "2026-07-17T00:00:00.000Z",
                  "value": 0
                },
                {
                  "bucketStart": "2026-07-18T00:00:00.000Z",
                  "value": 5
                },
                {
                  "bucketStart": "2026-07-19T00:00:00.000Z",
                  "value": 1
                },
                {
                  "bucketStart": "2026-07-20T00:00:00.000Z",
                  "value": 2
                }
              ],
              "previousTotal": 14,
              "total": 11,
              "unit": "count"
            }
          ],
          "window": {
            "days": 30,
            "from": "2026-06-20T09:15:00.000Z",
            "granularity": "1d",
            "to": "2026-07-20T09:15:00.000Z"
          }
        },
        "properties": {
          "entries": {
            "items": {
              "properties": {
                "aggregation": {
                  "enum": [
                    "sum",
                    "avg",
                    "max"
                  ],
                  "type": "string"
                },
                "dimensions": {
                  "items": {
                    "enum": [
                      "playerId",
                      "deviceId",
                      "sceneId",
                      "appId"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                },
                "group": {
                  "enum": [
                    "players",
                    "scenes",
                    "media",
                    "apps"
                  ],
                  "type": "string"
                },
                "metric": {
                  "pattern": "^[a-z][a-z0-9-]*\\.[a-z][a-z0-9_]*$",
                  "type": "string"
                },
                "points": {
                  "items": {
                    "properties": {
                      "bucketStart": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "value": {
                        "type": "number"
                      }
                    },
                    "required": [
                      "bucketStart",
                      "value"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "previousTotal": {
                  "type": "number"
                },
                "total": {
                  "type": "number"
                },
                "unit": {
                  "enum": [
                    "count",
                    "seconds",
                    "bytes",
                    "ratio",
                    "load"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "metric",
                "group",
                "unit",
                "aggregation",
                "dimensions",
                "points",
                "total",
                "previousTotal"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "window": {
            "properties": {
              "days": {
                "maximum": 365,
                "minimum": 1,
                "type": "integer"
              },
              "from": {
                "format": "date-time",
                "type": "string"
              },
              "granularity": {
                "enum": [
                  "1h",
                  "1d"
                ],
                "type": "string"
              },
              "to": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "from",
              "to",
              "granularity",
              "days"
            ],
            "type": "object"
          }
        },
        "required": [
          "window",
          "entries"
        ],
        "type": "object"
      },
      "GetMyAccessProfileResponse": {
        "example": {
          "actor": {
            "kind": "user",
            "roleVersion": 2,
            "sessionId": "ses_01KXV0E1W0SESSN00000000002",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "userId": "usr_01KFB7QPW0TEAM000000000002"
          },
          "catalog": [
            {
              "appliesTo": [
                "user",
                "apiKey"
              ],
              "category": "composition",
              "defaultRoles": [
                "OWNER",
                "MANAGER"
              ],
              "description": "permission.scene.update.description",
              "isCore": true,
              "key": "scene.update",
              "label": "permission.scene.update.label",
              "requiresResource": true
            },
            {
              "appliesTo": [
                "user",
                "apiKey"
              ],
              "category": "composition",
              "defaultRoles": [
                "OWNER",
                "MANAGER"
              ],
              "description": "permission.scene.publish.description",
              "isCore": true,
              "key": "scene.publish",
              "label": "permission.scene.publish.label",
              "requiresResource": true
            },
            {
              "appliesTo": [
                "user",
                "apiKey"
              ],
              "category": "media",
              "defaultRoles": [
                "OWNER",
                "MANAGER"
              ],
              "description": "permission.asset.upload.description",
              "isCore": true,
              "key": "asset.upload",
              "label": "permission.asset.upload.label",
              "requiresResource": false
            },
            {
              "appliesTo": [
                "user",
                "apiKey"
              ],
              "category": "fleet",
              "defaultRoles": [
                "OWNER",
                "MANAGER",
                "MEMBER"
              ],
              "description": "permission.fleet.player.read.description",
              "isCore": true,
              "key": "fleet.player.read",
              "label": "permission.fleet.player.read.label",
              "requiresResource": true
            },
            {
              "appliesTo": [
                "user"
              ],
              "category": "apps",
              "defaultRoles": [
                "OWNER"
              ],
              "description": "permission.marketplace.app.install.description",
              "isCore": true,
              "key": "marketplace.app.install",
              "label": "permission.marketplace.app.install.label",
              "requiresResource": false
            },
            {
              "appId": "pharmacies-on-duty",
              "appliesTo": [
                "user"
              ],
              "category": "apps",
              "defaultRoles": [
                "OWNER"
              ],
              "description": "permission.pharmacies-on-duty.schedule.import.description",
              "isCore": false,
              "key": "pharmacies-on-duty.schedule.import",
              "label": "permission.pharmacies-on-duty.schedule.import.label",
              "requiresResource": false
            }
          ],
          "grants": [
            {
              "createdAt": "2026-04-14T11:15:00.000Z",
              "expiresAt": null,
              "grantedById": "usr_01KERQ74K0TEAM000000000001",
              "id": "grn_01KFB7SHF0GRANT00000000001",
              "kind": "allow",
              "permissions": [
                "scene.publish",
                "schedule.update"
              ],
              "reason": "Übernimmt die Freigaben, solange die Inhaberin im Urlaub ist.",
              "resourceId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "resourceType": "tenant",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "userId": "usr_01KFB7QPW0TEAM000000000002"
            }
          ],
          "roles": [
            {
              "createdAt": "2026-01-12T09:30:00.000Z",
              "description": "Pflegt Szenen, Wiedergabelisten und Medien und veröffentlicht sie.",
              "id": "rol_01KERPYXWRRECHT00000000002",
              "isBuiltIn": false,
              "name": "Redaktion",
              "permissions": [
                "scene.list",
                "scene.read",
                "scene.create",
                "scene.update",
                "scene.publish",
                "playlist.list",
                "playlist.update",
                "schedule.list",
                "schedule.update",
                "asset.list",
                "asset.read",
                "asset.upload",
                "fleet.player.list",
                "fleet.player.read"
              ],
              "scopeRestrictions": [
                {
                  "kind": "all"
                }
              ],
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-04-14T11:10:00.000Z",
              "version": 2
            }
          ]
        },
        "properties": {
          "actor": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "user"
                    ],
                    "type": "string"
                  },
                  "roleVersion": {
                    "minimum": 0,
                    "type": "integer"
                  },
                  "sessionId": {
                    "pattern": "^ses_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "tenantId": {
                    "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "userId": {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "userId",
                  "tenantId",
                  "sessionId",
                  "roleVersion"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "operator"
                    ],
                    "type": "string"
                  },
                  "operatorUserId": {
                    "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "permissions": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "sessionId": {
                    "pattern": "^ses_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "operatorUserId",
                  "sessionId",
                  "permissions"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "apiKeyId": {
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "apiKey"
                    ],
                    "type": "string"
                  },
                  "rateLimit": {
                    "default": null,
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "scopes": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "tenantId": {
                    "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "userId": {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "apiKeyId",
                  "tenantId",
                  "userId",
                  "scopes"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "issuedById": {
                    "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "operatorApiKey"
                    ],
                    "type": "string"
                  },
                  "operatorApiKeyId": {
                    "type": "string"
                  },
                  "permissions": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "kind",
                  "operatorApiKeyId",
                  "issuedById",
                  "permissions"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "clientId": {
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "oauth"
                    ],
                    "type": "string"
                  },
                  "scopes": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "tenantId": {
                    "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "tokenId": {
                    "type": "string"
                  },
                  "userId": {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "tokenId",
                  "clientId",
                  "tenantId",
                  "userId",
                  "scopes"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "certFingerprint": {
                    "type": "string"
                  },
                  "deviceId": {
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "device"
                    ],
                    "type": "string"
                  },
                  "tenantId": {
                    "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "kind",
                  "deviceId",
                  "tenantId",
                  "certFingerprint"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "deviceId": {
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "renderer"
                    ],
                    "type": "string"
                  },
                  "playerId": {
                    "type": "string"
                  },
                  "rendererSessionId": {
                    "type": "string"
                  },
                  "tenantId": {
                    "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "rendererSessionId",
                  "playerId",
                  "deviceId",
                  "tenantId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "scim"
                    ],
                    "type": "string"
                  },
                  "scimTokenId": {
                    "type": "string"
                  },
                  "tenantId": {
                    "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "scimTokenId",
                  "tenantId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "impersonatedTenantId": {
                    "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "impersonatedUserId": {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "impersonatorOperatorId": {
                    "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "impersonation"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "impersonatedUserId",
                  "impersonatorOperatorId",
                  "impersonatedTenantId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "anonymous"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              }
            ]
          },
          "catalog": {
            "items": {
              "properties": {
                "appId": {
                  "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                  "type": "string"
                },
                "appliesTo": {
                  "items": {
                    "enum": [
                      "user",
                      "operator",
                      "apiKey",
                      "operatorApiKey",
                      "oauth",
                      "device",
                      "renderer",
                      "scim",
                      "impersonation",
                      "anonymous"
                    ],
                    "type": "string"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "category": {
                  "enum": [
                    "identity",
                    "media",
                    "composition",
                    "scheduling",
                    "fleet",
                    "web-displays",
                    "apps",
                    "billing",
                    "platform",
                    "notifications",
                    "audit",
                    "analytics",
                    "advertising",
                    "ops"
                  ],
                  "type": "string"
                },
                "defaultRoles": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "description": {
                  "type": "string"
                },
                "isCore": {
                  "type": "boolean"
                },
                "key": {
                  "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$",
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "requiresResource": {
                  "type": "boolean"
                }
              },
              "required": [
                "key",
                "appliesTo",
                "requiresResource",
                "category",
                "label",
                "description",
                "defaultRoles",
                "isCore"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "grants": {
            "items": {
              "properties": {
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "expiresAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "grantedById": {
                  "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "id": {
                  "pattern": "^grn_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "kind": {
                  "enum": [
                    "allow",
                    "deny"
                  ],
                  "type": "string"
                },
                "permissions": {
                  "items": {
                    "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$",
                    "type": "string"
                  },
                  "type": "array"
                },
                "reason": {
                  "maxLength": 500,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "resourceId": {
                  "type": "string"
                },
                "resourceType": {
                  "enum": [
                    "scene",
                    "playlist",
                    "schedule",
                    "player",
                    "device",
                    "asset",
                    "tenant",
                    "audit-export"
                  ],
                  "type": "string"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "userId": {
                  "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "tenantId",
                "userId",
                "resourceType",
                "resourceId",
                "permissions",
                "kind",
                "grantedById",
                "reason",
                "expiresAt",
                "createdAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "roles": {
            "items": {
              "properties": {
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "description": {
                  "maxLength": 500,
                  "type": "string"
                },
                "id": {
                  "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "isBuiltIn": {
                  "type": "boolean"
                },
                "name": {
                  "maxLength": 100,
                  "minLength": 1,
                  "type": "string"
                },
                "permissions": {
                  "items": {
                    "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$",
                    "type": "string"
                  },
                  "type": "array"
                },
                "scopeRestrictions": {
                  "items": {
                    "oneOf": [
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "all"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "resource-set"
                            ],
                            "type": "string"
                          },
                          "resourceIds": {
                            "items": {
                              "type": "string"
                            },
                            "minItems": 1,
                            "type": "array"
                          },
                          "resourceType": {
                            "enum": [
                              "scene",
                              "playlist",
                              "schedule",
                              "player",
                              "device",
                              "asset",
                              "tenant",
                              "audit-export"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "resourceType",
                          "resourceIds"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "updatedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "version": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "tenantId",
                "name",
                "description",
                "isBuiltIn",
                "permissions",
                "scopeRestrictions",
                "version",
                "createdAt",
                "updatedAt"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "actor",
          "roles",
          "grants",
          "catalog"
        ],
        "type": "object"
      },
      "GetMyCapabilitiesResponse": {
        "example": {
          "capabilities": [
            {
              "key": "players",
              "source": "contract",
              "unlockedByPackage": null,
              "value": 3,
              "valueKind": "count"
            },
            {
              "key": "videoWallLicenses",
              "source": "contract",
              "unlockedByPackage": null,
              "value": 2,
              "valueKind": "count"
            },
            {
              "key": "users",
              "source": "package",
              "unlockedByPackage": null,
              "value": 0,
              "valueKind": "count"
            },
            {
              "key": "storageGb",
              "source": "derived",
              "unlockedByPackage": null,
              "value": 60,
              "valueKind": "gigabytes"
            },
            {
              "key": "sso",
              "source": "contract",
              "unlockedByPackage": null,
              "value": true,
              "valueKind": "boolean"
            },
            {
              "key": "apiAccess",
              "source": "package",
              "unlockedByPackage": "PREMIUM",
              "value": false,
              "valueKind": "boolean"
            },
            {
              "key": "templateLibrary",
              "source": "package",
              "unlockedByPackage": null,
              "value": true,
              "valueKind": "boolean"
            },
            {
              "key": "customBranding",
              "source": "package",
              "unlockedByPackage": null,
              "value": true,
              "valueKind": "boolean"
            },
            {
              "key": "proApps",
              "source": "package",
              "unlockedByPackage": null,
              "value": true,
              "valueKind": "boolean"
            },
            {
              "key": "premiumApps",
              "source": "package",
              "unlockedByPackage": "PREMIUM",
              "value": false,
              "valueKind": "boolean"
            },
            {
              "key": "rolesManagement",
              "source": "package",
              "unlockedByPackage": null,
              "value": true,
              "valueKind": "boolean"
            },
            {
              "key": "customDomain",
              "source": "package",
              "unlockedByPackage": "PREMIUM",
              "value": false,
              "valueKind": "boolean"
            },
            {
              "key": "webhooks",
              "source": "package",
              "unlockedByPackage": "PREMIUM",
              "value": false,
              "valueKind": "boolean"
            },
            {
              "key": "auditExport",
              "source": "standard",
              "unlockedByPackage": null,
              "value": true,
              "valueKind": "boolean"
            },
            {
              "key": "resolutionTier",
              "source": "package",
              "unlockedByPackage": null,
              "value": "uhd",
              "valueKind": "resolutionTier"
            },
            {
              "key": "browserDisplays",
              "source": "package",
              "unlockedByPackage": null,
              "value": true,
              "valueKind": "boolean"
            },
            {
              "key": "multiDisplayPerDevice",
              "source": "package",
              "unlockedByPackage": null,
              "value": true,
              "valueKind": "boolean"
            },
            {
              "key": "videoWalls",
              "source": "app",
              "unlockedByPackage": null,
              "value": true,
              "valueKind": "boolean"
            },
            {
              "key": "displayPowerControl",
              "source": "package",
              "unlockedByPackage": null,
              "value": true,
              "valueKind": "boolean"
            },
            {
              "key": "libraryPlaces",
              "source": "standard",
              "unlockedByPackage": null,
              "value": false,
              "valueKind": "boolean"
            },
            {
              "key": "playbackHistoryDays",
              "source": "package",
              "unlockedByPackage": "PREMIUM",
              "value": 7,
              "valueKind": "count"
            }
          ],
          "currentPackage": "PRO"
        },
        "properties": {
          "capabilities": {
            "items": {
              "properties": {
                "key": {
                  "type": "string"
                },
                "source": {
                  "enum": [
                    "contract",
                    "derived",
                    "package",
                    "app",
                    "operator",
                    "standard"
                  ],
                  "type": "string"
                },
                "unlockedByPackage": {
                  "enum": [
                    "START",
                    "PRO",
                    "PREMIUM",
                    "ENTERPRISE"
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "value": {
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "number"
                    },
                    {
                      "type": "string"
                    }
                  ]
                },
                "valueKind": {
                  "enum": [
                    "boolean",
                    "count",
                    "gigabytes",
                    "resolutionTier",
                    "appStatus"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "key",
                "valueKind",
                "value",
                "source",
                "unlockedByPackage"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "currentPackage": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "currentPackage",
          "capabilities"
        ],
        "type": "object"
      },
      "GetMyFeatureEntitlementsResponse": {
        "example": {
          "browserDisplays": false,
          "delegatedAccess": false,
          "displayPowerControl": false,
          "libraryPlaces": false,
          "locations": false,
          "multiDisplayPerDevice": false,
          "resolutionTier": "fhd",
          "scim": false,
          "videoWalls": false
        },
        "properties": {
          "browserDisplays": {
            "type": "boolean"
          },
          "delegatedAccess": {
            "type": "boolean"
          },
          "displayPowerControl": {
            "type": "boolean"
          },
          "libraryPlaces": {
            "type": "boolean"
          },
          "locations": {
            "type": "boolean"
          },
          "multiDisplayPerDevice": {
            "type": "boolean"
          },
          "resolutionTier": {
            "enum": [
              "fhd",
              "uhd"
            ],
            "type": "string"
          },
          "scim": {
            "type": "boolean"
          },
          "videoWalls": {
            "type": "boolean"
          }
        },
        "required": [
          "resolutionTier",
          "browserDisplays",
          "multiDisplayPerDevice",
          "videoWalls",
          "displayPowerControl",
          "libraryPlaces",
          "locations",
          "scim",
          "delegatedAccess"
        ],
        "type": "object"
      },
      "GetMyPreferencesResponse": {
        "example": {
          "digestCadence": "daily",
          "effective": {
            "analytics.report-failed": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "initiator",
                "permission": "analytics.report.create"
              }
            },
            "analytics.report-ready": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "initiator",
                "permission": "analytics.report.create"
              }
            },
            "app-catalog.release-retired": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "audit.export-ready": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "initiator",
                "permission": "audit.export.create"
              }
            },
            "billing.cancel-scheduled": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.change-failed": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.frozen": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.invoice-issued": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.invoice-paid": {
              "email": "digest",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.license-conflict": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.override-ending": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.past-due": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.payment-failed": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.trial-ending": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.unfrozen": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.vat-id-invalid": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "composition.integrity-issue": {
              "email": "digest",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "fleet.command-failed": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "initiator",
                "permission": "fleet.player.command.issue"
              }
            },
            "fleet.player-offline": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": true,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "identity.device-reregistration-requested": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": true,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "identity.role-changed": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "own-account",
                "permission": null
              }
            },
            "integrations.cloud-connection-broken": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": true,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "integrations.webhook-disabled": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": true,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "invitation.accepted": {
              "email": "off",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "initiator",
                "permission": "identity.user.invite"
              }
            },
            "invitation.expired": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "initiator",
                "permission": "identity.user.invite"
              }
            },
            "join-request.received": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "marketplace.app-installed": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "initiator",
                "permission": "marketplace.app.request"
              }
            },
            "marketplace.data-deletion-scheduled": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "marketplace.install-requested": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "marketplace.pending-reacceptance": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "marketplace.release-switched": {
              "email": "digest",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "marketplace.update-decision-requested": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "marketplace.update-declined": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "initiator",
                "permission": "marketplace.app.request"
              }
            },
            "media.processing-failed": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "initiator",
                "permission": "asset.upload"
              }
            },
            "ops.broadcast": {
              "email": "off",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "member",
                "permission": null
              }
            },
            "ops.incident": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "member",
                "permission": null
              }
            },
            "ops.incident-resolved": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "member",
                "permission": null
              }
            },
            "ops.maintenance": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "member",
                "permission": null
              }
            },
            "ops.maintenance-canceled": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "member",
                "permission": null
              }
            },
            "security.api-key-created": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "security.custom-domain-removed": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "security.impersonation-started": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "own-account",
                "permission": null
              }
            },
            "security.mfa-disabled": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "own-account",
                "permission": null
              }
            },
            "security.password-changed": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "own-account",
                "permission": null
              }
            },
            "security.sso-changed": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "security.theft-detected": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "own-account",
                "permission": null
              }
            },
            "tenancy.custom-domain-verified": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "tenancy.deletion-warning": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": false,
              "inAppAvailable": false,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "tenancy.reactivated": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "tenancy.sso-break-glass-used": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "tenancy.suspended": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": false,
              "inAppAvailable": false,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            }
          },
          "preferences": {
            "billing.invoice-paid": {
              "email": "digest",
              "inApp": true
            },
            "composition.integrity-issue": {
              "email": "digest",
              "inApp": true
            },
            "fleet.player-offline": {
              "email": "immediate",
              "inApp": true
            },
            "ops.broadcast": {
              "email": "off",
              "inApp": true
            }
          },
          "quietHours": {
            "enabled": true,
            "end": "07:00",
            "includeWeekends": true,
            "start": "20:00"
          },
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "userId": "usr_01KERQ74K0TEAM000000000001"
        },
        "properties": {
          "digestCadence": {
            "enum": [
              "off",
              "daily",
              "weekly"
            ],
            "type": "string"
          },
          "effective": {
            "properties": {
              "analytics.report-failed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "analytics.report-ready": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "app-catalog.release-retired": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "audit.export-ready": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.cancel-scheduled": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.change-failed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.frozen": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.invoice-issued": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.invoice-paid": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.license-conflict": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.override-ending": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.past-due": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.payment-failed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.trial-ending": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.unfrozen": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.vat-id-invalid": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "composition.integrity-issue": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "fleet.command-failed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "fleet.player-offline": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "identity.device-reregistration-requested": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "identity.role-changed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "integrations.cloud-connection-broken": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "integrations.webhook-disabled": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "invitation.accepted": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "invitation.expired": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "join-request.received": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "marketplace.app-installed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "marketplace.data-deletion-scheduled": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "marketplace.install-requested": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "marketplace.pending-reacceptance": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "marketplace.release-switched": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "marketplace.update-decision-requested": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "marketplace.update-declined": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "media.processing-failed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "ops.broadcast": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "ops.incident": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "ops.incident-resolved": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "ops.maintenance": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "ops.maintenance-canceled": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "security.api-key-created": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "security.custom-domain-removed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "security.impersonation-started": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "security.mfa-disabled": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "security.password-changed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "security.sso-changed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "security.theft-detected": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "tenancy.custom-domain-verified": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "tenancy.deletion-warning": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "tenancy.reactivated": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "tenancy.sso-break-glass-used": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "tenancy.suspended": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              }
            },
            "type": "object"
          },
          "preferences": {
            "additionalProperties": {
              "properties": {
                "email": {
                  "enum": [
                    "off",
                    "immediate",
                    "digest"
                  ],
                  "type": "string"
                },
                "inApp": {
                  "type": "boolean"
                }
              },
              "required": [
                "inApp",
                "email"
              ],
              "type": "object"
            },
            "type": "object"
          },
          "quietHours": {
            "$ref": "#/components/schemas/QuietHours"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "userId": {
            "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "userId",
          "tenantId",
          "preferences",
          "digestCadence",
          "quietHours",
          "effective"
        ],
        "type": "object"
      },
      "GetMyUiStateResponse": {
        "example": {
          "dismissed": {
            "betrieb.wartung": "2099-01-01T06:00:00.000Z"
          }
        },
        "properties": {
          "dismissed": {
            "additionalProperties": {
              "format": "date-time",
              "type": "string"
            },
            "type": "object"
          }
        },
        "required": [
          "dismissed"
        ],
        "type": "object"
      },
      "GetPackageChangeImpactResponse": {
        "example": {
          "blockedScenes": {
            "names": [
              "Notdienst & Wetter",
              "Willkommen & Öffnungszeiten"
            ],
            "total": 2
          },
          "currentPackageCode": "PRO",
          "empty": false,
          "lockedApps": [
            {
              "appId": "pharmacies-on-duty",
              "name": "Notdienst",
              "reason": "pro-required"
            },
            {
              "appId": "opening-hours",
              "name": "Öffnungszeiten",
              "reason": "pro-required"
            }
          ],
          "lostCapabilities": [
            {
              "from": true,
              "key": "templateLibrary",
              "kind": "boolean",
              "to": false
            },
            {
              "from": "uhd",
              "key": "resolutionTier",
              "kind": "resolutionTier",
              "to": "fhd"
            },
            {
              "from": 7,
              "key": "playbackHistoryDays",
              "kind": "count",
              "to": 0
            }
          ],
          "seats": {
            "inUse": 3,
            "max": 2,
            "over": 1
          },
          "targetPackageCode": "START"
        },
        "properties": {
          "blockedScenes": {
            "properties": {
              "names": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "total": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "total",
              "names"
            ],
            "type": "object"
          },
          "currentPackageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "empty": {
            "type": "boolean"
          },
          "lockedApps": {
            "items": {
              "properties": {
                "appId": {
                  "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "reason": {
                  "enum": [
                    "ok",
                    "pro-required",
                    "premium-required",
                    "booking-required",
                    "exempt"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "appId",
                "name",
                "reason"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "lostCapabilities": {
            "items": {
              "properties": {
                "from": {
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "number"
                    },
                    {
                      "type": "string"
                    }
                  ]
                },
                "key": {
                  "type": "string"
                },
                "kind": {
                  "enum": [
                    "boolean",
                    "count",
                    "gigabytes",
                    "resolutionTier",
                    "appStatus"
                  ],
                  "type": "string"
                },
                "to": {
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "number"
                    },
                    {
                      "type": "string"
                    }
                  ]
                }
              },
              "required": [
                "key",
                "kind",
                "from",
                "to"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "seats": {
            "properties": {
              "inUse": {
                "minimum": 0,
                "type": "integer"
              },
              "max": {
                "minimum": 0,
                "type": "integer"
              },
              "over": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "inUse",
              "max",
              "over"
            ],
            "type": "object"
          },
          "targetPackageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": "string"
          }
        },
        "required": [
          "currentPackageCode",
          "targetPackageCode",
          "lockedApps",
          "blockedScenes",
          "seats",
          "lostCapabilities",
          "empty"
        ],
        "type": "object"
      },
      "GetPackageChangePreviewResponse": {
        "example": {
          "blockers": [],
          "currency": "EUR",
          "currentMonthlyTotalCents": 3756,
          "currentPackageCode": "START",
          "currentUnitPriceCents": 1252,
          "deactivatedApps": [],
          "displays": 3,
          "displaysOverCap": 0,
          "dueToday": {
            "grossCents": 6174,
            "netCents": 5188,
            "vatCents": 986
          },
          "effectiveAt": "2026-08-16T00:00:00.000Z",
          "endsTrial": false,
          "maxDisplays": null,
          "minDisplays": 1,
          "remainingDays": 15,
          "rule": "R1",
          "targetMonthlyTotalCents": 5772,
          "targetPackageCode": "PRO",
          "targetState": [
            {
              "carriesDisplays": true,
              "currentQuantity": 3,
              "outcome": "changed",
              "packageCode": "PRO",
              "quantity": 3,
              "skuCode": "PKG-PRO"
            },
            {
              "carriesDisplays": false,
              "currentQuantity": 1,
              "outcome": "unchanged",
              "packageCode": null,
              "quantity": 1,
              "skuCode": "APP-pharmacies-on-duty"
            },
            {
              "carriesDisplays": false,
              "currentQuantity": 1,
              "outcome": "unchanged",
              "packageCode": null,
              "quantity": 1,
              "skuCode": "LIZ-VIDEOWALL"
            }
          ],
          "targetUnitPriceCents": 1924,
          "trialUnpaidQuantity": 0,
          "unchanged": false,
          "vatRatePercent": 19
        },
        "properties": {
          "blockers": {
            "default": [],
            "items": {
              "enum": [
                "billing-profile-missing",
                "payment-way-missing",
                "overdue-invoice",
                "payment-failed",
                "tenant-frozen",
                "contract-suspended",
                "cancel-pending",
                "eu-b2b-vat-id-required",
                "goods-abroad-unsupported",
                "issuer-exemption-missing"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "currency": {
            "enum": [
              "EUR"
            ],
            "type": "string"
          },
          "currentMonthlyTotalCents": {
            "minimum": 0,
            "type": "integer"
          },
          "currentPackageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "currentUnitPriceCents": {
            "minimum": 0,
            "type": "integer"
          },
          "deactivatedApps": {
            "items": {
              "properties": {
                "appId": {
                  "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                  "type": "string"
                },
                "displayName": {
                  "type": "string"
                },
                "minPackage": {
                  "enum": [
                    "START",
                    "PRO",
                    "PREMIUM",
                    "ENTERPRISE"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "appId",
                "displayName",
                "minPackage"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "displays": {
            "minimum": 0,
            "type": "integer"
          },
          "displaysOverCap": {
            "minimum": 0,
            "type": "integer"
          },
          "dueToday": {
            "$ref": "#/components/schemas/BillingAmountBlock"
          },
          "effectiveAt": {
            "format": "date-time",
            "type": "string"
          },
          "endsTrial": {
            "type": "boolean"
          },
          "maxDisplays": {
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "minDisplays": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "remainingDays": {
            "minimum": 0,
            "type": "integer"
          },
          "rule": {
            "enum": [
              "R1",
              "R2"
            ],
            "type": "string"
          },
          "targetMonthlyTotalCents": {
            "minimum": 0,
            "type": "integer"
          },
          "targetPackageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": "string"
          },
          "targetState": {
            "items": {
              "$ref": "#/components/schemas/BillingTargetStatePosition"
            },
            "type": "array"
          },
          "targetUnitPriceCents": {
            "minimum": 0,
            "type": "integer"
          },
          "trialUnpaidQuantity": {
            "minimum": 0,
            "type": "integer"
          },
          "unchanged": {
            "default": false,
            "type": "boolean"
          },
          "vatRatePercent": {
            "maximum": 100,
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "currentPackageCode",
          "targetPackageCode",
          "rule",
          "effectiveAt",
          "targetState",
          "dueToday",
          "displays",
          "currency",
          "vatRatePercent",
          "currentUnitPriceCents",
          "targetUnitPriceCents",
          "currentMonthlyTotalCents",
          "targetMonthlyTotalCents",
          "endsTrial",
          "trialUnpaidQuantity",
          "remainingDays",
          "maxDisplays",
          "minDisplays",
          "displaysOverCap",
          "deactivatedApps"
        ],
        "type": "object"
      },
      "GetPermissionCatalogResponse": {
        "example": {
          "entries": [
            {
              "appliesTo": [
                "user",
                "apiKey"
              ],
              "category": "composition",
              "defaultRoles": [
                "OWNER",
                "MANAGER"
              ],
              "description": "permission.scene.update.description",
              "isCore": true,
              "key": "scene.update",
              "label": "permission.scene.update.label",
              "requiresResource": true
            },
            {
              "appliesTo": [
                "user",
                "apiKey"
              ],
              "category": "composition",
              "defaultRoles": [
                "OWNER",
                "MANAGER"
              ],
              "description": "permission.scene.publish.description",
              "isCore": true,
              "key": "scene.publish",
              "label": "permission.scene.publish.label",
              "requiresResource": true
            },
            {
              "appliesTo": [
                "user",
                "apiKey"
              ],
              "category": "media",
              "defaultRoles": [
                "OWNER",
                "MANAGER"
              ],
              "description": "permission.asset.upload.description",
              "isCore": true,
              "key": "asset.upload",
              "label": "permission.asset.upload.label",
              "requiresResource": false
            },
            {
              "appliesTo": [
                "user",
                "apiKey"
              ],
              "category": "fleet",
              "defaultRoles": [
                "OWNER",
                "MANAGER",
                "MEMBER"
              ],
              "description": "permission.fleet.player.read.description",
              "isCore": true,
              "key": "fleet.player.read",
              "label": "permission.fleet.player.read.label",
              "requiresResource": true
            },
            {
              "appliesTo": [
                "user"
              ],
              "category": "apps",
              "defaultRoles": [
                "OWNER"
              ],
              "description": "permission.marketplace.app.install.description",
              "isCore": true,
              "key": "marketplace.app.install",
              "label": "permission.marketplace.app.install.label",
              "requiresResource": false
            },
            {
              "appId": "pharmacies-on-duty",
              "appliesTo": [
                "user"
              ],
              "category": "apps",
              "defaultRoles": [
                "OWNER"
              ],
              "description": "permission.pharmacies-on-duty.schedule.import.description",
              "isCore": false,
              "key": "pharmacies-on-duty.schedule.import",
              "label": "permission.pharmacies-on-duty.schedule.import.label",
              "requiresResource": false
            }
          ]
        },
        "properties": {
          "entries": {
            "items": {
              "properties": {
                "appId": {
                  "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                  "type": "string"
                },
                "appliesTo": {
                  "items": {
                    "enum": [
                      "user",
                      "operator",
                      "apiKey",
                      "operatorApiKey",
                      "oauth",
                      "device",
                      "renderer",
                      "scim",
                      "impersonation",
                      "anonymous"
                    ],
                    "type": "string"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "category": {
                  "enum": [
                    "identity",
                    "media",
                    "composition",
                    "scheduling",
                    "fleet",
                    "web-displays",
                    "apps",
                    "billing",
                    "platform",
                    "notifications",
                    "audit",
                    "analytics",
                    "advertising",
                    "ops"
                  ],
                  "type": "string"
                },
                "defaultRoles": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "description": {
                  "type": "string"
                },
                "isCore": {
                  "type": "boolean"
                },
                "key": {
                  "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$",
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "requiresResource": {
                  "type": "boolean"
                }
              },
              "required": [
                "key",
                "appliesTo",
                "requiresResource",
                "category",
                "label",
                "description",
                "defaultRoles",
                "isCore"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "entries"
        ],
        "type": "object"
      },
      "GetPlayerDayResponse": {
        "example": {
          "date": "2026-10-10",
          "display": {
            "diagonalInches": 55,
            "locationId": "loc_01KHK4B3T0ADRESSE000000001",
            "locationName": "Hauptstelle",
            "name": "Schaufenster Eingang",
            "orientation": "landscape",
            "panelConfirmed": true,
            "placement": "window",
            "playerId": "ply_01KHK34MQ0SCREEN0000000001"
          },
          "events": [
            {
              "at": "2026-10-10T08:00:00.000Z",
              "code": null,
              "content": null,
              "count": null,
              "kind": "offline",
              "until": "2026-10-10T11:00:00.000Z"
            },
            {
              "at": "2026-10-10T10:58:00.000Z",
              "code": "power_restored",
              "content": null,
              "count": null,
              "kind": "restart",
              "until": null
            }
          ],
          "from": "2026-10-09T22:00:00.000Z",
          "hours": [
            {
              "errorSeconds": 0,
              "gapSeconds": 0,
              "hiddenSeconds": 0,
              "hourStart": "2026-10-10T07:00:00.000Z",
              "late": false,
              "localHour": 9,
              "observedSeconds": 3600,
              "panelOffSeconds": 0,
              "plannedAdPlays": 12,
              "plannedSeconds": 3600,
              "plays": {
                "direct": 11,
                "fallback": 0,
                "invalid": 2,
                "network": 0,
                "own": 96,
                "total": 109
              },
              "visibleSeconds": 3600
            },
            {
              "errorSeconds": 0,
              "gapSeconds": 3600,
              "hiddenSeconds": 0,
              "hourStart": "2026-10-10T08:00:00.000Z",
              "late": false,
              "localHour": 10,
              "observedSeconds": 0,
              "panelOffSeconds": 0,
              "plannedAdPlays": 12,
              "plannedSeconds": 3600,
              "plays": {
                "direct": 0,
                "fallback": 0,
                "invalid": 0,
                "network": 0,
                "own": 0,
                "total": 0
              },
              "visibleSeconds": 0
            }
          ],
          "intervals": [
            {
              "from": "2026-10-10T07:00:00.000Z",
              "state": "visible",
              "to": "2026-10-10T08:00:00.000Z"
            },
            {
              "from": "2026-10-10T08:00:00.000Z",
              "state": "gap",
              "to": "2026-10-10T11:00:00.000Z"
            },
            {
              "from": "2026-10-10T11:00:00.000Z",
              "state": "visible",
              "to": "2026-10-10T12:00:00.000Z"
            }
          ],
          "notices": [
            {
              "code": "openGaps",
              "params": {
                "deadline": "2026-10-17T09:00:00.000Z",
                "hours": 3
              },
              "text": "3 Planstunden sind noch nicht gemeldet und können bis 17.10.2026, 11:00 nachkommen. Die Zahlen können noch steigen."
            }
          ],
          "observations": [
            {
              "from": "2026-10-10T06:55:00.000Z",
              "to": "2026-10-10T08:00:00.000Z"
            },
            {
              "from": "2026-10-10T11:00:00.000Z",
              "to": "2026-10-10T12:05:00.000Z"
            }
          ],
          "panel": [
            {
              "from": "2026-10-10T06:55:00.000Z",
              "source": "cec",
              "state": "on",
              "to": "2026-10-10T12:05:00.000Z"
            }
          ],
          "plan": [
            {
              "changedBy": null,
              "content": {
                "id": "pll_01KWV91ZS0PRGRAMM000000001",
                "kind": "playlist",
                "name": "Tagesprogramm"
              },
              "from": "2026-10-10T07:00:00.000Z",
              "kind": "playlist",
              "pods": [
                {
                  "networkPositions": 0,
                  "offsetMs": 120000,
                  "podItemId": "pli_01KXR6B7D8ENTRY00000000005",
                  "positions": 1,
                  "spotDurationMs": 10000
                }
              ],
              "rotation": {
                "anchorAt": "2026-10-10T07:00:00.000Z",
                "cycleMs": 300000,
                "itemCount": 4
              },
              "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001",
              "scheduleName": "Ladenprogramm",
              "to": "2026-10-10T12:00:00.000Z"
            }
          ],
          "timezone": "Europe/Berlin",
          "to": "2026-10-10T22:00:00.000Z",
          "totals": {
            "availability": {
              "upper": 1,
              "value": 0.4
            },
            "invalidPlays": 4,
            "plannedAdPlays": 60,
            "plannedSeconds": 18000,
            "plays": 214,
            "validAdPlays": 22,
            "validPlays": 210,
            "visibleSeconds": 7200
          }
        },
        "properties": {
          "date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "display": {
            "$ref": "#/components/schemas/AnalyticsPlayerDayDisplay"
          },
          "events": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsDayEvent"
            },
            "type": "array"
          },
          "from": {
            "format": "date-time",
            "type": "string"
          },
          "hours": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsPlayerDayHour"
            },
            "type": "array"
          },
          "intervals": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsDisplayStateInterval"
            },
            "type": "array"
          },
          "notices": {
            "items": {
              "$ref": "#/components/schemas/ExploreNotice"
            },
            "type": "array"
          },
          "observations": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsObservationInterval"
            },
            "type": "array"
          },
          "panel": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsPanelInterval"
            },
            "type": "array"
          },
          "plan": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsPlanSegmentView"
            },
            "type": "array"
          },
          "timezone": {
            "type": "string"
          },
          "to": {
            "format": "date-time",
            "type": "string"
          },
          "totals": {
            "$ref": "#/components/schemas/AnalyticsPlayerDayTotals"
          }
        },
        "required": [
          "display",
          "date",
          "timezone",
          "from",
          "to",
          "totals",
          "hours",
          "intervals",
          "panel",
          "observations",
          "plan",
          "events",
          "notices"
        ],
        "type": "object"
      },
      "GetPlayerPlaybackHistoryResponse": {
        "example": {
          "computedAt": "2026-07-20T22:25:00.000Z",
          "date": "2026-07-20",
          "recorded": true,
          "recordedAt": "2026-07-20T22:25:03.000Z",
          "segments": [
            {
              "contentLabel": "Tagesprogramm",
              "endsAt": "2026-07-20T09:30:00.000Z",
              "kind": "play",
              "rotation": {
                "cycleMs": 45000,
                "itemCount": 2
              },
              "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001",
              "scheduleItemId": null,
              "scheduleName": "Ladenprogramm",
              "startsAt": "2026-07-20T06:00:00.000Z"
            }
          ],
          "timezone": "Europe/Berlin"
        },
        "properties": {
          "computedAt": {
            "format": "date-time",
            "type": "string"
          },
          "date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "recorded": {
            "type": "boolean"
          },
          "recordedAt": {
            "format": "date-time",
            "type": "string"
          },
          "segments": {
            "items": {
              "properties": {
                "contentLabel": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "endsAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "kind": {
                  "enum": [
                    "play",
                    "pause",
                    "gap"
                  ],
                  "type": "string"
                },
                "rotation": {
                  "properties": {
                    "cycleMs": {
                      "exclusiveMinimum": 0,
                      "type": "integer"
                    },
                    "itemCount": {
                      "exclusiveMinimum": 0,
                      "type": "integer"
                    }
                  },
                  "required": [
                    "itemCount",
                    "cycleMs"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "scheduleId": {
                  "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "scheduleItemId": {
                  "pattern": "^sci_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "scheduleName": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "startsAt": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "required": [
                "startsAt",
                "endsAt",
                "kind",
                "scheduleId",
                "scheduleName",
                "scheduleItemId",
                "contentLabel",
                "rotation"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "timezone": {
            "type": "string"
          }
        },
        "required": [
          "date",
          "timezone",
          "recorded",
          "computedAt",
          "recordedAt",
          "segments"
        ],
        "type": "object"
      },
      "GetPlayerProgramResponse": {
        "example": {
          "program": {
            "override": {
              "content": {
                "kind": "scene",
                "sceneId": "scn_01KJPX8NH0SZENE00000000001"
              },
              "setAt": "2026-07-20T08:00:00.000Z",
              "setById": "usr_01KERQ74K0TEAM000000000001",
              "until": "2026-07-20T16:00:00.000Z"
            },
            "playerId": "ply_01KHK34MQ0SCREEN0000000001",
            "program": {
              "kind": "schedule",
              "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001"
            },
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-20T08:00:00.000Z",
            "updatedById": "usr_01KERQ74K0TEAM000000000001",
            "version": 3
          }
        },
        "properties": {
          "program": {
            "properties": {
              "override": {
                "properties": {
                  "content": {
                    "oneOf": [
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "schedule"
                            ],
                            "type": "string"
                          },
                          "scheduleId": {
                            "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "scheduleId"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "scene"
                            ],
                            "type": "string"
                          },
                          "sceneId": {
                            "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "sceneId"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "playlist"
                            ],
                            "type": "string"
                          },
                          "playlistId": {
                            "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "playlistId"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "assetId": {
                            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          },
                          "kind": {
                            "enum": [
                              "media"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "assetId"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "setAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "setById": {
                    "anyOf": [
                      {
                        "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      {
                        "pattern": "^[0-9a-f]{64}$",
                        "type": "string"
                      }
                    ]
                  },
                  "until": {
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "required": [
                  "content",
                  "until",
                  "setAt",
                  "setById"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "playerId": {
                "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "program": {
                "oneOf": [
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "schedule"
                        ],
                        "type": "string"
                      },
                      "scheduleId": {
                        "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "scheduleId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "scene"
                        ],
                        "type": "string"
                      },
                      "sceneId": {
                        "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "sceneId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "playlist"
                        ],
                        "type": "string"
                      },
                      "playlistId": {
                        "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "playlistId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "assetId": {
                        "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "kind": {
                        "enum": [
                          "media"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "assetId"
                    ],
                    "type": "object"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "updatedById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  }
                ]
              },
              "version": {
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "playerId",
              "tenantId",
              "program",
              "override",
              "updatedById",
              "updatedAt",
              "version"
            ],
            "type": [
              "object",
              "null"
            ]
          }
        },
        "required": [
          "program"
        ],
        "type": "object"
      },
      "GetPlayerResponse": {
        "example": {
          "allowedRenderResolution": {
            "height": 1080,
            "limitedBy": "output",
            "width": 1920
          },
          "deviceCapabilities": {
            "compute": {
              "ramMb": 8192,
              "storageGb": 112
            },
            "deviceKind": "pi-5",
            "media": {
              "hardwareCodecs": [
                "hevc"
              ],
              "videoPlane": true
            },
            "outputs": [
              {
                "connected": true,
                "connector": "HDMI-A-1",
                "controls": {
                  "cecPower": true,
                  "ddcBrightness": false
                },
                "edid": {
                  "diagonalInch": 42.5,
                  "manufacturer": "SAM",
                  "model": "SAMSUNG"
                },
                "heightPx": 2160,
                "refreshHz": 60,
                "widthPx": 3840
              },
              {
                "connected": false,
                "connector": "HDMI-A-2"
              }
            ],
            "reportedAt": "2026-07-20T09:14:32.000Z",
            "software": {
              "agent": {
                "buildSha": "7d3f0b2c91ae",
                "loopback": 1,
                "releaseSeq": 12,
                "version": "1.8.3"
              },
              "channel": "stable",
              "os": {
                "launcher": 1,
                "releaseSeq": 3,
                "version": "2026.6.1"
              },
              "renderer": {
                "activatedAt": "2026-07-20T08:21:40.000Z",
                "build": "c41e09a7f2b3",
                "profile": "modern",
                "releaseSeq": 41,
                "source": "bundle",
                "version": "0.4.12"
              }
            }
          },
          "deviceDisplays": [
            {
              "connector": "HDMI-A-1",
              "lastHeartbeatAt": "2026-07-20T09:14:32.000Z",
              "name": "Schaufenster Eingang",
              "playerId": "ply_01KHK34MQ0SCREEN0000000001",
              "screenIndex": 0,
              "status": "online"
            }
          ],
          "deviceName": "Player D31C",
          "playbackHistoryDays": 7,
          "player": {
            "config": {
              "audioMuted": true,
              "brightness": 100,
              "contentFit": "contain",
              "identifyPulseColor": "#1f6f4a",
              "resolutionMode": "auto",
              "rotation": 0
            },
            "connector": "HDMI-A-1",
            "createdAt": "2026-02-16T11:25:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "decommissionedAt": null,
            "description": "Querformat-Bildschirm im Schaufenster, sichtbar von der Straße.",
            "deviceId": "dev_01KHK32T40GERAET0000000001",
            "deviceKind": "pi",
            "geoLocation": {
              "accuracyM": 28,
              "city": "Hamburg",
              "country": "DE",
              "determinedAt": "2026-07-18T06:12:00.000Z",
              "lat": 53.5511,
              "lng": 9.9937,
              "postalCode": "22765",
              "region": "Hamburg",
              "source": "wifi",
              "street": "Bahnhofstraße 12"
            },
            "host": "szenera-os",
            "id": "ply_01KHK34MQ0SCREEN0000000001",
            "lastHeartbeatAt": "2026-07-20T09:14:32.000Z",
            "lastSnapshotHash": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95",
            "lastTelemetry": {
              "agent": {
                "buildSha": "9f41c0e7b2",
                "renderTokenExpiresAt": "2099-12-31T23:59:59.000Z",
                "version": "1.8.3"
              },
              "apps": [
                {
                  "id": "pharmacies-on-duty",
                  "installedAt": "2026-07-14T04:12:51.000Z",
                  "sizeBytes": 1248576,
                  "version": "1.4.0"
                },
                {
                  "id": "weather",
                  "installedAt": "2026-06-28T03:41:09.000Z",
                  "sizeBytes": 486400,
                  "version": "2.1.3"
                },
                {
                  "id": "opening-hours",
                  "installedAt": "2026-05-02T22:07:33.000Z",
                  "sizeBytes": 312320,
                  "version": "1.0.2"
                }
              ],
              "chromium": {
                "cdpConnected": true,
                "lastFrameAt": "2026-07-20T09:14:32.000Z",
                "memoryMb": 612,
                "state": "rendering"
              },
              "cpuTempC": 57.4,
              "disk": {
                "rootTotal": 15032385536,
                "rootUsed": 6442450944,
                "stateTotal": 120259084288,
                "stateUsed": 15032385536
              },
              "display": {
                "connected": true,
                "connector": "HDMI-A-1",
                "diagonalInch": 42.5,
                "heightPx": 2160,
                "manufacturer": "SAM",
                "model": "QM43R",
                "refreshHz": 60,
                "serial": "0BQH3CKN800142",
                "widthPx": 3840
              },
              "hardware": {
                "coreVolts": 0.9,
                "cpuCores": 4,
                "cpuModel": "Cortex-A76",
                "kernel": "6.12.96+rpt-rpi-2712",
                "model": "Raspberry Pi 5 Model B Rev 1.0",
                "serial": "10000000d4e5f6a7",
                "storageHealthPercent": 98,
                "throttledEver": false,
                "throttledNow": false
              },
              "loadAvg": [
                0.07,
                0.09,
                0.08
              ],
              "mediaCache": {
                "entries": [
                  {
                    "ageSeconds": 7412,
                    "assetId": "ast_01KW95DD30MEDEN00000000001",
                    "mediaKey": "9d4f2b8c1e07a5364bd80f9127ce5a3b6408df215c93ea7b0d6154f8a2b3c70e-webp",
                    "present": true,
                    "sizeBytes": 1884160
                  },
                  {
                    "ageSeconds": 7412,
                    "assetId": "ast_01KXJY2V30MEDEN00000000004",
                    "mediaKey": "8b3c07e2f5914da6c0b78e34215fd9c608a7b3e1420d95f6ca87b0e39d152c4f-webp",
                    "present": true,
                    "sizeBytes": 428241
                  },
                  {
                    "assetId": "ast_01KKEQYSM0MEDEN00000000002",
                    "mediaKey": "41a7c0e93b2d58f6041e7cb85d29a3f70c6b1948de52370af8b6c1d094e2537a-playback",
                    "present": false,
                    "sizeBytes": 262227456
                  }
                ],
                "entryCount": 3,
                "limitBytes": 10737418240,
                "overflowBytes": 0,
                "presentCount": 2,
                "requiredBytes": 264539857,
                "usedBytes": 2312401
              },
              "memory": {
                "freeMb": 6656,
                "total": 8192,
                "used": 1536
              },
              "network": {
                "apiLatencyMs": 76,
                "apiReachable": true,
                "gateway": "192.0.2.1",
                "iface": "wlan0",
                "ip": "192.0.2.24",
                "macAddress": "2c:cf:67:92:fb:76",
                "tailscaleConnected": false,
                "wifiChannel": 36,
                "wifiFrequencyMhz": 5180,
                "wifiSignal": -68,
                "wifiSsid": "Apotheke-Backoffice",
                "wifiTxRateMbps": 433.3
              },
              "rauc": {
                "bootedFromTryboot": false,
                "currentSlot": "A",
                "lastSuccessAt": "2026-07-20T09:14:32.000Z"
              },
              "renderer": {
                "activatedAt": "2026-07-20T08:27:00.000Z",
                "build": "c41e09a7f2b3",
                "capabilities": [
                  "adPods"
                ],
                "failures": 0,
                "linkOnline": false,
                "profile": "modern",
                "releaseSeq": 41,
                "resilience": "fresh",
                "source": "bundle",
                "state": "scene",
                "version": "0.4.12"
              },
              "screens": [
                {
                  "chromium": {
                    "cdpConnected": false,
                    "state": "rendering"
                  },
                  "powerIntent": "on",
                  "powerState": "on",
                  "renderer": {
                    "failures": 0,
                    "linkOnline": false,
                    "resilience": "fresh",
                    "state": "scene"
                  },
                  "screenIndex": 0
                }
              ],
              "snapshot": {
                "lastCheckedAt": "2026-07-20T09:12:04.000Z",
                "lastRefreshAt": "2026-07-20T06:00:12.000Z",
                "manifestHash": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95",
                "stale": false
              },
              "time": {
                "ntpSynchronized": true,
                "offsetMs": 12,
                "timezone": "Europe/Berlin"
              },
              "uptime": 431520
            },
            "locationId": "loc_01KHK4B3T0ADRESSE000000001",
            "name": "Schaufenster Eingang",
            "otaState": {
              "bootDurationMs": 41200,
              "installedVersion": "2026.6.1",
              "lastError": null,
              "lastTransitionAt": "2026-07-16T02:14:38.000Z",
              "phase": "completed",
              "rollbackReason": null,
              "targetVersion": "2026.6.1"
            },
            "screenIndex": 0,
            "status": "online",
            "suspendedAt": null,
            "suspendedReason": null,
            "tagIds": [
              "ptg_01KHK403M0TAG0000000000001"
            ],
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-16T02:14:38.000Z",
            "version": 7
          }
        },
        "properties": {
          "allowedRenderResolution": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AllowedRenderResolution"
              },
              {
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "deviceCapabilities": {
            "$ref": "#/components/schemas/DeviceCapabilities"
          },
          "deviceDisplays": {
            "items": {
              "properties": {
                "connector": {
                  "maxLength": 32,
                  "minLength": 1,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "lastHeartbeatAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": {
                  "type": "string"
                },
                "playerId": {
                  "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "screenIndex": {
                  "maximum": 7,
                  "minimum": 0,
                  "type": "integer"
                },
                "status": {
                  "enum": [
                    "online",
                    "stale",
                    "offline",
                    "paired-not-claimed",
                    "suspended",
                    "decommissioned"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "playerId",
                "name",
                "screenIndex",
                "connector",
                "status",
                "lastHeartbeatAt"
              ],
              "type": "object"
            },
            "maxItems": 8,
            "type": "array"
          },
          "deviceName": {
            "type": [
              "string",
              "null"
            ]
          },
          "playbackHistoryDays": {
            "minimum": 0,
            "type": "integer"
          },
          "player": {
            "properties": {
              "config": {
                "properties": {
                  "audioMuted": {
                    "type": "boolean"
                  },
                  "brightness": {
                    "maximum": 100,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "contentFit": {
                    "anyOf": [
                      {
                        "enum": [
                          "contain"
                        ],
                        "type": "string"
                      },
                      {
                        "enum": [
                          "cover"
                        ],
                        "type": "string"
                      }
                    ],
                    "default": "contain"
                  },
                  "identifyPulseColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  },
                  "resolutionMode": {
                    "anyOf": [
                      {
                        "enum": [
                          "auto"
                        ],
                        "type": "string"
                      },
                      {
                        "properties": {
                          "height": {
                            "maximum": 4320,
                            "minimum": 1,
                            "type": "integer"
                          },
                          "width": {
                            "maximum": 7680,
                            "minimum": 1,
                            "type": "integer"
                          }
                        },
                        "required": [
                          "width",
                          "height"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "rotation": {
                    "anyOf": [
                      {
                        "enum": [
                          0
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          90
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          180
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          270
                        ],
                        "type": "number"
                      }
                    ]
                  }
                },
                "required": [
                  "audioMuted",
                  "brightness",
                  "rotation",
                  "resolutionMode",
                  "identifyPulseColor"
                ],
                "type": "object"
              },
              "connector": {
                "maxLength": 32,
                "minLength": 1,
                "type": [
                  "string",
                  "null"
                ]
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "createdById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "decommissionedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "description": {
                "maxLength": 500,
                "type": "string"
              },
              "deviceId": {
                "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "deviceKind": {
                "enum": [
                  "pi",
                  "browser"
                ],
                "type": "string"
              },
              "geoLocation": {
                "properties": {
                  "accuracyM": {
                    "minimum": 0,
                    "type": "number"
                  },
                  "city": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "country": {
                    "maxLength": 2,
                    "minLength": 2,
                    "type": "string"
                  },
                  "determinedAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "lat": {
                    "maximum": 90,
                    "minimum": -90,
                    "type": "number"
                  },
                  "lng": {
                    "maximum": 180,
                    "minimum": -180,
                    "type": "number"
                  },
                  "postalCode": {
                    "maxLength": 20,
                    "type": "string"
                  },
                  "region": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "source": {
                    "enum": [
                      "wifi",
                      "ip",
                      "manual"
                    ],
                    "type": "string"
                  },
                  "street": {
                    "maxLength": 200,
                    "type": "string"
                  }
                },
                "required": [
                  "lat",
                  "lng",
                  "accuracyM",
                  "source",
                  "determinedAt"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "host": {
                "enum": [
                  "szenera-os",
                  "fire-tv",
                  "tizen",
                  "webos",
                  "web-display"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "lastHeartbeatAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastSnapshotHash": {
                "maxLength": 128,
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastTelemetry": {
                "properties": {
                  "agent": {
                    "properties": {
                      "buildSha": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "renderTokenExpiresAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "version": {
                        "maxLength": 100,
                        "type": "string"
                      }
                    },
                    "required": [
                      "version"
                    ],
                    "type": "object"
                  },
                  "appFailures": {
                    "items": {
                      "properties": {
                        "id": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "reason": {
                          "enum": [
                            "missing",
                            "rejected",
                            "failed"
                          ],
                          "type": "string"
                        },
                        "since": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "version": {
                          "maxLength": 64,
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "version",
                        "reason",
                        "since"
                      ],
                      "type": "object"
                    },
                    "maxItems": 20,
                    "type": "array"
                  },
                  "apps": {
                    "items": {
                      "properties": {
                        "id": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "installedAt": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "sizeBytes": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "version": {
                          "maxLength": 64,
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "version"
                      ],
                      "type": "object"
                    },
                    "maxItems": 50,
                    "type": "array"
                  },
                  "chromium": {
                    "properties": {
                      "cdpConnected": {
                        "type": "boolean"
                      },
                      "lastFrameAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "memoryMb": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "state": {
                        "enum": [
                          "rendering",
                          "pairing",
                          "hung",
                          "starting",
                          "stopped",
                          "unplugged"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "state"
                    ],
                    "type": "object"
                  },
                  "cpuTempC": {
                    "type": "number"
                  },
                  "disk": {
                    "properties": {
                      "rootTotal": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "rootUsed": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "stateTotal": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "stateUsed": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "rootUsed",
                      "rootTotal",
                      "stateUsed",
                      "stateTotal"
                    ],
                    "type": "object"
                  },
                  "display": {
                    "properties": {
                      "connected": {
                        "type": "boolean"
                      },
                      "connector": {
                        "maxLength": 30,
                        "type": "string"
                      },
                      "diagonalInch": {
                        "type": "number"
                      },
                      "heightPx": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "manufacturer": {
                        "maxLength": 60,
                        "type": "string"
                      },
                      "model": {
                        "maxLength": 60,
                        "type": "string"
                      },
                      "refreshHz": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "serial": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "widthPx": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "hardware": {
                    "properties": {
                      "coreVolts": {
                        "type": "number"
                      },
                      "cpuCores": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "cpuModel": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "kernel": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "model": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "serial": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "storageHealthPercent": {
                        "maximum": 100,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "throttledEver": {
                        "type": "boolean"
                      },
                      "throttledNow": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "loadAvg": {
                    "items": {
                      "minimum": 0,
                      "type": "number"
                    },
                    "maxItems": 3,
                    "type": "array"
                  },
                  "mediaCache": {
                    "properties": {
                      "entries": {
                        "items": {
                          "properties": {
                            "ageSeconds": {
                              "minimum": 0,
                              "type": "integer"
                            },
                            "assetId": {
                              "maxLength": 30,
                              "type": "string"
                            },
                            "mediaKey": {
                              "maxLength": 128,
                              "minLength": 1,
                              "type": "string"
                            },
                            "present": {
                              "type": "boolean"
                            },
                            "sizeBytes": {
                              "minimum": 0,
                              "type": "integer"
                            }
                          },
                          "required": [
                            "mediaKey",
                            "present"
                          ],
                          "type": "object"
                        },
                        "maxItems": 200,
                        "type": "array"
                      },
                      "entryCount": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "limitBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "overflowBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "presentCount": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "requiredBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "usedBytes": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "limitBytes",
                      "usedBytes",
                      "requiredBytes",
                      "overflowBytes",
                      "entryCount",
                      "presentCount"
                    ],
                    "type": "object"
                  },
                  "memory": {
                    "properties": {
                      "freeMb": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "total": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "used": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "total",
                      "used",
                      "freeMb"
                    ],
                    "type": "object"
                  },
                  "network": {
                    "properties": {
                      "apiLatencyMs": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "apiReachable": {
                        "type": "boolean"
                      },
                      "gateway": {
                        "maxLength": 45,
                        "type": "string"
                      },
                      "iface": {
                        "maxLength": 20,
                        "type": "string"
                      },
                      "ip": {
                        "maxLength": 45,
                        "type": "string"
                      },
                      "macAddress": {
                        "maxLength": 17,
                        "type": "string"
                      },
                      "tailscaleConnected": {
                        "type": "boolean"
                      },
                      "wifiChannel": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "wifiFrequencyMhz": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "wifiSignal": {
                        "type": "integer"
                      },
                      "wifiSsid": {
                        "maxLength": 100,
                        "type": "string"
                      },
                      "wifiTxRateMbps": {
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "type": "object"
                  },
                  "rauc": {
                    "properties": {
                      "bootedFromTryboot": {
                        "type": "boolean"
                      },
                      "currentSlot": {
                        "maxLength": 50,
                        "type": "string"
                      },
                      "lastSuccessAt": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "required": [
                      "currentSlot",
                      "bootedFromTryboot"
                    ],
                    "type": "object"
                  },
                  "renderer": {
                    "properties": {
                      "activatedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "build": {
                        "pattern": "^[0-9a-f]{12}$",
                        "type": "string"
                      },
                      "capabilities": {
                        "items": {
                          "maxLength": 32,
                          "minLength": 1,
                          "type": "string"
                        },
                        "maxItems": 32,
                        "type": "array"
                      },
                      "failures": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "linkOnline": {
                        "type": "boolean"
                      },
                      "profile": {
                        "enum": [
                          "modern",
                          "legacy"
                        ],
                        "type": "string"
                      },
                      "releaseSeq": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "resilience": {
                        "enum": [
                          "fresh",
                          "stale-but-served",
                          "last-known-good",
                          "loading",
                          "error"
                        ],
                        "type": "string"
                      },
                      "source": {
                        "enum": [
                          "bundle",
                          "hosted"
                        ],
                        "type": "string"
                      },
                      "state": {
                        "enum": [
                          "scene",
                          "pairing",
                          "unassigned",
                          "loading",
                          "error",
                          "disconnected"
                        ],
                        "type": "string"
                      },
                      "version": {
                        "maxLength": 40,
                        "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "state"
                    ],
                    "type": "object"
                  },
                  "screens": {
                    "items": {
                      "properties": {
                        "chromium": {
                          "properties": {
                            "cdpConnected": {
                              "type": "boolean"
                            },
                            "state": {
                              "enum": [
                                "rendering",
                                "pairing",
                                "hung",
                                "starting",
                                "stopped",
                                "unplugged"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "state"
                          ],
                          "type": "object"
                        },
                        "powerIntent": {
                          "enum": [
                            "on",
                            "standby"
                          ],
                          "type": "string"
                        },
                        "powerState": {
                          "enum": [
                            "on",
                            "standby",
                            "unknown"
                          ],
                          "type": "string"
                        },
                        "renderer": {
                          "properties": {
                            "failures": {
                              "minimum": 0,
                              "type": "integer"
                            },
                            "linkOnline": {
                              "type": "boolean"
                            },
                            "resilience": {
                              "enum": [
                                "fresh",
                                "stale-but-served",
                                "last-known-good",
                                "loading",
                                "error"
                              ],
                              "type": "string"
                            },
                            "state": {
                              "enum": [
                                "scene",
                                "pairing",
                                "unassigned",
                                "loading",
                                "error",
                                "disconnected"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "state"
                          ],
                          "type": "object"
                        },
                        "screenIndex": {
                          "maximum": 7,
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "screenIndex"
                      ],
                      "type": "object"
                    },
                    "maxItems": 8,
                    "type": "array"
                  },
                  "snapshot": {
                    "properties": {
                      "lastCheckedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "lastRefreshAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "manifestHash": {
                        "maxLength": 128,
                        "type": "string"
                      },
                      "stale": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "manifestHash",
                      "stale",
                      "lastRefreshAt"
                    ],
                    "type": "object"
                  },
                  "time": {
                    "properties": {
                      "ntpSynchronized": {
                        "type": "boolean"
                      },
                      "offsetMs": {
                        "type": "integer"
                      },
                      "timezone": {
                        "maxLength": 60,
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uptime": {
                    "minimum": 0,
                    "type": "integer"
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "locationId": {
                "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "otaState": {
                "properties": {
                  "bootDurationMs": {
                    "minimum": 0,
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "installedVersion": {
                    "maxLength": 100,
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "lastError": {
                    "properties": {
                      "at": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "code": {
                        "maxLength": 100,
                        "type": "string"
                      },
                      "message": {
                        "maxLength": 500,
                        "type": "string"
                      }
                    },
                    "required": [
                      "code",
                      "message",
                      "at"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "lastTransitionAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "phase": {
                    "enum": [
                      "idle",
                      "downloading",
                      "installing",
                      "tryboot-waiting",
                      "completed",
                      "rolled-back",
                      "failed"
                    ],
                    "type": "string"
                  },
                  "rollbackReason": {
                    "maxLength": 500,
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "targetVersion": {
                    "maxLength": 100,
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "phase",
                  "targetVersion",
                  "installedVersion",
                  "lastTransitionAt",
                  "lastError",
                  "bootDurationMs",
                  "rollbackReason"
                ],
                "type": "object"
              },
              "screenIndex": {
                "maximum": 7,
                "minimum": 0,
                "type": "integer"
              },
              "status": {
                "enum": [
                  "online",
                  "stale",
                  "offline",
                  "paired-not-claimed",
                  "suspended",
                  "decommissioned"
                ],
                "type": "string"
              },
              "suspendedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "suspendedReason": {
                "enum": [
                  "tenant",
                  "quota"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "tagIds": {
                "items": {
                  "pattern": "^ptg_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "maxItems": 50,
                "type": "array"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "version": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "id",
              "tenantId",
              "deviceId",
              "connector",
              "screenIndex",
              "name",
              "description",
              "tagIds",
              "locationId",
              "config",
              "status",
              "suspendedReason",
              "lastHeartbeatAt",
              "createdById",
              "createdAt",
              "updatedAt",
              "decommissionedAt",
              "version",
              "geoLocation",
              "lastSnapshotHash",
              "lastTelemetry",
              "otaState"
            ],
            "type": "object"
          }
        },
        "required": [
          "player",
          "allowedRenderResolution",
          "deviceCapabilities",
          "deviceName",
          "deviceDisplays",
          "playbackHistoryDays"
        ],
        "type": "object"
      },
      "GetPlayerScreenshotEntryResponse": {
        "example": {
          "bytes": 1,
          "capturedAt": "2026-01-01T00:00:00.000Z",
          "content": {
            "assetId": "ast_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "bookingLineId": "bkl_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "creativeId": "crv_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "playId": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "playlistItemId": "pli_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "sceneId": "scn_01ARZ3NDEKTSV4RRFFQ69G5FAV"
          },
          "expiresAt": "2099-12-31T23:59:59.000Z",
          "height": 1,
          "id": "pss_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "lastCapturedAt": "2026-01-01T00:00:00.000Z",
          "playerId": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "repeatCount": 1,
          "screenIndex": 0,
          "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
          "thumbnailUrl": "https://example.com",
          "trigger": "interval",
          "url": "https://example.com",
          "width": 1
        },
        "properties": {
          "bytes": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "capturedAt": {
            "format": "date-time",
            "type": "string"
          },
          "content": {
            "$ref": "#/components/schemas/ScreenshotContent"
          },
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "height": {
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "id": {
            "pattern": "^pss_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "lastCapturedAt": {
            "format": "date-time",
            "type": "string"
          },
          "playerId": {
            "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "repeatCount": {
            "minimum": 1,
            "type": "integer"
          },
          "screenIndex": {
            "maximum": 7,
            "minimum": 0,
            "type": "integer"
          },
          "sha256": {
            "pattern": "^[a-f0-9]{64}$",
            "type": "string"
          },
          "thumbnailUrl": {
            "format": "uri",
            "type": [
              "string",
              "null"
            ]
          },
          "trigger": {
            "enum": [
              "interval",
              "content_change",
              "proof_sample",
              "on_demand"
            ],
            "type": "string"
          },
          "url": {
            "format": "uri",
            "type": "string"
          },
          "width": {
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "playerId",
          "screenIndex",
          "capturedAt",
          "lastCapturedAt",
          "repeatCount",
          "trigger",
          "content",
          "width",
          "height",
          "bytes",
          "sha256",
          "expiresAt",
          "url",
          "thumbnailUrl"
        ],
        "type": "object"
      },
      "GetPlayerScreenshotImageResponse": {
        "example": {
          "base64": "/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AIEAD//Z",
          "bytes": 267,
          "capturedAt": "2026-07-20T09:14:32.000Z",
          "mimeType": "image/jpeg"
        },
        "properties": {
          "base64": {
            "minLength": 1,
            "type": "string"
          },
          "bytes": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "capturedAt": {
            "format": "date-time",
            "type": "string"
          },
          "mimeType": {
            "enum": [
              "image/jpeg"
            ],
            "type": "string"
          }
        },
        "required": [
          "mimeType",
          "base64",
          "bytes",
          "capturedAt"
        ],
        "type": "object"
      },
      "GetPlayerScreenshotResponse": {
        "example": {
          "capturedAt": "2026-07-20T09:14:32.000Z",
          "expiresAt": "2026-07-20T09:05:00.000Z",
          "url": "https://ablage.example.com/fleet/screenshot/tnt_01KERPXZM0ADERAPTHEKE00001/ply_01KRX5JVJ0SCREEN0000000003?X-Amz-Signature=…"
        },
        "properties": {
          "capturedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "expiresAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "format": "uri",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "url",
          "capturedAt",
          "expiresAt"
        ],
        "type": "object"
      },
      "GetPlayersNowPlayingResponse": {
        "example": {
          "computedAt": "2026-07-20T09:15:00.000Z",
          "entries": [
            {
              "kind": "play",
              "playerId": "ply_01KHK34MQ0SCREEN0000000001",
              "playlistId": "pll_01KWV91ZS0PRGRAMM000000001",
              "rotation": {
                "items": [
                  {
                    "durationMs": 20000,
                    "kind": "scene",
                    "sceneId": "scn_01KJPX8NH0SZENE00000000001",
                    "sceneVersionId": "scv_01KWV8RTT0VERSN00000000001"
                  },
                  {
                    "durationMs": 25000,
                    "kind": "scene",
                    "sceneId": "scn_01KJWKGJM0SZENE00000000002",
                    "sceneVersionId": "scv_01KXD78M20VERSN00000000002"
                  }
                ],
                "slotStartsAt": "2026-07-20T09:14:20.000Z"
              },
              "sceneId": "scn_01KJPX8NH0SZENE00000000001",
              "sceneVersionId": "scv_01KWV8RTT0VERSN00000000001",
              "until": "2026-07-20T16:30:00.000Z"
            },
            {
              "kind": "gap",
              "playerId": "ply_01KHK3FM90SCREEN0000000002",
              "playlistId": null,
              "rotation": null,
              "sceneId": null,
              "sceneVersionId": null,
              "until": "2026-07-20T16:30:00.000Z"
            }
          ]
        },
        "properties": {
          "computedAt": {
            "format": "date-time",
            "type": "string"
          },
          "entries": {
            "items": {
              "properties": {
                "kind": {
                  "enum": [
                    "play",
                    "pause",
                    "gap"
                  ],
                  "type": "string"
                },
                "playerId": {
                  "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "playlistId": {
                  "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "rotation": {
                  "properties": {
                    "items": {
                      "items": {
                        "oneOf": [
                          {
                            "properties": {
                              "durationMs": {
                                "exclusiveMinimum": 0,
                                "type": "integer"
                              },
                              "kind": {
                                "enum": [
                                  "scene"
                                ],
                                "type": "string"
                              },
                              "sceneId": {
                                "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                                "type": "string"
                              },
                              "sceneVersionId": {
                                "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            },
                            "required": [
                              "kind",
                              "sceneId",
                              "sceneVersionId",
                              "durationMs"
                            ],
                            "type": "object"
                          },
                          {
                            "properties": {
                              "assetId": {
                                "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                                "type": "string"
                              },
                              "durationMs": {
                                "exclusiveMinimum": 0,
                                "type": "integer"
                              },
                              "kind": {
                                "enum": [
                                  "asset"
                                ],
                                "type": "string"
                              },
                              "mediaKind": {
                                "enum": [
                                  "image",
                                  "video"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "kind",
                              "assetId",
                              "mediaKind",
                              "durationMs"
                            ],
                            "type": "object"
                          }
                        ]
                      },
                      "minItems": 1,
                      "type": "array"
                    },
                    "slotStartsAt": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "required": [
                    "slotStartsAt",
                    "items"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "sceneId": {
                  "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "sceneVersionId": {
                  "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "until": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "required": [
                "playerId",
                "kind",
                "sceneId",
                "sceneVersionId",
                "playlistId",
                "until",
                "rotation"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "entries",
          "computedAt"
        ],
        "type": "object"
      },
      "GetPlayersTimelineResponse": {
        "example": {
          "computedAt": "2026-01-01T00:00:00.000Z",
          "date": "2026-07-08",
          "entries": [
            {
              "playerId": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV",
              "segments": [
                {
                  "contentLabel": "sample",
                  "endsAt": "2026-01-01T00:00:00.000Z",
                  "kind": "play",
                  "rotation": {
                    "cycleMs": 1,
                    "itemCount": 1
                  },
                  "scheduleId": "sch_01ARZ3NDEKTSV4RRFFQ69G5FAV",
                  "scheduleItemId": "sci_01ARZ3NDEKTSV4RRFFQ69G5FAV",
                  "scheduleName": "sample",
                  "startsAt": "2026-01-01T00:00:00.000Z"
                }
              ]
            }
          ],
          "totalPlayers": 0,
          "truncated": false
        },
        "properties": {
          "computedAt": {
            "format": "date-time",
            "type": "string"
          },
          "date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "entries": {
            "items": {
              "properties": {
                "playerId": {
                  "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "segments": {
                  "items": {
                    "properties": {
                      "contentLabel": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "endsAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "kind": {
                        "enum": [
                          "play",
                          "pause",
                          "gap"
                        ],
                        "type": "string"
                      },
                      "rotation": {
                        "properties": {
                          "cycleMs": {
                            "exclusiveMinimum": 0,
                            "type": "integer"
                          },
                          "itemCount": {
                            "exclusiveMinimum": 0,
                            "type": "integer"
                          }
                        },
                        "required": [
                          "itemCount",
                          "cycleMs"
                        ],
                        "type": [
                          "object",
                          "null"
                        ]
                      },
                      "scheduleId": {
                        "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "scheduleItemId": {
                        "pattern": "^sci_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "scheduleName": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "startsAt": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "required": [
                      "startsAt",
                      "endsAt",
                      "kind",
                      "scheduleId",
                      "scheduleName",
                      "scheduleItemId",
                      "contentLabel",
                      "rotation"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "required": [
                "playerId",
                "segments"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "totalPlayers": {
            "minimum": 0,
            "type": "integer"
          },
          "truncated": {
            "type": "boolean"
          }
        },
        "required": [
          "date",
          "computedAt",
          "entries",
          "totalPlayers",
          "truncated"
        ],
        "type": "object"
      },
      "GetPlayerTelemetryResponse": {
        "example": {
          "buckets": [
            {
              "apiLatencyMsAvg": 68,
              "bucketStart": "2026-07-19T12:00:00.000Z",
              "cpuLoad1mAvg": 0.4,
              "cpuTempCMax": 55,
              "diskFreeGbMin": 104.6,
              "memUsedMbAvg": 1450,
              "sampleCount": 10,
              "wifiSignalAvg": -66
            },
            {
              "apiLatencyMsAvg": 71,
              "bucketStart": "2026-07-19T12:05:00.000Z",
              "cpuLoad1mAvg": 0.47,
              "cpuTempCMax": 56.5,
              "diskFreeGbMin": 104.59,
              "memUsedMbAvg": 1454,
              "sampleCount": 10,
              "wifiSignalAvg": -67
            },
            {
              "apiLatencyMsAvg": 74,
              "bucketStart": "2026-07-19T12:10:00.000Z",
              "cpuLoad1mAvg": 0.53,
              "cpuTempCMax": 58,
              "diskFreeGbMin": 104.58,
              "memUsedMbAvg": 1458,
              "sampleCount": 10,
              "wifiSignalAvg": -68
            },
            {
              "apiLatencyMsAvg": 77,
              "bucketStart": "2026-07-19T12:15:00.000Z",
              "cpuLoad1mAvg": 0.55,
              "cpuTempCMax": 56.5,
              "diskFreeGbMin": 104.57,
              "memUsedMbAvg": 1462,
              "sampleCount": 10,
              "wifiSignalAvg": -69
            },
            {
              "apiLatencyMsAvg": 80,
              "bucketStart": "2026-07-19T12:20:00.000Z",
              "cpuLoad1mAvg": 0.54,
              "cpuTempCMax": 58,
              "diskFreeGbMin": 104.56,
              "memUsedMbAvg": 1466,
              "sampleCount": 10,
              "wifiSignalAvg": -66
            },
            {
              "apiLatencyMsAvg": 68,
              "bucketStart": "2026-07-19T12:25:00.000Z",
              "cpuLoad1mAvg": 0.49,
              "cpuTempCMax": 59.5,
              "diskFreeGbMin": 104.55,
              "memUsedMbAvg": 1470,
              "sampleCount": 10,
              "wifiSignalAvg": -67
            },
            {
              "apiLatencyMsAvg": 71,
              "bucketStart": "2026-07-19T12:30:00.000Z",
              "cpuLoad1mAvg": 0.42,
              "cpuTempCMax": 58,
              "diskFreeGbMin": 104.54,
              "memUsedMbAvg": 1474,
              "sampleCount": 10,
              "wifiSignalAvg": -68
            },
            {
              "apiLatencyMsAvg": 210,
              "bucketStart": "2026-07-19T12:35:00.000Z",
              "cpuLoad1mAvg": 0.35,
              "cpuTempCMax": 59.5,
              "diskFreeGbMin": 104.53,
              "memUsedMbAvg": 1478,
              "sampleCount": 10,
              "wifiSignalAvg": -69
            },
            {
              "apiLatencyMsAvg": 77,
              "bucketStart": "2026-07-19T12:40:00.000Z",
              "cpuLoad1mAvg": 0.29,
              "cpuTempCMax": 61,
              "diskFreeGbMin": 104.52,
              "memUsedMbAvg": 1482,
              "sampleCount": 10,
              "wifiSignalAvg": -66
            },
            {
              "apiLatencyMsAvg": 80,
              "bucketStart": "2026-07-19T12:45:00.000Z",
              "cpuLoad1mAvg": 0.25,
              "cpuTempCMax": 59.5,
              "diskFreeGbMin": 104.51,
              "memUsedMbAvg": 1486,
              "sampleCount": 10,
              "wifiSignalAvg": -67
            },
            {
              "apiLatencyMsAvg": 68,
              "bucketStart": "2026-07-19T12:50:00.000Z",
              "cpuLoad1mAvg": 0.26,
              "cpuTempCMax": 61,
              "diskFreeGbMin": 104.5,
              "memUsedMbAvg": 1490,
              "sampleCount": 10,
              "wifiSignalAvg": -68
            },
            {
              "apiLatencyMsAvg": 71,
              "bucketStart": "2026-07-19T12:55:00.000Z",
              "cpuLoad1mAvg": 0.29,
              "cpuTempCMax": 62.5,
              "diskFreeGbMin": 104.49,
              "memUsedMbAvg": 1494,
              "sampleCount": 10,
              "wifiSignalAvg": -69
            }
          ],
          "from": "2026-07-19T12:00:00.000Z",
          "resolution": "5m",
          "to": "2026-07-19T13:00:00.000Z"
        },
        "properties": {
          "buckets": {
            "items": {
              "properties": {
                "apiLatencyMsAvg": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "bucketStart": {
                  "format": "date-time",
                  "type": "string"
                },
                "cpuLoad1mAvg": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "cpuTempCMax": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "diskFreeGbMin": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "memUsedMbAvg": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "sampleCount": {
                  "minimum": 0,
                  "type": "integer"
                },
                "wifiSignalAvg": {
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "bucketStart",
                "sampleCount",
                "cpuLoad1mAvg",
                "cpuTempCMax",
                "memUsedMbAvg",
                "diskFreeGbMin",
                "wifiSignalAvg",
                "apiLatencyMsAvg"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "from": {
            "format": "date-time",
            "type": "string"
          },
          "resolution": {
            "enum": [
              "1m",
              "5m",
              "1h"
            ],
            "type": "string"
          },
          "to": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "resolution",
          "from",
          "to",
          "buckets"
        ],
        "type": "object"
      },
      "GetPlayerTimelineResponse": {
        "example": {
          "computedAt": "2026-07-20T09:15:00.000Z",
          "slots": [
            {
              "endsAt": "2026-07-20T09:30:00.000Z",
              "playlistId": "pll_01KWV91ZS0PRGRAMM000000001",
              "playlistItems": [
                {
                  "durationMs": 20000,
                  "kind": "scene",
                  "sceneVersionRef": {
                    "sceneId": "scn_01KJPX8NH0SZENE00000000001",
                    "sceneVersionId": "scv_01KWV8RTT0VERSN00000000001"
                  },
                  "transition": {
                    "durationMs": 400,
                    "kind": "fade"
                  }
                },
                {
                  "durationMs": 25000,
                  "kind": "scene",
                  "sceneVersionRef": {
                    "sceneId": "scn_01KJWKGJM0SZENE00000000002",
                    "sceneVersionId": "scv_01KXD78M20VERSN00000000002"
                  },
                  "transition": {
                    "durationMs": 400,
                    "kind": "fade"
                  }
                }
              ],
              "rotationAnchorAt": "2026-01-01T00:00:00.000Z",
              "sceneVersionRef": null,
              "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001",
              "scheduleItemId": null,
              "startsAt": "2026-07-20T06:00:00.000Z"
            },
            {
              "endsAt": "2026-07-20T12:00:00.000Z",
              "playlistId": null,
              "sceneVersionRef": {
                "sceneId": "scn_01KJWKGJM0SZENE00000000002",
                "sceneVersionId": "scv_01KXD78M20VERSN00000000002"
              },
              "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001",
              "scheduleItemId": "sci_01KWVAFRM0PNKT000000000001",
              "startsAt": "2026-07-20T09:30:00.000Z"
            }
          ],
          "window": {
            "from": "2026-07-20T00:00:00.000Z",
            "to": "2026-07-27T00:00:00.000Z"
          }
        },
        "properties": {
          "computedAt": {
            "format": "date-time",
            "type": "string"
          },
          "slots": {
            "items": {
              "properties": {
                "endsAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "playlistId": {
                  "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "playlistItems": {
                  "items": {
                    "oneOf": [
                      {
                        "properties": {
                          "durationMs": {
                            "exclusiveMinimum": 0,
                            "type": "integer"
                          },
                          "id": {
                            "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          },
                          "kind": {
                            "enum": [
                              "scene"
                            ],
                            "type": "string"
                          },
                          "sceneVersionRef": {
                            "properties": {
                              "sceneId": {
                                "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                                "type": "string"
                              },
                              "sceneVersionId": {
                                "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            },
                            "required": [
                              "sceneId",
                              "sceneVersionId"
                            ],
                            "type": "object"
                          },
                          "transition": {
                            "oneOf": [
                              {
                                "properties": {
                                  "kind": {
                                    "enum": [
                                      "none"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind"
                                ],
                                "type": "object"
                              },
                              {
                                "properties": {
                                  "durationMs": {
                                    "maximum": 60000,
                                    "minimum": 0,
                                    "type": "integer"
                                  },
                                  "kind": {
                                    "enum": [
                                      "fade"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "durationMs"
                                ],
                                "type": "object"
                              },
                              {
                                "properties": {
                                  "direction": {
                                    "enum": [
                                      "left",
                                      "right",
                                      "up",
                                      "down"
                                    ],
                                    "type": "string"
                                  },
                                  "durationMs": {
                                    "maximum": 60000,
                                    "minimum": 0,
                                    "type": "integer"
                                  },
                                  "kind": {
                                    "enum": [
                                      "slide"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "durationMs"
                                ],
                                "type": "object"
                              }
                            ]
                          }
                        },
                        "required": [
                          "kind",
                          "sceneVersionRef",
                          "durationMs",
                          "transition"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "assetId": {
                            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          },
                          "durationMs": {
                            "exclusiveMinimum": 0,
                            "type": "integer"
                          },
                          "fit": {
                            "enum": [
                              "cover",
                              "contain"
                            ],
                            "type": "string"
                          },
                          "id": {
                            "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          },
                          "kind": {
                            "enum": [
                              "asset"
                            ],
                            "type": "string"
                          },
                          "mediaKind": {
                            "enum": [
                              "image",
                              "video"
                            ],
                            "type": "string"
                          },
                          "transition": {
                            "oneOf": [
                              {
                                "properties": {
                                  "kind": {
                                    "enum": [
                                      "none"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind"
                                ],
                                "type": "object"
                              },
                              {
                                "properties": {
                                  "durationMs": {
                                    "maximum": 60000,
                                    "minimum": 0,
                                    "type": "integer"
                                  },
                                  "kind": {
                                    "enum": [
                                      "fade"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "durationMs"
                                ],
                                "type": "object"
                              },
                              {
                                "properties": {
                                  "direction": {
                                    "enum": [
                                      "left",
                                      "right",
                                      "up",
                                      "down"
                                    ],
                                    "type": "string"
                                  },
                                  "durationMs": {
                                    "maximum": 60000,
                                    "minimum": 0,
                                    "type": "integer"
                                  },
                                  "kind": {
                                    "enum": [
                                      "slide"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "durationMs"
                                ],
                                "type": "object"
                              }
                            ]
                          }
                        },
                        "required": [
                          "kind",
                          "assetId",
                          "mediaKind",
                          "fit",
                          "durationMs",
                          "transition"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "durationMs": {
                            "exclusiveMinimum": 0,
                            "type": "integer"
                          },
                          "fallback": {
                            "oneOf": [
                              {
                                "properties": {
                                  "kind": {
                                    "enum": [
                                      "scene"
                                    ],
                                    "type": "string"
                                  },
                                  "sceneVersionRef": {
                                    "properties": {
                                      "sceneId": {
                                        "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                                        "type": "string"
                                      },
                                      "sceneVersionId": {
                                        "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                                        "type": [
                                          "string",
                                          "null"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "sceneId",
                                      "sceneVersionId"
                                    ],
                                    "type": "object"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "sceneVersionRef"
                                ],
                                "type": "object"
                              },
                              {
                                "properties": {
                                  "assetId": {
                                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                                    "type": "string"
                                  },
                                  "fit": {
                                    "enum": [
                                      "cover",
                                      "contain"
                                    ],
                                    "type": "string"
                                  },
                                  "kind": {
                                    "enum": [
                                      "asset"
                                    ],
                                    "type": "string"
                                  },
                                  "mediaKind": {
                                    "enum": [
                                      "image",
                                      "video"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "assetId",
                                  "mediaKind",
                                  "fit"
                                ],
                                "type": "object"
                              }
                            ]
                          },
                          "id": {
                            "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          },
                          "kind": {
                            "enum": [
                              "adPod"
                            ],
                            "type": "string"
                          },
                          "networkPositions": {
                            "maximum": 12,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "positions": {
                            "maximum": 12,
                            "minimum": 1,
                            "type": "integer"
                          },
                          "spotDurationMs": {
                            "enum": [
                              5000,
                              10000,
                              15000,
                              20000,
                              30000
                            ],
                            "type": "integer"
                          },
                          "transition": {
                            "oneOf": [
                              {
                                "properties": {
                                  "kind": {
                                    "enum": [
                                      "none"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind"
                                ],
                                "type": "object"
                              },
                              {
                                "properties": {
                                  "durationMs": {
                                    "maximum": 60000,
                                    "minimum": 0,
                                    "type": "integer"
                                  },
                                  "kind": {
                                    "enum": [
                                      "fade"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "durationMs"
                                ],
                                "type": "object"
                              },
                              {
                                "properties": {
                                  "direction": {
                                    "enum": [
                                      "left",
                                      "right",
                                      "up",
                                      "down"
                                    ],
                                    "type": "string"
                                  },
                                  "durationMs": {
                                    "maximum": 60000,
                                    "minimum": 0,
                                    "type": "integer"
                                  },
                                  "kind": {
                                    "enum": [
                                      "slide"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "durationMs"
                                ],
                                "type": "object"
                              }
                            ]
                          }
                        },
                        "required": [
                          "kind",
                          "id",
                          "positions",
                          "networkPositions",
                          "spotDurationMs",
                          "durationMs",
                          "fallback",
                          "transition"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "rotationAnchorAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "sceneVersionRef": {
                  "properties": {
                    "sceneId": {
                      "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "sceneVersionId": {
                      "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "sceneId",
                    "sceneVersionId"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "scheduleId": {
                  "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "scheduleItemId": {
                  "pattern": "^sci_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "startsAt": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "required": [
                "startsAt",
                "endsAt",
                "sceneVersionRef",
                "scheduleId",
                "scheduleItemId",
                "playlistId"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "window": {
            "properties": {
              "from": {
                "format": "date-time",
                "type": "string"
              },
              "to": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "from",
              "to"
            ],
            "type": "object"
          }
        },
        "required": [
          "slots",
          "computedAt",
          "window"
        ],
        "type": "object"
      },
      "GetPlaylistResponse": {
        "example": {
          "autoSummary": null,
          "createdAt": "2026-07-06T08:35:00.000Z",
          "createdById": "usr_01KFB7QPW0TEAM000000000002",
          "defaultItemDurationMs": 20000,
          "defaultTransition": {
            "durationMs": 400,
            "kind": "fade"
          },
          "description": "Begrüßung und Wochenangebot im Wechsel — läuft während der Öffnungszeiten.",
          "id": "pll_01KWV91ZS0PRGRAMM000000001",
          "items": [
            {
              "durationMs": 20000,
              "id": "pli_01KWV920R8ENTRY00000000001",
              "kind": "scene",
              "order": 0,
              "sceneId": "scn_01KJPX8NH0SZENE00000000001",
              "sceneVersionId": "scv_01KWV8RTT0VERSN00000000001",
              "transition": {
                "durationMs": 400,
                "kind": "fade"
              }
            },
            {
              "durationMs": 25000,
              "id": "pli_01KWV921QGENTRY00000000002",
              "kind": "scene",
              "order": 1,
              "sceneId": "scn_01KJWKGJM0SZENE00000000002",
              "sceneVersionId": "scv_01KXD78M20VERSN00000000002",
              "transition": {
                "durationMs": 400,
                "kind": "fade"
              }
            }
          ],
          "name": "Tagesprogramm",
          "source": {
            "kind": "manual"
          },
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-13T07:52:00.000Z",
          "version": 6
        },
        "properties": {
          "autoSummary": {
            "properties": {
              "capped": {
                "type": "boolean"
              },
              "count": {
                "minimum": 0,
                "type": "integer"
              },
              "firstItems": {
                "items": {
                  "oneOf": [
                    {
                      "properties": {
                        "durationMs": {
                          "maximum": 86400000,
                          "minimum": 1000,
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "id": {
                          "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "kind": {
                          "enum": [
                            "scene"
                          ],
                          "type": "string"
                        },
                        "order": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "sceneId": {
                          "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "sceneVersionId": {
                          "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "transition": {
                          "oneOf": [
                            {
                              "properties": {
                                "kind": {
                                  "enum": [
                                    "none"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "fade"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "direction": {
                                  "enum": [
                                    "left",
                                    "right",
                                    "up",
                                    "down"
                                  ],
                                  "type": "string"
                                },
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "slide"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "kind",
                        "id",
                        "sceneId",
                        "sceneVersionId",
                        "durationMs",
                        "transition",
                        "order"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "assetId": {
                          "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "durationMs": {
                          "maximum": 86400000,
                          "minimum": 1000,
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "fit": {
                          "default": "cover",
                          "enum": [
                            "cover",
                            "contain"
                          ],
                          "type": "string"
                        },
                        "id": {
                          "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "kind": {
                          "enum": [
                            "asset"
                          ],
                          "type": "string"
                        },
                        "order": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "transition": {
                          "oneOf": [
                            {
                              "properties": {
                                "kind": {
                                  "enum": [
                                    "none"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "fade"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "direction": {
                                  "enum": [
                                    "left",
                                    "right",
                                    "up",
                                    "down"
                                  ],
                                  "type": "string"
                                },
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "slide"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "kind",
                        "id",
                        "assetId",
                        "durationMs",
                        "transition",
                        "order"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "fallback": {
                          "oneOf": [
                            {
                              "properties": {
                                "kind": {
                                  "enum": [
                                    "scene"
                                  ],
                                  "type": "string"
                                },
                                "sceneId": {
                                  "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                                  "type": "string"
                                },
                                "sceneVersionId": {
                                  "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                }
                              },
                              "required": [
                                "kind",
                                "sceneId",
                                "sceneVersionId"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "assetId": {
                                  "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                                  "type": "string"
                                },
                                "fit": {
                                  "default": "cover",
                                  "enum": [
                                    "cover",
                                    "contain"
                                  ],
                                  "type": "string"
                                },
                                "kind": {
                                  "enum": [
                                    "asset"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "assetId"
                              ],
                              "type": "object"
                            }
                          ]
                        },
                        "id": {
                          "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "kind": {
                          "enum": [
                            "adPod"
                          ],
                          "type": "string"
                        },
                        "networkPositions": {
                          "maximum": 12,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "order": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "positions": {
                          "maximum": 12,
                          "minimum": 1,
                          "type": "integer"
                        },
                        "spotDurationMs": {
                          "enum": [
                            5000,
                            10000,
                            15000,
                            20000,
                            30000
                          ],
                          "type": "integer"
                        },
                        "transition": {
                          "oneOf": [
                            {
                              "properties": {
                                "kind": {
                                  "enum": [
                                    "none"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "fade"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "direction": {
                                  "enum": [
                                    "left",
                                    "right",
                                    "up",
                                    "down"
                                  ],
                                  "type": "string"
                                },
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "slide"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "kind",
                        "id",
                        "positions",
                        "networkPositions",
                        "spotDurationMs",
                        "fallback",
                        "transition",
                        "order"
                      ],
                      "type": "object"
                    }
                  ]
                },
                "maxItems": 3,
                "type": "array"
              }
            },
            "required": [
              "count",
              "capped",
              "firstItems"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "createdById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "defaultItemDurationMs": {
            "maximum": 86400000,
            "minimum": 1000,
            "type": "integer"
          },
          "defaultTransition": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "none"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "durationMs": {
                    "maximum": 60000,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "fade"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "durationMs"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "direction": {
                    "enum": [
                      "left",
                      "right",
                      "up",
                      "down"
                    ],
                    "type": "string"
                  },
                  "durationMs": {
                    "maximum": 60000,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "slide"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "durationMs"
                ],
                "type": "object"
              }
            ]
          },
          "description": {
            "maxLength": 2000,
            "type": "string"
          },
          "id": {
            "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "items": {
            "items": {
              "oneOf": [
                {
                  "properties": {
                    "durationMs": {
                      "maximum": 86400000,
                      "minimum": 1000,
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "id": {
                      "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "kind": {
                      "enum": [
                        "scene"
                      ],
                      "type": "string"
                    },
                    "order": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "sceneId": {
                      "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "sceneVersionId": {
                      "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "transition": {
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "none"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "fade"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "direction": {
                              "enum": [
                                "left",
                                "right",
                                "up",
                                "down"
                              ],
                              "type": "string"
                            },
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "slide"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "id",
                    "sceneId",
                    "sceneVersionId",
                    "durationMs",
                    "transition",
                    "order"
                  ],
                  "type": "object"
                },
                {
                  "properties": {
                    "assetId": {
                      "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "durationMs": {
                      "maximum": 86400000,
                      "minimum": 1000,
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "fit": {
                      "default": "cover",
                      "enum": [
                        "cover",
                        "contain"
                      ],
                      "type": "string"
                    },
                    "id": {
                      "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "kind": {
                      "enum": [
                        "asset"
                      ],
                      "type": "string"
                    },
                    "order": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "transition": {
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "none"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "fade"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "direction": {
                              "enum": [
                                "left",
                                "right",
                                "up",
                                "down"
                              ],
                              "type": "string"
                            },
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "slide"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "id",
                    "assetId",
                    "durationMs",
                    "transition",
                    "order"
                  ],
                  "type": "object"
                },
                {
                  "properties": {
                    "fallback": {
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "scene"
                              ],
                              "type": "string"
                            },
                            "sceneId": {
                              "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            },
                            "sceneVersionId": {
                              "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "kind",
                            "sceneId",
                            "sceneVersionId"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "assetId": {
                              "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            },
                            "fit": {
                              "default": "cover",
                              "enum": [
                                "cover",
                                "contain"
                              ],
                              "type": "string"
                            },
                            "kind": {
                              "enum": [
                                "asset"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "assetId"
                          ],
                          "type": "object"
                        }
                      ]
                    },
                    "id": {
                      "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "kind": {
                      "enum": [
                        "adPod"
                      ],
                      "type": "string"
                    },
                    "networkPositions": {
                      "maximum": 12,
                      "minimum": 0,
                      "type": "integer"
                    },
                    "order": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "positions": {
                      "maximum": 12,
                      "minimum": 1,
                      "type": "integer"
                    },
                    "spotDurationMs": {
                      "enum": [
                        5000,
                        10000,
                        15000,
                        20000,
                        30000
                      ],
                      "type": "integer"
                    },
                    "transition": {
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "none"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "fade"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "direction": {
                              "enum": [
                                "left",
                                "right",
                                "up",
                                "down"
                              ],
                              "type": "string"
                            },
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "slide"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "id",
                    "positions",
                    "networkPositions",
                    "spotDurationMs",
                    "fallback",
                    "transition",
                    "order"
                  ],
                  "type": "object"
                }
              ]
            },
            "type": "array"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "source": {
            "default": {
              "kind": "manual"
            },
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "manual"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "folderId": {
                    "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "includeSubfolders": {
                    "default": true,
                    "type": "boolean"
                  },
                  "kind": {
                    "enum": [
                      "folder"
                    ],
                    "type": "string"
                  },
                  "mediaKinds": {
                    "default": [
                      "image",
                      "video"
                    ],
                    "items": {
                      "enum": [
                        "image",
                        "video"
                      ],
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "sortBy": {
                    "default": "name-asc",
                    "enum": [
                      "name-asc",
                      "name-desc",
                      "created-desc",
                      "created-asc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "folderId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "tags"
                    ],
                    "type": "string"
                  },
                  "mediaKinds": {
                    "default": [
                      "image",
                      "video"
                    ],
                    "items": {
                      "enum": [
                        "image",
                        "video"
                      ],
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "sortBy": {
                    "default": "name-asc",
                    "enum": [
                      "name-asc",
                      "name-desc",
                      "created-desc",
                      "created-asc"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "items": {
                      "maxLength": 50,
                      "minLength": 1,
                      "type": "string"
                    },
                    "maxItems": 10,
                    "minItems": 1,
                    "type": "array"
                  }
                },
                "required": [
                  "kind",
                  "tags"
                ],
                "type": "object"
              }
            ]
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "tenantId",
          "name",
          "description",
          "items",
          "defaultItemDurationMs",
          "defaultTransition",
          "createdById",
          "createdAt",
          "updatedAt",
          "version"
        ],
        "type": "object"
      },
      "GetProofResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ProofSummary"
          },
          {
            "properties": {
              "addenda": {
                "items": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ProofReference"
                    },
                    {
                      "type": "object"
                    }
                  ]
                },
                "type": "array"
              },
              "batchMerkleRoot": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              },
              "dataSha256": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              },
              "deliveries": {
                "items": {
                  "$ref": "#/components/schemas/ProofDelivery"
                },
                "type": "array"
              },
              "figures": {
                "$ref": "#/components/schemas/ProofFigures"
              },
              "files": {
                "items": {
                  "$ref": "#/components/schemas/ProofFile"
                },
                "type": "array"
              },
              "manifestSha256": {
                "pattern": "^[a-f0-9]{64}$",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "figures",
              "dataSha256",
              "batchMerkleRoot",
              "manifestSha256",
              "files",
              "addenda",
              "deliveries"
            ],
            "type": "object"
          }
        ],
        "example": {
          "addenda": [
            {
              "id": "prf_01KZ4T6M80NCHWS00000000412",
              "issuedAt": "2026-10-06T01:30:08.000Z",
              "kind": "addendum",
              "number": "SZN-2026-000412"
            }
          ],
          "addendumOf": null,
          "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
          "advertiserName": "Nordwind Naturkosmetik GmbH",
          "airtimeSeconds": 56080,
          "batchMerkleRoot": "40de5641ea11cc03fbd2f498bcb3d6b96d0ebbefcda54eb1dd83766a5a65b6c7",
          "bookingLineId": "bkl_01KXR4Q9T0BKNG000000000001",
          "bookingLineName": "Schaufenster und Kasse",
          "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
          "campaignName": "Herbstpflege 2026",
          "checkCode": "4HTC-4PY0-7X1N",
          "closedAt": "2026-10-05T01:25:00.000Z",
          "dataSha256": "3ab4b52195125a116e11a6a6630f8ae8543e2ce511afc4457513ad78eb61048b",
          "deliveries": [
            {
              "createdAt": "2026-10-05T01:30:24.000Z",
              "id": "pdy_01KZ4T6M80ZSTG398000000001",
              "mode": "attachment",
              "recipientEmail": "lena.brandt@demo.local",
              "recipientName": "Lena Brandt",
              "sentAt": "2026-10-05T01:30:41.000Z",
              "state": "sent"
            }
          ],
          "figures": {
            "captures": {
              "count": 26,
              "samples": [
                {
                  "batchSha256": "ecd73af0b9464d1df547087ebf3e9820d8f3d3c39398a2edf6fd96e10ba1a945",
                  "capturedAt": "2026-09-01T07:12:44.000Z",
                  "fileName": "0001-pss_01KZ2C8H40PRBE000000000001.jpg",
                  "locationLabel": "Hamburg (227) · Apotheke",
                  "placement": "window"
                },
                {
                  "batchSha256": "c20dda2078b6ee685e5476c56dbb55e44bab36bb83445767ea8b09fc25066154",
                  "capturedAt": "2026-09-10T12:41:03.000Z",
                  "fileName": "0009-pss_01KZ2C8H40PRBE000000000009.jpg",
                  "locationLabel": "Hamburg (227) · Apotheke",
                  "placement": "window"
                },
                {
                  "batchSha256": "d7f3fb99136f4df5e7ef211ad3d012f1c49cf4c36b6d3e28d75072b8602c0310",
                  "capturedAt": "2026-09-21T09:27:51.000Z",
                  "fileName": "0018-pss_01KZ2C8H40PRBE000000000018.jpg",
                  "locationLabel": "Hamburg (227) · Apotheke",
                  "placement": "window"
                },
                {
                  "batchSha256": "a7015b275017ae39a8ef72321dd423437051fe480b337f9dbf0597b0d2c6d9a3",
                  "capturedAt": "2026-09-30T14:03:19.000Z",
                  "fileName": "0026-pss_01KZ2C8H40PRBE000000000026.jpg",
                  "locationLabel": "Hamburg (227) · Apotheke",
                  "placement": "window"
                }
              ]
            },
            "creatives": [
              {
                "approvedAt": "2026-08-26T07:55:00.000Z",
                "contentSha256": "7d2f4c1a9b3e6f58c0a1d2e3f4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3",
                "creativeId": "crv_01KXR4RZ80MTV0000000000001",
                "mandatoryTextChecked": false,
                "name": "Herbstpflege Schaufenster",
                "validPlays": 5608,
                "weight": 1
              }
            ],
            "distribution": {
              "curve": [
                {
                  "cumulativePlanned": 260,
                  "cumulativeValid": 250,
                  "day": "2026-09-01",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 520,
                  "cumulativeValid": 500,
                  "day": "2026-09-02",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 780,
                  "cumulativeValid": 750,
                  "day": "2026-09-03",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 1040,
                  "cumulativeValid": 1000,
                  "day": "2026-09-04",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 1096,
                  "cumulativeValid": 1052,
                  "day": "2026-09-05",
                  "plannedPlays": 56,
                  "validPlays": 52
                },
                {
                  "cumulativePlanned": 1096,
                  "cumulativeValid": 1052,
                  "day": "2026-09-06",
                  "plannedPlays": 0,
                  "validPlays": 0
                },
                {
                  "cumulativePlanned": 1356,
                  "cumulativeValid": 1302,
                  "day": "2026-09-07",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 1616,
                  "cumulativeValid": 1552,
                  "day": "2026-09-08",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 1876,
                  "cumulativeValid": 1802,
                  "day": "2026-09-09",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 2136,
                  "cumulativeValid": 2052,
                  "day": "2026-09-10",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 2396,
                  "cumulativeValid": 2302,
                  "day": "2026-09-11",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 2452,
                  "cumulativeValid": 2354,
                  "day": "2026-09-12",
                  "plannedPlays": 56,
                  "validPlays": 52
                },
                {
                  "cumulativePlanned": 2452,
                  "cumulativeValid": 2354,
                  "day": "2026-09-13",
                  "plannedPlays": 0,
                  "validPlays": 0
                },
                {
                  "cumulativePlanned": 2712,
                  "cumulativeValid": 2604,
                  "day": "2026-09-14",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 2972,
                  "cumulativeValid": 2854,
                  "day": "2026-09-15",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 3232,
                  "cumulativeValid": 3104,
                  "day": "2026-09-16",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 3492,
                  "cumulativeValid": 3254,
                  "day": "2026-09-17",
                  "plannedPlays": 260,
                  "validPlays": 150
                },
                {
                  "cumulativePlanned": 3752,
                  "cumulativeValid": 3504,
                  "day": "2026-09-18",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 3808,
                  "cumulativeValid": 3556,
                  "day": "2026-09-19",
                  "plannedPlays": 56,
                  "validPlays": 52
                },
                {
                  "cumulativePlanned": 3808,
                  "cumulativeValid": 3556,
                  "day": "2026-09-20",
                  "plannedPlays": 0,
                  "validPlays": 0
                },
                {
                  "cumulativePlanned": 4068,
                  "cumulativeValid": 3806,
                  "day": "2026-09-21",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 4328,
                  "cumulativeValid": 4056,
                  "day": "2026-09-22",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 4588,
                  "cumulativeValid": 4306,
                  "day": "2026-09-23",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 4848,
                  "cumulativeValid": 4556,
                  "day": "2026-09-24",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 5108,
                  "cumulativeValid": 4806,
                  "day": "2026-09-25",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 5164,
                  "cumulativeValid": 4858,
                  "day": "2026-09-26",
                  "plannedPlays": 56,
                  "validPlays": 52
                },
                {
                  "cumulativePlanned": 5164,
                  "cumulativeValid": 4858,
                  "day": "2026-09-27",
                  "plannedPlays": 0,
                  "validPlays": 0
                },
                {
                  "cumulativePlanned": 5424,
                  "cumulativeValid": 5108,
                  "day": "2026-09-28",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 5684,
                  "cumulativeValid": 5358,
                  "day": "2026-09-29",
                  "plannedPlays": 260,
                  "validPlays": 250
                },
                {
                  "cumulativePlanned": 5944,
                  "cumulativeValid": 5608,
                  "day": "2026-09-30",
                  "plannedPlays": 260,
                  "validPlays": 250
                }
              ],
              "dayparts": [
                {
                  "airtimeSeconds": 11210,
                  "displays": 2,
                  "key": "early",
                  "locations": 1,
                  "merged": false,
                  "mergedKeys": [],
                  "share": 0.1999,
                  "validPlays": 1121
                },
                {
                  "airtimeSeconds": 11350,
                  "displays": 2,
                  "key": "morning",
                  "locations": 1,
                  "merged": false,
                  "mergedKeys": [],
                  "share": 0.2024,
                  "validPlays": 1135
                },
                {
                  "airtimeSeconds": 11020,
                  "displays": 2,
                  "key": "midday",
                  "locations": 1,
                  "merged": false,
                  "mergedKeys": [],
                  "share": 0.1965,
                  "validPlays": 1102
                },
                {
                  "airtimeSeconds": 16520,
                  "displays": 2,
                  "key": "afternoon",
                  "locations": 1,
                  "merged": false,
                  "mergedKeys": [],
                  "share": 0.2946,
                  "validPlays": 1652
                },
                {
                  "airtimeSeconds": 5980,
                  "displays": 2,
                  "key": "evening",
                  "locations": 1,
                  "merged": false,
                  "mergedKeys": [],
                  "share": 0.1066,
                  "validPlays": 598
                }
              ],
              "locations": [
                {
                  "airtimeSeconds": 56080,
                  "city": "Hamburg",
                  "displays": 2,
                  "label": "Hamburg (227) · Apotheke",
                  "named": false,
                  "postalArea": "227",
                  "validPlays": 5608,
                  "venueType": "pharmacy"
                }
              ],
              "placements": [
                {
                  "airtimeSeconds": 56080,
                  "displays": 2,
                  "key": "merged",
                  "locations": 1,
                  "merged": true,
                  "mergedKeys": [
                    "checkout",
                    "window"
                  ],
                  "share": 1,
                  "validPlays": 5608
                }
              ],
              "regions": [
                {
                  "airtimeSeconds": 56080,
                  "displays": 2,
                  "key": "merged",
                  "locations": 1,
                  "merged": true,
                  "mergedKeys": [
                    "DE-HH"
                  ],
                  "share": 1,
                  "validPlays": 5608
                }
              ],
              "venueTypes": [
                {
                  "airtimeSeconds": 56080,
                  "displays": 2,
                  "key": "merged",
                  "locations": 1,
                  "merged": true,
                  "mergedKeys": [
                    "pharmacy"
                  ],
                  "share": 1,
                  "validPlays": 5608
                }
              ]
            },
            "kind": "closing",
            "method": {
              "contactModelVersion": 1,
              "dwellSeconds": {
                "checkout": 90,
                "other": 60,
                "sales_floor": 300,
                "waiting_area": 600,
                "window": 5
              },
              "limits": [
                "deviceKeyFile",
                "rendererCapture",
                "contactsModelled",
                "gapIsNotZero",
                "audienceSelfDeclared"
              ],
              "maxClockOffsetMs": 5000,
              "minCompletionPermille": 900,
              "minZoneSharePermille": 250,
              "networkParametersVersion": 2,
              "placementFactorPermille": {
                "checkout": 800,
                "other": 500,
                "sales_floor": 600,
                "waiting_area": 700,
                "window": 350
              },
              "ruleVersion": 1
            },
            "period": {
              "from": "2026-09-01",
              "timezone": "Europe/Berlin",
              "to": "2026-09-30"
            },
            "quality": {
              "coverage": {
                "lateHours": 6,
                "missingHours": 7,
                "onTimeHours": 503,
                "plannedHours": 516,
                "reportedHours": 509,
                "share": 0.9864
              },
              "failures": {
                "byReason": [
                  {
                    "plays": 6,
                    "reason": "render_error",
                    "share": 0.0488
                  },
                  {
                    "plays": 0,
                    "reason": "wrong_content",
                    "share": 0
                  },
                  {
                    "plays": 96,
                    "reason": "panel_off",
                    "share": 0.7805
                  },
                  {
                    "plays": 0,
                    "reason": "not_visible",
                    "share": 0
                  },
                  {
                    "plays": 0,
                    "reason": "zone_too_small",
                    "share": 0
                  },
                  {
                    "plays": 21,
                    "reason": "too_short",
                    "share": 0.1707
                  },
                  {
                    "plays": 0,
                    "reason": "outside_booking",
                    "share": 0
                  },
                  {
                    "plays": 0,
                    "reason": "clock_unreliable",
                    "share": 0
                  }
                ],
                "invalid": 123,
                "measured": 5731,
                "share": 0.0215
              },
              "late": {
                "hours": 6,
                "plays": 41,
                "share": 0.0072
              },
              "panelUnconfirmed": {
                "displays": 0,
                "share": 0,
                "validPlays": 0
              }
            },
            "records": {
              "batches": 1416,
              "chain": {
                "fork": 0,
                "gap": 0,
                "ok": 1414,
                "restart": 2
              },
              "devices": 2,
              "plays": 5731,
              "receivedBefore": "2026-10-05T01:25:00.000Z",
              "receivedFrom": null,
              "unsignedBatches": 0
            },
            "result": {
              "airtimeSeconds": 56080,
              "commitment": {
                "lineQuantity": 12000,
                "quantity": 5901.639,
                "unit": "plays"
              },
              "contacts": {
                "byGrade": [
                  {
                    "contacts": 18742,
                    "grade": "A",
                    "share": 1
                  }
                ],
                "contactModelVersion": 1,
                "gradeCExcluded": false,
                "total": 18742
              },
              "deliveredInUnit": 5608,
              "deliveryToPlan": 0.9435,
              "displays": {
                "reached": 2,
                "targeted": 2
              },
              "fulfilment": 0.9502,
              "locations": {
                "reached": 1,
                "targeted": 1
              },
              "plannedPlays": 5944,
              "plays": 5731,
              "validPlays": 5608
            },
            "schemaVersion": 1,
            "subject": {
              "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
              "advertiserName": "Nordwind Naturkosmetik GmbH",
              "bookingLineId": "bkl_01KXR4Q9T0BKNG000000000001",
              "bookingLineName": "Schaufenster und Kasse",
              "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
              "campaignName": "Herbstpflege 2026",
              "commitment": {
                "quantity": 12000,
                "unit": "plays"
              },
              "lineEndsOn": "2026-10-31",
              "lineStartsOn": "2026-09-01",
              "owner": "tenant",
              "slotsPerPodTenths": 10,
              "spotDurationMs": 10000,
              "targeting": {
                "displays": 2,
                "locations": 1,
                "placements": [
                  "window",
                  "checkout"
                ],
                "regionCodes": [
                  "DE-HH"
                ],
                "venueTypes": [
                  "pharmacy"
                ]
              },
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            }
          },
          "files": [
            {
              "id": "pfi_01KZ4T6M80DTA0398000000001",
              "kind": "pdf",
              "name": "SZN-2026-000398.pdf",
              "sha256": "26d9c86976d75e7e9dc3b2367b5b7ae4140eeeec4c018e84041904080a30f352",
              "sizeBytes": 412386
            },
            {
              "id": "pfi_01KZ4T6M80DTA0398000000002",
              "kind": "csv",
              "name": "SZN-2026-000398.csv",
              "sha256": "1d38faf8b62d7fc8a93395228da4ff653476b9b4b34f5898d8454b29f9d35887",
              "sizeBytes": 61904
            },
            {
              "id": "pfi_01KZ4T6M80DTA0398000000003",
              "kind": "manifest",
              "name": "SZN-2026-000398.manifest.json",
              "sha256": "53a694909a683177e7ecd597c1eca5b3351aaebdc3f90250b01cc6615040fc7c",
              "sizeBytes": 168215
            },
            {
              "id": "pfi_01KZ4T6M80DTA0398000000004",
              "kind": "capture",
              "name": "captures/0001-pss_01KZ2C8H40PRBE000000000001.jpg",
              "sha256": "c90770c5ef98a804e38e467088e440087b53979345be08ba80bbead8a2f8aec3",
              "sizeBytes": 184220
            }
          ],
          "fulfilment": 0.9502,
          "id": "prf_01KZ4T6M80NCHWS00000000398",
          "issuedAt": "2026-10-05T01:30:12.000Z",
          "keyId": "szn-proof-2026-02",
          "kind": "closing",
          "manifestSha256": "53a694909a683177e7ecd597c1eca5b3351aaebdc3f90250b01cc6615040fc7c",
          "number": "SZN-2026-000398",
          "owner": "tenant",
          "period": {
            "from": "2026-09-01",
            "timezone": "Europe/Berlin",
            "to": "2026-09-30"
          },
          "periodCloseId": "pcl_01KZ4T6M80ZTRM000000000398",
          "retainedUntil": "2036-10-05T01:25:00.000Z",
          "signedAt": "2026-10-05T01:30:19.000Z",
          "status": "issued",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "validPlays": 5608
        }
      },
      "GetPublicStatusResponse": {
        "example": {
          "checkedAt": "2026-01-01T00:00:00.000Z",
          "components": [
            {
              "key": "api",
              "state": "operational"
            }
          ],
          "incidents": [
            {
              "description": "sample",
              "detectedAt": "2026-01-01T00:00:00.000Z",
              "id": "inc_01ARZ3NDEKTSV4RRFFQ69G5FAV",
              "postmortemUrl": "https://example.com",
              "resolvedAt": "2026-01-01T00:00:00.000Z",
              "severity": "sev-1",
              "status": "open",
              "title": "sample",
              "updates": [
                {
                  "at": "2026-01-01T00:00:00.000Z",
                  "kind": "update",
                  "message": "sample"
                }
              ]
            }
          ],
          "maintenance": {
            "blockMutations": false,
            "description": "sample",
            "id": "mtw_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "scheduledEnd": "2026-01-01T00:00:00.000Z",
            "scheduledStart": "2026-01-01T00:00:00.000Z",
            "showBanner": false,
            "status": "planned",
            "title": "sample"
          },
          "state": "operational"
        },
        "properties": {
          "checkedAt": {
            "format": "date-time",
            "type": "string"
          },
          "components": {
            "items": {
              "properties": {
                "key": {
                  "enum": [
                    "api",
                    "realtime",
                    "storage",
                    "database",
                    "queue"
                  ],
                  "type": "string"
                },
                "state": {
                  "enum": [
                    "operational",
                    "degraded",
                    "down"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "key",
                "state"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "incidents": {
            "items": {
              "properties": {
                "description": {
                  "type": "string"
                },
                "detectedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "id": {
                  "pattern": "^inc_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "postmortemUrl": {
                  "format": "uri",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "resolvedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "severity": {
                  "enum": [
                    "sev-1",
                    "sev-2",
                    "sev-3",
                    "sev-4"
                  ],
                  "type": "string"
                },
                "status": {
                  "enum": [
                    "open",
                    "investigating",
                    "identified",
                    "monitoring",
                    "resolved"
                  ],
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "updates": {
                  "items": {
                    "properties": {
                      "at": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "kind": {
                        "enum": [
                          "update",
                          "status-change",
                          "action-taken"
                        ],
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "at",
                      "kind",
                      "message"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "required": [
                "id",
                "title",
                "description",
                "severity",
                "status",
                "detectedAt",
                "resolvedAt",
                "postmortemUrl",
                "updates"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "maintenance": {
            "properties": {
              "blockMutations": {
                "type": "boolean"
              },
              "description": {
                "type": "string"
              },
              "id": {
                "pattern": "^mtw_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "scheduledEnd": {
                "format": "date-time",
                "type": "string"
              },
              "scheduledStart": {
                "format": "date-time",
                "type": "string"
              },
              "showBanner": {
                "type": "boolean"
              },
              "status": {
                "enum": [
                  "planned",
                  "notified",
                  "active",
                  "completed",
                  "canceled"
                ],
                "type": "string"
              },
              "title": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "title",
              "description",
              "scheduledStart",
              "scheduledEnd",
              "status",
              "showBanner",
              "blockMutations"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "state": {
            "enum": [
              "operational",
              "degraded",
              "down"
            ],
            "type": "string"
          }
        },
        "required": [
          "state",
          "checkedAt",
          "components",
          "maintenance",
          "incidents"
        ],
        "type": "object"
      },
      "GetReportDownloadUrlResponse": {
        "example": {
          "expiresAt": "2026-07-20T10:15:00.000Z",
          "format": "pdf",
          "url": "https://s3.demo.local/signage-medien/berichte/spielzeit-je-bildschirm-2026-07-20.pdf"
        },
        "properties": {
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "format": {
            "enum": [
              "csv",
              "json",
              "pdf"
            ],
            "type": "string"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "url",
          "format",
          "expiresAt"
        ],
        "type": "object"
      },
      "GetReportResponse": {
        "example": {
          "createdAt": "2026-04-02T08:00:00.000Z",
          "description": "Wie viele Stunden jeder Bildschirm in der vergangenen Woche gespielt hat und wie viel seiner Planzeit er sichtbar war.",
          "id": "anr_01KN6K9M00BERCHT0000000001",
          "lastRunAt": "2026-07-20T04:00:00.000Z",
          "lastRunError": null,
          "lastRunStatus": "ok",
          "name": "Spielzeit je Bildschirm",
          "ownerUserId": "usr_01KERQ74K0TEAM000000000001",
          "query": {
            "dimensions": [
              "player"
            ],
            "filters": {},
            "granularity": "auto",
            "limit": null,
            "measures": [
              "airtimeSeconds",
              "availability"
            ],
            "perspective": "venue",
            "sort": {
              "direction": "desc",
              "measure": "airtimeSeconds"
            },
            "timezone": "Europe/Berlin",
            "window": {
              "kind": "previousWeek"
            }
          },
          "schedule": {
            "dayOfWeek": 1,
            "hour": 6,
            "kind": "weekly"
          },
          "scheduleFormat": "pdf",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-06T09:20:00.000Z",
          "visibility": "tenant-shared"
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "maxLength": 1000,
            "type": "string"
          },
          "id": {
            "pattern": "^anr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "lastRunAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "lastRunError": {
            "maxLength": 200,
            "type": [
              "string",
              "null"
            ]
          },
          "lastRunStatus": {
            "enum": [
              "ok",
              "failed"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "ownerUserId": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "query": {
            "$ref": "#/components/schemas/SavedExploreQuery"
          },
          "schedule": {
            "oneOf": [
              {
                "properties": {
                  "hour": {
                    "maximum": 23,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "daily"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "hour"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "dayOfWeek": {
                    "maximum": 6,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "hour": {
                    "maximum": 23,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "weekly"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "dayOfWeek",
                  "hour"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "dayOfMonth": {
                    "maximum": 28,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "hour": {
                    "maximum": 23,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "monthly"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "dayOfMonth",
                  "hour"
                ],
                "type": "object"
              },
              {
                "type": "null"
              }
            ]
          },
          "scheduleFormat": {
            "enum": [
              "csv",
              "pdf"
            ],
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "visibility": {
            "enum": [
              "private",
              "tenant-shared"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "name",
          "description",
          "query",
          "schedule",
          "ownerUserId",
          "visibility",
          "scheduleFormat",
          "createdAt",
          "updatedAt",
          "lastRunAt",
          "lastRunStatus",
          "lastRunError"
        ],
        "type": "object"
      },
      "GetResourceTypeCatalogResponse": {
        "example": {
          "entries": [
            {
              "appId": "pharmacies-on-duty",
              "definition": {
                "appId": "pharmacies-on-duty",
                "authoringPath": "/apps/pharmacies-on-duty/locations",
                "baseSchema": {
                  "properties": {
                    "city": {
                      "type": "string"
                    },
                    "id": {
                      "type": "string"
                    },
                    "postalCode": {
                      "type": "string"
                    },
                    "radiusKm": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "id",
                    "postalCode",
                    "city"
                  ],
                  "type": "object"
                },
                "createSchema": {
                  "properties": {
                    "city": {
                      "type": "string"
                    },
                    "postalCode": {
                      "type": "string"
                    },
                    "radiusKm": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "postalCode",
                    "city"
                  ],
                  "type": "object"
                },
                "description": "Vom Mandanten gepflegter Standort (PLZ + Ort), für den Notdienst-Pläne geladen werden.",
                "id": "pharmacies-on-duty-location",
                "listEndpoint": "/locations",
                "name": "Standorte",
                "slug": "locations",
                "updateSchema": {
                  "properties": {
                    "city": {
                      "type": "string"
                    },
                    "postalCode": {
                      "type": "string"
                    },
                    "radiusKm": {
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "version": "2.0.1"
            },
            {
              "appId": "pharmacies-on-duty",
              "definition": {
                "appId": "pharmacies-on-duty",
                "authoringPath": "/apps/pharmacies-on-duty/schedules",
                "baseSchema": {
                  "properties": {
                    "date": {
                      "format": "date",
                      "type": "string"
                    },
                    "id": {
                      "type": "string"
                    },
                    "locationId": {
                      "type": "string"
                    },
                    "pharmacyName": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "locationId",
                    "date",
                    "pharmacyName"
                  ],
                  "type": "object"
                },
                "createSchema": {
                  "properties": {
                    "date": {
                      "format": "date",
                      "type": "string"
                    },
                    "locationId": {
                      "type": "string"
                    },
                    "pharmacyName": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "locationId",
                    "date",
                    "pharmacyName"
                  ],
                  "type": "object"
                },
                "description": "Eine Datum-Zuweisung der Notdienst-Apotheke (vom Abruf gefüllt, manuell überschreibbar).",
                "id": "pharmacies-on-duty-schedule",
                "listEndpoint": "/schedules",
                "name": "Dienstpläne",
                "slug": "schedules",
                "updateSchema": {
                  "properties": {
                    "pharmacyName": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "version": "2.0.1"
            }
          ]
        },
        "properties": {
          "entries": {
            "items": {
              "properties": {
                "appId": {
                  "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                  "type": "string"
                },
                "definition": {
                  "properties": {
                    "appId": {
                      "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "authoringPath": {
                      "type": "string"
                    },
                    "baseSchema": {},
                    "createSchema": {},
                    "description": {
                      "maxLength": 300,
                      "type": "string"
                    },
                    "id": {
                      "maxLength": 100,
                      "minLength": 2,
                      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "listEndpoint": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "name": {
                      "maxLength": 60,
                      "minLength": 1,
                      "type": "string"
                    },
                    "slug": {
                      "maxLength": 40,
                      "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "updateSchema": {}
                  },
                  "required": [
                    "id",
                    "appId",
                    "slug",
                    "name",
                    "listEndpoint"
                  ],
                  "type": "object"
                },
                "version": {
                  "pattern": "^\\d+\\.\\d+\\.\\d+$",
                  "type": "string"
                }
              },
              "required": [
                "appId",
                "version",
                "definition"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "entries"
        ],
        "type": "object"
      },
      "GetRoleResponse": {
        "example": {
          "createdAt": "2026-01-12T09:30:00.000Z",
          "description": "Pflegt Szenen, Wiedergabelisten und Medien und veröffentlicht sie.",
          "id": "rol_01KERPYXWRRECHT00000000002",
          "isBuiltIn": false,
          "name": "Redaktion",
          "permissions": [
            "scene.list",
            "scene.read",
            "scene.create",
            "scene.update",
            "scene.publish",
            "playlist.list",
            "playlist.update",
            "schedule.list",
            "schedule.update",
            "asset.list",
            "asset.read",
            "asset.upload",
            "fleet.player.list",
            "fleet.player.read"
          ],
          "scopeRestrictions": [
            {
              "kind": "all"
            }
          ],
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-04-14T11:10:00.000Z",
          "version": 2
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "maxLength": 500,
            "type": "string"
          },
          "id": {
            "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "isBuiltIn": {
            "type": "boolean"
          },
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "permissions": {
            "items": {
              "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$",
              "type": "string"
            },
            "type": "array"
          },
          "scopeRestrictions": {
            "items": {
              "oneOf": [
                {
                  "properties": {
                    "kind": {
                      "enum": [
                        "all"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "kind"
                  ],
                  "type": "object"
                },
                {
                  "properties": {
                    "kind": {
                      "enum": [
                        "resource-set"
                      ],
                      "type": "string"
                    },
                    "resourceIds": {
                      "items": {
                        "type": "string"
                      },
                      "minItems": 1,
                      "type": "array"
                    },
                    "resourceType": {
                      "enum": [
                        "scene",
                        "playlist",
                        "schedule",
                        "player",
                        "device",
                        "asset",
                        "tenant",
                        "audit-export"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "kind",
                    "resourceType",
                    "resourceIds"
                  ],
                  "type": "object"
                }
              ]
            },
            "type": "array"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "tenantId",
          "name",
          "description",
          "isBuiltIn",
          "permissions",
          "scopeRestrictions",
          "version",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "GetSceneRenderImageResponse": {
        "example": {
          "base64": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==",
          "bytes": 70,
          "mimeType": "image/png"
        },
        "properties": {
          "base64": {
            "minLength": 1,
            "type": "string"
          },
          "bytes": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "mimeType": {
            "enum": [
              "image/png"
            ],
            "type": "string"
          }
        },
        "required": [
          "mimeType",
          "base64",
          "bytes"
        ],
        "type": "object"
      },
      "GetSceneRenderJobResponse": {
        "example": {
          "expiresAt": "2026-07-06T08:45:00.000Z",
          "failedReason": null,
          "jobId": "scv_01KWV8RTT0VERSN00000000001~7b1f0c2e-64a8-4e51-9a3d-2f7c9b0e4d11",
          "state": "completed",
          "thumbnailUrl": "https://s3.demo.local/signage/tenants/tnt_01KERPXZM0ADERAPTHEKE00001/scene-thumbnails/scv_01KWV8RTT0VERSN00000000001.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=9c04ba18de37f251"
        },
        "properties": {
          "expiresAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "failedReason": {
            "type": [
              "string",
              "null"
            ]
          },
          "jobId": {
            "minLength": 1,
            "type": "string"
          },
          "state": {
            "enum": [
              "queued",
              "running",
              "completed",
              "failed"
            ],
            "type": "string"
          },
          "thumbnailUrl": {
            "format": "uri",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "jobId",
          "state",
          "thumbnailUrl",
          "expiresAt",
          "failedReason"
        ],
        "type": "object"
      },
      "GetSceneResponse": {
        "example": {
          "openIssues": [],
          "scene": {
            "blocked": false,
            "blockedBy": [],
            "createdAt": "2026-03-02T09:15:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "currentVersionId": "scv_01KWV8RTT0VERSN00000000001",
            "description": "Startbild im Schaufenster: Wortmarke, Öffnungszeiten und Uhrzeit.",
            "draftDocument": {
              "canvas": {
                "backgroundColor": "#f7f5f0",
                "height": 1080,
                "width": 1920
              },
              "layoutTemplateId": "main-sidebar",
              "transitions": {
                "in": {
                  "durationMs": 600,
                  "kind": "fade"
                },
                "out": {
                  "durationMs": 400,
                  "kind": "fade"
                }
              },
              "widgets": [
                {
                  "appId": "core",
                  "appVersionPin": "0.0.0",
                  "config": {
                    "assetId": "ast_01KERR2KG0MEDEN00000000003",
                    "fit": "contain",
                    "variant": "original"
                  },
                  "frame": {
                    "h": 180,
                    "w": 560,
                    "x": 120,
                    "y": 90
                  },
                  "id": "wgi_01KJPXE5A0WDGET00000000003",
                  "slotName": "main",
                  "widgetType": "image",
                  "zIndex": 1
                },
                {
                  "appId": "opening-hours",
                  "appVersionPin": "1.1.0",
                  "config": {
                    "backgroundImage": null,
                    "corners": "round",
                    "fallbackLocationId": "loc_01KHK4B3T0ADRESSE000000001",
                    "locationId": null,
                    "showSpecialHint": true,
                    "source": "display",
                    "surface": "green"
                  },
                  "frame": {
                    "h": 660,
                    "w": 1200,
                    "x": 120,
                    "y": 330
                  },
                  "id": "wgi_01KJPXCAQ0WDGET00000000002",
                  "slotName": "main",
                  "widgetType": "opening-hours",
                  "zIndex": 0
                },
                {
                  "appId": "clock",
                  "appVersionPin": "1.2.0",
                  "config": {
                    "corners": "round",
                    "date": "long",
                    "hourCycle": "auto",
                    "seconds": false,
                    "surface": "dark",
                    "timezone": "",
                    "variant": "digital",
                    "zone": "display"
                  },
                  "frame": {
                    "h": 1080,
                    "w": 480,
                    "x": 1440,
                    "y": 0
                  },
                  "id": "wgi_01KJPXAG40WDGET00000000001",
                  "slotName": "sidebar",
                  "widgetType": "clock",
                  "zIndex": 0
                }
              ]
            },
            "hasThumbnail": true,
            "id": "scn_01KJPX8NH0SZENE00000000001",
            "name": "Willkommen & Öffnungszeiten",
            "publishedAt": "2026-07-06T08:30:00.000Z",
            "status": "published",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-06T08:30:00.000Z",
            "version": 4
          }
        },
        "properties": {
          "openIssues": {
            "items": {
              "properties": {
                "detectedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "id": {
                  "pattern": "^sii_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "payload": {},
                "resolution": {
                  "enum": [
                    "auto-fixed",
                    "manual-fixed",
                    "ignored"
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "resolvedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "resolvedById": {
                  "anyOf": [
                    {
                      "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^[0-9a-f]{64}$",
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "sceneId": {
                  "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "severity": {
                  "enum": [
                    "BLOCKING",
                    "WARNING",
                    "INFO"
                  ],
                  "type": "string"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "type": {
                  "enum": [
                    "WidgetVersionRetired",
                    "AppUninstalled",
                    "AssetDeleted",
                    "LayoutTemplateDeleted",
                    "ConfigSchemaIncompatible",
                    "AppVersionHeld",
                    "DocumentPagesChanged"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id",
                "sceneId",
                "tenantId",
                "type",
                "severity",
                "detectedAt",
                "resolvedAt",
                "resolvedById",
                "resolution"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "scene": {
            "$ref": "#/components/schemas/ScenePublic"
          }
        },
        "required": [
          "scene",
          "openIssues"
        ],
        "type": "object"
      },
      "GetSceneVersionResponse": {
        "example": {
          "appVersionPins": {
            "clock": "1.2.0",
            "opening-hours": "1.1.0"
          },
          "contentHash": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95",
          "document": {
            "canvas": {
              "backgroundColor": "#f7f5f0",
              "height": 1080,
              "width": 1920
            },
            "layoutTemplateId": "main-sidebar",
            "transitions": {
              "in": {
                "durationMs": 600,
                "kind": "fade"
              },
              "out": {
                "durationMs": 400,
                "kind": "fade"
              }
            },
            "widgets": [
              {
                "appId": "core",
                "appVersionPin": "0.0.0",
                "config": {
                  "assetId": "ast_01KERR2KG0MEDEN00000000003",
                  "fit": "contain",
                  "variant": "original"
                },
                "frame": {
                  "h": 180,
                  "w": 560,
                  "x": 120,
                  "y": 90
                },
                "id": "wgi_01KJPXE5A0WDGET00000000003",
                "slotName": "main",
                "widgetType": "image",
                "zIndex": 1
              },
              {
                "appId": "opening-hours",
                "appVersionPin": "1.1.0",
                "config": {
                  "backgroundImage": null,
                  "corners": "round",
                  "fallbackLocationId": "loc_01KHK4B3T0ADRESSE000000001",
                  "locationId": null,
                  "showSpecialHint": true,
                  "source": "display",
                  "surface": "green"
                },
                "frame": {
                  "h": 660,
                  "w": 1200,
                  "x": 120,
                  "y": 330
                },
                "id": "wgi_01KJPXCAQ0WDGET00000000002",
                "slotName": "main",
                "widgetType": "opening-hours",
                "zIndex": 0
              },
              {
                "appId": "clock",
                "appVersionPin": "1.2.0",
                "config": {
                  "corners": "round",
                  "date": "long",
                  "hourCycle": "auto",
                  "seconds": false,
                  "surface": "dark",
                  "timezone": "",
                  "variant": "digital",
                  "zone": "display"
                },
                "frame": {
                  "h": 1080,
                  "w": 480,
                  "x": 1440,
                  "y": 0
                },
                "id": "wgi_01KJPXAG40WDGET00000000001",
                "slotName": "sidebar",
                "widgetType": "clock",
                "zIndex": 0
              }
            ]
          },
          "hasThumbnail": true,
          "id": "scv_01KWV8RTT0VERSN00000000001",
          "publishedAt": "2026-07-06T08:30:00.000Z",
          "publishedById": "usr_01KFB7QPW0TEAM000000000002",
          "releaseNotes": "Sommer-Öffnungszeiten eingetragen, Uhr in die Seitenleiste verschoben.",
          "sceneId": "scn_01KJPX8NH0SZENE00000000001",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "versionNumber": 4
        },
        "properties": {
          "appVersionPins": {
            "additionalProperties": {
              "pattern": "^\\d+\\.\\d+\\.\\d+$",
              "type": "string"
            },
            "type": "object"
          },
          "contentHash": {
            "pattern": "^[a-f0-9]{64}$",
            "type": "string"
          },
          "document": {
            "properties": {
              "canvas": {
                "properties": {
                  "backgroundColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  },
                  "height": {
                    "maximum": 7680,
                    "minimum": 320,
                    "type": "integer"
                  },
                  "width": {
                    "maximum": 7680,
                    "minimum": 320,
                    "type": "integer"
                  }
                },
                "required": [
                  "width",
                  "height",
                  "backgroundColor"
                ],
                "type": "object"
              },
              "layoutTemplateId": {
                "pattern": "^(?:lyt_[0-9A-HJKMNP-TV-Z]{26}|standard-1x1|split-vertical|split-horizontal|grid-2x2|main-sidebar|main-sidebar-2|main-sidebar-3|thirds-vertical|quarters-vertical|header-main|main-ticker|header-main-ticker|sidebar-left-main|header-split|grid-3x2|main-sidebar-ticker|hero-strip-3|portrait-full|portrait-split|portrait-thirds|portrait-main-footer|portrait-half-grid-4|portrait-main-footer-2|portrait-main-footer-3|portrait-header-main|portrait-header-main-ticker|portrait-quarters|portrait-grid-2x3|portrait-hero-columns|ultra-full|ultra-halves|ultra-thirds|ultra-quarters|ultra-center-stage|ultra-main-sidebar|ultra-header-thirds|ultra-thirds-ticker)$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "transitions": {
                "properties": {
                  "in": {
                    "oneOf": [
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "none"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "fade"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "direction": {
                            "enum": [
                              "left",
                              "right",
                              "up",
                              "down"
                            ],
                            "type": "string"
                          },
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "slide"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "out": {
                    "oneOf": [
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "none"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "fade"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "direction": {
                            "enum": [
                              "left",
                              "right",
                              "up",
                              "down"
                            ],
                            "type": "string"
                          },
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "slide"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      }
                    ]
                  }
                },
                "required": [
                  "in",
                  "out"
                ],
                "type": "object"
              },
              "widgets": {
                "items": {
                  "properties": {
                    "appId": {
                      "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "appVersionPin": {
                      "pattern": "^\\d+\\.\\d+\\.\\d+$",
                      "type": "string"
                    },
                    "config": {},
                    "frame": {
                      "properties": {
                        "h": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        },
                        "w": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        },
                        "x": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "y": {
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "x",
                        "y",
                        "w",
                        "h"
                      ],
                      "type": "object"
                    },
                    "id": {
                      "pattern": "^wgi_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "slotName": {
                      "maxLength": 60,
                      "minLength": 1,
                      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "widgetType": {
                      "maxLength": 100,
                      "minLength": 2,
                      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "zIndex": {
                      "maximum": 1000,
                      "minimum": 0,
                      "type": "integer"
                    }
                  },
                  "required": [
                    "id",
                    "appId",
                    "widgetType",
                    "appVersionPin",
                    "frame",
                    "zIndex"
                  ],
                  "type": "object"
                },
                "maxItems": 50,
                "type": "array"
              }
            },
            "required": [
              "canvas",
              "layoutTemplateId",
              "widgets",
              "transitions"
            ],
            "type": "object"
          },
          "hasThumbnail": {
            "default": false,
            "type": "boolean"
          },
          "id": {
            "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "publishedAt": {
            "format": "date-time",
            "type": "string"
          },
          "publishedById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "releaseNotes": {
            "maxLength": 2000,
            "type": [
              "string",
              "null"
            ]
          },
          "sceneId": {
            "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "versionNumber": {
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "sceneId",
          "tenantId",
          "versionNumber",
          "document",
          "contentHash",
          "appVersionPins",
          "publishedById",
          "publishedAt",
          "releaseNotes"
        ],
        "type": "object"
      },
      "GetSceneVersionThumbnailUrlResponse": {
        "example": {
          "expiresAt": "2026-07-06T08:45:00.000Z",
          "url": "https://s3.demo.local/signage/tenants/tnt_01KERPXZM0ADERAPTHEKE00001/scene-thumbnails/scv_01KWV8RTT0VERSN00000000001.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=4d1c8ba7f0e2569c"
        },
        "properties": {
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "url",
          "expiresAt"
        ],
        "type": "object"
      },
      "GetScheduleResponse": {
        "example": {
          "schedule": {
            "basis": {
              "kind": "playlist",
              "playlistId": "pll_01KWV91ZS0PRGRAMM000000001"
            },
            "createdAt": "2026-07-06T09:00:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "id": "sch_01KWVAFRM0ZETPAN0000000001",
            "items": [
              {
                "content": {
                  "kind": "scene",
                  "sceneId": "scn_01KJWKGJM0SZENE00000000002"
                },
                "createdAt": "2026-07-06T09:05:00.000Z",
                "id": "sci_01KWVAFRM0PNKT000000000001",
                "label": "Angebote Mittagszeit",
                "paused": false,
                "recurrence": {
                  "daysOfWeek": [
                    1,
                    2,
                    3,
                    4,
                    5
                  ],
                  "kind": "weekly",
                  "timeWindows": [
                    {
                      "endTime": "14:00:00",
                      "startTime": "11:30:00"
                    }
                  ],
                  "timezone": "Europe/Berlin"
                },
                "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001",
                "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
                "updatedAt": "2026-07-06T09:05:00.000Z"
              },
              {
                "content": {
                  "assetId": "ast_01KW95DD30MEDEN00000000001",
                  "kind": "media"
                },
                "createdAt": "2026-07-06T09:07:00.000Z",
                "id": "sci_01KWVARXK0PNKT000000000002",
                "label": "Samstagsaktion",
                "paused": true,
                "recurrence": {
                  "daysOfWeek": [
                    6
                  ],
                  "kind": "weekly",
                  "timeWindows": [
                    {
                      "endTime": "13:00:00",
                      "startTime": "09:00:00"
                    }
                  ],
                  "timezone": "Europe/Berlin"
                },
                "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001",
                "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
                "updatedAt": "2026-07-20T09:15:00.000Z"
              },
              {
                "content": {
                  "kind": "pause"
                },
                "createdAt": "2026-07-06T09:10:00.000Z",
                "id": "sci_01KWVB22J0PNKT000000000003",
                "label": "Feiertag geschlossen",
                "paused": false,
                "recurrence": {
                  "endsAt": "2026-10-03T21:59:59.000Z",
                  "kind": "once",
                  "startsAt": "2026-10-02T22:00:00.000Z"
                },
                "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001",
                "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
                "updatedAt": "2026-07-06T09:10:00.000Z"
              }
            ],
            "name": "Ladenprogramm",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-20T09:15:00.000Z",
            "version": 7
          }
        },
        "properties": {
          "schedule": {
            "properties": {
              "basis": {
                "oneOf": [
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "scene"
                        ],
                        "type": "string"
                      },
                      "sceneId": {
                        "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "sceneId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "playlist"
                        ],
                        "type": "string"
                      },
                      "playlistId": {
                        "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "playlistId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "assetId": {
                        "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "kind": {
                        "enum": [
                          "media"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "assetId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "pause"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind"
                    ],
                    "type": "object"
                  }
                ]
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "createdById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  }
                ]
              },
              "id": {
                "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "items": {
                "items": {
                  "properties": {
                    "content": {
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "scene"
                              ],
                              "type": "string"
                            },
                            "sceneId": {
                              "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "sceneId"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "playlist"
                              ],
                              "type": "string"
                            },
                            "playlistId": {
                              "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "playlistId"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "assetId": {
                              "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            },
                            "kind": {
                              "enum": [
                                "media"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "assetId"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "pause"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        }
                      ]
                    },
                    "createdAt": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "id": {
                      "pattern": "^sci_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "label": {
                      "maxLength": 200,
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "paused": {
                      "type": "boolean"
                    },
                    "recurrence": {
                      "oneOf": [
                        {
                          "properties": {
                            "endsAt": {
                              "format": "date-time",
                              "type": "string"
                            },
                            "kind": {
                              "enum": [
                                "once"
                              ],
                              "type": "string"
                            },
                            "startsAt": {
                              "format": "date-time",
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "startsAt",
                            "endsAt"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "daily"
                              ],
                              "type": "string"
                            },
                            "timeWindows": {
                              "items": {
                                "properties": {
                                  "endTime": {
                                    "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                                    "type": "string"
                                  },
                                  "startTime": {
                                    "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "startTime",
                                  "endTime"
                                ],
                                "type": "object"
                              },
                              "maxItems": 8,
                              "minItems": 1,
                              "type": "array"
                            },
                            "timezone": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "timeWindows",
                            "timezone"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "daysOfWeek": {
                              "items": {
                                "maximum": 6,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "maxItems": 7,
                              "type": "array"
                            },
                            "kind": {
                              "enum": [
                                "weekly"
                              ],
                              "type": "string"
                            },
                            "timeWindows": {
                              "items": {
                                "properties": {
                                  "endTime": {
                                    "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                                    "type": "string"
                                  },
                                  "startTime": {
                                    "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "startTime",
                                  "endTime"
                                ],
                                "type": "object"
                              },
                              "maxItems": 8,
                              "minItems": 1,
                              "type": "array"
                            },
                            "timezone": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "daysOfWeek",
                            "timeWindows",
                            "timezone"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "daysOfMonth": {
                              "items": {
                                "maximum": 31,
                                "minimum": 1,
                                "type": "integer"
                              },
                              "maxItems": 31,
                              "type": "array"
                            },
                            "kind": {
                              "enum": [
                                "monthly"
                              ],
                              "type": "string"
                            },
                            "timeWindows": {
                              "items": {
                                "properties": {
                                  "endTime": {
                                    "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                                    "type": "string"
                                  },
                                  "startTime": {
                                    "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "startTime",
                                  "endTime"
                                ],
                                "type": "object"
                              },
                              "maxItems": 8,
                              "minItems": 1,
                              "type": "array"
                            },
                            "timezone": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "daysOfMonth",
                            "timeWindows",
                            "timezone"
                          ],
                          "type": "object"
                        }
                      ]
                    },
                    "scheduleId": {
                      "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "tenantId": {
                      "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "updatedAt": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "scheduleId",
                    "tenantId",
                    "label",
                    "content",
                    "recurrence",
                    "paused",
                    "createdAt",
                    "updatedAt"
                  ],
                  "type": "object"
                },
                "maxItems": 200,
                "type": "array"
              },
              "name": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "version": {
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "id",
              "tenantId",
              "name",
              "basis",
              "items",
              "createdById",
              "createdAt",
              "updatedAt",
              "version"
            ],
            "type": "object"
          }
        },
        "required": [
          "schedule"
        ],
        "type": "object"
      },
      "GetScimTokenResponse": {
        "example": {
          "baseUrl": "https://api.demo.local",
          "previous": null,
          "ssoProviderActive": true,
          "token": {
            "createdAt": "2026-06-01T08:30:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "id": "sctm_01KFB7QPW0SCM0ZGANG00000A1",
            "lastUsedAt": "2026-07-20T02:00:00.000Z",
            "revokedAt": null,
            "revokedReason": null,
            "revokesAt": null,
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "tokenPrefix": "sct_01KFB7QP"
          }
        },
        "properties": {
          "baseUrl": {
            "type": "string"
          },
          "previous": {
            "$ref": "#/components/schemas/ScimTokenPublic"
          },
          "ssoProviderActive": {
            "type": "boolean"
          },
          "token": {
            "$ref": "#/components/schemas/ScimTokenPublic"
          }
        },
        "required": [
          "token",
          "previous",
          "baseUrl",
          "ssoProviderActive"
        ],
        "type": "object"
      },
      "GetSetupIntentResponse": {
        "example": {
          "paymentMethod": {
            "expiresAt": null,
            "kind": "sepa_debit",
            "lastFour": "4021",
            "stripePaymentMethodId": "pm_lastschrift_geschaeftskonto"
          },
          "status": "succeeded",
          "way": "stripe"
        },
        "properties": {
          "paymentMethod": {
            "properties": {
              "expiresAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "kind": {
                "enum": [
                  "card",
                  "sepa_debit"
                ],
                "type": "string"
              },
              "lastFour": {
                "pattern": "^\\d{4}$",
                "type": "string"
              },
              "stripePaymentMethodId": {
                "type": "string"
              }
            },
            "required": [
              "stripePaymentMethodId",
              "kind",
              "lastFour",
              "expiresAt"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "status": {
            "enum": [
              "succeeded",
              "processing",
              "requires_action",
              "canceled"
            ],
            "type": "string"
          },
          "way": {
            "enum": [
              "invoice",
              "stripe"
            ],
            "type": "string"
          }
        },
        "required": [
          "status",
          "paymentMethod",
          "way"
        ],
        "type": "object"
      },
      "GetSetupWizardResponse": {
        "example": {
          "completedAt": null,
          "steps": [
            {
              "completedAt": "2026-01-12T09:00:00.000Z",
              "skippedAt": null,
              "skippedReason": null,
              "step": "tenant-profile-completed"
            },
            {
              "completedAt": "2026-01-12T10:40:00.000Z",
              "skippedAt": null,
              "skippedReason": null,
              "step": "branding-uploaded"
            },
            {
              "completedAt": "2026-03-20T08:00:00.000Z",
              "skippedAt": null,
              "skippedReason": null,
              "step": "first-user-invited"
            },
            {
              "completedAt": null,
              "skippedAt": null,
              "skippedReason": null,
              "step": "payment-method-attached"
            },
            {
              "completedAt": "2026-02-09T10:20:00.000Z",
              "skippedAt": null,
              "skippedReason": null,
              "step": "first-app-installed"
            },
            {
              "completedAt": "2026-03-02T09:15:00.000Z",
              "skippedAt": null,
              "skippedReason": null,
              "step": "first-scene-created"
            },
            {
              "completedAt": "2026-03-05T13:25:00.000Z",
              "skippedAt": null,
              "skippedReason": null,
              "step": "first-player-paired"
            }
          ],
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
        },
        "properties": {
          "completedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "steps": {
            "items": {
              "properties": {
                "completedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "skippedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "skippedReason": {
                  "maxLength": 500,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "step": {
                  "enum": [
                    "tenant-profile-completed",
                    "branding-uploaded",
                    "first-user-invited",
                    "payment-method-attached",
                    "first-app-installed",
                    "first-scene-created",
                    "first-player-paired"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "step",
                "completedAt",
                "skippedAt",
                "skippedReason"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "tenantId",
          "steps",
          "completedAt"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "GetSharedProofFileRequest": {
        "example": {
          "kind": "pdf",
          "proofId": "prf_01KZ4T6M80NCHWS00000000398",
          "token": "QHarGvKfElKjVULehOA2mGIKOeOFm8Dro1rCfC9r0zQ"
        },
        "properties": {
          "fileId": {
            "pattern": "^pfi_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "kind": {
            "enum": [
              "pdf",
              "csv",
              "manifest",
              "capture"
            ],
            "type": "string"
          },
          "proofId": {
            "pattern": "^prf_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "token": {
            "maxLength": 128,
            "minLength": 20,
            "pattern": "^[A-Za-z0-9_-]+$",
            "type": "string"
          }
        },
        "required": [
          "token",
          "proofId",
          "kind"
        ],
        "type": "object"
      },
      "GetSsoSettingsResponse": {
        "example": {
          "providers": [
            {
              "breakGlassUserIds": [
                "usr_01KERQ74K0TEAM000000000001"
              ],
              "clientId": "signage-portal",
              "createdAt": "2026-06-02T10:00:00.000Z",
              "defaultRoleId": "rol_01KERPYYW0RECHT00000000003",
              "displayName": "Adler-Apotheke Firmenkonto",
              "domains": [
                {
                  "domain": "adler-apotheke.demo.local",
                  "providerId": "ssop_01KT3WD680SSPRV00000000001",
                  "recordName": "_signage-sso.adler-apotheke.demo.local",
                  "requestedAt": "2026-06-02T10:00:00.000Z",
                  "status": "verified",
                  "verificationToken": "ssov-41c9be072ad5",
                  "verifiedAt": "2026-06-02T10:24:00.000Z"
                }
              ],
              "enforce": false,
              "id": "ssop_01KT3WD680SSPRV00000000001",
              "issuer": "https://anmeldung.adler-apotheke.demo.local",
              "jitProvisioning": true,
              "lastBreakGlassLoginAt": null,
              "lastVerifiedLoginAt": "2026-07-19T16:42:00.000Z",
              "protocol": "oidc",
              "status": "active",
              "updatedAt": "2026-06-02T10:24:00.000Z"
            }
          ],
          "redirectUri": "https://portal.demo.local/auth/sso/callback"
        },
        "properties": {
          "providers": {
            "items": {
              "properties": {
                "breakGlassUserIds": {
                  "items": {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "maxItems": 2,
                  "type": "array"
                },
                "clientId": {
                  "maxLength": 256,
                  "minLength": 1,
                  "type": "string"
                },
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "defaultRoleId": {
                  "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "displayName": {
                  "maxLength": 60,
                  "minLength": 1,
                  "type": "string"
                },
                "domains": {
                  "items": {
                    "properties": {
                      "domain": {
                        "maxLength": 253,
                        "pattern": "^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$",
                        "type": "string"
                      },
                      "providerId": {
                        "pattern": "^ssop_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "recordName": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "requestedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "status": {
                        "enum": [
                          "pending",
                          "verified"
                        ],
                        "type": "string"
                      },
                      "verificationToken": {
                        "maxLength": 64,
                        "minLength": 8,
                        "type": "string"
                      },
                      "verifiedAt": {
                        "format": "date-time",
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    },
                    "required": [
                      "domain",
                      "providerId",
                      "status",
                      "verificationToken",
                      "requestedAt",
                      "verifiedAt",
                      "recordName"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "enforce": {
                  "type": "boolean"
                },
                "id": {
                  "pattern": "^ssop_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "issuer": {
                  "format": "uri",
                  "type": "string"
                },
                "jitProvisioning": {
                  "type": "boolean"
                },
                "lastBreakGlassLoginAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "lastVerifiedLoginAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "protocol": {
                  "enum": [
                    "oidc"
                  ],
                  "type": "string"
                },
                "status": {
                  "enum": [
                    "draft",
                    "active",
                    "disabled"
                  ],
                  "type": "string"
                },
                "updatedAt": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "protocol",
                "displayName",
                "status",
                "enforce",
                "issuer",
                "clientId",
                "defaultRoleId",
                "jitProvisioning",
                "lastVerifiedLoginAt",
                "breakGlassUserIds",
                "lastBreakGlassLoginAt",
                "createdAt",
                "updatedAt",
                "domains"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "redirectUri": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "redirectUri",
          "providers"
        ],
        "type": "object"
      },
      "GetStoreEntryResponse": {
        "example": {
          "entry": {
            "appId": "clock",
            "data": {
              "connects": [],
              "dataAccess": {
                "external": [],
                "reads": [],
                "retention": "kept",
                "writes": []
              },
              "privacy": {
                "recipients": [],
                "retention": "kept",
                "storesOwnData": false
              },
              "resources": [],
              "terms": null,
              "unlocks": []
            },
            "head": {
              "category": "zeit",
              "description": "Digitale oder analoge Uhr mit Datum, in jeder Größe gut lesbar.",
              "displayName": "Uhr",
              "facts": {
                "channel": "stable",
                "locales": [
                  "de-DE"
                ],
                "releasedAt": "2026-06-20T08:00:00.000Z",
                "version": "1.3.0"
              },
              "iconUrl": "/v1/apps/clock/1.3.0/store/icon.svg",
              "marks": {
                "essential": false,
                "exempt": false,
                "prerelease": null,
                "tier": null,
                "trial": false
              },
              "publisher": {
                "name": "Szenera",
                "verified": true
              },
              "tagline": "Uhrzeit und Datum, analog oder digital.",
              "vertical": null
            },
            "manifestHash": "3c1d6e0b2f4a59c8e7d6b5a4f3e2d1c0b9a8f7e6d5c4b3a29180f7e6d5c4b3a2",
            "overview": {
              "compatibility": {
                "hosts": [
                  "szenera-os",
                  "fire-tv",
                  "tizen",
                  "webos",
                  "web-display"
                ],
                "offline": "full",
                "orientations": [
                  "landscape",
                  "portrait"
                ]
              },
              "description": "Digitale oder analoge Uhr mit Datum, in jeder Größe gut lesbar.",
              "highlights": [
                {
                  "description": "Die Uhr läuft auf dem Gerät und braucht kein Netz.",
                  "title": "Immer genau"
                }
              ],
              "related": [
                {
                  "appId": "weather",
                  "displayName": "Wetter",
                  "iconUrl": "/v1/apps/weather/1.4.2/store/icon.svg",
                  "tagline": "Wetterdaten als klar lesbares Display-Widget."
                }
              ],
              "whatsNew": {
                "locale": "de-DE",
                "releasedAt": "2026-06-20T08:00:00.000Z",
                "text": "- Neue Darstellung mit Sekundenzeiger\n- Datum wahlweise ausgeschrieben",
                "version": "1.3.0"
              }
            },
            "ownerRequest": null,
            "quickFacts": {
              "external": false,
              "locales": [
                "de-DE"
              ],
              "ownData": 0,
              "runsOn": {
                "displays": {
                  "compatible": 3,
                  "total": 3
                },
                "hosts": [
                  "szenera-os",
                  "fire-tv",
                  "tizen",
                  "webos",
                  "web-display"
                ]
              },
              "setupSteps": 1,
              "views": 2
            },
            "retainedData": null,
            "setup": {
              "permissions": [],
              "publisher": {
                "name": "Szenera",
                "verified": true
              },
              "steps": [
                {
                  "description": "Das Uhr-Widget im Szenen-Editor auf die Fläche ziehen.",
                  "done": null,
                  "target": {
                    "kind": "scene"
                  },
                  "title": "Widget platzieren"
                }
              ],
              "technical": {
                "appId": "clock",
                "category": "zeit",
                "channel": "stable",
                "signed": true,
                "sizeBytes": 98304,
                "version": "1.3.0"
              }
            },
            "situation": {
              "action": "install",
              "installed": null,
              "kind": "included",
              "offer": {
                "kind": "included",
                "package": "START"
              },
              "reason": {
                "code": "included",
                "package": "START"
              },
              "state": "not-installed",
              "update": null
            },
            "textLocale": "de-DE",
            "versions": [
              {
                "consent": null,
                "current": true,
                "installed": false,
                "note": {
                  "locale": "de-DE",
                  "text": "- Neue Darstellung mit Sekundenzeiger\n- Datum wahlweise ausgeschrieben"
                },
                "releasedAt": "2026-06-20T08:00:00.000Z",
                "releaseId": "arl_01KXG5WQ80AVERSN0000000007",
                "retirement": null,
                "version": "1.3.0"
              },
              {
                "consent": null,
                "current": false,
                "installed": false,
                "note": null,
                "releasedAt": "2026-01-12T08:00:00.000Z",
                "releaseId": "arl_01KFB7Z0E0AVERSN0000000008",
                "retirement": null,
                "version": "1.2.0"
              }
            ],
            "views": {
              "mainViewUrl": "/v1/apps/clock/1.3.0/store/screenshots/clock--digital.png",
              "sceneExampleUrl": "/v1/apps/clock/1.3.0/store/scene-example.png",
              "widgets": [
                {
                  "description": "Zeigt Uhrzeit und Datum.",
                  "id": "clock",
                  "name": "Uhr",
                  "views": [
                    {
                      "aspect": "16:9",
                      "description": "Große Ziffern mit Datum darunter.",
                      "id": "digital",
                      "imageUrl": "/v1/apps/clock/1.3.0/store/screenshots/clock--digital.png",
                      "label": "Digital",
                      "primary": true
                    },
                    {
                      "aspect": "9:16",
                      "description": null,
                      "id": "hochkant",
                      "imageUrl": "/v1/apps/clock/1.3.0/store/screenshots/clock--hochkant.png",
                      "label": "Hochkant",
                      "primary": false
                    }
                  ]
                }
              ]
            }
          }
        },
        "properties": {
          "entry": {
            "$ref": "#/components/schemas/StoreEntryView"
          }
        },
        "required": [
          "entry"
        ],
        "type": "object"
      },
      "GetSubscriptionResponse": {
        "example": {
          "billingAnchorDay": 1,
          "billingCycle": "monthly",
          "cancelAtPeriodEnd": false,
          "canceledAt": null,
          "cancelScheduledAt": "2026-01-01T00:00:00.000Z",
          "createdAt": "2026-01-12T09:02:00.000Z",
          "currentPeriodEnd": "2026-07-31T23:59:59.000Z",
          "currentPeriodStart": "2026-07-01T00:00:00.000Z",
          "desiredBillingCycle": null,
          "desiredDisplays": 1,
          "desiredPackageCode": null,
          "graceUntil": null,
          "id": "sub_01KERQ1MT0VERTRAG000000001",
          "licenseConflictUntil": "2026-01-01T00:00:00.000Z",
          "packageCode": "START",
          "pendingBillingCycle": null,
          "pendingDisplays": null,
          "pendingFailedAt": null,
          "pendingPackageCode": null,
          "source": "invoice",
          "status": "active",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "trialEndsAt": null,
          "trialExtensionCount": 0,
          "trialExtensionDays": 0,
          "updatedAt": "2026-07-01T02:02:00.000Z"
        },
        "properties": {
          "billingAnchorDay": {
            "maximum": 31,
            "minimum": 1,
            "type": "integer"
          },
          "billingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": "string"
          },
          "cancelAtPeriodEnd": {
            "type": "boolean"
          },
          "canceledAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "cancelScheduledAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "currentPeriodEnd": {
            "format": "date-time",
            "type": "string"
          },
          "currentPeriodStart": {
            "format": "date-time",
            "type": "string"
          },
          "desiredBillingCycle": {
            "default": null,
            "maxLength": 20,
            "type": [
              "string",
              "null"
            ]
          },
          "desiredDisplays": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "desiredPackageCode": {
            "default": null,
            "maxLength": 20,
            "type": [
              "string",
              "null"
            ]
          },
          "graceUntil": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "pattern": "^sub_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "licenseConflictUntil": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "packageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pendingBillingCycle": {
            "default": null,
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pendingDisplays": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "pendingFailedAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "pendingPackageCode": {
            "default": null,
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "source": {
            "enum": [
              "invoice",
              "stripe"
            ],
            "type": "string"
          },
          "status": {
            "enum": [
              "trial",
              "active",
              "past_due",
              "canceled",
              "suspended"
            ],
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "trialEndsAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "trialExtensionCount": {
            "default": 0,
            "minimum": 0,
            "type": "integer"
          },
          "trialExtensionDays": {
            "default": 0,
            "minimum": 0,
            "type": "integer"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "source",
          "packageCode",
          "billingCycle",
          "status",
          "currentPeriodStart",
          "currentPeriodEnd",
          "billingAnchorDay",
          "trialEndsAt",
          "cancelAtPeriodEnd",
          "graceUntil",
          "canceledAt",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "GetTenantBusinessProfileResponse": {
        "example": {
          "address": {
            "city": "Hamburg",
            "country": "DE",
            "postalCode": "22765",
            "region": "Hamburg",
            "street": "Bahnhofstraße 12"
          },
          "legalName": "Adler-Apotheke Petersen e. K.",
          "vatId": "DE812345679"
        },
        "properties": {
          "address": {
            "properties": {
              "city": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "country": {
                "pattern": "^[A-Z]{2}$",
                "type": "string"
              },
              "postalCode": {
                "maxLength": 20,
                "minLength": 1,
                "type": "string"
              },
              "region": {
                "default": null,
                "maxLength": 120,
                "minLength": 1,
                "type": [
                  "string",
                  "null"
                ]
              },
              "street": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "street",
              "postalCode",
              "city",
              "country"
            ],
            "type": "object"
          },
          "legalName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "vatId": {
            "maxLength": 20,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "legalName",
          "vatId",
          "address"
        ],
        "type": "object"
      },
      "GetTenantBySlugResponse": {
        "example": {
          "branding": {
            "accentColor": "#e8b33c",
            "faviconAssetRef": {
              "assetId": "ast_01KERR2KG0MEDEN00000000003",
              "variantSet": [
                "thumbnail"
              ]
            },
            "logoAssetRef": {
              "assetId": "ast_01KERR2KG0MEDEN00000000003",
              "variantSet": [
                "original",
                "webp"
              ]
            },
            "primaryColor": "#1f6f4a"
          },
          "createdAt": "2026-01-12T09:00:00.000Z",
          "customDomain": "anzeige.adler-apotheke.demo.local",
          "defaultLocale": "de-DE",
          "defaultTimezone": "Europe/Berlin",
          "displayName": "Adler-Apotheke",
          "frozenAt": "2026-01-01T00:00:00.000Z",
          "id": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "slug": "adler-apotheke",
          "status": "active",
          "updatedAt": "2026-07-14T09:20:00.000Z",
          "vertical": "pharmacy"
        },
        "properties": {
          "branding": {
            "properties": {
              "accentColor": {
                "pattern": "^#[0-9a-fA-F]{6}$",
                "type": "string"
              },
              "faviconAssetRef": {
                "default": null,
                "properties": {
                  "assetId": {
                    "description": "Datei-Kennung|Kennung der Datei in der Medienbibliothek.",
                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "variantSet": {
                    "description": "Fassungen|Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                    "items": {
                      "enum": [
                        "original",
                        "thumbnail",
                        "preview",
                        "webp",
                        "playback"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "assetId",
                  "variantSet"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "logoAssetRef": {
                "default": null,
                "properties": {
                  "assetId": {
                    "description": "Datei-Kennung|Kennung der Datei in der Medienbibliothek.",
                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "variantSet": {
                    "description": "Fassungen|Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                    "items": {
                      "enum": [
                        "original",
                        "thumbnail",
                        "preview",
                        "webp",
                        "playback"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "assetId",
                  "variantSet"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "primaryColor": {
                "pattern": "^#[0-9a-fA-F]{6}$",
                "type": "string"
              }
            },
            "required": [
              "primaryColor",
              "accentColor"
            ],
            "type": "object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "customDomain": {
            "maxLength": 253,
            "type": [
              "string",
              "null"
            ]
          },
          "defaultLocale": {
            "pattern": "^[a-z]{2}(-[A-Z]{2})?$",
            "type": "string"
          },
          "defaultTimezone": {
            "type": "string"
          },
          "displayName": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "frozenAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "slug": {
            "pattern": "^[a-z][a-z0-9-]{2,32}$",
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "frozen",
              "suspended",
              "deleted"
            ],
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "vertical": {
            "default": null,
            "enum": [
              "pharmacy"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "slug",
          "displayName",
          "defaultLocale",
          "defaultTimezone",
          "branding",
          "customDomain",
          "status",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "GetTenantResponse": {
        "example": {
          "branding": {
            "accentColor": "#e8b33c",
            "faviconAssetRef": {
              "assetId": "ast_01KERR2KG0MEDEN00000000003",
              "variantSet": [
                "thumbnail"
              ]
            },
            "logoAssetRef": {
              "assetId": "ast_01KERR2KG0MEDEN00000000003",
              "variantSet": [
                "original",
                "webp"
              ]
            },
            "primaryColor": "#1f6f4a"
          },
          "createdAt": "2026-01-12T09:00:00.000Z",
          "customDomain": "anzeige.adler-apotheke.demo.local",
          "defaultLocale": "de-DE",
          "defaultTimezone": "Europe/Berlin",
          "displayName": "Adler-Apotheke",
          "frozenAt": "2026-01-01T00:00:00.000Z",
          "id": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "slug": "adler-apotheke",
          "status": "active",
          "updatedAt": "2026-07-14T09:20:00.000Z",
          "vertical": "pharmacy"
        },
        "properties": {
          "branding": {
            "properties": {
              "accentColor": {
                "pattern": "^#[0-9a-fA-F]{6}$",
                "type": "string"
              },
              "faviconAssetRef": {
                "default": null,
                "properties": {
                  "assetId": {
                    "description": "Datei-Kennung|Kennung der Datei in der Medienbibliothek.",
                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "variantSet": {
                    "description": "Fassungen|Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                    "items": {
                      "enum": [
                        "original",
                        "thumbnail",
                        "preview",
                        "webp",
                        "playback"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "assetId",
                  "variantSet"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "logoAssetRef": {
                "default": null,
                "properties": {
                  "assetId": {
                    "description": "Datei-Kennung|Kennung der Datei in der Medienbibliothek.",
                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "variantSet": {
                    "description": "Fassungen|Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                    "items": {
                      "enum": [
                        "original",
                        "thumbnail",
                        "preview",
                        "webp",
                        "playback"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "assetId",
                  "variantSet"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "primaryColor": {
                "pattern": "^#[0-9a-fA-F]{6}$",
                "type": "string"
              }
            },
            "required": [
              "primaryColor",
              "accentColor"
            ],
            "type": "object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "customDomain": {
            "maxLength": 253,
            "type": [
              "string",
              "null"
            ]
          },
          "defaultLocale": {
            "pattern": "^[a-z]{2}(-[A-Z]{2})?$",
            "type": "string"
          },
          "defaultTimezone": {
            "type": "string"
          },
          "displayName": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "frozenAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "slug": {
            "pattern": "^[a-z][a-z0-9-]{2,32}$",
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "frozen",
              "suspended",
              "deleted"
            ],
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "vertical": {
            "default": null,
            "enum": [
              "pharmacy"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "slug",
          "displayName",
          "defaultLocale",
          "defaultTimezone",
          "branding",
          "customDomain",
          "status",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "GetUserByIdResponse": {
        "example": {
          "createdAt": "2026-01-12T09:05:00.000Z",
          "deletedAt": null,
          "email": "owner@demo.local",
          "emailVerifiedAt": "2026-01-12T09:12:00.000Z",
          "hasPassword": true,
          "id": "usr_01KERQ74K0TEAM000000000001",
          "lastLoginAt": "2026-07-20T07:55:00.000Z",
          "mfaEnabled": false,
          "mfaEnabledAt": null,
          "profile": {
            "avatarAssetRef": null,
            "displayName": "Julia Petersen",
            "locale": "de-DE",
            "timezone": "Europe/Berlin"
          },
          "roleAssignments": [
            {
              "assignedAt": "2026-01-12T09:05:00.000Z",
              "assignedById": "usr_01KERQ74K0TEAM000000000001",
              "expiresAt": null,
              "roleId": "rol_01KERPYWXGRECHT00000000001"
            }
          ],
          "roleVersion": 1,
          "status": "active",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-20T07:55:00.000Z"
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "deletedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "email": {
            "format": "email",
            "maxLength": 254,
            "type": "string"
          },
          "emailVerifiedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "hasPassword": {
            "type": "boolean"
          },
          "id": {
            "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "lastLoginAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "mfaEnabled": {
            "type": "boolean"
          },
          "mfaEnabledAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "profile": {
            "properties": {
              "avatarAssetRef": {
                "properties": {
                  "assetId": {
                    "description": "Datei-Kennung|Kennung der Datei in der Medienbibliothek.",
                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "variantSet": {
                    "description": "Fassungen|Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                    "items": {
                      "enum": [
                        "original",
                        "thumbnail",
                        "preview",
                        "webp",
                        "playback"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "assetId",
                  "variantSet"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "displayName": {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              "locale": {
                "default": "de-DE",
                "pattern": "^[a-z]{2}(-[A-Z]{2})?$",
                "type": "string"
              },
              "timezone": {
                "default": "Europe/Berlin",
                "type": "string"
              }
            },
            "required": [
              "displayName",
              "avatarAssetRef"
            ],
            "type": "object"
          },
          "roleAssignments": {
            "items": {
              "properties": {
                "assignedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "assignedById": {
                  "anyOf": [
                    {
                      "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "enum": [
                        "scim-directory"
                      ],
                      "type": "string"
                    },
                    {
                      "enum": [
                        "role-expiry"
                      ],
                      "type": "string"
                    }
                  ]
                },
                "expiresAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "roleId": {
                  "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                }
              },
              "required": [
                "roleId",
                "assignedAt",
                "assignedById",
                "expiresAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "roleVersion": {
            "minimum": 0,
            "type": "integer"
          },
          "status": {
            "enum": [
              "pending",
              "active",
              "suspended",
              "deleted"
            ],
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "email",
          "emailVerifiedAt",
          "profile",
          "roleAssignments",
          "roleVersion",
          "status",
          "createdAt",
          "updatedAt",
          "deletedAt",
          "lastLoginAt",
          "mfaEnabledAt",
          "mfaEnabled",
          "hasPassword"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "GetWidgetCatalogResponse": {
        "example": {
          "entries": [
            {
              "appId": "core",
              "definition": {
                "appId": "core",
                "configSchema": {
                  "$schema": "https://json-schema.org/draft/2020-12/schema",
                  "description": "Statischer Text-Block mit voller Kontrolle über Schrift, Ausrichtung und Farben.",
                  "examples": [
                    {
                      "backgroundColor": "#ffffff",
                      "backgroundStyle": "transparent",
                      "content": "Ihr Text",
                      "fontFamily": "inter",
                      "fontSizeRem": 2,
                      "fontStyle": "sans",
                      "fontWeight": "bold",
                      "lineHeight": "tight",
                      "padding": "md",
                      "textAlign": "center",
                      "textColor": "#0f172a",
                      "textTransform": "none",
                      "verticalAlign": "middle"
                    },
                    {
                      "backgroundColor": "#ffffff",
                      "backgroundStyle": "transparent",
                      "content": "Willkommen in Ihrer Apotheke",
                      "fontFamily": "inter",
                      "fontSizeRem": 3,
                      "fontStyle": "sans",
                      "fontWeight": "bold",
                      "lineHeight": "tight",
                      "padding": "md",
                      "textAlign": "center",
                      "textColor": "#0f172a",
                      "textTransform": "none",
                      "verticalAlign": "middle"
                    }
                  ],
                  "properties": {
                    "backgroundColor": {
                      "default": "#ffffff",
                      "description": "Grundfarbe der Box; wirkt nur bei „gefüllt“.",
                      "pattern": "^#[0-9a-fA-F]{6}(?:[0-9a-fA-F]{2})?$",
                      "title": "Hintergrundfarbe",
                      "type": "string"
                    },
                    "backgroundStyle": {
                      "default": "transparent",
                      "description": "Durchscheinend oder gefüllt.",
                      "enum": [
                        "transparent",
                        "solid"
                      ],
                      "title": "Hintergrundart",
                      "type": "string"
                    },
                    "content": {
                      "description": "Der angezeigte Text. Zeilenumbrüche bleiben erhalten; Markup gibt es hier nicht.",
                      "maxLength": 500,
                      "minLength": 1,
                      "title": "Text",
                      "type": "string"
                    },
                    "fontFamily": {
                      "description": "Familie aus der Schrift-Palette. Ohne Wahl gilt die mitgelieferte Familie der Gattung.",
                      "enum": [
                        "inter",
                        "roboto",
                        "open-sans",
                        "montserrat",
                        "poppins",
                        "nunito",
                        "raleway",
                        "dm-sans",
                        "fira-sans",
                        "source-sans-3",
                        "rubik",
                        "lexend",
                        "urbanist",
                        "archivo",
                        "jost",
                        "sora",
                        "geist",
                        "red-hat-display",
                        "outfit",
                        "manrope",
                        "figtree",
                        "bricolage-grotesque",
                        "ibm-plex-sans",
                        "plus-jakarta-sans",
                        "oswald",
                        "bebas-neue",
                        "anton",
                        "roboto-condensed",
                        "playfair-display",
                        "lora",
                        "merriweather",
                        "pt-serif",
                        "fraunces",
                        "cormorant-garamond",
                        "roboto-mono",
                        "jetbrains-mono",
                        "dancing-script",
                        "pacifico",
                        "caveat"
                      ],
                      "title": "Schrift",
                      "type": "string"
                    },
                    "fontSizeRem": {
                      "default": 2,
                      "description": "Faktor gegen die Boxhöhe — derselbe Wert wirkt in jeder Boxgröße gleich.",
                      "maximum": 20,
                      "minimum": 0.5,
                      "title": "Schriftgröße",
                      "type": "number"
                    },
                    "fontStyle": {
                      "default": "sans",
                      "description": "Grotesk, Antiqua oder Schreibmaschine — sie greift, wenn keine Familie gewählt ist.",
                      "enum": [
                        "sans",
                        "serif",
                        "mono"
                      ],
                      "title": "Schriftgattung",
                      "type": "string"
                    },
                    "fontWeight": {
                      "default": "normal",
                      "description": "Normal, mittel oder fett.",
                      "enum": [
                        "normal",
                        "medium",
                        "bold"
                      ],
                      "title": "Schriftstärke",
                      "type": "string"
                    },
                    "lineHeight": {
                      "default": "normal",
                      "description": "Kompakt, normal oder luftig.",
                      "enum": [
                        "tight",
                        "normal",
                        "relaxed"
                      ],
                      "title": "Zeilenabstand",
                      "type": "string"
                    },
                    "padding": {
                      "default": "md",
                      "description": "Abstand des Textes zur Widget-Box.",
                      "enum": [
                        "none",
                        "sm",
                        "md",
                        "lg"
                      ],
                      "title": "Innenabstand",
                      "type": "string"
                    },
                    "textAlign": {
                      "default": "center",
                      "description": "Waagerechte Ausrichtung des Textes.",
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ],
                      "title": "Ausrichtung",
                      "type": "string"
                    },
                    "textColor": {
                      "default": "#0f172a",
                      "description": "Farbe der Schrift.",
                      "pattern": "^#[0-9a-fA-F]{6}(?:[0-9a-fA-F]{2})?$",
                      "title": "Textfarbe",
                      "type": "string"
                    },
                    "textTransform": {
                      "default": "none",
                      "description": "„uppercase“ setzt den Text in Versalien, ohne den gespeicherten Inhalt zu ändern.",
                      "enum": [
                        "none",
                        "uppercase"
                      ],
                      "title": "Schreibweise",
                      "type": "string"
                    },
                    "verticalAlign": {
                      "default": "middle",
                      "description": "Wo der Text in der Box sitzt.",
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ],
                      "title": "Senkrechte Lage",
                      "type": "string"
                    }
                  },
                  "required": [
                    "content"
                  ],
                  "title": "Text",
                  "type": "object"
                },
                "description": "Statischer Text-Block mit voller Kontrolle über Schrift, Ausrichtung und Farben.",
                "id": "text",
                "name": "Text",
                "noResolver": true,
                "preview": {
                  "defaultConfig": {
                    "backgroundColor": "#ffffff",
                    "backgroundStyle": "transparent",
                    "content": "Ihr Text",
                    "fontFamily": "inter",
                    "fontSizeRem": 2,
                    "fontStyle": "sans",
                    "fontWeight": "bold",
                    "lineHeight": "tight",
                    "padding": "md",
                    "textAlign": "center",
                    "textColor": "#0f172a",
                    "textTransform": "none",
                    "verticalAlign": "middle"
                  },
                  "mockData": {
                    "backgroundColor": "#ffffff",
                    "backgroundStyle": "transparent",
                    "content": "Willkommen in Ihrer Apotheke",
                    "fontFamily": "inter",
                    "fontSizeRem": 3,
                    "fontStyle": "sans",
                    "fontWeight": "bold",
                    "lineHeight": "tight",
                    "padding": "md",
                    "textAlign": "center",
                    "textColor": "#0f172a",
                    "textTransform": "none",
                    "verticalAlign": "middle"
                  },
                  "thumbnailUrl": "",
                  "variants": []
                }
              },
              "version": "0.0.0"
            },
            {
              "appId": "core",
              "definition": {
                "appId": "core",
                "configSchema": {
                  "$schema": "https://json-schema.org/draft/2020-12/schema",
                  "description": "Bild aus der Media-Library (AssetRef) mit Anpassung, Ausrichtung, Ecken und Ken-Burns-Effekt.",
                  "examples": [
                    {
                      "backgroundColor": "#0f172a",
                      "backgroundMode": "color",
                      "borderRadius": "none",
                      "fit": "cover",
                      "kenBurns": {
                        "direction": "in",
                        "durationSec": 24,
                        "zoom": 1.15
                      },
                      "motionEffect": "none",
                      "position": {
                        "x": "center",
                        "y": "center"
                      }
                    },
                    {
                      "assetRef": {
                        "assetId": "ast_01KY2M8V60ASSET0000000DEM1",
                        "variantSet": [
                          "webp",
                          "original"
                        ]
                      },
                      "backgroundColor": "#0f172a",
                      "backgroundMode": "color",
                      "borderRadius": "none",
                      "fit": "cover",
                      "kenBurns": {
                        "direction": "in",
                        "durationSec": 24,
                        "zoom": 1.15
                      },
                      "motionEffect": "kenburns",
                      "position": {
                        "x": "center",
                        "y": "center"
                      }
                    }
                  ],
                  "properties": {
                    "assetRef": {
                      "description": "Die Datei aus der Medienbibliothek. Ohne sie zeigt das Widget seinen Platzhalter.",
                      "properties": {
                        "assetId": {
                          "description": "Kennung der Datei in der Medienbibliothek.",
                          "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                          "title": "Datei-Kennung",
                          "type": "string"
                        },
                        "variantSet": {
                          "description": "Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                          "items": {
                            "enum": [
                              "original",
                              "thumbnail",
                              "preview",
                              "webp",
                              "playback"
                            ],
                            "type": "string"
                          },
                          "title": "Fassungen",
                          "type": "array"
                        }
                      },
                      "required": [
                        "assetId",
                        "variantSet"
                      ],
                      "title": "Bild",
                      "type": "object"
                    },
                    "backgroundColor": {
                      "default": "#000000",
                      "description": "Fläche hinter dem Bild; wirkt nicht bei „transparent“.",
                      "pattern": "^#[0-9a-fA-F]{6}(?:[0-9a-fA-F]{2})?$",
                      "title": "Hintergrundfarbe",
                      "type": "string"
                    },
                    "backgroundMode": {
                      "default": "color",
                      "description": "„transparent“ lässt den Szenen-Hintergrund durchscheinen.",
                      "enum": [
                        "color",
                        "transparent"
                      ],
                      "title": "Hintergrund",
                      "type": "string"
                    },
                    "borderRadius": {
                      "default": "none",
                      "description": "Rundung der Box; sie skaliert mit der Widget-Größe.",
                      "enum": [
                        "none",
                        "sm",
                        "md",
                        "lg"
                      ],
                      "title": "Ecken",
                      "type": "string"
                    },
                    "fit": {
                      "default": "cover",
                      "description": "„cover“ füllt und beschneidet, „contain“ passt vollständig ein, „fill“ verzerrt.",
                      "enum": [
                        "cover",
                        "contain",
                        "fill"
                      ],
                      "title": "Einpassung",
                      "type": "string"
                    },
                    "kenBurns": {
                      "default": {},
                      "description": "Einstellungen der langsamen Bildbewegung.",
                      "properties": {
                        "direction": {
                          "default": "in",
                          "description": "„in“ startet weit und zoomt hinein, „out“ startet nah und fährt heraus.",
                          "enum": [
                            "in",
                            "out"
                          ],
                          "title": "Richtung",
                          "type": "string"
                        },
                        "durationSec": {
                          "default": 24,
                          "description": "Sekunden je Bewegungsrichtung — bewusst lang.",
                          "maximum": 300,
                          "minimum": 5,
                          "title": "Dauer",
                          "type": "integer"
                        },
                        "zoom": {
                          "default": 1.15,
                          "description": "Vergrößerung am Ende der Bewegung (1,0 wäre keine).",
                          "maximum": 1.6,
                          "minimum": 1.02,
                          "title": "Zoomfaktor",
                          "type": "number"
                        }
                      },
                      "title": "Ken-Burns",
                      "type": "object"
                    },
                    "motionEffect": {
                      "default": "none",
                      "description": "Langsamer Pan- und Zoom-Effekt über dem Bild.",
                      "enum": [
                        "none",
                        "kenburns"
                      ],
                      "title": "Bewegung",
                      "type": "string"
                    },
                    "position": {
                      "default": {},
                      "description": "Welcher Teil des Bildes sichtbar bleibt, wenn es die Box nicht formatgleich füllt.",
                      "properties": {
                        "x": {
                          "default": "center",
                          "description": "Ausschnitt-Lage links, mittig oder rechts.",
                          "enum": [
                            "left",
                            "center",
                            "right"
                          ],
                          "title": "Waagerecht",
                          "type": "string"
                        },
                        "y": {
                          "default": "center",
                          "description": "Ausschnitt-Lage oben, mittig oder unten.",
                          "enum": [
                            "top",
                            "center",
                            "bottom"
                          ],
                          "title": "Senkrecht",
                          "type": "string"
                        }
                      },
                      "title": "Ausschnitt",
                      "type": "object"
                    }
                  },
                  "required": [],
                  "title": "Bild",
                  "type": "object"
                },
                "description": "Bild aus der Media-Library (AssetRef) mit Anpassung, Ausrichtung, Ecken und Ken-Burns-Effekt.",
                "id": "image",
                "name": "Bild",
                "noResolver": true,
                "preview": {
                  "defaultConfig": {
                    "backgroundColor": "#0f172a",
                    "backgroundMode": "color",
                    "borderRadius": "none",
                    "fit": "cover",
                    "kenBurns": {
                      "direction": "in",
                      "durationSec": 24,
                      "zoom": 1.15
                    },
                    "motionEffect": "none",
                    "position": {
                      "x": "center",
                      "y": "center"
                    }
                  },
                  "mockData": {
                    "assetRef": {
                      "assetId": "ast_01KY2M8V60ASSET0000000DEM1",
                      "variantSet": [
                        "webp",
                        "original"
                      ]
                    },
                    "backgroundColor": "#0f172a",
                    "backgroundMode": "color",
                    "borderRadius": "none",
                    "fit": "cover",
                    "kenBurns": {
                      "direction": "in",
                      "durationSec": 24,
                      "zoom": 1.15
                    },
                    "motionEffect": "kenburns",
                    "position": {
                      "x": "center",
                      "y": "center"
                    }
                  },
                  "thumbnailUrl": "",
                  "variants": []
                }
              },
              "version": "0.0.0"
            },
            {
              "appId": "core",
              "definition": {
                "appId": "core",
                "configSchema": {
                  "$schema": "https://json-schema.org/draft/2020-12/schema",
                  "description": "Video aus der Media-Library (AssetRef) mit Loop, Stummschaltung, Startzeit und Ecken.",
                  "examples": [
                    {
                      "autoplay": true,
                      "backgroundColor": "#000000",
                      "backgroundMode": "color",
                      "borderRadius": "none",
                      "fit": "cover",
                      "loop": true,
                      "muted": true,
                      "position": {
                        "x": "center",
                        "y": "center"
                      },
                      "startAtSeconds": 0
                    },
                    {
                      "assetRef": {
                        "assetId": "ast_01KY2M8V60ASSET0000000DEM1",
                        "variantSet": [
                          "original"
                        ]
                      },
                      "autoplay": true,
                      "backgroundColor": "#000000",
                      "backgroundMode": "color",
                      "borderRadius": "none",
                      "fit": "cover",
                      "loop": true,
                      "muted": true,
                      "position": {
                        "x": "center",
                        "y": "center"
                      },
                      "startAtSeconds": 0
                    }
                  ],
                  "properties": {
                    "assetRef": {
                      "description": "Die Datei aus der Medienbibliothek. Ohne sie zeigt das Widget seinen Platzhalter.",
                      "properties": {
                        "assetId": {
                          "description": "Kennung der Datei in der Medienbibliothek.",
                          "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                          "title": "Datei-Kennung",
                          "type": "string"
                        },
                        "variantSet": {
                          "description": "Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                          "items": {
                            "enum": [
                              "original",
                              "thumbnail",
                              "preview",
                              "webp",
                              "playback"
                            ],
                            "type": "string"
                          },
                          "title": "Fassungen",
                          "type": "array"
                        }
                      },
                      "required": [
                        "assetId",
                        "variantSet"
                      ],
                      "title": "Video",
                      "type": "object"
                    },
                    "autoplay": {
                      "default": true,
                      "description": "Beginnt die Wiedergabe ohne Zutun.",
                      "title": "Von selbst starten",
                      "type": "boolean"
                    },
                    "backgroundColor": {
                      "default": "#000000",
                      "description": "Fläche hinter dem Video; wirkt nicht bei „transparent“.",
                      "pattern": "^#[0-9a-fA-F]{6}(?:[0-9a-fA-F]{2})?$",
                      "title": "Hintergrundfarbe",
                      "type": "string"
                    },
                    "backgroundMode": {
                      "default": "color",
                      "description": "„transparent“ lässt den Szenen-Hintergrund hinter eingepassten Videos durchscheinen.",
                      "enum": [
                        "color",
                        "transparent"
                      ],
                      "title": "Hintergrund",
                      "type": "string"
                    },
                    "borderRadius": {
                      "default": "none",
                      "description": "Rundung der Box; sie skaliert mit der Widget-Größe.",
                      "enum": [
                        "none",
                        "sm",
                        "md",
                        "lg"
                      ],
                      "title": "Ecken",
                      "type": "string"
                    },
                    "fit": {
                      "default": "cover",
                      "description": "„cover“ füllt und beschneidet, „contain“ passt vollständig ein, „fill“ verzerrt.",
                      "enum": [
                        "cover",
                        "contain",
                        "fill"
                      ],
                      "title": "Einpassung",
                      "type": "string"
                    },
                    "loop": {
                      "default": true,
                      "description": "Beginnt nach dem Ende von vorn.",
                      "title": "Schleife",
                      "type": "boolean"
                    },
                    "muted": {
                      "default": true,
                      "description": "Ohne Ton. Browser starten Videos mit Ton nicht von selbst.",
                      "title": "Stumm",
                      "type": "boolean"
                    },
                    "position": {
                      "default": {},
                      "description": "Welcher Teil des Bildes sichtbar bleibt, wenn das Video die Box nicht formatgleich füllt.",
                      "properties": {
                        "x": {
                          "default": "center",
                          "description": "Ausschnitt-Lage links, mittig oder rechts.",
                          "enum": [
                            "left",
                            "center",
                            "right"
                          ],
                          "title": "Waagerecht",
                          "type": "string"
                        },
                        "y": {
                          "default": "center",
                          "description": "Ausschnitt-Lage oben, mittig oder unten.",
                          "enum": [
                            "top",
                            "center",
                            "bottom"
                          ],
                          "title": "Senkrecht",
                          "type": "string"
                        }
                      },
                      "title": "Ausschnitt",
                      "type": "object"
                    },
                    "startAtSeconds": {
                      "default": 0,
                      "description": "Sekunden, ab denen das Video läuft — auch bei jedem Schleifendurchlauf.",
                      "maximum": 86400,
                      "minimum": 0,
                      "title": "Startzeit",
                      "type": "number"
                    }
                  },
                  "required": [],
                  "title": "Video",
                  "type": "object"
                },
                "description": "Video aus der Media-Library (AssetRef) mit Loop, Stummschaltung, Startzeit und Ecken.",
                "id": "video",
                "name": "Video",
                "noResolver": true,
                "preview": {
                  "defaultConfig": {
                    "autoplay": true,
                    "backgroundColor": "#000000",
                    "backgroundMode": "color",
                    "borderRadius": "none",
                    "fit": "cover",
                    "loop": true,
                    "muted": true,
                    "position": {
                      "x": "center",
                      "y": "center"
                    },
                    "startAtSeconds": 0
                  },
                  "mockData": {
                    "assetRef": {
                      "assetId": "ast_01KY2M8V60ASSET0000000DEM1",
                      "variantSet": [
                        "original"
                      ]
                    },
                    "autoplay": true,
                    "backgroundColor": "#000000",
                    "backgroundMode": "color",
                    "borderRadius": "none",
                    "fit": "cover",
                    "loop": true,
                    "muted": true,
                    "position": {
                      "x": "center",
                      "y": "center"
                    },
                    "startAtSeconds": 0
                  },
                  "thumbnailUrl": "",
                  "variants": []
                }
              },
              "version": "0.0.0"
            },
            {
              "appId": "core",
              "definition": {
                "appId": "core",
                "configSchema": {
                  "$schema": "https://json-schema.org/draft/2020-12/schema",
                  "description": "Formen von Rechteck bis Häkchen — mit Fläche, Kontur, Fein-Parametern und freier Drehung.",
                  "examples": [
                    {
                      "cornerRadius": 0,
                      "dash": "none",
                      "fillColor": "#0f766e",
                      "fillOpacity": 1,
                      "fillTransparent": false,
                      "headSize": 36,
                      "innerRadius": 60,
                      "lineCap": "butt",
                      "pointDepth": 60,
                      "rotationDeg": 0,
                      "shaftWidth": 28,
                      "strokeColor": "#0f172a",
                      "strokeWidth": 0,
                      "variant": "rectangle"
                    }
                  ],
                  "properties": {
                    "cornerRadius": {
                      "default": 0,
                      "description": "Rundung in Pixeln; wirkt bei Rechteck und Quadrat.",
                      "maximum": 200,
                      "minimum": 0,
                      "title": "Eckenrundung",
                      "type": "number"
                    },
                    "dash": {
                      "default": "none",
                      "description": "Durchgezogen, gestrichelt oder gepunktet.",
                      "enum": [
                        "none",
                        "dashed",
                        "dotted"
                      ],
                      "title": "Strichbild",
                      "type": "string"
                    },
                    "fillColor": {
                      "default": "#0f766e",
                      "description": "Farbe der Fläche; bei Linien ihre Linienfarbe.",
                      "pattern": "^#[0-9a-fA-F]{6}(?:[0-9a-fA-F]{2})?$",
                      "title": "Flächenfarbe",
                      "type": "string"
                    },
                    "fillOpacity": {
                      "default": 1,
                      "description": "0 ist unsichtbar, 1 voll deckend — für farbige Schleier über Bildern.",
                      "maximum": 1,
                      "minimum": 0,
                      "title": "Deckkraft der Fläche",
                      "type": "number"
                    },
                    "fillTransparent": {
                      "default": false,
                      "description": "Die Form besteht dann nur aus ihrer Kontur.",
                      "title": "Fläche weglassen",
                      "type": "boolean"
                    },
                    "headSize": {
                      "default": 36,
                      "description": "Länge der Pfeilspitze beziehungsweise Tiefe eines Winkels, in Prozent der Box-Kante.",
                      "maximum": 90,
                      "minimum": 10,
                      "title": "Spitzengröße",
                      "type": "number"
                    },
                    "innerRadius": {
                      "default": 60,
                      "description": "Innenradius des Rings in Prozent seines Außenradius.",
                      "maximum": 90,
                      "minimum": 10,
                      "title": "Lochweite",
                      "type": "number"
                    },
                    "lineCap": {
                      "default": "butt",
                      "description": "Stumpf am Endpunkt oder rund darüber hinaus.",
                      "enum": [
                        "butt",
                        "round"
                      ],
                      "title": "Linienenden",
                      "type": "string"
                    },
                    "pointDepth": {
                      "default": 60,
                      "description": "Wie tief die Zacken eines Sterns einschneiden, in Prozent des Außenradius.",
                      "maximum": 90,
                      "minimum": 10,
                      "title": "Zackentiefe",
                      "type": "number"
                    },
                    "rotationDeg": {
                      "default": 0,
                      "description": "Drehung im Uhrzeigersinn um die Box-Mitte, in Grad.",
                      "maximum": 180,
                      "minimum": -180,
                      "title": "Drehung",
                      "type": "number"
                    },
                    "shaftWidth": {
                      "default": 28,
                      "description": "Dicke des Pfeilschafts beziehungsweise des Winkelbalkens, in Prozent der Box-Kante.",
                      "maximum": 90,
                      "minimum": 10,
                      "title": "Schaftdicke",
                      "type": "number"
                    },
                    "strokeColor": {
                      "default": "#0f172a",
                      "description": "Farbe der Umrisslinie.",
                      "pattern": "^#[0-9a-fA-F]{6}(?:[0-9a-fA-F]{2})?$",
                      "title": "Konturfarbe",
                      "type": "string"
                    },
                    "strokeWidth": {
                      "default": 0,
                      "description": "Breite der Umrisslinie in Pixeln; 0 heißt keine Kontur.",
                      "maximum": 40,
                      "minimum": 0,
                      "title": "Konturbreite",
                      "type": "number"
                    },
                    "variant": {
                      "default": "rectangle",
                      "description": "Welche Form gezeichnet wird — von Rechteck über Stern und Pfeil bis Häkchen.",
                      "enum": [
                        "rectangle",
                        "square",
                        "circle",
                        "ellipse",
                        "semicircle",
                        "quarter-circle",
                        "ring",
                        "triangle",
                        "right-triangle",
                        "rhombus",
                        "pentagon",
                        "hexagon",
                        "octagon",
                        "star-4",
                        "star-5",
                        "star-6",
                        "arrow-right",
                        "arrow-left",
                        "arrow-up",
                        "arrow-down",
                        "arrow-double-h",
                        "chevron-right",
                        "chevron-left",
                        "line-h",
                        "line-v",
                        "line-diag-r",
                        "line-diag-l",
                        "cross-plus",
                        "checkmark",
                        "parallelogram",
                        "trapezoid"
                      ],
                      "title": "Form",
                      "type": "string"
                    }
                  },
                  "required": [],
                  "title": "Form",
                  "type": "object"
                },
                "description": "Formen von Rechteck bis Häkchen — mit Fläche, Kontur, Fein-Parametern und freier Drehung.",
                "id": "shape",
                "name": "Form",
                "noResolver": true,
                "preview": {
                  "defaultConfig": {
                    "cornerRadius": 0,
                    "dash": "none",
                    "fillColor": "#0f766e",
                    "fillOpacity": 1,
                    "fillTransparent": false,
                    "headSize": 36,
                    "innerRadius": 60,
                    "lineCap": "butt",
                    "pointDepth": 60,
                    "rotationDeg": 0,
                    "shaftWidth": 28,
                    "strokeColor": "#0f172a",
                    "strokeWidth": 0,
                    "variant": "rectangle"
                  },
                  "mockData": {
                    "cornerRadius": 0,
                    "dash": "none",
                    "fillColor": "#0f766e",
                    "fillOpacity": 1,
                    "fillTransparent": false,
                    "headSize": 36,
                    "innerRadius": 60,
                    "lineCap": "butt",
                    "pointDepth": 60,
                    "rotationDeg": 0,
                    "shaftWidth": 28,
                    "strokeColor": "#0f172a",
                    "strokeWidth": 0,
                    "variant": "rectangle"
                  },
                  "thumbnailUrl": "",
                  "variants": []
                }
              },
              "version": "0.0.0"
            },
            {
              "appId": "core",
              "definition": {
                "appId": "core",
                "configSchema": {
                  "$schema": "https://json-schema.org/draft/2020-12/schema",
                  "description": "Gezeichnete Motive aus der eingebauten Bibliothek — einfärbbar, spiegelbar, beliebig groß.",
                  "examples": [
                    {
                      "accentColor": "#0f766e",
                      "flipH": false,
                      "flipV": false,
                      "graphicId": "pfeil-rechts",
                      "opacity": 1,
                      "tintColor": "#0f172a"
                    }
                  ],
                  "properties": {
                    "accentColor": {
                      "default": "#0f766e",
                      "description": "Farbe der Akzentflächen; Motive ohne Zweitfläche bleiben unberührt.",
                      "pattern": "^#[0-9a-fA-F]{6}(?:[0-9a-fA-F]{2})?$",
                      "title": "Akzentfarbe",
                      "type": "string"
                    },
                    "flipH": {
                      "default": false,
                      "description": "Aus einem Pfeil nach rechts wird einer nach links.",
                      "title": "Waagerecht spiegeln",
                      "type": "boolean"
                    },
                    "flipV": {
                      "default": false,
                      "description": "Spiegelt das Motiv an der waagerechten Achse.",
                      "title": "Senkrecht spiegeln",
                      "type": "boolean"
                    },
                    "graphicId": {
                      "default": "pfeil-rechts",
                      "description": "Kennung des Motivs aus der eingebauten Bibliothek.",
                      "title": "Motiv",
                      "type": "string"
                    },
                    "opacity": {
                      "default": 1,
                      "description": "Wie deckend das Motiv gezeichnet wird.",
                      "maximum": 1,
                      "minimum": 0.05,
                      "title": "Deckkraft",
                      "type": "number"
                    },
                    "tintColor": {
                      "default": "#0f172a",
                      "description": "Farbe der Hauptflächen des Motivs.",
                      "pattern": "^#[0-9a-fA-F]{6}(?:[0-9a-fA-F]{2})?$",
                      "title": "Hauptfarbe",
                      "type": "string"
                    }
                  },
                  "required": [],
                  "title": "Grafik",
                  "type": "object"
                },
                "description": "Gezeichnete Motive aus der eingebauten Bibliothek — einfärbbar, spiegelbar, beliebig groß.",
                "id": "graphic",
                "name": "Grafik",
                "noResolver": true,
                "preview": {
                  "defaultConfig": {
                    "accentColor": "#0f766e",
                    "flipH": false,
                    "flipV": false,
                    "graphicId": "pfeil-rechts",
                    "opacity": 1,
                    "tintColor": "#0f172a"
                  },
                  "mockData": {
                    "accentColor": "#0f766e",
                    "flipH": false,
                    "flipV": false,
                    "graphicId": "pfeil-rechts",
                    "opacity": 1,
                    "tintColor": "#0f172a"
                  },
                  "thumbnailUrl": "",
                  "variants": []
                }
              },
              "version": "0.0.0"
            },
            {
              "appId": "core",
              "definition": {
                "appId": "core",
                "configSchema": {
                  "$schema": "https://json-schema.org/draft/2020-12/schema",
                  "description": "PDF aus der Mediathek als Seiten: eine Seite, nacheinander oder zwei nebeneinander, auch ohne Netz.",
                  "examples": [
                    {
                      "corners": "round",
                      "display": "sequence",
                      "fit": "page",
                      "interval": 10,
                      "surface": "dark"
                    },
                    {
                      "assetRef": {
                        "assetId": "ast_01KY2M8V60ASSET0000000PDF1",
                        "variantSet": []
                      },
                      "corners": "round",
                      "display": "sequence",
                      "fit": "page",
                      "interval": 10,
                      "surface": "dark"
                    }
                  ],
                  "properties": {
                    "assetRef": {
                      "description": "Das Dokument (PDF) aus der Mediathek. Seine Seiten werden beim Hochladen als Bilder vorbereitet.",
                      "properties": {
                        "assetId": {
                          "description": "Kennung der Datei in der Medienbibliothek.",
                          "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                          "title": "Datei-Kennung",
                          "type": "string"
                        },
                        "variantSet": {
                          "description": "Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                          "items": {
                            "enum": [
                              "original",
                              "thumbnail",
                              "preview",
                              "webp",
                              "playback"
                            ],
                            "type": "string"
                          },
                          "title": "Fassungen",
                          "type": "array"
                        }
                      },
                      "required": [
                        "assetId",
                        "variantSet"
                      ],
                      "title": "Datei",
                      "type": "object"
                    },
                    "corners": {
                      "default": "round",
                      "description": "Abgerundet, mit dem Rahmen wachsend, oder eckig.",
                      "enum": [
                        "round",
                        "square"
                      ],
                      "title": "Ecken",
                      "type": "string"
                    },
                    "display": {
                      "default": "sequence",
                      "description": "Eine Seite, alle gewählten Seiten nacheinander oder zwei nebeneinander.",
                      "enum": [
                        "single",
                        "sequence",
                        "spread"
                      ],
                      "title": "Anzeige",
                      "type": "string"
                    },
                    "fit": {
                      "default": "page",
                      "description": "Die ganze Seite zeigen oder die Breite füllen, oben bündig.",
                      "enum": [
                        "page",
                        "width"
                      ],
                      "title": "Seite anpassen",
                      "type": "string"
                    },
                    "interval": {
                      "default": 10,
                      "description": "So viele Sekunden steht eine Seite, bevor die nächste kommt.",
                      "enum": [
                        5,
                        10,
                        20,
                        30
                      ],
                      "title": "Wechsel alle",
                      "type": "number"
                    },
                    "pages": {
                      "description": "Die Seiten, die das Widget zeigt. Ohne Wahl alle Seiten außer leeren.",
                      "properties": {
                        "numbers": {
                          "description": "Die Nummern der Seiten, die das Widget zeigt, in Seitenfolge ab 1.",
                          "items": {
                            "maximum": 50,
                            "minimum": 1,
                            "type": "integer"
                          },
                          "maxItems": 50,
                          "minItems": 1,
                          "title": "Gewählte Seiten",
                          "type": "array"
                        },
                        "of": {
                          "description": "So viele Seiten hatte das Dokument, als die Seiten gewählt wurden.",
                          "minimum": 1,
                          "title": "Seitenzahl beim Wählen",
                          "type": "integer"
                        }
                      },
                      "required": [
                        "numbers",
                        "of"
                      ],
                      "title": "Seiten",
                      "type": "object"
                    },
                    "surface": {
                      "default": "dark",
                      "description": "Die Fläche hinter den Seiten: dunkel, hell oder durchsichtig.",
                      "enum": [
                        "dark",
                        "light",
                        "transparent"
                      ],
                      "title": "Fläche",
                      "type": "string"
                    }
                  },
                  "required": [],
                  "title": "Dokument",
                  "type": "object"
                },
                "description": "PDF aus der Mediathek als Seiten: eine Seite, nacheinander oder zwei nebeneinander, auch ohne Netz.",
                "id": "document",
                "name": "Dokument",
                "noResolver": true,
                "preview": {
                  "defaultConfig": {
                    "corners": "round",
                    "display": "sequence",
                    "fit": "page",
                    "interval": 10,
                    "surface": "dark"
                  },
                  "mockData": {
                    "assetRef": {
                      "assetId": "ast_01KY2M8V60ASSET0000000PDF1",
                      "variantSet": []
                    },
                    "corners": "round",
                    "display": "sequence",
                    "fit": "page",
                    "interval": 10,
                    "surface": "dark"
                  },
                  "states": [
                    {
                      "description": "Noch kein Dokument gewählt: am Display nur die Fläche.",
                      "id": "empty",
                      "label": "Ohne Datei",
                      "mockData": {}
                    },
                    {
                      "description": "Die Seiten werden nach dem Hochladen noch vorbereitet.",
                      "id": "preparing",
                      "label": "Seiten in Arbeit",
                      "mockData": {
                        "assetRef": {
                          "assetId": "ast_01KY2M8V60ASSET0000000PDF0",
                          "variantSet": []
                        }
                      }
                    }
                  ],
                  "thumbnailUrl": "",
                  "variants": [
                    {
                      "aspect": "9:16",
                      "config": {
                        "display": "sequence",
                        "fit": "page"
                      },
                      "description": "Eine Seite ganz, der Wechsel als feine Striche.",
                      "id": "page",
                      "label": "Seite",
                      "primary": true,
                      "size": {
                        "h": 848,
                        "w": 600
                      }
                    },
                    {
                      "aspect": "16:9",
                      "config": {
                        "display": "spread",
                        "fit": "page"
                      },
                      "description": "Zwei Seiten nebeneinander auf der Fläche.",
                      "id": "spread",
                      "label": "Doppelseite",
                      "primary": false,
                      "size": {
                        "h": 720,
                        "w": 1280
                      }
                    },
                    {
                      "aspect": "16:9",
                      "config": {
                        "display": "sequence",
                        "fit": "page"
                      },
                      "description": "Die Seite auf der Fläche, bildschirmfüllend.",
                      "id": "full",
                      "label": "Vollbild",
                      "primary": false,
                      "size": {
                        "h": 1080,
                        "w": 1920
                      }
                    }
                  ]
                },
                "size": {
                  "min": {
                    "h": 200,
                    "w": 200
                  }
                }
              },
              "version": "0.0.0"
            },
            {
              "appId": "pharmacies-on-duty",
              "definition": {
                "appId": "pharmacies-on-duty",
                "configSchema": {
                  "$schema": "https://json-schema.org/draft/2020-12/schema",
                  "description": "Die Apotheken im Notdienst rund um den Standort des Displays oder einen festen Standort, nach Entfernung.",
                  "examples": [
                    {
                      "count": "auto",
                      "heading": "",
                      "showDistance": true,
                      "showPhone": true,
                      "showQr": true,
                      "source": {
                        "locationId": null,
                        "mode": "display"
                      },
                      "surface": "duty"
                    }
                  ],
                  "properties": {
                    "count": {
                      "anyOf": [
                        {
                          "const": "auto",
                          "type": "string"
                        },
                        {
                          "maximum": 6,
                          "minimum": 1,
                          "type": "integer"
                        }
                      ],
                      "default": "auto",
                      "description": "Automatisch zeigt so viele, wie der Rahmen gut lesbar trägt. Eine Zahl ist die Obergrenze.",
                      "title": "Wie viele Apotheken"
                    },
                    "heading": {
                      "default": "",
                      "description": "Ersetzt „Notdienst-Apotheken“ über der Anzeige.",
                      "maxLength": 60,
                      "title": "Überschrift",
                      "type": "string"
                    },
                    "showDistance": {
                      "default": true,
                      "description": "Wie weit jede Apotheke vom Standort entfernt ist.",
                      "title": "Entfernung",
                      "type": "boolean"
                    },
                    "showPhone": {
                      "default": true,
                      "description": "Die Rufnummer jeder Apotheke unter ihrer Anschrift.",
                      "title": "Telefonnummer",
                      "type": "boolean"
                    },
                    "showQr": {
                      "default": true,
                      "description": "Je Apotheke ein Code, der den Weg aufs Telefon bringt.",
                      "title": "QR-Code zum Weg",
                      "type": "boolean"
                    },
                    "source": {
                      "description": "Den Standort des Displays, das die Szene zeigt, oder einen festen Standort.",
                      "properties": {
                        "locationId": {
                          "default": null,
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "mode": {
                          "default": "display",
                          "enum": [
                            "display",
                            "fixed"
                          ],
                          "type": "string"
                        }
                      },
                      "title": "Notdienste für",
                      "type": "object"
                    },
                    "surface": {
                      "default": "duty",
                      "description": "Notdienst ist das dunkle Blau mit roten Kacheln.",
                      "enum": [
                        "duty",
                        "dark",
                        "light"
                      ],
                      "title": "Hintergrund",
                      "type": "string"
                    }
                  },
                  "required": [],
                  "title": "Notdienst-Anzeige",
                  "type": "object"
                },
                "description": "Die Apotheken im Notdienst rund um den Standort des Displays oder einen festen Standort, nach Entfernung.",
                "id": "pharmacies-on-duty-display",
                "name": "Notdienst-Anzeige",
                "noResolver": false,
                "preload": false,
                "preview": {
                  "defaultConfig": {
                    "corners": "round",
                    "count": "auto",
                    "emergencyNumberHint": true,
                    "heading": "",
                    "showDistance": true,
                    "showMap": false,
                    "showPhone": true,
                    "showQr": true,
                    "source": {
                      "locationId": null,
                      "mode": "display"
                    },
                    "surface": "duty"
                  },
                  "mockData": {
                    "today": {
                      "city": "Hamburg",
                      "distanceKm": 1.8,
                      "pharmacyName": "Elbufer-Apotheke",
                      "phone": "040 1234567"
                    },
                    "upcoming": [
                      {
                        "city": "Hamburg",
                        "date": "2026-07-21",
                        "distanceKm": 3.2,
                        "pharmacyName": "Hafen-Apotheke"
                      }
                    ]
                  },
                  "thumbnailUrl": "/apps/pharmacies-on-duty/thumbnails/pharmacies-on-duty-display.png",
                  "variants": []
                }
              },
              "version": "2.0.1"
            },
            {
              "appId": "weather",
              "definition": {
                "appId": "weather",
                "configSchema": {
                  "$schema": "https://json-schema.org/draft/2020-12/schema",
                  "description": "Aktuelles Wetter und Vorhersage, live vom Wetter-Anbieter der Plattform.",
                  "examples": [
                    {
                      "location": {
                        "fallback": null,
                        "mode": "display",
                        "place": null
                      },
                      "showDaily": true,
                      "showHourly": true,
                      "surface": "condition",
                      "units": "metric"
                    }
                  ],
                  "properties": {
                    "location": {
                      "description": "Der Standort des Displays oder ein fester Ort, mit einem Ersatz für Displays ohne Standort.",
                      "properties": {
                        "fallback": {
                          "default": null,
                          "type": [
                            "object",
                            "null"
                          ]
                        },
                        "mode": {
                          "default": "display",
                          "enum": [
                            "display",
                            "fixed"
                          ],
                          "type": "string"
                        },
                        "place": {
                          "default": null,
                          "type": [
                            "object",
                            "null"
                          ]
                        }
                      },
                      "title": "Ort",
                      "type": "object"
                    },
                    "showDaily": {
                      "description": "Die nächsten Tage mit Höchst- und Tiefstwert.",
                      "title": "Nächste Tage",
                      "type": "boolean"
                    },
                    "showHourly": {
                      "description": "Die nächsten Stunden, sobald der Rahmen Platz dafür hat.",
                      "title": "Stündliche Vorhersage",
                      "type": "boolean"
                    },
                    "surface": {
                      "description": "Folgt dem Wetter oder ist hell, dunkel, gläsern oder durchsichtig.",
                      "enum": [
                        "condition",
                        "light",
                        "dark",
                        "glass",
                        "transparent"
                      ],
                      "title": "Hintergrund",
                      "type": "string"
                    },
                    "units": {
                      "description": "„metric“ rechnet in Grad Celsius, „imperial“ in Fahrenheit.",
                      "enum": [
                        "metric",
                        "imperial"
                      ],
                      "title": "Einheiten",
                      "type": "string"
                    }
                  },
                  "required": [],
                  "title": "Wetter",
                  "type": "object"
                },
                "description": "Aktuelles Wetter und Vorhersage, live vom Wetter-Anbieter der Plattform.",
                "id": "weather",
                "name": "Wetter",
                "noResolver": false,
                "preload": false,
                "preview": {
                  "defaultConfig": {
                    "location": {
                      "fallback": null,
                      "mode": "display",
                      "place": null
                    },
                    "showDaily": false,
                    "showHourly": true,
                    "surface": "condition",
                    "units": "metric"
                  },
                  "mockData": {
                    "city": "Hamburg",
                    "condition": "Wolkig",
                    "temperatureC": 21.4
                  },
                  "states": [
                    {
                      "description": "Schauer am Nachmittag, kühler Wind.",
                      "id": "rain",
                      "label": "Regen",
                      "mockData": {
                        "city": "Hamburg",
                        "condition": "Regen",
                        "temperatureC": 9.2
                      }
                    },
                    {
                      "description": "Klare Nacht, der Mond statt der Sonne.",
                      "id": "night",
                      "label": "Nacht",
                      "mockData": {
                        "city": "Hamburg",
                        "condition": "Klar",
                        "temperatureC": 4.1
                      }
                    }
                  ],
                  "thumbnailUrl": "/apps/weather/thumbnails/weather.png",
                  "variants": []
                },
                "size": {
                  "min": {
                    "h": 110,
                    "w": 240
                  }
                }
              },
              "version": "1.4.2"
            },
            {
              "appId": "opening-hours",
              "definition": {
                "appId": "opening-hours",
                "configSchema": {
                  "$schema": "https://json-schema.org/draft/2020-12/schema",
                  "description": "Ob der Standort gerade geöffnet hat, bis wann, heute und die Woche.",
                  "examples": [
                    {
                      "fallbackLocationId": "loc_01KHK4B3T0ADRESSE000000001",
                      "locationId": null,
                      "showSpecialHint": true,
                      "source": "display",
                      "surface": "green"
                    }
                  ],
                  "properties": {
                    "fallbackLocationId": {
                      "default": null,
                      "description": "Für Displays, die keinem Standort zugeordnet sind.",
                      "title": "Ersatz-Standort",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "locationId": {
                      "default": null,
                      "description": "Der Standort, dessen Öffnungszeiten das Widget auf jedem Display zeigt.",
                      "title": "Standort",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "showSpecialHint": {
                      "default": true,
                      "description": "Der nächste Feiertag oder Sondertermin der kommenden zwei Wochen.",
                      "title": "Auf Sondertermine hinweisen",
                      "type": "boolean"
                    },
                    "source": {
                      "default": "display",
                      "description": "Der Standort, dem das Display zugeordnet ist, oder immer derselbe Standort.",
                      "enum": [
                        "display",
                        "fixed"
                      ],
                      "title": "Öffnungszeiten von",
                      "type": "string"
                    },
                    "surface": {
                      "default": "green",
                      "description": "Zwei ruhige Stimmungen, Dunkel, Hell oder ein Bild aus der Mediathek.",
                      "enum": [
                        "green",
                        "wood",
                        "dark",
                        "light",
                        "image"
                      ],
                      "title": "Hintergrund",
                      "type": "string"
                    }
                  },
                  "required": [],
                  "title": "Öffnungszeiten",
                  "type": "object"
                },
                "description": "Ob der Standort gerade geöffnet hat, bis wann, heute und die Woche.",
                "id": "opening-hours",
                "name": "Öffnungszeiten",
                "noResolver": false,
                "preload": false,
                "preview": {
                  "defaultConfig": {
                    "backgroundImage": null,
                    "corners": "round",
                    "fallbackLocationId": null,
                    "locationId": null,
                    "showSpecialHint": true,
                    "source": "display",
                    "surface": "green"
                  },
                  "mockData": {
                    "closesAt": "18:30",
                    "locationName": "Hauptstelle",
                    "openNow": true
                  },
                  "thumbnailUrl": "/apps/opening-hours/thumbnails/opening-hours.png",
                  "variants": []
                }
              },
              "version": "1.1.0"
            }
          ]
        },
        "properties": {
          "entries": {
            "items": {
              "properties": {
                "appId": {
                  "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                  "type": "string"
                },
                "definition": {
                  "properties": {
                    "appId": {
                      "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "configSchema": {
                      "properties": {
                        "$schema": {
                          "default": "https://json-schema.org/draft/2020-12/schema",
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "examples": {
                          "items": {},
                          "minItems": 1,
                          "type": "array"
                        },
                        "properties": {
                          "additionalProperties": {},
                          "type": "object"
                        },
                        "required": {
                          "default": [],
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        },
                        "title": {
                          "type": "string"
                        },
                        "type": {
                          "enum": [
                            "object"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "type",
                        "properties",
                        "examples"
                      ],
                      "type": "object"
                    },
                    "description": {
                      "maxLength": 300,
                      "type": "string"
                    },
                    "id": {
                      "maxLength": 100,
                      "minLength": 2,
                      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "layoutTemplates": {
                      "items": {
                        "properties": {
                          "id": {
                            "pattern": "^[a-z][a-z0-9-]{1,31}$",
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "slots": {
                            "additionalProperties": {
                              "properties": {
                                "h": {
                                  "type": "number"
                                },
                                "w": {
                                  "type": "number"
                                },
                                "x": {
                                  "type": "number"
                                },
                                "y": {
                                  "type": "number"
                                },
                                "zIndex": {
                                  "default": 0,
                                  "type": "number"
                                }
                              },
                              "required": [
                                "x",
                                "y",
                                "w",
                                "h"
                              ],
                              "type": "object"
                            },
                            "type": "object"
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "slots"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "name": {
                      "maxLength": 60,
                      "minLength": 1,
                      "type": "string"
                    },
                    "noResolver": {
                      "default": false,
                      "type": "boolean"
                    },
                    "preload": {
                      "type": "boolean"
                    },
                    "preview": {
                      "properties": {
                        "defaultConfig": {},
                        "mockData": {},
                        "states": {
                          "items": {
                            "properties": {
                              "description": {
                                "maxLength": 160,
                                "type": "string"
                              },
                              "id": {
                                "pattern": "^[a-z][a-z0-9-]{1,31}$",
                                "type": "string"
                              },
                              "label": {
                                "maxLength": 40,
                                "minLength": 1,
                                "type": "string"
                              },
                              "mockData": {}
                            },
                            "required": [
                              "id",
                              "label",
                              "mockData"
                            ],
                            "type": "object"
                          },
                          "maxItems": 12,
                          "type": "array"
                        },
                        "thumbnailUrl": {
                          "type": "string"
                        },
                        "variants": {
                          "default": [],
                          "items": {
                            "properties": {
                              "aspect": {
                                "default": "16:9",
                                "enum": [
                                  "16:9",
                                  "9:16"
                                ],
                                "type": "string"
                              },
                              "config": {},
                              "description": {
                                "maxLength": 160,
                                "type": "string"
                              },
                              "id": {
                                "pattern": "^[a-z][a-z0-9-]{1,31}$",
                                "type": "string"
                              },
                              "label": {
                                "maxLength": 40,
                                "minLength": 1,
                                "type": "string"
                              },
                              "primary": {
                                "default": false,
                                "type": "boolean"
                              },
                              "size": {
                                "properties": {
                                  "h": {
                                    "exclusiveMinimum": 0,
                                    "maximum": 1080,
                                    "type": "integer"
                                  },
                                  "w": {
                                    "exclusiveMinimum": 0,
                                    "maximum": 1920,
                                    "type": "integer"
                                  }
                                },
                                "required": [
                                  "w",
                                  "h"
                                ],
                                "type": "object"
                              }
                            },
                            "required": [
                              "id",
                              "label"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "thumbnailUrl"
                      ],
                      "type": "object"
                    },
                    "size": {
                      "properties": {
                        "min": {
                          "properties": {
                            "h": {
                              "exclusiveMinimum": 0,
                              "maximum": 1080,
                              "type": "integer"
                            },
                            "w": {
                              "exclusiveMinimum": 0,
                              "maximum": 1920,
                              "type": "integer"
                            }
                          },
                          "required": [
                            "w",
                            "h"
                          ],
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "id",
                    "appId",
                    "name",
                    "description",
                    "configSchema",
                    "preview"
                  ],
                  "type": "object"
                },
                "version": {
                  "pattern": "^\\d+\\.\\d+\\.\\d+$",
                  "type": "string"
                }
              },
              "required": [
                "appId",
                "version",
                "definition"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "entries"
        ],
        "type": "object"
      },
      "GraphicCategoryEntry": {
        "example": {
          "id": "sample",
          "label": "sample"
        },
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string"
          },
          "label": {
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "id",
          "label"
        ],
        "type": "object"
      },
      "GraphicEntry": {
        "example": {
          "category": "sample",
          "id": "sample",
          "keywords": [
            "sample"
          ],
          "name": "sample"
        },
        "properties": {
          "category": {
            "minLength": 1,
            "type": "string"
          },
          "id": {
            "minLength": 1,
            "type": "string"
          },
          "keywords": {
            "items": {
              "minLength": 1,
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "category",
          "keywords"
        ],
        "type": "object"
      },
      "IdentifyRequest": {
        "example": {
          "audience": "tenant",
          "email": "owner@demo.local"
        },
        "properties": {
          "audience": {
            "enum": [
              "tenant",
              "operator"
            ],
            "type": "string"
          },
          "email": {
            "format": "email",
            "maxLength": 254,
            "type": "string"
          }
        },
        "required": [
          "email",
          "audience"
        ],
        "type": "object"
      },
      "IdentifyResponse": {
        "example": {
          "methods": [
            {
              "kind": "password"
            },
            {
              "kind": "magic-link"
            }
          ],
          "sso": {
            "displayName": "Adler-Apotheke Firmenkonto",
            "providerId": "ssop_01KT3WD680SSPRV00000000001"
          },
          "state": "sso-preferred"
        },
        "oneOf": [
          {
            "properties": {
              "state": {
                "enum": [
                  "unknown"
                ],
                "type": "string"
              }
            },
            "required": [
              "state"
            ],
            "type": "object"
          },
          {
            "properties": {
              "methods": {
                "items": {
                  "oneOf": [
                    {
                      "properties": {
                        "kind": {
                          "enum": [
                            "password"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "kind": {
                          "enum": [
                            "magic-link"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "kind": {
                          "enum": [
                            "social"
                          ],
                          "type": "string"
                        },
                        "provider": {
                          "enum": [
                            "google",
                            "microsoft",
                            "apple"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind",
                        "provider"
                      ],
                      "type": "object"
                    }
                  ]
                },
                "minItems": 1,
                "type": "array"
              },
              "state": {
                "enum": [
                  "credentials"
                ],
                "type": "string"
              }
            },
            "required": [
              "state",
              "methods"
            ],
            "type": "object"
          },
          {
            "properties": {
              "methods": {
                "items": {
                  "oneOf": [
                    {
                      "properties": {
                        "kind": {
                          "enum": [
                            "password"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "kind": {
                          "enum": [
                            "magic-link"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "kind": {
                          "enum": [
                            "social"
                          ],
                          "type": "string"
                        },
                        "provider": {
                          "enum": [
                            "google",
                            "microsoft",
                            "apple"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind",
                        "provider"
                      ],
                      "type": "object"
                    }
                  ]
                },
                "minItems": 1,
                "type": "array"
              },
              "sso": {
                "properties": {
                  "displayName": {
                    "maxLength": 60,
                    "minLength": 1,
                    "type": "string"
                  },
                  "providerId": {
                    "pattern": "^ssop_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "providerId",
                  "displayName"
                ],
                "type": "object"
              },
              "state": {
                "enum": [
                  "sso-preferred"
                ],
                "type": "string"
              }
            },
            "required": [
              "state",
              "sso",
              "methods"
            ],
            "type": "object"
          },
          {
            "properties": {
              "sso": {
                "properties": {
                  "displayName": {
                    "maxLength": 60,
                    "minLength": 1,
                    "type": "string"
                  },
                  "providerId": {
                    "pattern": "^ssop_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "providerId",
                  "displayName"
                ],
                "type": "object"
              },
              "state": {
                "enum": [
                  "sso-required"
                ],
                "type": "string"
              }
            },
            "required": [
              "state",
              "sso"
            ],
            "type": "object"
          }
        ]
      },
      "ImportPlaceItemRequest": {
        "example": {
          "folderId": "fld_01KJ7MWKW0MAPPE00000000001",
          "itemId": "01BYE5RZ6QN3ZWBTUFOFD3IFTLGRSTUVW"
        },
        "properties": {
          "folderId": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "itemId": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "itemId",
          "folderId"
        ],
        "type": "object"
      },
      "ImportPlaceItemResponse": {
        "example": {
          "asset": {
            "createdAt": "2026-07-15T13:05:00.000Z",
            "deletedAt": null,
            "dimensions": {
              "height": 2160,
              "width": 3840
            },
            "durationSeconds": null,
            "errorMessage": null,
            "folderId": "fld_01KJ7MWKW0MAPPE00000000001",
            "id": "ast_01KXJY2V30MEDEN00000000004",
            "mimeType": "image/jpeg",
            "name": "angebot-oktober.jpg",
            "originalFileName": "Angebot Oktober Entwurf.jpg",
            "pageCount": 1,
            "purgeAt": null,
            "sha256": "8b3c07e2f5914da6c0b78e34215fd9c608a7b3e1420d95f6ca87b0e39d152c4f",
            "sizeBytes": 2214880,
            "source": {
              "connectionId": "cconn_01KT3WD680CNNECTMSGRAPH001",
              "detachedAt": null,
              "etag": "\"{4A2B1C0D-9E8F-4321-ABCD-1234567890EF},7\"",
              "itemId": "01BYE5RZ6QN3ZWBTUFOFD3IFTLGRSTUVW",
              "syncedAt": "2026-07-29T16:45:00.000Z"
            },
            "status": "processing",
            "tags": [
              "angebot",
              "herbst"
            ],
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-15T13:05:02.000Z",
            "uploadedById": "usr_01KFB7QPW0TEAM000000000002",
            "variants": [],
            "videoCodec": null
          },
          "reused": false
        },
        "properties": {
          "asset": {
            "properties": {
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "deletedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "dimensions": {
                "properties": {
                  "height": {
                    "exclusiveMinimum": 0,
                    "type": "integer"
                  },
                  "width": {
                    "exclusiveMinimum": 0,
                    "type": "integer"
                  }
                },
                "required": [
                  "width",
                  "height"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "durationSeconds": {
                "exclusiveMinimum": 0,
                "type": [
                  "number",
                  "null"
                ]
              },
              "errorMessage": {
                "maxLength": 1000,
                "type": [
                  "string",
                  "null"
                ]
              },
              "folderId": {
                "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "mimeType": {
                "enum": [
                  "image/jpeg",
                  "image/png",
                  "image/webp",
                  "image/svg+xml",
                  "video/mp4",
                  "video/webm",
                  "application/pdf"
                ],
                "type": "string"
              },
              "name": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "originalFileName": {
                "maxLength": 255,
                "minLength": 1,
                "type": "string"
              },
              "pageCount": {
                "default": null,
                "exclusiveMinimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "purgeAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "sha256": {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              },
              "sizeBytes": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "source": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AssetSource"
                  },
                  {
                    "default": null,
                    "type": [
                      "object",
                      "null"
                    ]
                  }
                ]
              },
              "status": {
                "enum": [
                  "uploading",
                  "processing",
                  "ready",
                  "error"
                ],
                "type": "string"
              },
              "tags": {
                "items": {
                  "maxLength": 50,
                  "minLength": 1,
                  "type": "string"
                },
                "maxItems": 50,
                "type": "array"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "uploadedById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  }
                ]
              },
              "variants": {
                "items": {
                  "properties": {
                    "blank": {
                      "type": "boolean"
                    },
                    "codec": {
                      "maxLength": 31,
                      "minLength": 1,
                      "type": "string"
                    },
                    "generatedAt": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "height": {
                      "exclusiveMinimum": 0,
                      "type": "integer"
                    },
                    "id": {
                      "pattern": "^asv_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "kind": {
                      "anyOf": [
                        {
                          "enum": [
                            "thumbnail-sm",
                            "thumbnail-md",
                            "thumbnail-lg",
                            "preview-720",
                            "preview-1080",
                            "webp-original-size",
                            "playback-1080"
                          ],
                          "type": "string"
                        },
                        {
                          "pattern": "^page-([1-9][0-9]{0,2})$",
                          "type": "string"
                        },
                        {
                          "pattern": "^page-([1-9][0-9]{0,2})-sm$",
                          "type": "string"
                        }
                      ]
                    },
                    "sha256": {
                      "pattern": "^[0-9a-f]{64}$",
                      "type": "string"
                    },
                    "sizeBytes": {
                      "exclusiveMinimum": 0,
                      "type": "integer"
                    },
                    "width": {
                      "exclusiveMinimum": 0,
                      "type": "integer"
                    }
                  },
                  "required": [
                    "id",
                    "kind",
                    "width",
                    "height",
                    "sizeBytes",
                    "generatedAt"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "videoCodec": {
                "default": null,
                "maxLength": 31,
                "minLength": 1,
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "tenantId",
              "folderId",
              "name",
              "originalFileName",
              "mimeType",
              "sizeBytes",
              "sha256",
              "tags",
              "dimensions",
              "durationSeconds",
              "uploadedById",
              "status",
              "errorMessage",
              "createdAt",
              "updatedAt",
              "deletedAt",
              "variants",
              "purgeAt"
            ],
            "type": "object"
          },
          "reused": {
            "type": "boolean"
          }
        },
        "required": [
          "asset",
          "reused"
        ],
        "type": "object"
      },
      "InitCloudConnectionRequest": {
        "example": {
          "connectionId": null,
          "provider": "microsoft-graph",
          "returnTo": "/mediathek/orte"
        },
        "properties": {
          "connectionId": {
            "default": null,
            "pattern": "^cconn_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "provider": {
            "$ref": "#/components/schemas/CloudConnectionProvider"
          },
          "returnTo": {
            "default": null,
            "maxLength": 512,
            "pattern": "^\\/[^/\\\\]",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "provider"
        ],
        "type": "object"
      },
      "InitCloudConnectionResponse": {
        "example": {
          "authorizeUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=00000000-0000-0000-0000-000000000000&response_type=code&scope=Files.Read+User.Read+offline_access"
        },
        "properties": {
          "authorizeUrl": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "authorizeUrl"
        ],
        "type": "object"
      },
      "InstallAppRequest": {
        "example": {
          "acceptedManifestHash": "f6967ce34eabbf376e63eecee878f41f04d91dbd1632b2acc5d098e446047dbd",
          "version": "1.4.2"
        },
        "properties": {
          "acceptedManifestHash": {
            "pattern": "^[a-f0-9]{64}$",
            "type": "string"
          },
          "version": {
            "pattern": "^\\d+\\.\\d+\\.\\d+$",
            "type": "string"
          }
        },
        "required": [
          "acceptedManifestHash"
        ],
        "type": "object"
      },
      "InstallAppResponse": {
        "example": {
          "grant": {
            "acceptedAt": "2026-06-22T15:30:00.000Z",
            "acceptedById": "usr_01KERQ74K0TEAM000000000001",
            "acceptedManifestHash": "f6967ce34eabbf376e63eecee878f41f04d91dbd1632b2acc5d098e446047dbd",
            "appId": "weather",
            "declinedAt": null,
            "declinedReleaseId": null,
            "declinedVersion": null,
            "id": "tag_01KT3RZAM0GRANT00000000001",
            "installedAt": "2026-06-22T15:30:00.000Z",
            "installedById": "usr_01KERQ74K0TEAM000000000001",
            "installedReleaseId": "arl_01KWC2Z5W0AVERSN0000000001",
            "installedVersion": "1.4.2",
            "pendingDeadline": null,
            "pendingManifestHash": null,
            "pendingReasons": [],
            "pendingReleaseId": null,
            "status": "active",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "uninstalledAt": null,
            "uninstalledById": null
          }
        },
        "properties": {
          "grant": {
            "properties": {
              "acceptedAt": {
                "format": "date-time",
                "type": "string"
              },
              "acceptedById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "acceptedManifestHash": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              },
              "appId": {
                "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                "type": "string"
              },
              "declinedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "declinedReleaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "declinedVersion": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^tag_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "installedAt": {
                "format": "date-time",
                "type": "string"
              },
              "installedById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "installedReleaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "installedVersion": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": "string"
              },
              "pendingDeadline": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingManifestHash": {
                "pattern": "^[a-f0-9]{64}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingReasons": {
                "items": {
                  "enum": [
                    "permissions",
                    "access",
                    "terms",
                    "retirement"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "pendingReleaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "enum": [
                  "active",
                  "pending-reacceptance",
                  "uninstalled"
                ],
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "uninstalledAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "uninstalledById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "tenantId",
              "appId",
              "installedVersion",
              "installedReleaseId",
              "installedAt",
              "installedById",
              "acceptedManifestHash",
              "acceptedAt",
              "acceptedById",
              "status",
              "pendingManifestHash",
              "pendingReleaseId",
              "pendingReasons",
              "pendingDeadline",
              "declinedReleaseId",
              "declinedVersion",
              "declinedAt",
              "uninstalledAt",
              "uninstalledById"
            ],
            "type": "object"
          }
        },
        "required": [
          "grant"
        ],
        "type": "object"
      },
      "InviteUserRequest": {
        "example": {
          "defaultRoleId": "rol_01KERPYXWRRECHT00000000002",
          "email": "m.sander@demo.local",
          "message": "Hallo Merve, damit kannst du die Angebots-Szenen selbst pflegen. Viele Grüße, Julia"
        },
        "properties": {
          "defaultRoleId": {
            "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "email": {
            "format": "email",
            "maxLength": 254,
            "type": "string"
          },
          "message": {
            "default": null,
            "maxLength": 1000,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "email",
          "defaultRoleId"
        ],
        "type": "object"
      },
      "InviteUserResponse": {
        "example": {
          "email": "m.sander@demo.local",
          "expiresAt": "2026-07-23T14:05:00.000Z",
          "invitationId": "ivt_01KXFZ39F0ENADNG0000000001"
        },
        "properties": {
          "email": {
            "format": "email",
            "maxLength": 254,
            "type": "string"
          },
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "invitationId": {
            "pattern": "^ivt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "invitationId",
          "email",
          "expiresAt"
        ],
        "type": "object"
      },
      "InvoicePaymentBlock": {
        "example": {
          "bankName": "Deutsche Kreditbank",
          "bic": "BYLADEM1001",
          "girocodePayload": "BCD\n002\n1\nSCT\nBYLADEM1001\nSzenera Betrieb GmbH\nDE02120300000000202051\nEUR82.11\n\n\nINV-2026-0043",
          "holder": "Szenera Betrieb GmbH",
          "iban": "DE02120300000000202051",
          "reference": "INV-2026-0043"
        },
        "properties": {
          "bankName": {
            "maxLength": 120,
            "type": [
              "string",
              "null"
            ]
          },
          "bic": {
            "maxLength": 11,
            "type": [
              "string",
              "null"
            ]
          },
          "girocodePayload": {
            "type": [
              "string",
              "null"
            ]
          },
          "holder": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "iban": {
            "maxLength": 42,
            "minLength": 1,
            "type": "string"
          },
          "reference": {
            "maxLength": 140,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "holder",
          "bankName",
          "iban",
          "bic",
          "reference",
          "girocodePayload"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "IssueCommandRequest": {
        "example": {
          "kind": "screenshot",
          "quality": 80
        },
        "oneOf": [
          {
            "properties": {
              "kind": {
                "enum": [
                  "reboot"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "refresh-snapshot"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "screenshot"
                ],
                "type": "string"
              },
              "quality": {
                "default": 80,
                "maximum": 100,
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "durationMs": {
                "default": 5000,
                "maximum": 60000,
                "minimum": 1000,
                "type": "integer"
              },
              "kind": {
                "enum": [
                  "identify"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "locate"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "tail-log"
                ],
                "type": "string"
              },
              "lines": {
                "default": 200,
                "maximum": 1000,
                "minimum": 1,
                "type": "integer"
              },
              "since": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "config": {
                "properties": {
                  "audioMuted": {
                    "type": "boolean"
                  },
                  "brightness": {
                    "maximum": 100,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "contentFit": {
                    "anyOf": [
                      {
                        "enum": [
                          "contain"
                        ],
                        "type": "string"
                      },
                      {
                        "enum": [
                          "cover"
                        ],
                        "type": "string"
                      }
                    ],
                    "default": "contain"
                  },
                  "identifyPulseColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  },
                  "resolutionMode": {
                    "anyOf": [
                      {
                        "enum": [
                          "auto"
                        ],
                        "type": "string"
                      },
                      {
                        "properties": {
                          "height": {
                            "maximum": 4320,
                            "minimum": 1,
                            "type": "integer"
                          },
                          "width": {
                            "maximum": 7680,
                            "minimum": 1,
                            "type": "integer"
                          }
                        },
                        "required": [
                          "width",
                          "height"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "rotation": {
                    "anyOf": [
                      {
                        "enum": [
                          0
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          90
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          180
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          270
                        ],
                        "type": "number"
                      }
                    ]
                  }
                },
                "type": "object"
              },
              "kind": {
                "enum": [
                  "set-config"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind",
              "config"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "mark-good"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "check-ota"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "display-power"
                ],
                "type": "string"
              },
              "power": {
                "anyOf": [
                  {
                    "enum": [
                      "on"
                    ],
                    "type": "string"
                  },
                  {
                    "enum": [
                      "standby"
                    ],
                    "type": "string"
                  }
                ]
              }
            },
            "required": [
              "kind",
              "power"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "display-source"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          }
        ]
      },
      "IssueCommandResponse": {
        "example": {
          "command": {
            "ackAt": null,
            "completedAt": null,
            "deviceId": "dev_01KHK32T40GERAET0000000001",
            "dispatchedAt": "2026-07-20T08:55:01.000Z",
            "errorMessage": null,
            "id": "cmd_01KXZBRNN0BEFEH00000000002",
            "issuedAt": "2026-07-20T08:55:00.000Z",
            "issuedById": "usr_01KFB7QPW0TEAM000000000002",
            "kind": "screenshot",
            "output": null,
            "outputRef": null,
            "payload": null,
            "playerId": "ply_01KHK34MQ0SCREEN0000000001",
            "status": "dispatched",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          }
        },
        "properties": {
          "command": {
            "properties": {
              "ackAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "completedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "deviceId": {
                "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "dispatchedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "errorMessage": {
                "maxLength": 500,
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^cmd_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "issuedAt": {
                "format": "date-time",
                "type": "string"
              },
              "issuedById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "kind": {
                "enum": [
                  "reboot",
                  "refresh-snapshot",
                  "screenshot",
                  "identify",
                  "locate",
                  "tail-log",
                  "set-config",
                  "mark-good",
                  "check-ota",
                  "display-power",
                  "display-source"
                ],
                "type": "string"
              },
              "output": {},
              "outputRef": {
                "properties": {
                  "s3Key": {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  },
                  "sha256": {
                    "pattern": "^[a-f0-9]{64}$",
                    "type": "string"
                  }
                },
                "required": [
                  "s3Key",
                  "sha256"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "payload": {},
              "playerId": {
                "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "enum": [
                  "pending",
                  "dispatched",
                  "ack-received",
                  "completed",
                  "failed",
                  "timeout"
                ],
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              }
            },
            "required": [
              "id",
              "deviceId",
              "playerId",
              "tenantId",
              "kind",
              "status",
              "outputRef",
              "errorMessage",
              "issuedById",
              "issuedAt",
              "dispatchedAt",
              "ackAt",
              "completedAt"
            ],
            "type": "object"
          }
        },
        "required": [
          "command"
        ],
        "type": "object"
      },
      "IssueDeviceCommandRequest": {
        "example": {
          "kind": "reboot"
        },
        "oneOf": [
          {
            "properties": {
              "kind": {
                "enum": [
                  "reboot"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "refresh-snapshot"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "screenshot"
                ],
                "type": "string"
              },
              "quality": {
                "default": 80,
                "maximum": 100,
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "durationMs": {
                "default": 5000,
                "maximum": 60000,
                "minimum": 1000,
                "type": "integer"
              },
              "kind": {
                "enum": [
                  "identify"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "locate"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "tail-log"
                ],
                "type": "string"
              },
              "lines": {
                "default": 200,
                "maximum": 1000,
                "minimum": 1,
                "type": "integer"
              },
              "since": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "config": {
                "properties": {
                  "audioMuted": {
                    "type": "boolean"
                  },
                  "brightness": {
                    "maximum": 100,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "contentFit": {
                    "anyOf": [
                      {
                        "enum": [
                          "contain"
                        ],
                        "type": "string"
                      },
                      {
                        "enum": [
                          "cover"
                        ],
                        "type": "string"
                      }
                    ],
                    "default": "contain"
                  },
                  "identifyPulseColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  },
                  "resolutionMode": {
                    "anyOf": [
                      {
                        "enum": [
                          "auto"
                        ],
                        "type": "string"
                      },
                      {
                        "properties": {
                          "height": {
                            "maximum": 4320,
                            "minimum": 1,
                            "type": "integer"
                          },
                          "width": {
                            "maximum": 7680,
                            "minimum": 1,
                            "type": "integer"
                          }
                        },
                        "required": [
                          "width",
                          "height"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "rotation": {
                    "anyOf": [
                      {
                        "enum": [
                          0
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          90
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          180
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          270
                        ],
                        "type": "number"
                      }
                    ]
                  }
                },
                "type": "object"
              },
              "kind": {
                "enum": [
                  "set-config"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind",
              "config"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "mark-good"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "check-ota"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "display-power"
                ],
                "type": "string"
              },
              "power": {
                "anyOf": [
                  {
                    "enum": [
                      "on"
                    ],
                    "type": "string"
                  },
                  {
                    "enum": [
                      "standby"
                    ],
                    "type": "string"
                  }
                ]
              }
            },
            "required": [
              "kind",
              "power"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "display-source"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          }
        ]
      },
      "IssueDeviceCommandResponse": {
        "example": {
          "command": {
            "ackAt": "2026-07-19T18:02:03.000Z",
            "completedAt": "2026-07-19T18:03:12.000Z",
            "deviceId": "dev_01KHK32T40GERAET0000000001",
            "dispatchedAt": "2026-07-19T18:02:01.000Z",
            "errorMessage": null,
            "id": "cmd_01KXXRNHE0BEFEH00000000001",
            "issuedAt": "2026-07-19T18:02:00.000Z",
            "issuedById": "usr_01KERQ74K0TEAM000000000001",
            "kind": "reboot",
            "output": null,
            "outputRef": null,
            "payload": null,
            "playerId": null,
            "status": "completed",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          }
        },
        "properties": {
          "command": {
            "properties": {
              "ackAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "completedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "deviceId": {
                "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "dispatchedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "errorMessage": {
                "maxLength": 500,
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^cmd_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "issuedAt": {
                "format": "date-time",
                "type": "string"
              },
              "issuedById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "kind": {
                "enum": [
                  "reboot",
                  "refresh-snapshot",
                  "screenshot",
                  "identify",
                  "locate",
                  "tail-log",
                  "set-config",
                  "mark-good",
                  "check-ota",
                  "display-power",
                  "display-source"
                ],
                "type": "string"
              },
              "output": {},
              "outputRef": {
                "properties": {
                  "s3Key": {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  },
                  "sha256": {
                    "pattern": "^[a-f0-9]{64}$",
                    "type": "string"
                  }
                },
                "required": [
                  "s3Key",
                  "sha256"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "payload": {},
              "playerId": {
                "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "enum": [
                  "pending",
                  "dispatched",
                  "ack-received",
                  "completed",
                  "failed",
                  "timeout"
                ],
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              }
            },
            "required": [
              "id",
              "deviceId",
              "playerId",
              "tenantId",
              "kind",
              "status",
              "outputRef",
              "errorMessage",
              "issuedById",
              "issuedAt",
              "dispatchedAt",
              "ackAt",
              "completedAt"
            ],
            "type": "object"
          }
        },
        "required": [
          "command"
        ],
        "type": "object"
      },
      "IssueWebDisplayLinkResponse": {
        "example": {
          "connectUrl": "https://example.com",
          "expiresAt": "2099-12-31T23:59:59.000Z",
          "playerId": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "token": "drc_01ARZ3NDEKTSV4RRFFQ69G5FAV"
        },
        "properties": {
          "connectUrl": {
            "format": "uri",
            "type": "string"
          },
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "playerId": {
            "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "token": {
            "pattern": "^drc_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "playerId",
          "token",
          "connectUrl",
          "expiresAt"
        ],
        "type": "object"
      },
      "LegalAcceptedDocument": {
        "example": {
          "key": "terms",
          "path": "/agb",
          "version": "2026-08-22"
        },
        "properties": {
          "key": {
            "enum": [
              "terms",
              "dpa",
              "privacy",
              "withdrawal"
            ],
            "type": "string"
          },
          "path": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "version": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          }
        },
        "required": [
          "key",
          "version",
          "path"
        ],
        "type": "object"
      },
      "LibraryPlace": {
        "example": {
          "accountLabel": "apotheke@demo.local",
          "brokenReason": null,
          "browsable": true,
          "connectionId": "cconn_01KT3WD680CNNECTMSGRAPH001",
          "provider": "microsoft-graph",
          "status": "connected"
        },
        "properties": {
          "accountLabel": {
            "maxLength": 320,
            "minLength": 1,
            "type": "string"
          },
          "brokenReason": {
            "maxLength": 500,
            "type": [
              "string",
              "null"
            ]
          },
          "browsable": {
            "type": "boolean"
          },
          "connectionId": {
            "pattern": "^cconn_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "provider": {
            "$ref": "#/components/schemas/CloudConnectionProvider"
          },
          "status": {
            "$ref": "#/components/schemas/CloudConnectionStatus"
          }
        },
        "required": [
          "connectionId",
          "provider",
          "accountLabel",
          "status",
          "brokenReason",
          "browsable"
        ],
        "type": "object"
      },
      "LiftAppScenePinsResponse": {
        "example": {
          "appId": "pharmacies-on-duty",
          "scenes": [
            {
              "error": null,
              "from": "1.6.0",
              "name": "Notdienst & Wetter",
              "sceneId": "scn_01KTM1Z2Q0SZENE00000000003",
              "sceneVersionId": "scv_01KXZ0SC00VERSN00000000004",
              "status": "lifted",
              "to": "2.0.0"
            }
          ],
          "toVersion": "2.0.0"
        },
        "properties": {
          "appId": {
            "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
            "type": "string"
          },
          "scenes": {
            "items": {
              "$ref": "#/components/schemas/AppSceneLiftResult"
            },
            "type": "array"
          },
          "toVersion": {
            "pattern": "^\\d+\\.\\d+\\.\\d+$",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "appId",
          "toVersion",
          "scenes"
        ],
        "type": "object"
      },
      "ListAdCampaignsResponse": {
        "example": {
          "items": [
            {
              "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
              "advertiserName": "Nordwind Naturkosmetik GmbH",
              "attention": [],
              "bookingLineCount": 1,
              "createdAt": "2026-08-25T14:10:00.000Z",
              "delivery": {
                "fulfilmentPermille": 252,
                "pacingPermille": 1024,
                "pacingState": "on_track"
              },
              "displayCount": 1,
              "endsOn": "2026-10-31",
              "goal": "plays",
              "id": "acp_01KXR4P1Q0KAMPAGNE00000001",
              "name": "Herbstpflege 2026",
              "note": "",
              "owner": {
                "kind": "tenant",
                "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
              },
              "phase": "running",
              "pricing": {
                "amountCents": 45000,
                "currency": "EUR",
                "model": "flat"
              },
              "spotDurationsMs": [
                10000
              ],
              "startsOn": "2026-09-01",
              "status": "booked",
              "timezone": "Europe/Berlin",
              "updatedAt": "2026-08-26T08:00:00.000Z",
              "version": 1
            }
          ]
        },
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/AdCampaignListItem"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListAdvertisersResponse": {
        "example": {
          "items": [
            {
              "brands": [
                "Nordwind",
                "Nordwind Sensitiv"
              ],
              "contacts": [
                {
                  "email": "lena.brandt@demo.local",
                  "name": "Lena Brandt",
                  "receivesProofs": true
                }
              ],
              "createdAt": "2026-08-18T09:30:00.000Z",
              "id": "adv_01KXR4M8A0WERBPARTNER00001",
              "industry": "cosmetics",
              "name": "Nordwind Naturkosmetik GmbH",
              "note": "Rahmenvereinbarung für Herbst und Winter.",
              "owner": {
                "kind": "tenant",
                "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
              },
              "status": "active",
              "updatedAt": "2026-08-25T14:05:00.000Z",
              "version": 2
            }
          ]
        },
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Advertiser"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListApiKeysResponse": {
        "example": {
          "items": [
            {
              "createdAt": "2026-05-04T07:00:00.000Z",
              "createdById": "usr_01KERQ74K0TEAM000000000001",
              "expiresAt": "2027-05-04T07:00:00.000Z",
              "id": "akm_01KQRWJRC0APKEY00000000001",
              "keyPrefix": "ak_APKEY0001",
              "lastUsedAt": "2026-07-20T05:00:00.000Z",
              "name": "Warenwirtschaft-Anbindung",
              "originClass": "read-only",
              "rateLimit": "1200/1m",
              "revokedAt": null,
              "revokedById": null,
              "revokedReason": null,
              "revokesAt": null,
              "rotationGraceHours": 0,
              "scope": [
                "assets.read",
                "playlists.read"
              ],
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            }
          ],
          "nextCursor": "YWttOjIwMjYtMDUtMDQ"
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "createdById": {
                  "anyOf": [
                    {
                      "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^[0-9a-f]{64}$",
                      "type": "string"
                    }
                  ]
                },
                "expiresAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "id": {
                  "pattern": "^akm_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "keyPrefix": {
                  "pattern": "^ak_[0-9A-HJKMNP-TV-Z]{9}$",
                  "type": "string"
                },
                "lastUsedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": {
                  "maxLength": 100,
                  "minLength": 1,
                  "type": "string"
                },
                "originClass": {
                  "enum": [
                    "read-only",
                    "media-automation",
                    "content-authoring",
                    "playout-control",
                    "full",
                    "custom"
                  ],
                  "type": "string"
                },
                "rateLimit": {
                  "default": null,
                  "pattern": "^[1-9][0-9]*\\/[1-9][0-9]*[smh]$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "revokedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "revokedById": {
                  "anyOf": [
                    {
                      "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "revokedReason": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "revokesAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "rotationGraceHours": {
                  "maximum": 72,
                  "minimum": 0,
                  "type": "integer"
                },
                "scope": {
                  "items": {
                    "maxLength": 80,
                    "minLength": 3,
                    "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)*$",
                    "type": "string"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "tenantId",
                "name",
                "keyPrefix",
                "createdById",
                "scope",
                "originClass",
                "rotationGraceHours",
                "expiresAt",
                "lastUsedAt",
                "revokedAt",
                "revokedById",
                "revokedReason",
                "revokesAt",
                "createdAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListAppUpdatesResponse": {
        "example": {
          "updates": [
            {
              "appId": "pharmacies-on-duty",
              "changes": {
                "dataAccess": {
                  "addedReads": [],
                  "addedWrites": [],
                  "removedReads": [],
                  "removedWrites": []
                },
                "permissions": {
                  "added": [
                    {
                      "defaultRoles": [
                        "OWNER"
                      ],
                      "description": "Die App importiert Notdienstpläne aus einer Datei oder löst einen Abruf der Quelle aus.",
                      "key": "pharmacies-on-duty.schedule.import",
                      "label": "Notdienstpläne importieren"
                    }
                  ],
                  "removed": []
                },
                "terms": {
                  "after": {
                    "key": "notdienst.bedingungen.v1",
                    "summary": "Notdienstdaten stammen von der Landesapothekerkammer und können sich kurzfristig ändern.",
                    "termsPath": "/app-bedingungen/notdienst"
                  },
                  "before": {
                    "key": "notdienst.bedingungen.v1",
                    "summary": "Notdienstdaten stammen von der Landesapothekerkammer und können sich kurzfristig ändern.",
                    "termsPath": "/app-bedingungen/notdienst"
                  },
                  "changed": false
                }
              },
              "consequences": {
                "playing": [
                  {
                    "sceneCount": 1,
                    "version": "2.0.0"
                  }
                ],
                "sceneCount": 1,
                "widgetsHiddenInEditor": true
              },
              "deadline": null,
              "displayName": "Notdienst",
              "from": {
                "releaseId": "arl_01KP5RMC40AVERSN0000000005",
                "version": "2.0.0"
              },
              "notes": {
                "locale": "de-DE",
                "text": "Notdienstpläne lassen sich jetzt aus einer Datei importieren."
              },
              "reasons": [
                "permissions"
              ],
              "rejectable": true,
              "securityAdvisory": null,
              "state": "pending",
              "to": {
                "channel": "stable",
                "manifestHash": "6232f20f63df0aaff6984f3ba10b3b4fac21d45ce4b9546614b37d4d712d2c19",
                "releaseId": "arl_01KX0P4XW0AVERSN0000000002",
                "version": "2.0.1"
              }
            }
          ]
        },
        "properties": {
          "updates": {
            "items": {
              "$ref": "#/components/schemas/AppUpdate"
            },
            "type": "array"
          }
        },
        "required": [
          "updates"
        ],
        "type": "object"
      },
      "ListAssetsResponse": {
        "example": {
          "items": [
            {
              "createdAt": "2026-06-29T07:45:00.000Z",
              "deletedAt": null,
              "dimensions": {
                "height": 1080,
                "width": 1920
              },
              "durationSeconds": null,
              "errorMessage": null,
              "folderId": "fld_01KJ7MWKW0MAPPE00000000001",
              "id": "ast_01KW95DD30MEDEN00000000001",
              "mimeType": "image/jpeg",
              "name": "angebot-der-woche.jpg",
              "originalFileName": "Angebot der Woche KW30.jpg",
              "pageCount": 1,
              "purgeAt": null,
              "sha256": "9d4f2b8c1e07a5364bd80f9127ce5a3b6408df215c93ea7b0d6154f8a2b3c70e",
              "sizeBytes": 1842331,
              "source": null,
              "status": "ready",
              "tags": [
                "angebot",
                "schaufenster"
              ],
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-06-29T07:46:12.000Z",
              "uploadedById": "usr_01KFB7QPW0TEAM000000000002",
              "variants": [
                {
                  "generatedAt": "2026-06-29T07:45:41.000Z",
                  "height": 270,
                  "id": "asv_01KW95F7P0VARANT0000000001",
                  "kind": "thumbnail-md",
                  "sizeBytes": 38214,
                  "width": 480
                },
                {
                  "generatedAt": "2026-06-29T07:46:12.000Z",
                  "height": 1080,
                  "id": "asv_01KERR4E30VARANT0000000002",
                  "kind": "preview-1080",
                  "sizeBytes": 612844,
                  "width": 1920
                }
              ],
              "videoCodec": null
            },
            {
              "createdAt": "2026-03-11T15:24:00.000Z",
              "deletedAt": null,
              "dimensions": {
                "height": 1920,
                "width": 1080
              },
              "durationSeconds": 92.4,
              "errorMessage": null,
              "folderId": "fld_01KKEQQF80MAPPE00000000003",
              "id": "ast_01KKEQYSM0MEDEN00000000002",
              "mimeType": "video/mp4",
              "name": "wartebereich-schleife.mp4",
              "originalFileName": "wartebereich-schleife.mp4",
              "pageCount": 1,
              "purgeAt": null,
              "sha256": "41a7c0e93b2d58f6041e7cb85d29a3f70c6b1948de52370af8b6c1d094e2537a",
              "sizeBytes": 24918744,
              "source": null,
              "status": "ready",
              "tags": [
                "wartebereich",
                "video"
              ],
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-03-11T15:27:38.000Z",
              "uploadedById": "usr_01KFB7QPW0TEAM000000000002",
              "variants": [
                {
                  "generatedAt": "2026-03-11T15:27:38.000Z",
                  "height": 960,
                  "id": "asv_01KW95F7P0VARANT0000000001",
                  "kind": "thumbnail-lg",
                  "sizeBytes": 71204,
                  "width": 540
                }
              ],
              "videoCodec": "h264"
            },
            {
              "createdAt": "2026-01-12T09:20:00.000Z",
              "deletedAt": null,
              "dimensions": null,
              "durationSeconds": null,
              "errorMessage": null,
              "folderId": "fld_01KJ7MYEF0MAPPE00000000002",
              "id": "ast_01KERR2KG0MEDEN00000000003",
              "mimeType": "image/svg+xml",
              "name": "logo-adler-apotheke.svg",
              "originalFileName": "logo-adler-apotheke.svg",
              "pageCount": 1,
              "purgeAt": null,
              "sha256": "c70e5b1d284af93602ce7418b5da09f3271e6c8b40573ade9128fbc46057a3d1",
              "sizeBytes": 12704,
              "source": null,
              "status": "ready",
              "tags": [
                "marke"
              ],
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-01-12T09:20:04.000Z",
              "uploadedById": "usr_01KERQ74K0TEAM000000000001",
              "variants": [],
              "videoCodec": null
            },
            {
              "createdAt": "2026-07-15T13:05:00.000Z",
              "deletedAt": null,
              "dimensions": {
                "height": 2160,
                "width": 3840
              },
              "durationSeconds": null,
              "errorMessage": null,
              "folderId": "fld_01KJ7MWKW0MAPPE00000000001",
              "id": "ast_01KXJY2V30MEDEN00000000004",
              "mimeType": "image/jpeg",
              "name": "angebot-oktober.jpg",
              "originalFileName": "Angebot Oktober Entwurf.jpg",
              "pageCount": 1,
              "purgeAt": null,
              "sha256": "8b3c07e2f5914da6c0b78e34215fd9c608a7b3e1420d95f6ca87b0e39d152c4f",
              "sizeBytes": 2214880,
              "source": null,
              "status": "processing",
              "tags": [
                "angebot",
                "herbst"
              ],
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-07-15T13:05:02.000Z",
              "uploadedById": "usr_01KFB7QPW0TEAM000000000002",
              "variants": [],
              "videoCodec": null
            }
          ],
          "nextCursor": "YXN0OjIwMjYtMDEtMTI",
          "total": 4
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "deletedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "dimensions": {
                  "properties": {
                    "height": {
                      "exclusiveMinimum": 0,
                      "type": "integer"
                    },
                    "width": {
                      "exclusiveMinimum": 0,
                      "type": "integer"
                    }
                  },
                  "required": [
                    "width",
                    "height"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "durationSeconds": {
                  "exclusiveMinimum": 0,
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "errorMessage": {
                  "maxLength": 1000,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "folderId": {
                  "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "id": {
                  "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "mimeType": {
                  "enum": [
                    "image/jpeg",
                    "image/png",
                    "image/webp",
                    "image/svg+xml",
                    "video/mp4",
                    "video/webm",
                    "application/pdf"
                  ],
                  "type": "string"
                },
                "name": {
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                "originalFileName": {
                  "maxLength": 255,
                  "minLength": 1,
                  "type": "string"
                },
                "pageCount": {
                  "default": null,
                  "exclusiveMinimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "purgeAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "sha256": {
                  "pattern": "^[0-9a-f]{64}$",
                  "type": "string"
                },
                "sizeBytes": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "source": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/AssetSource"
                    },
                    {
                      "default": null,
                      "type": [
                        "object",
                        "null"
                      ]
                    }
                  ]
                },
                "status": {
                  "enum": [
                    "uploading",
                    "processing",
                    "ready",
                    "error"
                  ],
                  "type": "string"
                },
                "tags": {
                  "items": {
                    "maxLength": 50,
                    "minLength": 1,
                    "type": "string"
                  },
                  "maxItems": 50,
                  "type": "array"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "updatedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "uploadedById": {
                  "anyOf": [
                    {
                      "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^[0-9a-f]{64}$",
                      "type": "string"
                    }
                  ]
                },
                "variants": {
                  "items": {
                    "properties": {
                      "blank": {
                        "type": "boolean"
                      },
                      "codec": {
                        "maxLength": 31,
                        "minLength": 1,
                        "type": "string"
                      },
                      "generatedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "height": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "id": {
                        "pattern": "^asv_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "kind": {
                        "anyOf": [
                          {
                            "enum": [
                              "thumbnail-sm",
                              "thumbnail-md",
                              "thumbnail-lg",
                              "preview-720",
                              "preview-1080",
                              "webp-original-size",
                              "playback-1080"
                            ],
                            "type": "string"
                          },
                          {
                            "pattern": "^page-([1-9][0-9]{0,2})$",
                            "type": "string"
                          },
                          {
                            "pattern": "^page-([1-9][0-9]{0,2})-sm$",
                            "type": "string"
                          }
                        ]
                      },
                      "sha256": {
                        "pattern": "^[0-9a-f]{64}$",
                        "type": "string"
                      },
                      "sizeBytes": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "width": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "id",
                      "kind",
                      "width",
                      "height",
                      "sizeBytes",
                      "generatedAt"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "videoCodec": {
                  "default": null,
                  "maxLength": 31,
                  "minLength": 1,
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "tenantId",
                "folderId",
                "name",
                "originalFileName",
                "mimeType",
                "sizeBytes",
                "sha256",
                "tags",
                "dimensions",
                "durationSeconds",
                "uploadedById",
                "status",
                "errorMessage",
                "createdAt",
                "updatedAt",
                "deletedAt",
                "variants",
                "purgeAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListBookingLinesResponse": {
        "example": {
          "items": [
            {
              "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
              "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
              "commitment": {
                "quantity": 12000,
                "unit": "plays"
              },
              "createdAt": "2026-08-25T14:20:00.000Z",
              "creatives": [
                {
                  "creativeId": "crv_01KXR4RZ80MTV0000000000001",
                  "weight": 1
                }
              ],
              "dayparts": [
                {
                  "daysOfWeek": [
                    1,
                    2,
                    3,
                    4,
                    5
                  ],
                  "timeWindows": [
                    {
                      "endTime": "18:30:00",
                      "startTime": "08:00:00"
                    }
                  ]
                },
                {
                  "daysOfWeek": [
                    6
                  ],
                  "timeWindows": [
                    {
                      "endTime": "13:00:00",
                      "startTime": "09:00:00"
                    }
                  ]
                }
              ],
              "endsOn": "2026-10-31",
              "id": "bkl_01KXR4Q9T0BKNG000000000001",
              "minZoneSharePermille": 250,
              "name": "Schaufenster und Kasse",
              "owner": {
                "kind": "tenant",
                "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
              },
              "ruleVersion": 1,
              "slotsPerPodTenths": 10,
              "spotDurationMs": 10000,
              "startsOn": "2026-09-01",
              "status": "active",
              "targeting": {
                "locationIds": [
                  "loc_01KHK4B3T0ADRESSE000000001"
                ],
                "placements": [
                  "window",
                  "checkout"
                ],
                "playerIds": [
                  "ply_01KHK34MQ0SCREEN0000000001",
                  "ply_01KHK3FM90SCREEN0000000006"
                ],
                "regionCodes": [
                  "DE-HH"
                ],
                "tagIds": [],
                "tenantIds": [],
                "venueTypes": [
                  "pharmacy"
                ]
              },
              "updatedAt": "2026-08-26T08:00:00.000Z",
              "version": 1
            }
          ]
        },
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/BookingLine"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListBrandAssetsResponse": {
        "example": {
          "assets": [
            {
              "createdAt": "2026-01-12T09:20:00.000Z",
              "deletedAt": null,
              "dimensions": null,
              "durationSeconds": null,
              "errorMessage": null,
              "folderId": "fld_01KJ7MYEF0MAPPE00000000002",
              "id": "ast_01KERR2KG0MEDEN00000000003",
              "mimeType": "image/svg+xml",
              "name": "logo-adler-apotheke.svg",
              "originalFileName": "logo-adler-apotheke.svg",
              "pageCount": 1,
              "purgeAt": null,
              "sha256": "c70e5b1d284af93602ce7418b5da09f3271e6c8b40573ade9128fbc46057a3d1",
              "sizeBytes": 12704,
              "source": null,
              "status": "ready",
              "tags": [
                "marke"
              ],
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-01-12T09:20:04.000Z",
              "uploadedById": "usr_01KERQ74K0TEAM000000000001",
              "variants": [],
              "videoCodec": null
            }
          ],
          "folderId": "fld_01KJ7MYEF0MAPPE00000000002",
          "management": {
            "allowed": true
          }
        },
        "properties": {
          "assets": {
            "items": {
              "properties": {
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "deletedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "dimensions": {
                  "properties": {
                    "height": {
                      "exclusiveMinimum": 0,
                      "type": "integer"
                    },
                    "width": {
                      "exclusiveMinimum": 0,
                      "type": "integer"
                    }
                  },
                  "required": [
                    "width",
                    "height"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "durationSeconds": {
                  "exclusiveMinimum": 0,
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "errorMessage": {
                  "maxLength": 1000,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "folderId": {
                  "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "id": {
                  "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "mimeType": {
                  "enum": [
                    "image/jpeg",
                    "image/png",
                    "image/webp",
                    "image/svg+xml",
                    "video/mp4",
                    "video/webm",
                    "application/pdf"
                  ],
                  "type": "string"
                },
                "name": {
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                "originalFileName": {
                  "maxLength": 255,
                  "minLength": 1,
                  "type": "string"
                },
                "pageCount": {
                  "default": null,
                  "exclusiveMinimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "purgeAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "sha256": {
                  "pattern": "^[0-9a-f]{64}$",
                  "type": "string"
                },
                "sizeBytes": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "source": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/AssetSource"
                    },
                    {
                      "default": null,
                      "type": [
                        "object",
                        "null"
                      ]
                    }
                  ]
                },
                "status": {
                  "enum": [
                    "uploading",
                    "processing",
                    "ready",
                    "error"
                  ],
                  "type": "string"
                },
                "tags": {
                  "items": {
                    "maxLength": 50,
                    "minLength": 1,
                    "type": "string"
                  },
                  "maxItems": 50,
                  "type": "array"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "updatedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "uploadedById": {
                  "anyOf": [
                    {
                      "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^[0-9a-f]{64}$",
                      "type": "string"
                    }
                  ]
                },
                "variants": {
                  "items": {
                    "properties": {
                      "blank": {
                        "type": "boolean"
                      },
                      "codec": {
                        "maxLength": 31,
                        "minLength": 1,
                        "type": "string"
                      },
                      "generatedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "height": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "id": {
                        "pattern": "^asv_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "kind": {
                        "anyOf": [
                          {
                            "enum": [
                              "thumbnail-sm",
                              "thumbnail-md",
                              "thumbnail-lg",
                              "preview-720",
                              "preview-1080",
                              "webp-original-size",
                              "playback-1080"
                            ],
                            "type": "string"
                          },
                          {
                            "pattern": "^page-([1-9][0-9]{0,2})$",
                            "type": "string"
                          },
                          {
                            "pattern": "^page-([1-9][0-9]{0,2})-sm$",
                            "type": "string"
                          }
                        ]
                      },
                      "sha256": {
                        "pattern": "^[0-9a-f]{64}$",
                        "type": "string"
                      },
                      "sizeBytes": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "width": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "id",
                      "kind",
                      "width",
                      "height",
                      "sizeBytes",
                      "generatedAt"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "videoCodec": {
                  "default": null,
                  "maxLength": 31,
                  "minLength": 1,
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "tenantId",
                "folderId",
                "name",
                "originalFileName",
                "mimeType",
                "sizeBytes",
                "sha256",
                "tags",
                "dimensions",
                "durationSeconds",
                "uploadedById",
                "status",
                "errorMessage",
                "createdAt",
                "updatedAt",
                "deletedAt",
                "variants",
                "purgeAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "folderId": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "management": {
            "properties": {
              "allowed": {
                "type": "boolean"
              }
            },
            "required": [
              "allowed"
            ],
            "type": "object"
          }
        },
        "required": [
          "folderId",
          "assets",
          "management"
        ],
        "type": "object"
      },
      "ListCloudConnectionsResponse": {
        "example": {
          "connections": [
            {
              "accountLabel": "apotheke@demo.local",
              "accountSubject": "2f1c9d64-8a3b-4e57-9f02-6bd1c4a5e730",
              "brokenReason": null,
              "connectedByUserId": "usr_01KERQ74K0TEAM000000000001",
              "createdAt": "2026-01-12T09:00:00.000Z",
              "id": "cconn_01KT3WD680CNNECTMSGRAPH001",
              "lastVerifiedAt": "2026-07-20T09:14:32.000Z",
              "provider": "microsoft-graph",
              "scopes": [
                "Files.Read",
                "User.Read",
                "offline_access"
              ],
              "status": "connected",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-07-20T09:14:32.000Z"
            },
            {
              "accountLabel": "julia.petersen@demo.local",
              "accountSubject": "00037ffe-a1b2-4c3d-8e9f-1234567890ab",
              "brokenReason": "the provider rejected the stored authorization",
              "connectedByUserId": "usr_01KERQ74K0TEAM000000000001",
              "createdAt": "2026-02-03T14:05:00.000Z",
              "id": "cconn_01KFB7QPW0CNNECTPRVAT00002",
              "lastVerifiedAt": "2026-04-18T11:20:00.000Z",
              "provider": "microsoft-graph",
              "scopes": [
                "Files.Read",
                "User.Read",
                "offline_access"
              ],
              "status": "broken",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-07-18T02:11:00.000Z"
            }
          ]
        },
        "properties": {
          "connections": {
            "items": {
              "$ref": "#/components/schemas/CloudConnection"
            },
            "type": "array"
          }
        },
        "required": [
          "connections"
        ],
        "type": "object"
      },
      "ListCommandsResponse": {
        "example": {
          "items": [
            {
              "ackAt": "2026-07-20T08:55:02.000Z",
              "completedAt": "2026-07-20T08:55:09.000Z",
              "deviceId": "dev_01KHK32T40GERAET0000000001",
              "dispatchedAt": "2026-07-20T08:55:01.000Z",
              "errorMessage": null,
              "id": "cmd_01KXZBRNN0BEFEH00000000002",
              "issuedAt": "2026-07-20T08:55:00.000Z",
              "issuedById": "usr_01KFB7QPW0TEAM000000000002",
              "kind": "screenshot",
              "output": null,
              "outputRef": {
                "s3Key": "befehle/cmd_01KXZBRNN0BEFEH00000000002/bildschirmfoto.png",
                "sha256": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95"
              },
              "payload": null,
              "playerId": "ply_01KHK34MQ0SCREEN0000000001",
              "status": "completed",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            },
            {
              "ackAt": "2026-07-19T18:02:03.000Z",
              "completedAt": "2026-07-19T18:03:12.000Z",
              "deviceId": "dev_01KHK32T40GERAET0000000001",
              "dispatchedAt": "2026-07-19T18:02:01.000Z",
              "errorMessage": null,
              "id": "cmd_01KXXRNHE0BEFEH00000000001",
              "issuedAt": "2026-07-19T18:02:00.000Z",
              "issuedById": "usr_01KERQ74K0TEAM000000000001",
              "kind": "reboot",
              "output": null,
              "outputRef": null,
              "payload": null,
              "playerId": null,
              "status": "completed",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            }
          ],
          "page": 1,
          "pageSize": 20,
          "total": 2
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "ackAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "completedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "deviceId": {
                  "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "dispatchedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "errorMessage": {
                  "maxLength": 500,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "id": {
                  "pattern": "^cmd_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "issuedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "issuedById": {
                  "anyOf": [
                    {
                      "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^[0-9a-f]{64}$",
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "kind": {
                  "enum": [
                    "reboot",
                    "refresh-snapshot",
                    "screenshot",
                    "identify",
                    "locate",
                    "tail-log",
                    "set-config",
                    "mark-good",
                    "check-ota",
                    "display-power",
                    "display-source"
                  ],
                  "type": "string"
                },
                "output": {},
                "outputRef": {
                  "properties": {
                    "s3Key": {
                      "maxLength": 512,
                      "minLength": 1,
                      "type": "string"
                    },
                    "sha256": {
                      "pattern": "^[a-f0-9]{64}$",
                      "type": "string"
                    }
                  },
                  "required": [
                    "s3Key",
                    "sha256"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "payload": {},
                "playerId": {
                  "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "status": {
                  "enum": [
                    "pending",
                    "dispatched",
                    "ack-received",
                    "completed",
                    "failed",
                    "timeout"
                  ],
                  "type": "string"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "deviceId",
                "playerId",
                "tenantId",
                "kind",
                "status",
                "outputRef",
                "errorMessage",
                "issuedById",
                "issuedAt",
                "dispatchedAt",
                "ackAt",
                "completedAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "page": {
            "minimum": 1,
            "type": "integer"
          },
          "pageSize": {
            "minimum": 1,
            "type": "integer"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total",
          "page",
          "pageSize"
        ],
        "type": "object"
      },
      "ListConnectedAccountsResponse": {
        "example": {
          "items": [
            {
              "email": "deniz.acar@demo.local",
              "emailIsPrivateRelay": false,
              "id": "fid_01KT3WPB70FDERTE0000000001",
              "issuer": {
                "kind": "social",
                "provider": "google"
              },
              "lastLoginAt": "2026-07-18T16:20:00.000Z",
              "linkedAt": "2026-06-02T10:05:00.000Z"
            }
          ]
        },
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/FederatedIdentityPublic"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListConnectedApplicationsResponse": {
        "example": {
          "items": [
            {
              "activeGrants": 2,
              "clientId": "oac_01KQRWJRC0ANZEGE0000000001",
              "clientUri": "https://anzeigen-assistent.demo.local",
              "grantedAt": "2026-06-18T14:22:00.000Z",
              "lastUsedAt": "2026-07-20T06:40:00.000Z",
              "logoUri": "https://anzeigen-assistent.demo.local/zeichen.png",
              "name": "Anzeigen-Assistent",
              "scopes": [
                "scene.read",
                "playlist.read"
              ]
            }
          ]
        },
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ConnectedApplication"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListCreativesResponse": {
        "example": {
          "items": [
            {
              "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
              "approval": {
                "decidedAt": "2026-08-26T07:55:00.000Z",
                "decidedBy": {
                  "kind": "user",
                  "userRef": "usr_01KERQ74K0TEAM000000000001"
                },
                "note": "",
                "status": "approved"
              },
              "contentSha256": "7d2f4c1a9b3e6f58c0a1d2e3f4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3",
              "createdAt": "2026-08-25T14:30:00.000Z",
              "durationMs": null,
              "height": 1080,
              "id": "crv_01KXR4RZ80MTV0000000000001",
              "mandatoryText": null,
              "media": {
                "assetId": "ast_01KXJY2V30MEDEN00000000004",
                "source": "tenant_asset"
              },
              "mediaType": "image",
              "name": "Herbstpflege Schaufenster",
              "owner": {
                "kind": "tenant",
                "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
              },
              "status": "active",
              "updatedAt": "2026-08-26T07:55:00.000Z",
              "version": 1,
              "width": 1920
            }
          ]
        },
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Creative"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListDeviceCommandsResponse": {
        "example": {
          "items": [
            {
              "ackAt": "2026-07-19T18:02:03.000Z",
              "completedAt": "2026-07-19T18:03:12.000Z",
              "deviceId": "dev_01KHK32T40GERAET0000000001",
              "dispatchedAt": "2026-07-19T18:02:01.000Z",
              "errorMessage": null,
              "id": "cmd_01KXXRNHE0BEFEH00000000001",
              "issuedAt": "2026-07-19T18:02:00.000Z",
              "issuedById": "usr_01KERQ74K0TEAM000000000001",
              "kind": "reboot",
              "output": null,
              "outputRef": null,
              "payload": null,
              "playerId": null,
              "status": "completed",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            },
            {
              "ackAt": "2026-07-20T08:55:02.000Z",
              "completedAt": "2026-07-20T08:55:09.000Z",
              "deviceId": "dev_01KHK32T40GERAET0000000001",
              "dispatchedAt": "2026-07-20T08:55:01.000Z",
              "errorMessage": null,
              "id": "cmd_01KXZBRNN0BEFEH00000000002",
              "issuedAt": "2026-07-20T08:55:00.000Z",
              "issuedById": "usr_01KFB7QPW0TEAM000000000002",
              "kind": "screenshot",
              "output": null,
              "outputRef": {
                "s3Key": "befehle/cmd_01KXZBRNN0BEFEH00000000002/bildschirmfoto.png",
                "sha256": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95"
              },
              "payload": null,
              "playerId": "ply_01KHK34MQ0SCREEN0000000001",
              "status": "completed",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            }
          ],
          "page": 1,
          "pageSize": 20,
          "total": 2
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "ackAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "completedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "deviceId": {
                  "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "dispatchedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "errorMessage": {
                  "maxLength": 500,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "id": {
                  "pattern": "^cmd_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "issuedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "issuedById": {
                  "anyOf": [
                    {
                      "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^[0-9a-f]{64}$",
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "kind": {
                  "enum": [
                    "reboot",
                    "refresh-snapshot",
                    "screenshot",
                    "identify",
                    "locate",
                    "tail-log",
                    "set-config",
                    "mark-good",
                    "check-ota",
                    "display-power",
                    "display-source"
                  ],
                  "type": "string"
                },
                "output": {},
                "outputRef": {
                  "properties": {
                    "s3Key": {
                      "maxLength": 512,
                      "minLength": 1,
                      "type": "string"
                    },
                    "sha256": {
                      "pattern": "^[a-f0-9]{64}$",
                      "type": "string"
                    }
                  },
                  "required": [
                    "s3Key",
                    "sha256"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "payload": {},
                "playerId": {
                  "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "status": {
                  "enum": [
                    "pending",
                    "dispatched",
                    "ack-received",
                    "completed",
                    "failed",
                    "timeout"
                  ],
                  "type": "string"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "deviceId",
                "playerId",
                "tenantId",
                "kind",
                "status",
                "outputRef",
                "errorMessage",
                "issuedById",
                "issuedAt",
                "dispatchedAt",
                "ackAt",
                "completedAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "page": {
            "minimum": 1,
            "type": "integer"
          },
          "pageSize": {
            "minimum": 1,
            "type": "integer"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total",
          "page",
          "pageSize"
        ],
        "type": "object"
      },
      "ListDeviceEventsResponse": {
        "example": {
          "items": [
            {
              "category": "playback",
              "code": "playback.scene-changed",
              "data": {
                "scene": "Willkommen"
              },
              "id": "pev_01JZQ8N4E7VXYK2M3RTBWCDF01",
              "occurredAt": "2026-07-20T09:12:11.000Z",
              "receivedAt": "2026-07-20T09:12:12.000Z",
              "severity": "info"
            },
            {
              "category": "content",
              "code": "content.snapshot-changed",
              "data": {
                "revision": "7c1e4b9a0d3f"
              },
              "id": "pev_01JZQ8N4E7VXYK2M3RTBWCDF02",
              "occurredAt": "2026-07-20T09:05:44.000Z",
              "receivedAt": "2026-07-20T09:05:45.000Z",
              "severity": "info"
            },
            {
              "category": "system",
              "code": "system.temperature-high",
              "data": {
                "celsius": 74
              },
              "id": "pev_01JZQ8N4E7VXYK2M3RTBWCDF03",
              "occurredAt": "2026-07-20T08:41:02.000Z",
              "receivedAt": "2026-07-20T08:41:03.000Z",
              "severity": "warning"
            },
            {
              "category": "connection",
              "code": "connection.cloud-online",
              "data": null,
              "id": "pev_01JZQ8N4E7VXYK2M3RTBWCDF04",
              "occurredAt": "2026-07-20T06:30:18.000Z",
              "receivedAt": "2026-07-20T06:30:19.000Z",
              "severity": "info"
            },
            {
              "category": "system",
              "code": "system.agent-started",
              "data": {
                "version": "1.8.3"
              },
              "id": "pev_01JZQ8N4E7VXYK2M3RTBWCDF05",
              "occurredAt": "2026-07-20T06:30:04.000Z",
              "receivedAt": "2026-07-20T06:30:06.000Z",
              "severity": "info"
            }
          ],
          "page": 1,
          "pageSize": 20,
          "total": 5
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "category": {
                  "enum": [
                    "playback",
                    "content",
                    "connection",
                    "system",
                    "update",
                    "command",
                    "service"
                  ],
                  "type": "string"
                },
                "code": {
                  "type": "string"
                },
                "data": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      }
                    ]
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "id": {
                  "pattern": "^pev_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "occurredAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "receivedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "severity": {
                  "enum": [
                    "info",
                    "warning",
                    "error"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id",
                "occurredAt",
                "receivedAt",
                "category",
                "code",
                "severity",
                "data"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "page": {
            "minimum": 1,
            "type": "integer"
          },
          "pageSize": {
            "minimum": 1,
            "type": "integer"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total",
          "page",
          "pageSize"
        ],
        "type": "object"
      },
      "ListDevicesResponse": {
        "example": {
          "items": [
            {
              "blockedAt": null,
              "blockedById": null,
              "blockedReason": null,
              "certExpiresAt": "2027-02-16T11:24:12.000Z",
              "certFingerprint": "3ad7c19e05b842f6971cd0e3ba586f24709dc1b83e5a4670f92db8c1057ae43b",
              "certIssuedAt": "2026-02-16T11:24:12.000Z",
              "certRotatedFromId": null,
              "channel": "stable",
              "createdAt": "2026-02-16T11:24:00.000Z",
              "deviceKind": "pi-5",
              "displays": [
                {
                  "connector": "HDMI-A-1",
                  "lastHeartbeatAt": "2026-07-20T09:14:32.000Z",
                  "name": "Schaufenster Eingang",
                  "playerId": "ply_01KHK34MQ0SCREEN0000000001",
                  "screenIndex": 0,
                  "status": "online"
                }
              ],
              "hardwareInfo": {
                "firstSeenAt": "2026-02-16T11:24:00.000Z",
                "macMasked": "b8:27:**:**:**:4f",
                "model": "Raspberry Pi 5 Model B Rev 1.0",
                "osVersion": "2026.6.1",
                "serialMasked": "****d31c"
              },
              "hardwareSerial": "10000000c2b3d31c",
              "id": "dev_01KHK32T40GERAET0000000001",
              "kind": "pi",
              "lastSeenAt": "2026-07-20T09:14:32.000Z",
              "name": "Player D31C",
              "pendingWipeLevel": null,
              "reregistrationAllowedUntil": null,
              "reregistrationAttempts": 0,
              "reregistrationRequestedAt": null,
              "reregistrationSourceIp": null,
              "software": {
                "agent": {
                  "buildSha": "7d3f0b2c91ae",
                  "loopback": 1,
                  "releaseSeq": 12,
                  "version": "1.8.3"
                },
                "channel": "stable",
                "os": {
                  "launcher": 1,
                  "releaseSeq": 3,
                  "version": "2026.6.1"
                },
                "renderer": {
                  "activatedAt": "2026-07-20T08:21:40.000Z",
                  "build": "c41e09a7f2b3",
                  "profile": "modern",
                  "releaseSeq": 41,
                  "source": "bundle",
                  "version": "0.4.12"
                }
              },
              "softwareTarget": {
                "agent": {
                  "build": "7d3f0b2c91ae",
                  "releasedAt": "2026-07-14T10:05:00.000Z",
                  "releaseSeq": 12,
                  "version": "1.8.3"
                },
                "os": {
                  "build": "e94b1c7d20a5",
                  "releasedAt": "2026-06-25T08:00:00.000Z",
                  "releaseSeq": 3,
                  "version": "2026.6.1"
                },
                "renderer": {
                  "build": "c41e09a7f2b3",
                  "releasedAt": "2026-07-20T08:15:00.000Z",
                  "releaseSeq": 41,
                  "version": "0.4.12"
                }
              },
              "status": "active",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            },
            {
              "blockedAt": null,
              "blockedById": null,
              "blockedReason": null,
              "certExpiresAt": "2027-02-16T11:30:08.000Z",
              "certFingerprint": "e94b1c7d20a536f8bd41093ce75a2f68d0371b9ec48a5027fa96d3b810c5ef72",
              "certIssuedAt": "2026-02-16T11:30:08.000Z",
              "certRotatedFromId": null,
              "channel": "stable",
              "createdAt": "2026-02-16T11:30:00.000Z",
              "deviceKind": "pi-5",
              "displays": [
                {
                  "connector": "HDMI-A-1",
                  "lastHeartbeatAt": "2026-07-19T21:12:48.000Z",
                  "name": "Wartebereich",
                  "playerId": "ply_01KHK3FM90SCREEN0000000002",
                  "screenIndex": 0,
                  "status": "offline"
                },
                {
                  "connector": "HDMI-A-2",
                  "lastHeartbeatAt": "2026-07-19T21:12:48.000Z",
                  "name": "Kasse 2",
                  "playerId": "ply_01KHK3FM90SCREEN0000000006",
                  "screenIndex": 1,
                  "status": "suspended"
                }
              ],
              "hardwareInfo": {
                "firstSeenAt": "2026-02-16T11:30:00.000Z",
                "macMasked": "b8:27:**:**:**:91",
                "model": "Raspberry Pi 5 Model B Rev 1.0",
                "osVersion": "2026.6.1",
                "serialMasked": "****b902"
              },
              "hardwareSerial": "10000000f47ab902",
              "id": "dev_01KHK3DSP0GERAET0000000002",
              "kind": "pi",
              "lastSeenAt": "2026-07-19T21:12:48.000Z",
              "name": "Player B902",
              "pendingWipeLevel": null,
              "reregistrationAllowedUntil": null,
              "reregistrationAttempts": 0,
              "reregistrationRequestedAt": null,
              "reregistrationSourceIp": null,
              "software": {
                "agent": {
                  "buildSha": "7d3f0b2c91ae",
                  "loopback": 1,
                  "releaseSeq": 12,
                  "version": "1.8.3"
                },
                "channel": "stable",
                "os": {
                  "launcher": 1,
                  "releaseSeq": 3,
                  "version": "2026.6.1"
                },
                "renderer": {
                  "activatedAt": "2026-07-20T08:31:00.000Z",
                  "build": "a39490d5fab9",
                  "profile": "modern",
                  "releaseSeq": 41,
                  "source": "bundle",
                  "version": "0.4.11"
                }
              },
              "softwareTarget": {
                "agent": {
                  "build": "7d3f0b2c91ae",
                  "releasedAt": "2026-07-14T10:05:00.000Z",
                  "releaseSeq": 12,
                  "version": "1.8.3"
                },
                "os": {
                  "build": "e94b1c7d20a5",
                  "releasedAt": "2026-06-25T08:00:00.000Z",
                  "releaseSeq": 3,
                  "version": "2026.6.1"
                },
                "renderer": {
                  "build": "c41e09a7f2b3",
                  "releasedAt": "2026-07-20T08:15:00.000Z",
                  "releaseSeq": 41,
                  "version": "0.4.12"
                }
              },
              "status": "active",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            },
            {
              "blockedAt": null,
              "blockedById": null,
              "blockedReason": null,
              "certExpiresAt": "2027-05-04T08:12:20.000Z",
              "certFingerprint": "3f7d92a4c081b5e63a2f8047db15c9e2740816bf3ca95d2e07b418f6a3d9c250",
              "certIssuedAt": "2026-05-04T08:12:20.000Z",
              "certRotatedFromId": null,
              "channel": "stable",
              "createdAt": "2026-05-04T08:12:00.000Z",
              "deviceKind": "pi-5",
              "displays": [],
              "hardwareInfo": {
                "firstSeenAt": "2026-05-04T08:12:00.000Z",
                "macMasked": "b8:27:**:**:**:22",
                "model": "Raspberry Pi 5 Model B Rev 1.0",
                "osVersion": "2026.6.1",
                "serialMasked": "****ce54"
              },
              "hardwareSerial": "10000000ab19ce54",
              "id": "dev_01KRX5H0Z0GERAET0000000004",
              "kind": "pi",
              "lastSeenAt": "2026-07-20T04:55:00.000Z",
              "name": "Player CE54",
              "pendingWipeLevel": null,
              "reregistrationAllowedUntil": null,
              "reregistrationAttempts": 0,
              "reregistrationRequestedAt": null,
              "reregistrationSourceIp": null,
              "software": {
                "agent": {
                  "buildSha": "7d3f0b2c91ae",
                  "loopback": 1,
                  "releaseSeq": 12,
                  "version": "1.8.3"
                },
                "channel": "stable",
                "os": {
                  "launcher": 1,
                  "releaseSeq": 3,
                  "version": "2026.6.1"
                },
                "renderer": {
                  "activatedAt": "2026-07-20T08:21:40.000Z",
                  "build": "c41e09a7f2b3",
                  "profile": "modern",
                  "releaseSeq": 41,
                  "source": "bundle",
                  "version": "0.4.12"
                }
              },
              "softwareTarget": {
                "agent": {
                  "build": "7d3f0b2c91ae",
                  "releasedAt": "2026-07-14T10:05:00.000Z",
                  "releaseSeq": 12,
                  "version": "1.8.3"
                },
                "os": {
                  "build": "e94b1c7d20a5",
                  "releasedAt": "2026-06-25T08:00:00.000Z",
                  "releaseSeq": 3,
                  "version": "2026.6.1"
                },
                "renderer": {
                  "build": "c41e09a7f2b3",
                  "releasedAt": "2026-07-20T08:15:00.000Z",
                  "releaseSeq": 41,
                  "version": "0.4.12"
                }
              },
              "status": "active",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            }
          ],
          "nextCursor": "ZGV2OjIwMjYtMDUtMTg"
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "blockedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "blockedById": {
                  "anyOf": [
                    {
                      "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "blockedReason": {
                  "maxLength": 500,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "certExpiresAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "certFingerprint": {
                  "pattern": "^[0-9a-f]{64}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "certIssuedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "certRotatedFromId": {
                  "pattern": "^[0-9a-f]{64}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "channel": {
                  "enum": [
                    "stable",
                    "beta",
                    "canary"
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "deviceKind": {
                  "enum": [
                    "pi-5",
                    "pi-4",
                    "linux-generic",
                    "browser"
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "displays": {
                  "items": {
                    "properties": {
                      "connector": {
                        "maxLength": 32,
                        "minLength": 1,
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "lastHeartbeatAt": {
                        "format": "date-time",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "name": {
                        "type": "string"
                      },
                      "playerId": {
                        "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "screenIndex": {
                        "maximum": 7,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "status": {
                        "enum": [
                          "online",
                          "stale",
                          "offline",
                          "paired-not-claimed",
                          "suspended",
                          "decommissioned"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "playerId",
                      "name",
                      "screenIndex",
                      "connector",
                      "status",
                      "lastHeartbeatAt"
                    ],
                    "type": "object"
                  },
                  "maxItems": 8,
                  "type": "array"
                },
                "hardwareInfo": {
                  "properties": {
                    "firstSeenAt": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "macMasked": {
                      "type": "string"
                    },
                    "model": {
                      "type": "string"
                    },
                    "osVersion": {
                      "type": "string"
                    },
                    "serialMasked": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "model",
                    "serialMasked",
                    "macMasked",
                    "osVersion",
                    "firstSeenAt"
                  ],
                  "type": "object"
                },
                "hardwareSerial": {
                  "maxLength": 64,
                  "type": "string"
                },
                "id": {
                  "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "kind": {
                  "enum": [
                    "pi",
                    "browser"
                  ],
                  "type": "string"
                },
                "lastSeenAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": {
                  "maxLength": 120,
                  "minLength": 1,
                  "type": "string"
                },
                "pendingWipeLevel": {
                  "enum": [
                    "tenant-data",
                    "factory"
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "reregistrationAllowedUntil": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "reregistrationAttempts": {
                  "minimum": 0,
                  "type": "integer"
                },
                "reregistrationRequestedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "reregistrationSourceIp": {
                  "maxLength": 45,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "software": {
                  "$ref": "#/components/schemas/DeviceSoftware"
                },
                "softwareTarget": {
                  "$ref": "#/components/schemas/DeviceSoftwareTarget"
                },
                "status": {
                  "enum": [
                    "unclaimed",
                    "active",
                    "blocked"
                  ],
                  "type": "string"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "name",
                "tenantId",
                "kind",
                "hardwareSerial",
                "certFingerprint",
                "certIssuedAt",
                "certExpiresAt",
                "certRotatedFromId",
                "status",
                "createdAt",
                "blockedAt",
                "blockedById",
                "blockedReason",
                "pendingWipeLevel",
                "reregistrationRequestedAt",
                "reregistrationAttempts",
                "reregistrationSourceIp",
                "reregistrationAllowedUntil",
                "hardwareInfo",
                "deviceKind",
                "software",
                "channel",
                "softwareTarget",
                "displays",
                "lastSeenAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListDisplayGroupsResponse": {
        "example": {
          "displayGroups": [
            {
              "canvas": {
                "height": 1080,
                "width": 3840
              },
              "createdAt": "2026-03-02T09:15:00.000Z",
              "id": "dgr_01KHK4A2S0WANDBAND00000001",
              "members": [
                {
                  "playerId": "ply_01KHK34MQ0SCREEN0000000004",
                  "rect": {
                    "h": 1080,
                    "w": 1920,
                    "x": 0,
                    "y": 0
                  }
                },
                {
                  "playerId": "ply_01KHK34MQ0SCREEN0000000005",
                  "rect": {
                    "h": 1080,
                    "w": 1920,
                    "x": 1920,
                    "y": 0
                  }
                }
              ],
              "name": "Schaufenster-Band",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-03-02T09:15:00.000Z"
            }
          ]
        },
        "properties": {
          "displayGroups": {
            "items": {
              "properties": {
                "canvas": {
                  "properties": {
                    "height": {
                      "maximum": 8640,
                      "minimum": 1,
                      "type": "integer"
                    },
                    "width": {
                      "maximum": 15360,
                      "minimum": 1,
                      "type": "integer"
                    }
                  },
                  "required": [
                    "width",
                    "height"
                  ],
                  "type": "object"
                },
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "id": {
                  "pattern": "^dgr_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "members": {
                  "items": {
                    "properties": {
                      "playerId": {
                        "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "rect": {
                        "properties": {
                          "h": {
                            "maximum": 8640,
                            "minimum": 1,
                            "type": "integer"
                          },
                          "w": {
                            "maximum": 15360,
                            "minimum": 1,
                            "type": "integer"
                          },
                          "x": {
                            "maximum": 15360,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "y": {
                            "maximum": 8640,
                            "minimum": 0,
                            "type": "integer"
                          }
                        },
                        "required": [
                          "x",
                          "y",
                          "w",
                          "h"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "playerId",
                      "rect"
                    ],
                    "type": "object"
                  },
                  "maxItems": 16,
                  "minItems": 1,
                  "type": "array"
                },
                "name": {
                  "maxLength": 120,
                  "minLength": 1,
                  "type": "string"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "updatedAt": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "tenantId",
                "name",
                "canvas",
                "members",
                "createdAt",
                "updatedAt"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "displayGroups"
        ],
        "type": "object"
      },
      "ListExportsResponse": {
        "example": {
          "items": [
            {
              "completedAt": "2026-07-17T09:00:38.000Z",
              "createdAt": "2026-07-17T09:00:00.000Z",
              "errorMessage": null,
              "expiresAt": "2026-07-24T09:00:38.000Z",
              "filter": {
                "from": "2026-04-01T00:00:00.000Z",
                "to": "2026-07-01T00:00:00.000Z"
              },
              "format": "csv",
              "id": "aex_01KXQMVNM0EXPRT00000000001",
              "requestedByUserId": "usr_01KERQ74K0TEAM000000000001",
              "rowCount": 1284,
              "status": "completed",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "truncated": false
            },
            {
              "completedAt": null,
              "createdAt": "2026-06-30T16:20:00.000Z",
              "errorMessage": "Der Lauf hat das Zeitlimit überschritten. Bitte den Zeitraum verkleinern.",
              "expiresAt": null,
              "filter": {
                "from": "2026-01-01T00:00:00.000Z",
                "to": "2026-07-01T00:00:00.000Z"
              },
              "format": "pdf",
              "id": "aex_01KWCN93W0EXPRT00000000002",
              "requestedByUserId": "usr_01KERQ74K0TEAM000000000001",
              "rowCount": null,
              "status": "failed",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "truncated": false
            }
          ],
          "nextCursor": "YWV4OjIwMjYtMDYtMzA",
          "total": 5
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "completedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "errorMessage": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "expiresAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "filter": {
                  "properties": {
                    "actorRef": {
                      "type": "string"
                    },
                    "eventType": {
                      "type": "string"
                    },
                    "from": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "severity": {
                      "enum": [
                        "debug",
                        "info",
                        "warn",
                        "error"
                      ],
                      "type": "string"
                    },
                    "to": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "format": {
                  "enum": [
                    "csv",
                    "json",
                    "pdf"
                  ],
                  "type": "string"
                },
                "id": {
                  "pattern": "^aex_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "requestedByUserId": {
                  "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "rowCount": {
                  "minimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "status": {
                  "enum": [
                    "pending",
                    "processing",
                    "completed",
                    "failed"
                  ],
                  "type": "string"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "truncated": {
                  "type": "boolean"
                }
              },
              "required": [
                "id",
                "tenantId",
                "requestedByUserId",
                "format",
                "status",
                "filter",
                "rowCount",
                "errorMessage",
                "expiresAt",
                "createdAt",
                "completedAt",
                "truncated"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListFoldersResponse": {
        "example": [
          {
            "createdAt": "2026-02-24T11:00:00.000Z",
            "createdById": "usr_01KFB7QPW0TEAM000000000002",
            "depth": 0,
            "id": "fld_01KJ7MWKW0MAPPE00000000001",
            "kind": "regular",
            "name": "Angebote",
            "parentFolderId": null,
            "path": "/Angebote",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-02-24T11:00:00.000Z"
          },
          {
            "createdAt": "2026-02-24T11:01:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "depth": 0,
            "id": "fld_01KJ7MYEF0MAPPE00000000002",
            "kind": "brand",
            "name": "Markenzeichen",
            "parentFolderId": null,
            "path": "/Markenzeichen",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-02-24T11:01:00.000Z"
          },
          {
            "createdAt": "2026-03-11T15:20:00.000Z",
            "createdById": "usr_01KFB7QPW0TEAM000000000002",
            "depth": 1,
            "id": "fld_01KKEQQF80MAPPE00000000003",
            "kind": "regular",
            "name": "Videos",
            "parentFolderId": "fld_01KJ7MWKW0MAPPE00000000001",
            "path": "/Angebote/Videos",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-03-11T15:20:00.000Z"
          }
        ],
        "items": {
          "properties": {
            "createdAt": {
              "format": "date-time",
              "type": "string"
            },
            "createdById": {
              "anyOf": [
                {
                  "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                {
                  "pattern": "^[0-9a-f]{64}$",
                  "type": "string"
                }
              ]
            },
            "depth": {
              "maximum": 7,
              "minimum": 0,
              "type": "integer"
            },
            "id": {
              "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "kind": {
              "default": "regular",
              "enum": [
                "regular",
                "brand"
              ],
              "type": "string"
            },
            "name": {
              "maxLength": 100,
              "minLength": 1,
              "pattern": "^[^/]+$",
              "type": "string"
            },
            "parentFolderId": {
              "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": [
                "string",
                "null"
              ]
            },
            "path": {
              "maxLength": 900,
              "minLength": 1,
              "type": "string"
            },
            "tenantId": {
              "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "updatedAt": {
              "format": "date-time",
              "type": "string"
            }
          },
          "required": [
            "id",
            "tenantId",
            "parentFolderId",
            "name",
            "path",
            "depth",
            "createdById",
            "createdAt",
            "updatedAt"
          ],
          "type": "object"
        },
        "type": "array"
      },
      "ListGeneratedReportsResponse": {
        "example": {
          "items": [
            {
              "expiresAt": "2026-07-27T04:00:00.000Z",
              "format": "pdf",
              "generatedAt": "2026-07-20T04:00:00.000Z",
              "id": "gnr_01KXYTWGG0BERCHT0000000002",
              "reportId": "anr_01KN6K9M00BERCHT0000000001",
              "rowCount": 3,
              "sizeBytes": 48210,
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            }
          ],
          "nextCursor": "Z25yOjIwMjYtMDctMjA",
          "total": 12
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "expiresAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "format": {
                  "enum": [
                    "csv",
                    "json",
                    "pdf"
                  ],
                  "type": "string"
                },
                "generatedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "id": {
                  "pattern": "^gnr_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "reportId": {
                  "pattern": "^anr_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "rowCount": {
                  "minimum": 0,
                  "type": "integer"
                },
                "sizeBytes": {
                  "minimum": 0,
                  "type": "integer"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "reportId",
                "tenantId",
                "generatedAt",
                "format",
                "sizeBytes",
                "rowCount",
                "expiresAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListGrantsResponse": {
        "example": {
          "items": [
            {
              "createdAt": "2026-04-14T11:15:00.000Z",
              "expiresAt": null,
              "grantedById": "usr_01KERQ74K0TEAM000000000001",
              "id": "grn_01KFB7SHF0GRANT00000000001",
              "kind": "allow",
              "permissions": [
                "scene.publish",
                "schedule.update"
              ],
              "reason": "Übernimmt die Freigaben, solange die Inhaberin im Urlaub ist.",
              "resourceId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "resourceType": "tenant",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "userId": "usr_01KFB7QPW0TEAM000000000002"
            },
            {
              "createdAt": "2026-06-30T07:45:00.000Z",
              "expiresAt": "2026-09-30T21:59:59.000Z",
              "grantedById": "usr_01KERQ74K0TEAM000000000001",
              "id": "grn_01KGH9ECF0GRANT00000000002",
              "kind": "allow",
              "permissions": [
                "fleet.player.read"
              ],
              "reason": "Vertretung am Standort Altona bis Ende September.",
              "resourceId": "ply_01KHK34MQ0SCREEN0000000001",
              "resourceType": "player",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "userId": "usr_01KGH9CHW0TEAM000000000003"
            }
          ],
          "nextCursor": "Z3JuOjIwMjYtMDYtMzA",
          "total": 2
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "expiresAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "grantedById": {
                  "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "id": {
                  "pattern": "^grn_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "kind": {
                  "enum": [
                    "allow",
                    "deny"
                  ],
                  "type": "string"
                },
                "permissions": {
                  "items": {
                    "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$",
                    "type": "string"
                  },
                  "type": "array"
                },
                "reason": {
                  "maxLength": 500,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "resourceId": {
                  "type": "string"
                },
                "resourceType": {
                  "enum": [
                    "scene",
                    "playlist",
                    "schedule",
                    "player",
                    "device",
                    "asset",
                    "tenant",
                    "audit-export"
                  ],
                  "type": "string"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "userId": {
                  "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "tenantId",
                "userId",
                "resourceType",
                "resourceId",
                "permissions",
                "kind",
                "grantedById",
                "reason",
                "expiresAt",
                "createdAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListGraphicsResponse": {
        "example": {
          "categories": [
            {
              "id": "pfeile",
              "label": "Pfeile & Hinweise"
            },
            {
              "id": "symbole",
              "label": "Symbole & Badges"
            },
            {
              "id": "rahmen",
              "label": "Rahmen & Ecken"
            },
            {
              "id": "sprechblasen",
              "label": "Sprechblasen & Zitate"
            },
            {
              "id": "wetter",
              "label": "Wetter & Natur"
            },
            {
              "id": "essen",
              "label": "Essen & Trinken"
            },
            {
              "id": "alltag",
              "label": "Alltag & Geschäft"
            },
            {
              "id": "saisonal",
              "label": "Saisonal"
            }
          ],
          "graphics": [
            {
              "category": "pfeile",
              "id": "pfeil-rechts",
              "keywords": [
                "pfeil",
                "rechts",
                "weiter",
                "richtung",
                "hinweis"
              ],
              "name": "Pfeil nach rechts"
            },
            {
              "category": "symbole",
              "id": "ausrufezeichen",
              "keywords": [
                "achtung",
                "warnung",
                "wichtig",
                "hinweis",
                "gefahr"
              ],
              "name": "Ausrufezeichen"
            },
            {
              "category": "essen",
              "id": "kaffeetasse",
              "keywords": [
                "kaffee",
                "tasse",
                "pause",
                "heiß",
                "getränk",
                "frühstück"
              ],
              "name": "Kaffeetasse"
            }
          ]
        },
        "properties": {
          "categories": {
            "items": {
              "$ref": "#/components/schemas/GraphicCategoryEntry"
            },
            "type": "array"
          },
          "graphics": {
            "items": {
              "$ref": "#/components/schemas/GraphicEntry"
            },
            "type": "array"
          }
        },
        "required": [
          "categories",
          "graphics"
        ],
        "type": "object"
      },
      "ListHardwareOffersResponse": {
        "example": {
          "currency": "EUR",
          "offers": [
            {
              "announced": false,
              "available": true,
              "description": "Raspberry Pi 5 mit 2 GB, ein Display bis 4K, Video bis Full HD.",
              "displayName": "Player Lite",
              "oneTimeGrossCents": 17731,
              "oneTimeNetCents": 14900,
              "skuCode": "HW-PLAYER-2G"
            },
            {
              "announced": true,
              "available": false,
              "description": "Raspberry Pi 5, zwei Displays je Gerät, Video bis 4K60.",
              "displayName": "Player Pro",
              "oneTimeGrossCents": 22491,
              "oneTimeNetCents": 18900,
              "skuCode": "HW-PLAYER-4G"
            }
          ],
          "vatRatePercent": 19
        },
        "properties": {
          "currency": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string"
          },
          "offers": {
            "items": {
              "properties": {
                "announced": {
                  "type": "boolean"
                },
                "available": {
                  "type": "boolean"
                },
                "description": {
                  "type": "string"
                },
                "displayName": {
                  "maxLength": 120,
                  "minLength": 1,
                  "type": "string"
                },
                "oneTimeGrossCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "oneTimeNetCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "skuCode",
                "displayName",
                "description",
                "oneTimeNetCents",
                "oneTimeGrossCents",
                "available",
                "announced"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "vatRatePercent": {
            "maximum": 100,
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "offers",
          "currency",
          "vatRatePercent"
        ],
        "type": "object"
      },
      "ListInstalledAppsResponse": {
        "example": {
          "apps": [
            {
              "appId": "opening-hours",
              "bundleSizeBytes": 268412,
              "category": "geschaeft",
              "coreFeature": null,
              "coverUrl": "/apps/opening-hours/thumbnails/opening-hours--week.png",
              "displayName": "Öffnungszeiten",
              "effect": {
                "reason": "ok",
                "status": "active"
              },
              "grantId": "tag_01KJ7BEFX0GRANT00000000003",
              "iconUrl": "/apps/opening-hours/icon.svg",
              "installedAt": "2026-02-09T10:20:00.000Z",
              "installedVersion": "1.1.0",
              "platformStatus": "active",
              "resources": [],
              "sceneCount": 1,
              "status": "active",
              "tagline": "Ob Sie gerade geöffnet haben, auf jedem Display.",
              "tier": "pro"
            },
            {
              "appId": "pharmacies-on-duty",
              "bundleSizeBytes": 412688,
              "category": "geschaeft",
              "coreFeature": null,
              "coverUrl": "/apps/pharmacies-on-duty/thumbnails/pharmacies-on-duty-display--karten.png",
              "displayName": "Notdienst",
              "effect": {
                "reason": "ok",
                "status": "active"
              },
              "grantId": "tag_01KP5RMX20GRANT00000000002",
              "iconUrl": "/apps/pharmacies-on-duty/icon.svg",
              "installedAt": "2026-04-14T11:05:00.000Z",
              "installedVersion": "2.0.0",
              "platformStatus": "beta",
              "resources": [
                {
                  "name": "Standorte",
                  "slug": "locations"
                },
                {
                  "name": "Dienstpläne",
                  "slug": "schedules"
                }
              ],
              "sceneCount": 1,
              "status": "pending-reacceptance",
              "tagline": "Wer heute Nacht Dienst hat — automatisch auf dem Schaufenster.",
              "tier": "pro"
            },
            {
              "appId": "weather",
              "bundleSizeBytes": 194755,
              "category": "information",
              "coreFeature": null,
              "coverUrl": "/apps/weather/thumbnails/weather--hourly.png",
              "displayName": "Wetter",
              "effect": {
                "reason": "ok",
                "status": "active"
              },
              "grantId": "tag_01KT3RZAM0GRANT00000000001",
              "iconUrl": "/apps/weather/icon.svg",
              "installedAt": "2026-06-22T15:30:00.000Z",
              "installedVersion": "1.4.2",
              "platformStatus": "active",
              "resources": [],
              "sceneCount": 1,
              "status": "active",
              "tagline": "Wetterdaten als klar lesbares Display-Widget.",
              "tier": "standard"
            },
            {
              "appId": "notice-board",
              "bundleSizeBytes": 141920,
              "category": "gestaltung",
              "coreFeature": null,
              "coverUrl": "/apps/notice-board/thumbnails/rich-text--notice-board.png",
              "displayName": "Aushang",
              "effect": {
                "reason": "ok",
                "status": "active"
              },
              "grantId": "tag_01KW2QP4X0GRANT00000000004",
              "iconUrl": "/apps/notice-board/icon.svg",
              "installedAt": "2026-07-15T08:40:00.000Z",
              "installedVersion": "1.0.0",
              "platformStatus": "active",
              "resources": [],
              "sceneCount": 0,
              "status": "active",
              "tagline": "Der Zettel an der Tür, sauber gesetzt statt ausgedruckt.",
              "tier": "pro"
            }
          ]
        },
        "properties": {
          "apps": {
            "items": {
              "properties": {
                "appId": {
                  "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                  "type": "string"
                },
                "bundleSizeBytes": {
                  "minimum": 0,
                  "type": "integer"
                },
                "category": {
                  "enum": [
                    "zeit",
                    "information",
                    "web-video",
                    "gestaltung",
                    "geschaeft"
                  ],
                  "type": "string"
                },
                "coreFeature": {
                  "default": null,
                  "enum": [
                    "canvas"
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "coverUrl": {
                  "default": "",
                  "type": "string"
                },
                "displayName": {
                  "type": "string"
                },
                "effect": {
                  "properties": {
                    "reason": {
                      "enum": [
                        "ok",
                        "pro-required",
                        "premium-required",
                        "booking-required",
                        "exempt"
                      ],
                      "type": "string"
                    },
                    "status": {
                      "enum": [
                        "active",
                        "locked"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "status",
                    "reason"
                  ],
                  "type": "object"
                },
                "grantId": {
                  "pattern": "^tag_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "iconUrl": {
                  "type": "string"
                },
                "installedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "installedVersion": {
                  "pattern": "^\\d+\\.\\d+\\.\\d+$",
                  "type": "string"
                },
                "platformStatus": {
                  "enum": [
                    "active",
                    "beta",
                    "disabled"
                  ],
                  "type": "string"
                },
                "resources": {
                  "default": [],
                  "items": {
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "slug": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "slug",
                      "name"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "sceneCount": {
                  "minimum": 0,
                  "type": "integer"
                },
                "status": {
                  "enum": [
                    "active",
                    "pending-reacceptance",
                    "uninstalled"
                  ],
                  "type": "string"
                },
                "tagline": {
                  "type": "string"
                },
                "tier": {
                  "default": "standard",
                  "enum": [
                    "standard",
                    "pro",
                    "premium",
                    "addon"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "grantId",
                "appId",
                "installedVersion",
                "status",
                "installedAt",
                "displayName",
                "iconUrl",
                "platformStatus",
                "effect",
                "sceneCount"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "apps"
        ],
        "type": "object"
      },
      "ListIntegrityIssuesResponse": {
        "example": {
          "items": [
            {
              "detectedAt": "2026-07-17T04:10:00.000Z",
              "id": "sii_01KXQ48NE0PRFNG00000000001",
              "payload": {
                "appId": "weather",
                "availableVersion": "1.4.2",
                "retiredVersion": "1.3.0",
                "widgetInstanceId": "wgi_01KTM20XA0WDGET00000000005"
              },
              "resolution": null,
              "resolvedAt": null,
              "resolvedById": null,
              "sceneId": "scn_01KTM1Z2Q0SZENE00000000003",
              "severity": "WARNING",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "type": "WidgetVersionRetired"
            }
          ],
          "nextCursor": "c2lpOjIwMjYtMDctMTc",
          "total": 1
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "detectedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "id": {
                  "pattern": "^sii_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "payload": {},
                "resolution": {
                  "enum": [
                    "auto-fixed",
                    "manual-fixed",
                    "ignored"
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "resolvedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "resolvedById": {
                  "anyOf": [
                    {
                      "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^[0-9a-f]{64}$",
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "sceneId": {
                  "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "severity": {
                  "enum": [
                    "BLOCKING",
                    "WARNING",
                    "INFO"
                  ],
                  "type": "string"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "type": {
                  "enum": [
                    "WidgetVersionRetired",
                    "AppUninstalled",
                    "AssetDeleted",
                    "LayoutTemplateDeleted",
                    "ConfigSchemaIncompatible",
                    "AppVersionHeld",
                    "DocumentPagesChanged"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id",
                "sceneId",
                "tenantId",
                "type",
                "severity",
                "detectedAt",
                "resolvedAt",
                "resolvedById",
                "resolution"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListInventoryResponse": {
        "example": {
          "items": [
            {
              "inventory": {
                "diagonalInches": 55,
                "networkEnabled": false,
                "orientation": "landscape",
                "placement": "window",
                "placementFactorPermille": null,
                "playerId": "ply_01KHK34MQ0SCREEN0000000001",
                "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
                "updatedAt": "2026-08-20T09:00:00.000Z",
                "version": 1
              },
              "locationId": "loc_01KHK4B3T0ADRESSE000000001",
              "networkEffective": false,
              "playerId": "ply_01KHK34MQ0SCREEN0000000001",
              "playerName": "Schaufenster Eingang",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "tenantParticipates": false
            },
            {
              "inventory": {
                "diagonalInches": 43,
                "networkEnabled": false,
                "orientation": "portrait",
                "placement": "waiting_area",
                "placementFactorPermille": null,
                "playerId": "ply_01KHK3FM90SCREEN0000000002",
                "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
                "updatedAt": "2026-08-20T09:04:00.000Z",
                "version": 1
              },
              "locationId": null,
              "networkEffective": false,
              "playerId": "ply_01KHK3FM90SCREEN0000000002",
              "playerName": "Wartebereich",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "tenantParticipates": false
            },
            {
              "inventory": null,
              "locationId": null,
              "networkEffective": false,
              "playerId": "ply_01KHK3FM90SCREEN0000000006",
              "playerName": "Kasse 2",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "tenantParticipates": false
            },
            {
              "inventory": null,
              "locationId": null,
              "networkEffective": false,
              "playerId": "ply_01KRX5JVJ0SCREEN0000000003",
              "playerName": "Beratungsraum",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "tenantParticipates": false
            }
          ]
        },
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/DisplayInventoryEntry"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListInvitationsResponse": {
        "example": [
          {
            "acceptedAt": null,
            "acceptedByUserId": null,
            "createdAt": "2026-07-16T14:05:00.000Z",
            "defaultRoleId": "rol_01KERPYXWRRECHT00000000002",
            "email": "m.sander@demo.local",
            "expiresAt": "2026-07-23T14:05:00.000Z",
            "id": "ivt_01KXFZ39F0ENADNG0000000001",
            "invitedById": "usr_01KERQ74K0TEAM000000000001",
            "message": "Hallo Merve, damit kannst du die Angebots-Szenen selbst pflegen. Viele Grüße, Julia",
            "revokedAt": null,
            "revokedById": null,
            "status": "pending",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          },
          {
            "acceptedAt": "2026-03-21T16:12:00.000Z",
            "acceptedByUserId": "usr_01KGH9CHW0TEAM000000000003",
            "createdAt": "2026-03-20T08:00:00.000Z",
            "defaultRoleId": "rol_01KERPYYW0RECHT00000000003",
            "email": "sabine.vogt@demo.local",
            "expiresAt": "2026-03-27T08:00:00.000Z",
            "id": "ivt_01KG5R7YV0ENADNG0000000003",
            "invitedById": "usr_01KERQ74K0TEAM000000000001",
            "message": null,
            "revokedAt": null,
            "revokedById": null,
            "status": "accepted",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          }
        ],
        "items": {
          "properties": {
            "acceptedAt": {
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            },
            "acceptedByUserId": {
              "anyOf": [
                {
                  "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                {
                  "pattern": "^[0-9a-f]{64}$",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "createdAt": {
              "format": "date-time",
              "type": "string"
            },
            "defaultRoleId": {
              "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "email": {
              "format": "email",
              "maxLength": 254,
              "type": "string"
            },
            "expiresAt": {
              "format": "date-time",
              "type": "string"
            },
            "id": {
              "pattern": "^ivt_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "invitedById": {
              "anyOf": [
                {
                  "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                {
                  "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                {
                  "pattern": "^[0-9a-f]{64}$",
                  "type": "string"
                }
              ]
            },
            "message": {
              "maxLength": 1000,
              "type": [
                "string",
                "null"
              ]
            },
            "revokedAt": {
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            },
            "revokedById": {
              "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": [
                "string",
                "null"
              ]
            },
            "status": {
              "enum": [
                "pending",
                "accepted",
                "revoked",
                "expired"
              ],
              "type": "string"
            },
            "tenantId": {
              "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            }
          },
          "required": [
            "id",
            "tenantId",
            "email",
            "defaultRoleId",
            "invitedById",
            "message",
            "status",
            "expiresAt",
            "acceptedAt",
            "acceptedByUserId",
            "revokedAt",
            "revokedById",
            "createdAt"
          ],
          "type": "object"
        },
        "type": "array"
      },
      "ListInvoicesResponse": {
        "example": {
          "items": [
            {
              "amountCents": 8211,
              "amountDueCents": 8211,
              "correctedGrossCents": 0,
              "correctedInvoiceId": null,
              "createdAt": "2026-09-01T02:00:00.000Z",
              "creditAnchor": null,
              "creditedByInvoiceId": null,
              "creditSettlement": "settled",
              "currency": "EUR",
              "documentKind": "invoice",
              "dueAt": null,
              "dunningLevel": 0,
              "graceUntil": null,
              "hardwareOrderId": null,
              "hasEInvoiceXml": false,
              "hasPdf": false,
              "id": "inv_01J5N2A8K3RB6QH9YVW4ZT0S01",
              "invoiceNumber": "INV-2026-0044",
              "issuedAt": "2026-09-01T02:00:00.000Z",
              "kind": "periodic",
              "lastDunnedAt": "2026-01-01T00:00:00.000Z",
              "netAmountCents": null,
              "paidAt": null,
              "periodEnd": "2026-09-30T23:59:59.000Z",
              "periodStart": "2026-09-01T00:00:00.000Z",
              "recipientVatId": null,
              "recipientVatIdConfirmedAt": null,
              "reminderSentAt": null,
              "source": "stripe",
              "status": "open",
              "subscriptionId": "sub_01KERQ1MT0VERTRAG000000001",
              "taxCategory": null,
              "taxExemptionCode": null,
              "taxRuleId": null,
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "vatAmountCents": null,
              "vatRatePercent": null,
              "voidedAt": null
            },
            {
              "amountCents": -2380,
              "amountDueCents": -2380,
              "correctedGrossCents": 0,
              "correctedInvoiceId": "inv_01KYXGSD80RECHNNG000000002",
              "createdAt": "2026-08-20T09:00:00.000Z",
              "creditAnchor": "idem-2026-08-20-leinwand-abbau",
              "creditedByInvoiceId": null,
              "creditSettlement": "settled",
              "currency": "EUR",
              "documentKind": "credit_note",
              "dueAt": null,
              "dunningLevel": 0,
              "graceUntil": null,
              "hardwareOrderId": null,
              "hasEInvoiceXml": false,
              "hasPdf": false,
              "id": "inv_01J5N2A8K3RB6QH9YVW4ZT0G07",
              "invoiceNumber": "GS-2026-0007",
              "issuedAt": "2026-08-20T09:00:00.000Z",
              "kind": "periodic",
              "lastDunnedAt": "2026-01-01T00:00:00.000Z",
              "netAmountCents": -2000,
              "paidAt": "2026-08-20T09:00:00.000Z",
              "periodEnd": "2026-08-31T23:59:59.000Z",
              "periodStart": "2026-08-01T00:00:00.000Z",
              "recipientVatId": null,
              "recipientVatIdConfirmedAt": null,
              "reminderSentAt": null,
              "source": "invoice",
              "status": "paid",
              "subscriptionId": "sub_01KERQ1MT0VERTRAG000000001",
              "taxCategory": "S",
              "taxExemptionCode": null,
              "taxRuleId": "de-domestic",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "vatAmountCents": -380,
              "vatRatePercent": 19,
              "voidedAt": null
            },
            {
              "amountCents": 8211,
              "amountDueCents": 5831,
              "correctedGrossCents": 2380,
              "correctedInvoiceId": null,
              "createdAt": "2026-08-01T02:00:00.000Z",
              "creditAnchor": null,
              "creditedByInvoiceId": null,
              "creditSettlement": "settled",
              "currency": "EUR",
              "documentKind": "invoice",
              "dueAt": "2026-08-15T00:00:00.000Z",
              "dunningLevel": 0,
              "graceUntil": "2026-08-29T08:15:00.000Z",
              "hardwareOrderId": null,
              "hasEInvoiceXml": false,
              "hasPdf": false,
              "id": "inv_01KYXGSD80RECHNNG000000002",
              "invoiceNumber": "INV-2026-0043",
              "issuedAt": "2026-08-01T02:00:00.000Z",
              "kind": "periodic",
              "lastDunnedAt": "2026-01-01T00:00:00.000Z",
              "netAmountCents": 6900,
              "paidAt": null,
              "periodEnd": "2026-08-31T23:59:59.000Z",
              "periodStart": "2026-08-01T00:00:00.000Z",
              "recipientVatId": null,
              "recipientVatIdConfirmedAt": null,
              "reminderSentAt": "2026-08-22T08:15:00.000Z",
              "source": "invoice",
              "status": "open",
              "subscriptionId": "sub_01KERQ1MT0VERTRAG000000001",
              "taxCategory": "S",
              "taxExemptionCode": null,
              "taxRuleId": "de-domestic",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "vatAmountCents": 1311,
              "vatRatePercent": 19,
              "voidedAt": null
            },
            {
              "amountCents": 8211,
              "amountDueCents": 8211,
              "correctedGrossCents": 0,
              "correctedInvoiceId": null,
              "createdAt": "2026-07-01T02:00:00.000Z",
              "creditAnchor": null,
              "creditedByInvoiceId": null,
              "creditSettlement": "settled",
              "currency": "EUR",
              "documentKind": "invoice",
              "dueAt": "2026-07-15T00:00:00.000Z",
              "dunningLevel": 0,
              "graceUntil": null,
              "hardwareOrderId": null,
              "hasEInvoiceXml": false,
              "hasPdf": false,
              "id": "inv_01KWDPF480RECHNNG000000001",
              "invoiceNumber": "INV-2026-0042",
              "issuedAt": "2026-07-01T02:00:00.000Z",
              "kind": "periodic",
              "lastDunnedAt": "2026-01-01T00:00:00.000Z",
              "netAmountCents": 6900,
              "paidAt": "2026-07-01T02:02:00.000Z",
              "periodEnd": "2026-07-31T23:59:59.000Z",
              "periodStart": "2026-07-01T00:00:00.000Z",
              "recipientVatId": null,
              "recipientVatIdConfirmedAt": null,
              "reminderSentAt": null,
              "source": "invoice",
              "status": "paid",
              "subscriptionId": "sub_01KERQ1MT0VERTRAG000000001",
              "taxCategory": "S",
              "taxExemptionCode": null,
              "taxRuleId": "de-domestic",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "vatAmountCents": 1311,
              "vatRatePercent": 19,
              "voidedAt": null
            }
          ],
          "nextCursor": "aW52OjIwMjYtMDctMDE",
          "total": 9
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "amountCents": {
                  "type": "integer"
                },
                "amountDueCents": {
                  "type": "integer"
                },
                "correctedGrossCents": {
                  "default": 0,
                  "minimum": 0,
                  "type": "integer"
                },
                "correctedInvoiceId": {
                  "default": null,
                  "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "creditAnchor": {
                  "default": null,
                  "maxLength": 80,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "creditedByInvoiceId": {
                  "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "creditSettlement": {
                  "default": null,
                  "enum": [
                    "settled",
                    "payable"
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "currency": {
                  "enum": [
                    "EUR"
                  ],
                  "type": "string"
                },
                "documentKind": {
                  "default": "invoice",
                  "enum": [
                    "invoice",
                    "credit_note"
                  ],
                  "type": "string"
                },
                "dueAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "dunningLevel": {
                  "default": 0,
                  "maximum": 2,
                  "minimum": 0,
                  "type": "integer"
                },
                "graceUntil": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "hardwareOrderId": {
                  "default": null,
                  "pattern": "^hwo_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "hasEInvoiceXml": {
                  "type": "boolean"
                },
                "hasPdf": {
                  "type": "boolean"
                },
                "id": {
                  "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "invoiceNumber": {
                  "pattern": "^(INV|GS)-\\d{4}-\\d{4,}$",
                  "type": "string"
                },
                "issuedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "kind": {
                  "enum": [
                    "periodic",
                    "interim",
                    "one_time"
                  ],
                  "type": "string"
                },
                "lastDunnedAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "netAmountCents": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "paidAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "periodEnd": {
                  "format": "date-time",
                  "type": "string"
                },
                "periodStart": {
                  "format": "date-time",
                  "type": "string"
                },
                "recipientVatId": {
                  "default": null,
                  "maxLength": 30,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "recipientVatIdConfirmedAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "reminderSentAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "source": {
                  "enum": [
                    "invoice",
                    "stripe"
                  ],
                  "type": "string"
                },
                "status": {
                  "enum": [
                    "draft",
                    "open",
                    "paid",
                    "uncollectible",
                    "void",
                    "refunded"
                  ],
                  "type": "string"
                },
                "subscriptionId": {
                  "pattern": "^sub_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "taxCategory": {
                  "default": null,
                  "enum": [
                    "S",
                    "AE",
                    "K",
                    "G",
                    "E",
                    "O"
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "taxExemptionCode": {
                  "default": null,
                  "maxLength": 20,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "taxRuleId": {
                  "default": null,
                  "enum": [
                    "de-domestic",
                    "eu-b2b-reverse",
                    "third-country",
                    "issuer-exempt"
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "vatAmountCents": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "vatRatePercent": {
                  "maximum": 100,
                  "minimum": 0,
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "voidedAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "tenantId",
                "subscriptionId",
                "source",
                "kind",
                "invoiceNumber",
                "amountCents",
                "netAmountCents",
                "vatRatePercent",
                "vatAmountCents",
                "currency",
                "status",
                "periodStart",
                "periodEnd",
                "issuedAt",
                "dueAt",
                "paidAt",
                "createdAt",
                "hasPdf",
                "hasEInvoiceXml",
                "reminderSentAt",
                "graceUntil",
                "creditedByInvoiceId",
                "amountDueCents"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListJoinRequestsResponse": {
        "example": [
          {
            "createdAt": "2026-07-19T11:30:00.000Z",
            "decidedAt": null,
            "decidedById": null,
            "displayName": "Tobias Reuter",
            "email": "t.reuter@demo.local",
            "expiresAt": "2026-08-02T11:30:00.000Z",
            "id": "ojr_01KXN1AAR0ANFRAGE000000001",
            "invitationId": null,
            "message": "Ich übernehme ab August die Schaufenster-Gestaltung und brauche Zugang zu den Szenen.",
            "status": "pending",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          }
        ],
        "items": {
          "properties": {
            "createdAt": {
              "format": "date-time",
              "type": "string"
            },
            "decidedAt": {
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            },
            "decidedById": {
              "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": [
                "string",
                "null"
              ]
            },
            "displayName": {
              "maxLength": 100,
              "minLength": 1,
              "type": "string"
            },
            "email": {
              "format": "email",
              "maxLength": 254,
              "type": "string"
            },
            "expiresAt": {
              "format": "date-time",
              "type": "string"
            },
            "id": {
              "pattern": "^ojr_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "invitationId": {
              "type": [
                "string",
                "null"
              ]
            },
            "message": {
              "maxLength": 1000,
              "type": [
                "string",
                "null"
              ]
            },
            "status": {
              "enum": [
                "pending",
                "accepted",
                "rejected",
                "expired"
              ],
              "type": "string"
            },
            "tenantId": {
              "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            }
          },
          "required": [
            "id",
            "tenantId",
            "email",
            "displayName",
            "message",
            "status",
            "expiresAt",
            "decidedAt",
            "decidedById",
            "invitationId",
            "createdAt"
          ],
          "type": "object"
        },
        "type": "array"
      },
      "ListLayoutTemplatesResponse": {
        "example": [
          {
            "canvas": {
              "height": 1080,
              "width": 1920
            },
            "createdAt": "2026-01-01T00:00:00.000Z",
            "createdById": null,
            "description": "Ein Slot über die gesamte Fläche.",
            "id": "standard-1x1",
            "isBuiltIn": true,
            "name": "Vollbild",
            "slots": {
              "main": {
                "h": 1080,
                "w": 1920,
                "x": 0,
                "y": 0,
                "zIndex": 0
              }
            },
            "tenantId": null,
            "updatedAt": "2026-01-01T00:00:00.000Z"
          },
          {
            "canvas": {
              "height": 1920,
              "width": 1080
            },
            "createdAt": "2026-03-02T09:10:00.000Z",
            "createdById": "usr_01KFB7QPW0TEAM000000000002",
            "description": "Kopfband für die Wortmarke, große Mittelfläche, Fußzeile für Hinweise.",
            "id": "lyt_01KJPWZGJ0RASTER0000000001",
            "isBuiltIn": false,
            "name": "Schaufenster Hochformat",
            "slots": {
              "fuss": {
                "h": 320,
                "w": 1080,
                "x": 0,
                "y": 1600,
                "zIndex": 1
              },
              "kopf": {
                "h": 320,
                "w": 1080,
                "x": 0,
                "y": 0,
                "zIndex": 0
              },
              "mitte": {
                "h": 1280,
                "w": 1080,
                "x": 0,
                "y": 320,
                "zIndex": 0
              }
            },
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-03-02T09:10:00.000Z"
          }
        ],
        "items": {
          "properties": {
            "canvas": {
              "properties": {
                "height": {
                  "maximum": 7680,
                  "minimum": 320,
                  "type": "integer"
                },
                "width": {
                  "maximum": 7680,
                  "minimum": 320,
                  "type": "integer"
                }
              },
              "required": [
                "width",
                "height"
              ],
              "type": "object"
            },
            "createdAt": {
              "format": "date-time",
              "type": "string"
            },
            "createdById": {
              "anyOf": [
                {
                  "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                {
                  "pattern": "^[0-9a-f]{64}$",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "description": {
              "maxLength": 2000,
              "type": "string"
            },
            "id": {
              "pattern": "^(?:lyt_[0-9A-HJKMNP-TV-Z]{26}|standard-1x1|split-vertical|split-horizontal|grid-2x2|main-sidebar|main-sidebar-2|main-sidebar-3|thirds-vertical|quarters-vertical|header-main|main-ticker|header-main-ticker|sidebar-left-main|header-split|grid-3x2|main-sidebar-ticker|hero-strip-3|portrait-full|portrait-split|portrait-thirds|portrait-main-footer|portrait-half-grid-4|portrait-main-footer-2|portrait-main-footer-3|portrait-header-main|portrait-header-main-ticker|portrait-quarters|portrait-grid-2x3|portrait-hero-columns|ultra-full|ultra-halves|ultra-thirds|ultra-quarters|ultra-center-stage|ultra-main-sidebar|ultra-header-thirds|ultra-thirds-ticker)$",
              "type": "string"
            },
            "isBuiltIn": {
              "type": "boolean"
            },
            "name": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            },
            "slots": {
              "additionalProperties": {
                "properties": {
                  "h": {
                    "exclusiveMinimum": 0,
                    "type": "integer"
                  },
                  "w": {
                    "exclusiveMinimum": 0,
                    "type": "integer"
                  },
                  "x": {
                    "minimum": 0,
                    "type": "integer"
                  },
                  "y": {
                    "minimum": 0,
                    "type": "integer"
                  },
                  "zIndex": {
                    "maximum": 1000,
                    "minimum": 0,
                    "type": "integer"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "w",
                  "h",
                  "zIndex"
                ],
                "type": "object"
              },
              "type": "object"
            },
            "tenantId": {
              "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": [
                "string",
                "null"
              ]
            },
            "updatedAt": {
              "format": "date-time",
              "type": "string"
            }
          },
          "required": [
            "id",
            "tenantId",
            "name",
            "description",
            "canvas",
            "slots",
            "isBuiltIn",
            "createdById",
            "createdAt",
            "updatedAt"
          ],
          "type": "object"
        },
        "type": "array"
      },
      "ListLibraryPlacesResponse": {
        "example": {
          "places": [
            {
              "accountLabel": "apotheke@demo.local",
              "brokenReason": null,
              "browsable": true,
              "connectionId": "cconn_01KT3WD680CNNECTMSGRAPH001",
              "provider": "microsoft-graph",
              "status": "connected"
            },
            {
              "accountLabel": "julia.petersen@demo.local",
              "brokenReason": "the provider rejected the stored authorization",
              "browsable": false,
              "connectionId": "cconn_01KFB7QPW0CNNECTPRVAT00002",
              "provider": "microsoft-graph",
              "status": "broken"
            }
          ]
        },
        "properties": {
          "places": {
            "items": {
              "$ref": "#/components/schemas/LibraryPlace"
            },
            "type": "array"
          }
        },
        "required": [
          "places"
        ],
        "type": "object"
      },
      "ListLocationsResponse": {
        "example": {
          "locations": [
            {
              "address": {
                "city": "Hamburg",
                "country": "DE",
                "postalCode": "22765",
                "street": "Bahnhofstraße 12"
              },
              "coordinates": {
                "lat": 53.5511,
                "lng": 9.9937
              },
              "createdAt": "2026-02-16T11:20:00.000Z",
              "createdById": "usr_01KERQ74K0TEAM000000000001",
              "id": "loc_01KHK4B3T0ADRESSE000000001",
              "name": "Hauptstelle",
              "note": "Verkaufsraum und Schaufenster; der Beratungsraum liegt im ersten Stock.",
              "openingHours": {
                "specialDays": [
                  {
                    "closed": false,
                    "endDate": "2026-12-24",
                    "label": "Heiligabend",
                    "startDate": "2026-12-24",
                    "windows": [
                      {
                        "closes": "12:00",
                        "opens": "08:30"
                      }
                    ]
                  },
                  {
                    "closed": true,
                    "endDate": "2027-01-02",
                    "label": "Inventur",
                    "startDate": "2027-01-02",
                    "windows": []
                  }
                ],
                "weekly": {
                  "fri": [
                    {
                      "closes": "13:00",
                      "opens": "08:30"
                    },
                    {
                      "closes": "18:30",
                      "opens": "14:00"
                    }
                  ],
                  "mon": [
                    {
                      "closes": "13:00",
                      "opens": "08:30"
                    },
                    {
                      "closes": "18:30",
                      "opens": "14:00"
                    }
                  ],
                  "sat": [
                    {
                      "closes": "14:00",
                      "opens": "09:00"
                    }
                  ],
                  "sun": [],
                  "thu": [
                    {
                      "closes": "13:00",
                      "opens": "08:30"
                    },
                    {
                      "closes": "18:30",
                      "opens": "14:00"
                    }
                  ],
                  "tue": [
                    {
                      "closes": "13:00",
                      "opens": "08:30"
                    },
                    {
                      "closes": "18:30",
                      "opens": "14:00"
                    }
                  ],
                  "wed": [
                    {
                      "closes": "13:00",
                      "opens": "08:30"
                    }
                  ]
                }
              },
              "playerCount": 3,
              "region": "DE-HH",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "timeZone": "Europe/Berlin",
              "updatedAt": "2026-02-16T11:20:00.000Z",
              "venueType": "pharmacy",
              "version": 0
            }
          ]
        },
        "properties": {
          "locations": {
            "items": {
              "properties": {
                "address": {
                  "properties": {
                    "city": {
                      "maxLength": 120,
                      "minLength": 1,
                      "type": "string"
                    },
                    "country": {
                      "pattern": "^[A-Z]{2}$",
                      "type": "string"
                    },
                    "postalCode": {
                      "maxLength": 20,
                      "minLength": 1,
                      "type": "string"
                    },
                    "street": {
                      "maxLength": 200,
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "street",
                    "postalCode",
                    "city",
                    "country"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "coordinates": {
                  "properties": {
                    "lat": {
                      "maximum": 90,
                      "minimum": -90,
                      "type": "number"
                    },
                    "lng": {
                      "maximum": 180,
                      "minimum": -180,
                      "type": "number"
                    }
                  },
                  "required": [
                    "lat",
                    "lng"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "createdById": {
                  "anyOf": [
                    {
                      "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^[0-9a-f]{64}$",
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "id": {
                  "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "name": {
                  "maxLength": 120,
                  "minLength": 1,
                  "type": "string"
                },
                "note": {
                  "maxLength": 500,
                  "type": "string"
                },
                "openingHours": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/OpeningHours"
                    },
                    {
                      "default": null
                    }
                  ]
                },
                "playerCount": {
                  "minimum": 0,
                  "type": "integer"
                },
                "region": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/LocationRegion"
                    },
                    {
                      "default": null
                    }
                  ]
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "timeZone": {
                  "type": "string"
                },
                "updatedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "venueType": {
                  "default": null,
                  "enum": [
                    "pharmacy",
                    "workshop",
                    "bakery",
                    "beverage_store",
                    "grocery",
                    "kiosk",
                    "fitness_studio",
                    "medical_practice",
                    "retail",
                    "other"
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "version": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "tenantId",
                "name",
                "address",
                "timeZone",
                "coordinates",
                "note",
                "createdById",
                "version",
                "createdAt",
                "updatedAt",
                "playerCount"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "locations"
        ],
        "type": "object"
      },
      "ListMeHardwareInterestsResponse": {
        "example": {
          "interests": [
            {
              "confirmedAt": "2026-08-14T10:24:00.000Z",
              "createdAt": "2026-08-14T10:20:00.000Z",
              "id": "hwi_01KERPXZM0VRMERKNG00000000",
              "note": "Zwei Geraete fuer die Filiale in Wandsbek.",
              "notifiedAt": null,
              "quantity": 2,
              "skuCode": "HW-PLAYER-4G",
              "state": "confirmed"
            }
          ]
        },
        "properties": {
          "interests": {
            "items": {
              "$ref": "#/components/schemas/MeHardwareInterestView"
            },
            "type": "array"
          }
        },
        "required": [
          "interests"
        ],
        "type": "object"
      },
      "ListMeHardwareOrdersResponse": {
        "example": {
          "items": [
            {
              "createdAt": "2026-07-20T09:15:00.000Z",
              "currency": "EUR",
              "grossCents": 17731,
              "id": "hwo_01KERPXZM0BESTNR0000000001",
              "invoiceId": null,
              "items": [
                {
                  "displayName": "Player Lite",
                  "quantity": 1,
                  "skuCode": "HW-PLAYER-2G",
                  "unitPriceNetCents": 14900
                }
              ],
              "netCents": 14900,
              "orderNumber": "HWO-2026-0042",
              "status": "new",
              "updatedAt": "2026-07-20T09:15:00.000Z",
              "vatCents": 2831
            }
          ],
          "total": 1
        },
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/MeHardwareOrderView"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListMyNotificationsResponse": {
        "example": {
          "items": [
            {
              "actionUrl": "/players/ply_01KHK3FM90SCREEN0000000002",
              "bodyKey": "notification.fleet.player-offline.body",
              "bodyParams": {
                "playerId": "ply_01KHK3FM90SCREEN0000000002",
                "playerName": "Wartebereich"
              },
              "createdAt": "2026-07-19T21:14:00.000Z",
              "dismissedAt": null,
              "expiresAt": null,
              "groupKey": "fleet.player-offline:playerId:ply_01KHK3FM90SCREEN0000000002",
              "id": "ntf_01KXY3N3E0HNWES00000000001",
              "kind": "fleet.player-offline",
              "readAt": null,
              "severity": "warning",
              "titleKey": "notification.fleet.player-offline.title",
              "titleParams": {}
            },
            {
              "actionUrl": "/billing/rechnungen/inv_01KWDPF480RECHNNG000000001",
              "bodyKey": "notification.billing.invoice-paid.body",
              "bodyParams": {
                "amountCents": 4900,
                "invoiceId": "inv_01KWDPF480RECHNNG000000001",
                "invoiceNumber": "INV-2026-0042"
              },
              "createdAt": "2026-07-01T02:05:00.000Z",
              "dismissedAt": null,
              "expiresAt": null,
              "groupKey": "billing.invoice-paid:invoiceId:inv_01KWDPF480RECHNNG000000001",
              "id": "ntf_01KWDPR970HNWES00000000002",
              "kind": "billing.invoice-paid",
              "readAt": "2026-07-01T07:12:00.000Z",
              "severity": "success",
              "titleKey": "notification.billing.invoice-paid.title",
              "titleParams": {}
            }
          ],
          "nextCursor": "bnRmOjIwMjYtMDctMDE",
          "total": 9
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "actionUrl": {
                  "maxLength": 2000,
                  "pattern": "^(\\/(?!\\/)|https:\\/\\/)",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "bodyKey": {
                  "pattern": "^[a-z0-9]+(\\.[a-z0-9-]+)+$",
                  "type": "string"
                },
                "bodyParams": {
                  "additionalProperties": {},
                  "type": "object"
                },
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "dismissedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "expiresAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "groupKey": {
                  "type": "string"
                },
                "id": {
                  "pattern": "^ntf_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "kind": {
                  "enum": [
                    "invitation.accepted",
                    "invitation.expired",
                    "join-request.received",
                    "security.theft-detected",
                    "security.impersonation-started",
                    "security.password-changed",
                    "security.mfa-disabled",
                    "security.sso-changed",
                    "security.api-key-created",
                    "security.custom-domain-removed",
                    "identity.role-changed",
                    "billing.invoice-paid",
                    "billing.invoice-issued",
                    "billing.payment-failed",
                    "billing.past-due",
                    "billing.trial-ending",
                    "billing.frozen",
                    "billing.unfrozen",
                    "billing.vat-id-invalid",
                    "billing.license-conflict",
                    "billing.override-ending",
                    "billing.change-failed",
                    "billing.cancel-scheduled",
                    "analytics.report-failed",
                    "analytics.report-ready",
                    "audit.export-ready",
                    "media.processing-failed",
                    "composition.integrity-issue",
                    "fleet.player-offline",
                    "fleet.command-failed",
                    "identity.device-reregistration-requested",
                    "integrations.cloud-connection-broken",
                    "integrations.webhook-disabled",
                    "marketplace.pending-reacceptance",
                    "app-catalog.release-retired",
                    "marketplace.release-switched",
                    "marketplace.install-requested",
                    "marketplace.update-decision-requested",
                    "marketplace.app-installed",
                    "marketplace.update-declined",
                    "marketplace.data-deletion-scheduled",
                    "tenancy.suspended",
                    "tenancy.deletion-warning",
                    "tenancy.reactivated",
                    "tenancy.custom-domain-verified",
                    "tenancy.sso-break-glass-used",
                    "ops.maintenance",
                    "ops.maintenance-canceled",
                    "ops.incident",
                    "ops.incident-resolved",
                    "ops.broadcast"
                  ],
                  "type": "string"
                },
                "readAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "severity": {
                  "enum": [
                    "info",
                    "success",
                    "warning",
                    "error"
                  ],
                  "type": "string"
                },
                "titleKey": {
                  "pattern": "^[a-z0-9]+(\\.[a-z0-9-]+)+$",
                  "type": "string"
                },
                "titleParams": {
                  "additionalProperties": {},
                  "type": "object"
                }
              },
              "required": [
                "id",
                "kind",
                "titleKey",
                "titleParams",
                "bodyKey",
                "bodyParams",
                "severity",
                "actionUrl",
                "readAt",
                "dismissedAt",
                "createdAt",
                "expiresAt",
                "groupKey"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListMySessionsResponse": {
        "example": [
          {
            "createdAt": "2026-07-20T07:55:00.000Z",
            "current": true,
            "deviceFingerprint": {
              "acceptLanguage": "de-DE,de;q=0.9",
              "geoip": "Hamburg, DE",
              "screenResolution": "2560x1440",
              "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0 Safari/537.36"
            },
            "familyId": "sfm_01KXZ8AT10FAME000000000001",
            "id": "ses_01KXZ8AT10SESSN00000000001",
            "impersonator": null,
            "kind": "user",
            "lastUsedAt": "2026-07-20T09:15:00.000Z",
            "mfaVerifiedAt": null,
            "refreshExpiresAt": "2026-08-19T07:55:00.000Z",
            "status": "active",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "userId": "usr_01KERQ74K0TEAM000000000001"
          },
          {
            "createdAt": "2026-07-18T16:20:00.000Z",
            "current": false,
            "deviceFingerprint": {
              "acceptLanguage": "de-DE,de;q=0.9",
              "geoip": "Hamburg, DE",
              "screenResolution": "1180x820",
              "userAgent": "Mozilla/5.0 (iPad; CPU OS 19_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/19.0 Safari/605.1.15"
            },
            "familyId": "sfm_01KXZ8AT10FAME000000000001",
            "id": "ses_01KXV0E1W0SESSN00000000002",
            "impersonator": null,
            "kind": "user",
            "lastUsedAt": "2026-07-20T08:28:00.000Z",
            "mfaVerifiedAt": "2026-07-18T16:20:12.000Z",
            "refreshExpiresAt": "2026-08-17T16:20:00.000Z",
            "status": "active",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "userId": "usr_01KFB7QPW0TEAM000000000002"
          }
        ],
        "items": {
          "$ref": "#/components/schemas/MySessionView"
        },
        "type": "array"
      },
      "ListOwnRevenueStatementsResponse": {
        "example": {
          "items": [
            {
              "allocations": [
                {
                  "basisKind": "valid_plays",
                  "basisQuantity": 3850,
                  "campaignId": "acp_01KXR4P1Q0NETZKMPGN0000001",
                  "campaignName": "Kranich Erkältungszeit",
                  "computedAt": "2026-11-10T03:00:12.000Z",
                  "month": "2026-10",
                  "networkParametersVersion": 2,
                  "priceCents": 1200,
                  "pricingModel": "per_thousand_plays",
                  "revenueCents": 4620,
                  "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
                },
                {
                  "basisKind": "valid_airtime_seconds",
                  "basisQuantity": 12600,
                  "campaignId": "acp_01KXR4P1Q0NETZKMPGN0000002",
                  "campaignName": "Winterhaut 2026",
                  "computedAt": "2026-11-10T03:00:12.000Z",
                  "month": "2026-10",
                  "networkParametersVersion": 2,
                  "priceCents": 90000,
                  "pricingModel": "flat",
                  "revenueCents": 2480,
                  "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
                }
              ],
              "approvedAt": "2026-11-10T09:40:00.000Z",
              "blockers": [],
              "computedAt": "2026-11-10T03:00:12.000Z",
              "creditCapPercent": 100,
              "creditCents": 7100,
              "creditDocument": {
                "grossCents": 8449,
                "issuedAt": "2026-11-10T10:12:00.000Z",
                "netCents": 7100,
                "number": "WG-2026-0001",
                "vatCents": 1349,
                "vatRatePercent": 19
              },
              "documentUrl": "https://s3.demo.local/signage-medien/billing/self-billed-credits/tnt_01KERPXZM0ADERAPTHEKE00001/WG-2026-0001.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=300&X-Amz-Signature=5e2a91c0d4b7f318",
              "id": "rvs_01KZ4E2M90ERTRAG0000000001",
              "issuedAt": "2026-11-10T10:12:00.000Z",
              "month": "2026-10",
              "networkParametersVersion": 2,
              "notes": [],
              "revenueCents": 7100,
              "settlement": null,
              "status": "issued",
              "subscriptionNetCents": 10900,
              "szeneraShareCents": 0,
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "tenantShareAboveCapPercent": 40,
              "updatedAt": "2026-11-10T10:12:00.000Z",
              "version": 3
            }
          ]
        },
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/OwnRevenueStatement"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListPaymentMethodsResponse": {
        "example": [
          {
            "attachedAt": "2026-01-12T09:20:00.000Z",
            "expiresAt": null,
            "isDefault": true,
            "kind": "sepa_debit",
            "lastFour": "4021",
            "stripePaymentMethodId": "pm_lastschrift_geschaeftskonto"
          },
          {
            "attachedAt": "2026-04-02T11:05:00.000Z",
            "expiresAt": "2029-11-30T23:59:59.000Z",
            "isDefault": false,
            "kind": "card",
            "lastFour": "4412",
            "stripePaymentMethodId": "pm_karte_inhaberin"
          }
        ],
        "items": {
          "properties": {
            "attachedAt": {
              "format": "date-time",
              "type": "string"
            },
            "expiresAt": {
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            },
            "isDefault": {
              "type": "boolean"
            },
            "kind": {
              "enum": [
                "card",
                "sepa_debit"
              ],
              "type": "string"
            },
            "lastFour": {
              "pattern": "^\\d{4}$",
              "type": "string"
            },
            "stripePaymentMethodId": {
              "type": "string"
            }
          },
          "required": [
            "stripePaymentMethodId",
            "kind",
            "lastFour",
            "expiresAt",
            "isDefault",
            "attachedAt"
          ],
          "type": "object"
        },
        "type": "array"
      },
      "ListPlaceItemsResponse": {
        "example": {
          "items": [
            {
              "id": "01BYE5RZ6QN3ZWBTUFOFD3IFTLFPQBCXYZ",
              "isFolder": true,
              "mimeType": null,
              "modifiedAt": "2026-07-28T08:12:00.000Z",
              "name": "Schaufenster",
              "sizeBytes": null,
              "thumbnailUrl": null
            },
            {
              "id": "01BYE5RZ6QN3ZWBTUFOFD3IFTLGRSTUVW",
              "isFolder": false,
              "mimeType": "image/jpeg",
              "modifiedAt": "2026-07-29T16:40:00.000Z",
              "name": "Aktion Oktober.jpg",
              "sizeBytes": 2214880,
              "thumbnailUrl": "https://graph.demo.local/thumbnails/aktion-oktober?token=kurzlebig"
            }
          ],
          "parentId": null
        },
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/PlaceItem"
            },
            "type": "array"
          },
          "parentId": {
            "maxLength": 255,
            "minLength": 1,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "parentId",
          "items"
        ],
        "type": "object"
      },
      "ListPlayerEventsResponse": {
        "example": {
          "items": [
            {
              "category": "playback",
              "code": "playback.scene-changed",
              "data": {
                "scene": "Willkommen"
              },
              "id": "pev_01JZQ8N4E7VXYK2M3RTBWCDF01",
              "occurredAt": "2026-07-20T09:12:11.000Z",
              "receivedAt": "2026-07-20T09:12:12.000Z",
              "severity": "info"
            },
            {
              "category": "content",
              "code": "content.snapshot-changed",
              "data": {
                "revision": "7c1e4b9a0d3f"
              },
              "id": "pev_01JZQ8N4E7VXYK2M3RTBWCDF02",
              "occurredAt": "2026-07-20T09:05:44.000Z",
              "receivedAt": "2026-07-20T09:05:45.000Z",
              "severity": "info"
            },
            {
              "category": "system",
              "code": "system.temperature-high",
              "data": {
                "celsius": 74
              },
              "id": "pev_01JZQ8N4E7VXYK2M3RTBWCDF03",
              "occurredAt": "2026-07-20T08:41:02.000Z",
              "receivedAt": "2026-07-20T08:41:03.000Z",
              "severity": "warning"
            },
            {
              "category": "connection",
              "code": "connection.cloud-online",
              "data": null,
              "id": "pev_01JZQ8N4E7VXYK2M3RTBWCDF04",
              "occurredAt": "2026-07-20T06:30:18.000Z",
              "receivedAt": "2026-07-20T06:30:19.000Z",
              "severity": "info"
            },
            {
              "category": "system",
              "code": "system.agent-started",
              "data": {
                "version": "1.8.3"
              },
              "id": "pev_01JZQ8N4E7VXYK2M3RTBWCDF05",
              "occurredAt": "2026-07-20T06:30:04.000Z",
              "receivedAt": "2026-07-20T06:30:06.000Z",
              "severity": "info"
            }
          ],
          "page": 1,
          "pageSize": 20,
          "total": 5
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "category": {
                  "enum": [
                    "playback",
                    "content",
                    "connection",
                    "system",
                    "update",
                    "command",
                    "service"
                  ],
                  "type": "string"
                },
                "code": {
                  "type": "string"
                },
                "data": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      }
                    ]
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "id": {
                  "pattern": "^pev_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "occurredAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "receivedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "severity": {
                  "enum": [
                    "info",
                    "warning",
                    "error"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id",
                "occurredAt",
                "receivedAt",
                "category",
                "code",
                "severity",
                "data"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "page": {
            "minimum": 1,
            "type": "integer"
          },
          "pageSize": {
            "minimum": 1,
            "type": "integer"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total",
          "page",
          "pageSize"
        ],
        "type": "object"
      },
      "ListPlayerPlaysResponse": {
        "example": {
          "items": [
            {
              "bookingLineId": null,
              "campaignId": null,
              "clockOffsetMs": -42,
              "clockSource": "server_sync",
              "content": {
                "id": "scn_01KJPX8NH0SZENE00000000001",
                "kind": "scene",
                "name": "Willkommen & Öffnungszeiten"
              },
              "contentKind": "scene",
              "contentSha256": null,
              "durationMs": 30000,
              "endedAt": "2026-10-10T07:58:30.000Z",
              "endReason": "completed",
              "errorCode": null,
              "hiddenMs": 0,
              "lateArrival": false,
              "panelStandbyMs": 0,
              "plannedMs": 30000,
              "playId": "01KYB2W8K0WDGB000000000001",
              "playlistId": "pll_01KWV91ZS0PRGRAMM000000001",
              "playlistItemId": "pli_01KWV920R8ENTRY00000000001",
              "playlistName": "Tagesprogramm",
              "podPosition": null,
              "renderState": "rendered",
              "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001",
              "startedAt": "2026-10-10T07:58:00.000Z",
              "status": "valid",
              "zoneAreaShare": 1
            },
            {
              "bookingLineId": "bkl_01KXR4Q9T0BKNG000000000001",
              "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
              "clockOffsetMs": -42,
              "clockSource": "server_sync",
              "content": {
                "id": "crv_01KXR4RZ80MTV0000000000001",
                "kind": "creative",
                "name": "Herbstpflege Schaufenster"
              },
              "contentKind": "creative",
              "contentSha256": "7d2f4c1a9b3e6f58c0a1d2e3f4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3",
              "durationMs": 10000,
              "endedAt": "2026-10-10T07:58:40.000Z",
              "endReason": "completed",
              "errorCode": null,
              "hiddenMs": 0,
              "lateArrival": false,
              "panelStandbyMs": 0,
              "plannedMs": 10000,
              "playId": "01KYB2W8K0WDGB000000000002",
              "playlistId": "pll_01KWV91ZS0PRGRAMM000000001",
              "playlistItemId": "pli_01KXR6B7D8ENTRY00000000005",
              "playlistName": "Tagesprogramm",
              "podPosition": 0,
              "renderState": "rendered",
              "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001",
              "startedAt": "2026-10-10T07:58:30.000Z",
              "status": "valid",
              "zoneAreaShare": 1
            },
            {
              "bookingLineId": null,
              "campaignId": null,
              "clockOffsetMs": -42,
              "clockSource": "server_sync",
              "content": {
                "id": "scn_01KJWKGJM0SZENE00000000002",
                "kind": "scene",
                "name": "Angebote der Woche"
              },
              "contentKind": "scene",
              "contentSha256": null,
              "durationMs": 12000,
              "endedAt": "2026-10-10T07:58:52.000Z",
              "endReason": "shutdown",
              "errorCode": null,
              "hiddenMs": 0,
              "lateArrival": false,
              "panelStandbyMs": 0,
              "plannedMs": 30000,
              "playId": "01KYB2W8K0WDGB000000000003",
              "playlistId": "pll_01KWV91ZS0PRGRAMM000000001",
              "playlistItemId": "pli_01KWV921QGENTRY00000000002",
              "playlistName": "Tagesprogramm",
              "podPosition": null,
              "renderState": "rendered",
              "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001",
              "startedAt": "2026-10-10T07:58:40.000Z",
              "status": "too_short",
              "zoneAreaShare": 1
            }
          ],
          "nextCursor": "MjAyNi0xMC0xMFQwNzo1ODo0MC4wMDBafDAxS1lCMlc4SzBXREdCMDAwMDAwMDAwMDAz"
        },
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/AnalyticsPlayProtocolEntry"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListPlayerScreenshotsResponse": {
        "example": {
          "items": [
            {
              "bytes": 1,
              "capturedAt": "2026-01-01T00:00:00.000Z",
              "content": {
                "assetId": "ast_01ARZ3NDEKTSV4RRFFQ69G5FAV",
                "bookingLineId": "bkl_01ARZ3NDEKTSV4RRFFQ69G5FAV",
                "creativeId": "crv_01ARZ3NDEKTSV4RRFFQ69G5FAV",
                "playId": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
                "playlistItemId": "pli_01ARZ3NDEKTSV4RRFFQ69G5FAV",
                "sceneId": "scn_01ARZ3NDEKTSV4RRFFQ69G5FAV"
              },
              "expiresAt": "2099-12-31T23:59:59.000Z",
              "height": 1,
              "id": "pss_01ARZ3NDEKTSV4RRFFQ69G5FAV",
              "lastCapturedAt": "2026-01-01T00:00:00.000Z",
              "playerId": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV",
              "repeatCount": 1,
              "screenIndex": 0,
              "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
              "thumbnailUrl": "https://example.com",
              "trigger": "interval",
              "url": "https://example.com",
              "width": 1
            }
          ],
          "nextCursor": "sample",
          "window": {
            "from": "2026-01-01T00:00:00.000Z",
            "historyDays": 0,
            "to": "2026-01-01T00:00:00.000Z"
          }
        },
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/PlayerScreenshotEntry"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "window": {
            "properties": {
              "from": {
                "format": "date-time",
                "type": "string"
              },
              "historyDays": {
                "minimum": 0,
                "type": "integer"
              },
              "to": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "from",
              "to",
              "historyDays"
            ],
            "type": "object"
          }
        },
        "required": [
          "items",
          "nextCursor",
          "window"
        ],
        "type": "object"
      },
      "ListPlayersResponse": {
        "example": {
          "items": [
            {
              "config": {
                "audioMuted": true,
                "brightness": 100,
                "contentFit": "contain",
                "identifyPulseColor": "#1f6f4a",
                "resolutionMode": "auto",
                "rotation": 0
              },
              "connector": "HDMI-A-1",
              "createdAt": "2026-02-16T11:25:00.000Z",
              "createdById": "usr_01KERQ74K0TEAM000000000001",
              "decommissionedAt": null,
              "description": "Querformat-Bildschirm im Schaufenster, sichtbar von der Straße.",
              "deviceId": "dev_01KHK32T40GERAET0000000001",
              "deviceKind": "pi",
              "geoLocation": {
                "accuracyM": 28,
                "city": "Hamburg",
                "country": "DE",
                "determinedAt": "2026-07-18T06:12:00.000Z",
                "lat": 53.5511,
                "lng": 9.9937,
                "postalCode": "22765",
                "region": "Hamburg",
                "source": "wifi",
                "street": "Bahnhofstraße 12"
              },
              "id": "ply_01KHK34MQ0SCREEN0000000001",
              "lastHeartbeatAt": "2026-07-20T09:14:32.000Z",
              "lastSnapshotHash": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95",
              "lastTelemetry": {
                "agent": {
                  "buildSha": "9f41c0e7b2",
                  "version": "1.8.3"
                },
                "apps": [
                  {
                    "id": "pharmacies-on-duty",
                    "installedAt": "2026-07-14T04:12:51.000Z",
                    "sizeBytes": 1248576,
                    "version": "1.4.0"
                  },
                  {
                    "id": "weather",
                    "installedAt": "2026-06-28T03:41:09.000Z",
                    "sizeBytes": 486400,
                    "version": "2.1.3"
                  },
                  {
                    "id": "opening-hours",
                    "installedAt": "2026-05-02T22:07:33.000Z",
                    "sizeBytes": 312320,
                    "version": "1.0.2"
                  }
                ],
                "chromium": {
                  "cdpConnected": true,
                  "lastFrameAt": "2026-07-20T09:14:32.000Z",
                  "memoryMb": 612,
                  "state": "rendering"
                },
                "cpuTempC": 57.4,
                "disk": {
                  "rootTotal": 15032385536,
                  "rootUsed": 6442450944,
                  "stateTotal": 120259084288,
                  "stateUsed": 15032385536
                },
                "display": {
                  "connected": true,
                  "connector": "HDMI-A-1",
                  "diagonalInch": 42.5,
                  "heightPx": 2160,
                  "manufacturer": "SAM",
                  "model": "QM43R",
                  "refreshHz": 60,
                  "serial": "0BQH3CKN800142",
                  "widthPx": 3840
                },
                "hardware": {
                  "coreVolts": 0.9,
                  "cpuCores": 4,
                  "cpuModel": "Cortex-A76",
                  "kernel": "6.12.96+rpt-rpi-2712",
                  "model": "Raspberry Pi 5 Model B Rev 1.0",
                  "serial": "10000000d4e5f6a7",
                  "storageHealthPercent": 98,
                  "throttledEver": false,
                  "throttledNow": false
                },
                "loadAvg": [
                  0.07,
                  0.09,
                  0.08
                ],
                "mediaCache": {
                  "entries": [
                    {
                      "ageSeconds": 7412,
                      "assetId": "ast_01KW95DD30MEDEN00000000001",
                      "mediaKey": "9d4f2b8c1e07a5364bd80f9127ce5a3b6408df215c93ea7b0d6154f8a2b3c70e-webp",
                      "present": true,
                      "sizeBytes": 1884160
                    },
                    {
                      "ageSeconds": 7412,
                      "assetId": "ast_01KXJY2V30MEDEN00000000004",
                      "mediaKey": "8b3c07e2f5914da6c0b78e34215fd9c608a7b3e1420d95f6ca87b0e39d152c4f-webp",
                      "present": true,
                      "sizeBytes": 428241
                    },
                    {
                      "assetId": "ast_01KKEQYSM0MEDEN00000000002",
                      "mediaKey": "41a7c0e93b2d58f6041e7cb85d29a3f70c6b1948de52370af8b6c1d094e2537a-playback",
                      "present": false,
                      "sizeBytes": 262227456
                    }
                  ],
                  "entryCount": 3,
                  "limitBytes": 10737418240,
                  "overflowBytes": 0,
                  "presentCount": 2,
                  "requiredBytes": 264539857,
                  "usedBytes": 2312401
                },
                "memory": {
                  "freeMb": 6656,
                  "total": 8192,
                  "used": 1536
                },
                "network": {
                  "apiLatencyMs": 76,
                  "apiReachable": true,
                  "gateway": "192.0.2.1",
                  "iface": "wlan0",
                  "ip": "192.0.2.24",
                  "macAddress": "2c:cf:67:92:fb:76",
                  "tailscaleConnected": false,
                  "wifiChannel": 36,
                  "wifiFrequencyMhz": 5180,
                  "wifiSignal": -68,
                  "wifiSsid": "Apotheke-Backoffice",
                  "wifiTxRateMbps": 433.3
                },
                "rauc": {
                  "bootedFromTryboot": false,
                  "currentSlot": "A",
                  "lastSuccessAt": "2026-07-20T09:14:32.000Z"
                },
                "renderer": {
                  "activatedAt": "2026-07-20T08:27:00.000Z",
                  "build": "c41e09a7f2b3",
                  "capabilities": [
                    "adPods"
                  ],
                  "releaseSeq": 41,
                  "source": "bundle",
                  "state": "scene",
                  "version": "0.4.12"
                },
                "snapshot": {
                  "lastCheckedAt": "2026-07-20T09:12:04.000Z",
                  "lastRefreshAt": "2026-07-20T06:00:12.000Z",
                  "manifestHash": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95",
                  "stale": false
                },
                "time": {
                  "ntpSynchronized": true,
                  "offsetMs": 12,
                  "timezone": "Europe/Berlin"
                },
                "uptime": 431520
              },
              "locationId": "loc_01KHK4B3T0ADRESSE000000001",
              "name": "Schaufenster Eingang",
              "otaState": {
                "bootDurationMs": 41200,
                "installedVersion": "2026.6.1",
                "lastError": null,
                "lastTransitionAt": "2026-07-16T02:14:38.000Z",
                "phase": "completed",
                "rollbackReason": null,
                "targetVersion": "2026.6.1"
              },
              "screenIndex": 0,
              "status": "online",
              "suspendedAt": null,
              "suspendedReason": null,
              "tagIds": [
                "ptg_01KHK403M0TAG0000000000001"
              ],
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-07-16T02:14:38.000Z",
              "version": 7
            },
            {
              "config": {
                "audioMuted": true,
                "brightness": 80,
                "contentFit": "cover",
                "identifyPulseColor": "#1f6f4a",
                "resolutionMode": "auto",
                "rotation": 90
              },
              "connector": "HDMI-A-1",
              "createdAt": "2026-02-16T11:31:00.000Z",
              "createdById": "usr_01KERQ74K0TEAM000000000001",
              "decommissionedAt": null,
              "description": "Hochformat-Bildschirm über der Sitzbank im Wartebereich.",
              "deviceId": "dev_01KHK3DSP0GERAET0000000002",
              "geoLocation": {
                "accuracyM": 28,
                "city": "Hamburg",
                "country": "DE",
                "determinedAt": "2026-07-18T06:12:00.000Z",
                "lat": 53.5511,
                "lng": 9.9937,
                "postalCode": "22765",
                "region": "Hamburg",
                "source": "wifi",
                "street": "Bahnhofstraße 12"
              },
              "id": "ply_01KHK3FM90SCREEN0000000002",
              "lastHeartbeatAt": "2026-07-19T21:12:48.000Z",
              "lastSnapshotHash": "b2f80a41d76c395ee0138b5a4c9d27f6103e8ab7592c4df081a63be95d7c024f",
              "lastTelemetry": {
                "agent": {
                  "buildSha": "9f41c0e7b2",
                  "version": "1.8.3"
                },
                "apps": [
                  {
                    "id": "pharmacies-on-duty",
                    "installedAt": "2026-07-14T04:12:51.000Z",
                    "sizeBytes": 1248576,
                    "version": "1.4.0"
                  },
                  {
                    "id": "weather",
                    "installedAt": "2026-06-28T03:41:09.000Z",
                    "sizeBytes": 486400,
                    "version": "2.1.3"
                  },
                  {
                    "id": "opening-hours",
                    "installedAt": "2026-05-02T22:07:33.000Z",
                    "sizeBytes": 312320,
                    "version": "1.0.2"
                  }
                ],
                "chromium": {
                  "cdpConnected": true,
                  "lastFrameAt": "2026-07-20T09:14:32.000Z",
                  "memoryMb": 612,
                  "state": "rendering"
                },
                "cpuTempC": 57.4,
                "disk": {
                  "rootTotal": 15032385536,
                  "rootUsed": 6442450944,
                  "stateTotal": 120259084288,
                  "stateUsed": 15032385536
                },
                "display": {
                  "connected": true,
                  "connector": "HDMI-A-1",
                  "diagonalInch": 42.5,
                  "heightPx": 2160,
                  "manufacturer": "SAM",
                  "model": "QM43R",
                  "refreshHz": 60,
                  "serial": "0BQH3CKN800142",
                  "widthPx": 3840
                },
                "hardware": {
                  "coreVolts": 0.9,
                  "cpuCores": 4,
                  "cpuModel": "Cortex-A76",
                  "kernel": "6.12.96+rpt-rpi-2712",
                  "model": "Raspberry Pi 5 Model B Rev 1.0",
                  "serial": "10000000d4e5f6a7",
                  "storageHealthPercent": 98,
                  "throttledEver": false,
                  "throttledNow": false
                },
                "loadAvg": [
                  0.07,
                  0.09,
                  0.08
                ],
                "mediaCache": {
                  "entries": [
                    {
                      "ageSeconds": 86113,
                      "assetId": "ast_01KW95DD30MEDEN00000000001",
                      "mediaKey": "c5e19a740b3d26f8514cb0e97a2d63f50b8c41e6d7092a3f5c14b8e60d7a92c1-webp",
                      "present": true,
                      "sizeBytes": 812032
                    },
                    {
                      "ageSeconds": 86113,
                      "assetId": "ast_01KERR2KG0MEDEN00000000003",
                      "mediaKey": "f204b81d6c395ea7042fd1c8b56e93a10d7cf42b8951e6a3074d2c9f18e5b063-webp",
                      "present": true,
                      "sizeBytes": 392192
                    }
                  ],
                  "entryCount": 2,
                  "limitBytes": 10737418240,
                  "overflowBytes": 0,
                  "presentCount": 2,
                  "requiredBytes": 1204224,
                  "usedBytes": 1204224
                },
                "memory": {
                  "freeMb": 6656,
                  "total": 8192,
                  "used": 1536
                },
                "network": {
                  "apiLatencyMs": 76,
                  "apiReachable": true,
                  "gateway": "192.0.2.1",
                  "iface": "wlan0",
                  "ip": "192.0.2.24",
                  "macAddress": "2c:cf:67:92:fb:76",
                  "tailscaleConnected": false,
                  "wifiChannel": 36,
                  "wifiFrequencyMhz": 5180,
                  "wifiSignal": -68,
                  "wifiSsid": "Apotheke-Backoffice",
                  "wifiTxRateMbps": 433.3
                },
                "rauc": {
                  "bootedFromTryboot": false,
                  "currentSlot": "A",
                  "lastSuccessAt": "2026-07-20T09:14:32.000Z"
                },
                "renderer": {
                  "activatedAt": "2026-07-20T08:27:00.000Z",
                  "build": "c41e09a7f2b3",
                  "capabilities": [
                    "adPods"
                  ],
                  "releaseSeq": 41,
                  "source": "bundle",
                  "state": "scene",
                  "version": "0.4.12"
                },
                "snapshot": {
                  "lastCheckedAt": "2026-07-20T09:12:04.000Z",
                  "lastRefreshAt": "2026-07-20T06:00:12.000Z",
                  "manifestHash": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95",
                  "stale": false
                },
                "time": {
                  "ntpSynchronized": true,
                  "offsetMs": 12,
                  "timezone": "Europe/Berlin"
                },
                "uptime": 431520
              },
              "locationId": null,
              "name": "Wartebereich",
              "otaState": {
                "bootDurationMs": 41200,
                "installedVersion": "2026.6.1",
                "lastError": null,
                "lastTransitionAt": "2026-07-16T02:14:38.000Z",
                "phase": "completed",
                "rollbackReason": null,
                "targetVersion": "2026.6.1"
              },
              "screenIndex": 0,
              "status": "offline",
              "suspendedAt": null,
              "suspendedReason": null,
              "tagIds": [
                "ptg_01KHK41Y70TAG0000000000002"
              ],
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-07-19T21:12:48.000Z",
              "version": 4
            },
            {
              "config": {
                "audioMuted": true,
                "brightness": 100,
                "contentFit": "contain",
                "identifyPulseColor": "#1f6f4a",
                "resolutionMode": "auto",
                "rotation": 0
              },
              "connector": "browser",
              "createdAt": "2026-05-18T09:10:00.000Z",
              "createdById": "usr_01KFB7QPW0TEAM000000000002",
              "decommissionedAt": null,
              "description": "Kleiner Bildschirm im Beratungszimmer der Filiale Ottensen.",
              "deviceId": "dev_01KRX5H0Z0GERAET0000000003",
              "deviceKind": "browser",
              "geoLocation": null,
              "id": "ply_01KRX5JVJ0SCREEN0000000003",
              "lastHeartbeatAt": "2026-07-20T08:57:11.000Z",
              "lastSnapshotHash": null,
              "lastTelemetry": null,
              "locationId": null,
              "name": "Beratungsraum",
              "otaState": {
                "bootDurationMs": 41200,
                "installedVersion": "2026.6.1",
                "lastError": null,
                "lastTransitionAt": "2026-07-16T02:14:38.000Z",
                "phase": "completed",
                "rollbackReason": null,
                "targetVersion": "2026.6.1"
              },
              "screenIndex": 0,
              "status": "stale",
              "suspendedAt": null,
              "suspendedReason": null,
              "tagIds": [],
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-07-20T08:57:11.000Z",
              "version": 1
            },
            {
              "config": {
                "audioMuted": true,
                "brightness": 80,
                "contentFit": "cover",
                "identifyPulseColor": "#1f6f4a",
                "resolutionMode": "auto",
                "rotation": 90
              },
              "connector": "HDMI-A-2",
              "createdAt": "2026-06-02T08:40:00.000Z",
              "createdById": "usr_01KERQ74K0TEAM000000000001",
              "decommissionedAt": null,
              "description": "Bildschirm über der zweiten Kasse, am zweiten Ausgang des Wartebereich-Geräts.",
              "deviceId": "dev_01KHK3DSP0GERAET0000000002",
              "geoLocation": {
                "accuracyM": 28,
                "city": "Hamburg",
                "country": "DE",
                "determinedAt": "2026-07-18T06:12:00.000Z",
                "lat": 53.5511,
                "lng": 9.9937,
                "postalCode": "22765",
                "region": "Hamburg",
                "source": "wifi",
                "street": "Bahnhofstraße 12"
              },
              "id": "ply_01KHK3FM90SCREEN0000000006",
              "lastHeartbeatAt": "2026-07-19T21:12:48.000Z",
              "lastSnapshotHash": "b2f80a41d76c395ee0138b5a4c9d27f6103e8ab7592c4df081a63be95d7c024f",
              "lastTelemetry": {
                "agent": {
                  "buildSha": "9f41c0e7b2",
                  "version": "1.8.3"
                },
                "apps": [
                  {
                    "id": "pharmacies-on-duty",
                    "installedAt": "2026-07-14T04:12:51.000Z",
                    "sizeBytes": 1248576,
                    "version": "1.4.0"
                  },
                  {
                    "id": "weather",
                    "installedAt": "2026-06-28T03:41:09.000Z",
                    "sizeBytes": 486400,
                    "version": "2.1.3"
                  },
                  {
                    "id": "opening-hours",
                    "installedAt": "2026-05-02T22:07:33.000Z",
                    "sizeBytes": 312320,
                    "version": "1.0.2"
                  }
                ],
                "chromium": {
                  "cdpConnected": true,
                  "lastFrameAt": "2026-07-20T09:14:32.000Z",
                  "memoryMb": 612,
                  "state": "rendering"
                },
                "cpuTempC": 57.4,
                "disk": {
                  "rootTotal": 15032385536,
                  "rootUsed": 6442450944,
                  "stateTotal": 120259084288,
                  "stateUsed": 15032385536
                },
                "display": {
                  "connected": true,
                  "connector": "HDMI-A-1",
                  "diagonalInch": 42.5,
                  "heightPx": 2160,
                  "manufacturer": "SAM",
                  "model": "QM43R",
                  "refreshHz": 60,
                  "serial": "0BQH3CKN800142",
                  "widthPx": 3840
                },
                "hardware": {
                  "coreVolts": 0.9,
                  "cpuCores": 4,
                  "cpuModel": "Cortex-A76",
                  "kernel": "6.12.96+rpt-rpi-2712",
                  "model": "Raspberry Pi 5 Model B Rev 1.0",
                  "serial": "10000000d4e5f6a7",
                  "storageHealthPercent": 98,
                  "throttledEver": false,
                  "throttledNow": false
                },
                "loadAvg": [
                  0.07,
                  0.09,
                  0.08
                ],
                "mediaCache": {
                  "entries": [
                    {
                      "ageSeconds": 86113,
                      "assetId": "ast_01KW95DD30MEDEN00000000001",
                      "mediaKey": "c5e19a740b3d26f8514cb0e97a2d63f50b8c41e6d7092a3f5c14b8e60d7a92c1-webp",
                      "present": true,
                      "sizeBytes": 812032
                    },
                    {
                      "ageSeconds": 86113,
                      "assetId": "ast_01KERR2KG0MEDEN00000000003",
                      "mediaKey": "f204b81d6c395ea7042fd1c8b56e93a10d7cf42b8951e6a3074d2c9f18e5b063-webp",
                      "present": true,
                      "sizeBytes": 392192
                    }
                  ],
                  "entryCount": 2,
                  "limitBytes": 10737418240,
                  "overflowBytes": 0,
                  "presentCount": 2,
                  "requiredBytes": 1204224,
                  "usedBytes": 1204224
                },
                "memory": {
                  "freeMb": 6656,
                  "total": 8192,
                  "used": 1536
                },
                "network": {
                  "apiLatencyMs": 76,
                  "apiReachable": true,
                  "gateway": "192.0.2.1",
                  "iface": "wlan0",
                  "ip": "192.0.2.24",
                  "macAddress": "2c:cf:67:92:fb:76",
                  "tailscaleConnected": false,
                  "wifiChannel": 36,
                  "wifiFrequencyMhz": 5180,
                  "wifiSignal": -68,
                  "wifiSsid": "Apotheke-Backoffice",
                  "wifiTxRateMbps": 433.3
                },
                "rauc": {
                  "bootedFromTryboot": false,
                  "currentSlot": "A",
                  "lastSuccessAt": "2026-07-20T09:14:32.000Z"
                },
                "renderer": {
                  "activatedAt": "2026-07-20T08:27:00.000Z",
                  "build": "c41e09a7f2b3",
                  "capabilities": [
                    "adPods"
                  ],
                  "releaseSeq": 41,
                  "source": "bundle",
                  "state": "scene",
                  "version": "0.4.12"
                },
                "snapshot": {
                  "lastCheckedAt": "2026-07-20T09:12:04.000Z",
                  "lastRefreshAt": "2026-07-20T06:00:12.000Z",
                  "manifestHash": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95",
                  "stale": false
                },
                "time": {
                  "ntpSynchronized": true,
                  "offsetMs": 12,
                  "timezone": "Europe/Berlin"
                },
                "uptime": 431520
              },
              "locationId": null,
              "name": "Kasse 2",
              "otaState": {
                "bootDurationMs": 41200,
                "installedVersion": "2026.6.1",
                "lastError": null,
                "lastTransitionAt": "2026-07-16T02:14:38.000Z",
                "phase": "completed",
                "rollbackReason": null,
                "targetVersion": "2026.6.1"
              },
              "screenIndex": 1,
              "status": "suspended",
              "suspendedAt": "2026-07-08T01:15:00.000Z",
              "suspendedReason": "quota",
              "tagIds": [],
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-07-08T01:15:00.000Z",
              "version": 3
            }
          ]
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "config": {
                  "properties": {
                    "audioMuted": {
                      "type": "boolean"
                    },
                    "brightness": {
                      "maximum": 100,
                      "minimum": 0,
                      "type": "integer"
                    },
                    "contentFit": {
                      "anyOf": [
                        {
                          "enum": [
                            "contain"
                          ],
                          "type": "string"
                        },
                        {
                          "enum": [
                            "cover"
                          ],
                          "type": "string"
                        }
                      ],
                      "default": "contain"
                    },
                    "identifyPulseColor": {
                      "pattern": "^#[0-9a-fA-F]{6}$",
                      "type": "string"
                    },
                    "resolutionMode": {
                      "anyOf": [
                        {
                          "enum": [
                            "auto"
                          ],
                          "type": "string"
                        },
                        {
                          "properties": {
                            "height": {
                              "maximum": 4320,
                              "minimum": 1,
                              "type": "integer"
                            },
                            "width": {
                              "maximum": 7680,
                              "minimum": 1,
                              "type": "integer"
                            }
                          },
                          "required": [
                            "width",
                            "height"
                          ],
                          "type": "object"
                        }
                      ]
                    },
                    "rotation": {
                      "anyOf": [
                        {
                          "enum": [
                            0
                          ],
                          "type": "number"
                        },
                        {
                          "enum": [
                            90
                          ],
                          "type": "number"
                        },
                        {
                          "enum": [
                            180
                          ],
                          "type": "number"
                        },
                        {
                          "enum": [
                            270
                          ],
                          "type": "number"
                        }
                      ]
                    }
                  },
                  "required": [
                    "audioMuted",
                    "brightness",
                    "rotation",
                    "resolutionMode",
                    "identifyPulseColor"
                  ],
                  "type": "object"
                },
                "connector": {
                  "maxLength": 32,
                  "minLength": 1,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "createdById": {
                  "anyOf": [
                    {
                      "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^[0-9a-f]{64}$",
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "decommissionedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "description": {
                  "maxLength": 500,
                  "type": "string"
                },
                "deviceId": {
                  "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "deviceKind": {
                  "enum": [
                    "pi",
                    "browser"
                  ],
                  "type": "string"
                },
                "geoLocation": {
                  "properties": {
                    "accuracyM": {
                      "minimum": 0,
                      "type": "number"
                    },
                    "city": {
                      "maxLength": 120,
                      "type": "string"
                    },
                    "country": {
                      "maxLength": 2,
                      "minLength": 2,
                      "type": "string"
                    },
                    "determinedAt": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "lat": {
                      "maximum": 90,
                      "minimum": -90,
                      "type": "number"
                    },
                    "lng": {
                      "maximum": 180,
                      "minimum": -180,
                      "type": "number"
                    },
                    "postalCode": {
                      "maxLength": 20,
                      "type": "string"
                    },
                    "region": {
                      "maxLength": 120,
                      "type": "string"
                    },
                    "source": {
                      "enum": [
                        "wifi",
                        "ip",
                        "manual"
                      ],
                      "type": "string"
                    },
                    "street": {
                      "maxLength": 200,
                      "type": "string"
                    }
                  },
                  "required": [
                    "lat",
                    "lng",
                    "accuracyM",
                    "source",
                    "determinedAt"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "host": {
                  "enum": [
                    "szenera-os",
                    "fire-tv",
                    "tizen",
                    "webos",
                    "web-display"
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "id": {
                  "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "lastHeartbeatAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "lastSnapshotHash": {
                  "maxLength": 128,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "lastTelemetry": {
                  "properties": {
                    "agent": {
                      "properties": {
                        "buildSha": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "renderTokenExpiresAt": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "version": {
                          "maxLength": 100,
                          "type": "string"
                        }
                      },
                      "required": [
                        "version"
                      ],
                      "type": "object"
                    },
                    "appFailures": {
                      "items": {
                        "properties": {
                          "id": {
                            "maxLength": 64,
                            "type": "string"
                          },
                          "reason": {
                            "enum": [
                              "missing",
                              "rejected",
                              "failed"
                            ],
                            "type": "string"
                          },
                          "since": {
                            "format": "date-time",
                            "type": "string"
                          },
                          "version": {
                            "maxLength": 64,
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "version",
                          "reason",
                          "since"
                        ],
                        "type": "object"
                      },
                      "maxItems": 20,
                      "type": "array"
                    },
                    "apps": {
                      "items": {
                        "properties": {
                          "id": {
                            "maxLength": 64,
                            "type": "string"
                          },
                          "installedAt": {
                            "format": "date-time",
                            "type": "string"
                          },
                          "sizeBytes": {
                            "minimum": 0,
                            "type": "integer"
                          },
                          "version": {
                            "maxLength": 64,
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "version"
                        ],
                        "type": "object"
                      },
                      "maxItems": 50,
                      "type": "array"
                    },
                    "chromium": {
                      "properties": {
                        "cdpConnected": {
                          "type": "boolean"
                        },
                        "lastFrameAt": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "memoryMb": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "state": {
                          "enum": [
                            "rendering",
                            "pairing",
                            "hung",
                            "starting",
                            "stopped",
                            "unplugged"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "state"
                      ],
                      "type": "object"
                    },
                    "cpuTempC": {
                      "type": "number"
                    },
                    "disk": {
                      "properties": {
                        "rootTotal": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "rootUsed": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "stateTotal": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "stateUsed": {
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "rootUsed",
                        "rootTotal",
                        "stateUsed",
                        "stateTotal"
                      ],
                      "type": "object"
                    },
                    "display": {
                      "properties": {
                        "connected": {
                          "type": "boolean"
                        },
                        "connector": {
                          "maxLength": 30,
                          "type": "string"
                        },
                        "diagonalInch": {
                          "type": "number"
                        },
                        "heightPx": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        },
                        "manufacturer": {
                          "maxLength": 60,
                          "type": "string"
                        },
                        "model": {
                          "maxLength": 60,
                          "type": "string"
                        },
                        "refreshHz": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        },
                        "serial": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "widthPx": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "hardware": {
                      "properties": {
                        "coreVolts": {
                          "type": "number"
                        },
                        "cpuCores": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        },
                        "cpuModel": {
                          "maxLength": 120,
                          "type": "string"
                        },
                        "kernel": {
                          "maxLength": 120,
                          "type": "string"
                        },
                        "model": {
                          "maxLength": 120,
                          "type": "string"
                        },
                        "serial": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "storageHealthPercent": {
                          "maximum": 100,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "throttledEver": {
                          "type": "boolean"
                        },
                        "throttledNow": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "loadAvg": {
                      "items": {
                        "minimum": 0,
                        "type": "number"
                      },
                      "maxItems": 3,
                      "type": "array"
                    },
                    "mediaCache": {
                      "properties": {
                        "entries": {
                          "items": {
                            "properties": {
                              "ageSeconds": {
                                "minimum": 0,
                                "type": "integer"
                              },
                              "assetId": {
                                "maxLength": 30,
                                "type": "string"
                              },
                              "mediaKey": {
                                "maxLength": 128,
                                "minLength": 1,
                                "type": "string"
                              },
                              "present": {
                                "type": "boolean"
                              },
                              "sizeBytes": {
                                "minimum": 0,
                                "type": "integer"
                              }
                            },
                            "required": [
                              "mediaKey",
                              "present"
                            ],
                            "type": "object"
                          },
                          "maxItems": 200,
                          "type": "array"
                        },
                        "entryCount": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "limitBytes": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "overflowBytes": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "presentCount": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "requiredBytes": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "usedBytes": {
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "limitBytes",
                        "usedBytes",
                        "requiredBytes",
                        "overflowBytes",
                        "entryCount",
                        "presentCount"
                      ],
                      "type": "object"
                    },
                    "memory": {
                      "properties": {
                        "freeMb": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "total": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "used": {
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "total",
                        "used",
                        "freeMb"
                      ],
                      "type": "object"
                    },
                    "network": {
                      "properties": {
                        "apiLatencyMs": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "apiReachable": {
                          "type": "boolean"
                        },
                        "gateway": {
                          "maxLength": 45,
                          "type": "string"
                        },
                        "iface": {
                          "maxLength": 20,
                          "type": "string"
                        },
                        "ip": {
                          "maxLength": 45,
                          "type": "string"
                        },
                        "macAddress": {
                          "maxLength": 17,
                          "type": "string"
                        },
                        "tailscaleConnected": {
                          "type": "boolean"
                        },
                        "wifiChannel": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        },
                        "wifiFrequencyMhz": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        },
                        "wifiSignal": {
                          "type": "integer"
                        },
                        "wifiSsid": {
                          "maxLength": 100,
                          "type": "string"
                        },
                        "wifiTxRateMbps": {
                          "minimum": 0,
                          "type": "number"
                        }
                      },
                      "type": "object"
                    },
                    "rauc": {
                      "properties": {
                        "bootedFromTryboot": {
                          "type": "boolean"
                        },
                        "currentSlot": {
                          "maxLength": 50,
                          "type": "string"
                        },
                        "lastSuccessAt": {
                          "format": "date-time",
                          "type": "string"
                        }
                      },
                      "required": [
                        "currentSlot",
                        "bootedFromTryboot"
                      ],
                      "type": "object"
                    },
                    "renderer": {
                      "properties": {
                        "activatedAt": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "build": {
                          "pattern": "^[0-9a-f]{12}$",
                          "type": "string"
                        },
                        "capabilities": {
                          "items": {
                            "maxLength": 32,
                            "minLength": 1,
                            "type": "string"
                          },
                          "maxItems": 32,
                          "type": "array"
                        },
                        "failures": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "linkOnline": {
                          "type": "boolean"
                        },
                        "profile": {
                          "enum": [
                            "modern",
                            "legacy"
                          ],
                          "type": "string"
                        },
                        "releaseSeq": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        },
                        "resilience": {
                          "enum": [
                            "fresh",
                            "stale-but-served",
                            "last-known-good",
                            "loading",
                            "error"
                          ],
                          "type": "string"
                        },
                        "source": {
                          "enum": [
                            "bundle",
                            "hosted"
                          ],
                          "type": "string"
                        },
                        "state": {
                          "enum": [
                            "scene",
                            "pairing",
                            "unassigned",
                            "loading",
                            "error",
                            "disconnected"
                          ],
                          "type": "string"
                        },
                        "version": {
                          "maxLength": 40,
                          "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$",
                          "type": "string"
                        }
                      },
                      "required": [
                        "state"
                      ],
                      "type": "object"
                    },
                    "screens": {
                      "items": {
                        "properties": {
                          "chromium": {
                            "properties": {
                              "cdpConnected": {
                                "type": "boolean"
                              },
                              "state": {
                                "enum": [
                                  "rendering",
                                  "pairing",
                                  "hung",
                                  "starting",
                                  "stopped",
                                  "unplugged"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "state"
                            ],
                            "type": "object"
                          },
                          "powerIntent": {
                            "enum": [
                              "on",
                              "standby"
                            ],
                            "type": "string"
                          },
                          "powerState": {
                            "enum": [
                              "on",
                              "standby",
                              "unknown"
                            ],
                            "type": "string"
                          },
                          "renderer": {
                            "properties": {
                              "failures": {
                                "minimum": 0,
                                "type": "integer"
                              },
                              "linkOnline": {
                                "type": "boolean"
                              },
                              "resilience": {
                                "enum": [
                                  "fresh",
                                  "stale-but-served",
                                  "last-known-good",
                                  "loading",
                                  "error"
                                ],
                                "type": "string"
                              },
                              "state": {
                                "enum": [
                                  "scene",
                                  "pairing",
                                  "unassigned",
                                  "loading",
                                  "error",
                                  "disconnected"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "state"
                            ],
                            "type": "object"
                          },
                          "screenIndex": {
                            "maximum": 7,
                            "minimum": 0,
                            "type": "integer"
                          }
                        },
                        "required": [
                          "screenIndex"
                        ],
                        "type": "object"
                      },
                      "maxItems": 8,
                      "type": "array"
                    },
                    "snapshot": {
                      "properties": {
                        "lastCheckedAt": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "lastRefreshAt": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "manifestHash": {
                          "maxLength": 128,
                          "type": "string"
                        },
                        "stale": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "manifestHash",
                        "stale",
                        "lastRefreshAt"
                      ],
                      "type": "object"
                    },
                    "time": {
                      "properties": {
                        "ntpSynchronized": {
                          "type": "boolean"
                        },
                        "offsetMs": {
                          "type": "integer"
                        },
                        "timezone": {
                          "maxLength": 60,
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "uptime": {
                      "minimum": 0,
                      "type": "integer"
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "locationId": {
                  "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": {
                  "maxLength": 120,
                  "minLength": 1,
                  "type": "string"
                },
                "otaState": {
                  "properties": {
                    "bootDurationMs": {
                      "minimum": 0,
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "installedVersion": {
                      "maxLength": 100,
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "lastError": {
                      "properties": {
                        "at": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "code": {
                          "maxLength": 100,
                          "type": "string"
                        },
                        "message": {
                          "maxLength": 500,
                          "type": "string"
                        }
                      },
                      "required": [
                        "code",
                        "message",
                        "at"
                      ],
                      "type": [
                        "object",
                        "null"
                      ]
                    },
                    "lastTransitionAt": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "phase": {
                      "enum": [
                        "idle",
                        "downloading",
                        "installing",
                        "tryboot-waiting",
                        "completed",
                        "rolled-back",
                        "failed"
                      ],
                      "type": "string"
                    },
                    "rollbackReason": {
                      "maxLength": 500,
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "targetVersion": {
                      "maxLength": 100,
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "phase",
                    "targetVersion",
                    "installedVersion",
                    "lastTransitionAt",
                    "lastError",
                    "bootDurationMs",
                    "rollbackReason"
                  ],
                  "type": "object"
                },
                "screenIndex": {
                  "maximum": 7,
                  "minimum": 0,
                  "type": "integer"
                },
                "status": {
                  "enum": [
                    "online",
                    "stale",
                    "offline",
                    "paired-not-claimed",
                    "suspended",
                    "decommissioned"
                  ],
                  "type": "string"
                },
                "suspendedAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "suspendedReason": {
                  "enum": [
                    "tenant",
                    "quota"
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "tagIds": {
                  "items": {
                    "pattern": "^ptg_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "maxItems": 50,
                  "type": "array"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "updatedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "version": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "tenantId",
                "deviceId",
                "connector",
                "screenIndex",
                "name",
                "description",
                "tagIds",
                "locationId",
                "config",
                "status",
                "suspendedReason",
                "lastHeartbeatAt",
                "createdById",
                "createdAt",
                "updatedAt",
                "decommissionedAt",
                "version",
                "geoLocation",
                "lastSnapshotHash",
                "lastTelemetry",
                "otaState"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListPlayerTagsResponse": {
        "example": {
          "tags": [
            {
              "color": "#1f6f4a",
              "createdAt": "2026-02-16T11:40:00.000Z",
              "id": "ptg_01KHK403M0TAG0000000000001",
              "name": "Schaufenster",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            },
            {
              "color": "#2b5c8a",
              "createdAt": "2026-02-16T11:41:00.000Z",
              "id": "ptg_01KHK41Y70TAG0000000000002",
              "name": "Hochformat",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            }
          ]
        },
        "properties": {
          "tags": {
            "items": {
              "properties": {
                "color": {
                  "pattern": "^#[0-9a-fA-F]{6}$",
                  "type": "string"
                },
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "id": {
                  "pattern": "^ptg_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "name": {
                  "maxLength": 50,
                  "minLength": 1,
                  "type": "string"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "tenantId",
                "name",
                "color",
                "createdAt"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "tags"
        ],
        "type": "object"
      },
      "ListPlaylistsResponse": {
        "example": {
          "items": [
            {
              "autoSummary": null,
              "createdAt": "2026-07-06T08:35:00.000Z",
              "createdById": "usr_01KFB7QPW0TEAM000000000002",
              "defaultItemDurationMs": 20000,
              "defaultTransition": {
                "durationMs": 400,
                "kind": "fade"
              },
              "description": "Begrüßung und Wochenangebot im Wechsel — läuft während der Öffnungszeiten.",
              "id": "pll_01KWV91ZS0PRGRAMM000000001",
              "items": [
                {
                  "durationMs": 20000,
                  "id": "pli_01KWV920R8ENTRY00000000001",
                  "kind": "scene",
                  "order": 0,
                  "sceneId": "scn_01KJPX8NH0SZENE00000000001",
                  "sceneVersionId": "scv_01KWV8RTT0VERSN00000000001",
                  "transition": {
                    "durationMs": 400,
                    "kind": "fade"
                  }
                },
                {
                  "durationMs": 25000,
                  "id": "pli_01KWV921QGENTRY00000000002",
                  "kind": "scene",
                  "order": 1,
                  "sceneId": "scn_01KJWKGJM0SZENE00000000002",
                  "sceneVersionId": "scv_01KXD78M20VERSN00000000002",
                  "transition": {
                    "durationMs": 400,
                    "kind": "fade"
                  }
                }
              ],
              "name": "Tagesprogramm",
              "source": {
                "kind": "manual"
              },
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-07-13T07:52:00.000Z",
              "version": 6
            },
            {
              "autoSummary": null,
              "createdAt": "2026-03-11T15:30:00.000Z",
              "createdById": "usr_01KFB7QPW0TEAM000000000002",
              "defaultItemDurationMs": 15000,
              "defaultTransition": {
                "kind": "none"
              },
              "description": "Ruhige Schleife über der Sitzbank: Erklärvideo und ein Hinweisbild.",
              "id": "pll_01KKER9S60PRGRAMM000000002",
              "items": [
                {
                  "assetId": "ast_01KKEQYSM0MEDEN00000000002",
                  "durationMs": null,
                  "fit": "cover",
                  "id": "pli_01KKER9T58ENTRY00000000003",
                  "kind": "asset",
                  "order": 0,
                  "transition": {
                    "kind": "none"
                  }
                },
                {
                  "assetId": "ast_01KW95DD30MEDEN00000000001",
                  "durationMs": 15000,
                  "fit": "contain",
                  "id": "pli_01KKER9V4GENTRY00000000004",
                  "kind": "asset",
                  "order": 1,
                  "transition": {
                    "durationMs": 400,
                    "kind": "fade"
                  }
                }
              ],
              "name": "Wartebereich Endlosschleife",
              "source": {
                "kind": "manual"
              },
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-05-04T10:15:00.000Z",
              "version": 2
            }
          ],
          "nextCursor": "cGxsOjIwMjYtMDMtMTE",
          "total": 2
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "autoSummary": {
                  "properties": {
                    "capped": {
                      "type": "boolean"
                    },
                    "count": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "firstItems": {
                      "items": {
                        "oneOf": [
                          {
                            "properties": {
                              "durationMs": {
                                "maximum": 86400000,
                                "minimum": 1000,
                                "type": [
                                  "integer",
                                  "null"
                                ]
                              },
                              "id": {
                                "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                                "type": "string"
                              },
                              "kind": {
                                "enum": [
                                  "scene"
                                ],
                                "type": "string"
                              },
                              "order": {
                                "minimum": 0,
                                "type": "integer"
                              },
                              "sceneId": {
                                "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                                "type": "string"
                              },
                              "sceneVersionId": {
                                "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "transition": {
                                "oneOf": [
                                  {
                                    "properties": {
                                      "kind": {
                                        "enum": [
                                          "none"
                                        ],
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "kind"
                                    ],
                                    "type": "object"
                                  },
                                  {
                                    "properties": {
                                      "durationMs": {
                                        "maximum": 60000,
                                        "minimum": 0,
                                        "type": "integer"
                                      },
                                      "kind": {
                                        "enum": [
                                          "fade"
                                        ],
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "durationMs"
                                    ],
                                    "type": "object"
                                  },
                                  {
                                    "properties": {
                                      "direction": {
                                        "enum": [
                                          "left",
                                          "right",
                                          "up",
                                          "down"
                                        ],
                                        "type": "string"
                                      },
                                      "durationMs": {
                                        "maximum": 60000,
                                        "minimum": 0,
                                        "type": "integer"
                                      },
                                      "kind": {
                                        "enum": [
                                          "slide"
                                        ],
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "durationMs"
                                    ],
                                    "type": "object"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "kind",
                              "id",
                              "sceneId",
                              "sceneVersionId",
                              "durationMs",
                              "transition",
                              "order"
                            ],
                            "type": "object"
                          },
                          {
                            "properties": {
                              "assetId": {
                                "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                                "type": "string"
                              },
                              "durationMs": {
                                "maximum": 86400000,
                                "minimum": 1000,
                                "type": [
                                  "integer",
                                  "null"
                                ]
                              },
                              "fit": {
                                "default": "cover",
                                "enum": [
                                  "cover",
                                  "contain"
                                ],
                                "type": "string"
                              },
                              "id": {
                                "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                                "type": "string"
                              },
                              "kind": {
                                "enum": [
                                  "asset"
                                ],
                                "type": "string"
                              },
                              "order": {
                                "minimum": 0,
                                "type": "integer"
                              },
                              "transition": {
                                "oneOf": [
                                  {
                                    "properties": {
                                      "kind": {
                                        "enum": [
                                          "none"
                                        ],
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "kind"
                                    ],
                                    "type": "object"
                                  },
                                  {
                                    "properties": {
                                      "durationMs": {
                                        "maximum": 60000,
                                        "minimum": 0,
                                        "type": "integer"
                                      },
                                      "kind": {
                                        "enum": [
                                          "fade"
                                        ],
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "durationMs"
                                    ],
                                    "type": "object"
                                  },
                                  {
                                    "properties": {
                                      "direction": {
                                        "enum": [
                                          "left",
                                          "right",
                                          "up",
                                          "down"
                                        ],
                                        "type": "string"
                                      },
                                      "durationMs": {
                                        "maximum": 60000,
                                        "minimum": 0,
                                        "type": "integer"
                                      },
                                      "kind": {
                                        "enum": [
                                          "slide"
                                        ],
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "durationMs"
                                    ],
                                    "type": "object"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "kind",
                              "id",
                              "assetId",
                              "durationMs",
                              "transition",
                              "order"
                            ],
                            "type": "object"
                          },
                          {
                            "properties": {
                              "fallback": {
                                "oneOf": [
                                  {
                                    "properties": {
                                      "kind": {
                                        "enum": [
                                          "scene"
                                        ],
                                        "type": "string"
                                      },
                                      "sceneId": {
                                        "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                                        "type": "string"
                                      },
                                      "sceneVersionId": {
                                        "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                                        "type": [
                                          "string",
                                          "null"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "sceneId",
                                      "sceneVersionId"
                                    ],
                                    "type": "object"
                                  },
                                  {
                                    "properties": {
                                      "assetId": {
                                        "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                                        "type": "string"
                                      },
                                      "fit": {
                                        "default": "cover",
                                        "enum": [
                                          "cover",
                                          "contain"
                                        ],
                                        "type": "string"
                                      },
                                      "kind": {
                                        "enum": [
                                          "asset"
                                        ],
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "assetId"
                                    ],
                                    "type": "object"
                                  }
                                ]
                              },
                              "id": {
                                "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                                "type": "string"
                              },
                              "kind": {
                                "enum": [
                                  "adPod"
                                ],
                                "type": "string"
                              },
                              "networkPositions": {
                                "maximum": 12,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "order": {
                                "minimum": 0,
                                "type": "integer"
                              },
                              "positions": {
                                "maximum": 12,
                                "minimum": 1,
                                "type": "integer"
                              },
                              "spotDurationMs": {
                                "enum": [
                                  5000,
                                  10000,
                                  15000,
                                  20000,
                                  30000
                                ],
                                "type": "integer"
                              },
                              "transition": {
                                "oneOf": [
                                  {
                                    "properties": {
                                      "kind": {
                                        "enum": [
                                          "none"
                                        ],
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "kind"
                                    ],
                                    "type": "object"
                                  },
                                  {
                                    "properties": {
                                      "durationMs": {
                                        "maximum": 60000,
                                        "minimum": 0,
                                        "type": "integer"
                                      },
                                      "kind": {
                                        "enum": [
                                          "fade"
                                        ],
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "durationMs"
                                    ],
                                    "type": "object"
                                  },
                                  {
                                    "properties": {
                                      "direction": {
                                        "enum": [
                                          "left",
                                          "right",
                                          "up",
                                          "down"
                                        ],
                                        "type": "string"
                                      },
                                      "durationMs": {
                                        "maximum": 60000,
                                        "minimum": 0,
                                        "type": "integer"
                                      },
                                      "kind": {
                                        "enum": [
                                          "slide"
                                        ],
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "durationMs"
                                    ],
                                    "type": "object"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "kind",
                              "id",
                              "positions",
                              "networkPositions",
                              "spotDurationMs",
                              "fallback",
                              "transition",
                              "order"
                            ],
                            "type": "object"
                          }
                        ]
                      },
                      "maxItems": 3,
                      "type": "array"
                    }
                  },
                  "required": [
                    "count",
                    "capped",
                    "firstItems"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "createdById": {
                  "anyOf": [
                    {
                      "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^[0-9a-f]{64}$",
                      "type": "string"
                    }
                  ]
                },
                "defaultItemDurationMs": {
                  "maximum": 86400000,
                  "minimum": 1000,
                  "type": "integer"
                },
                "defaultTransition": {
                  "oneOf": [
                    {
                      "properties": {
                        "kind": {
                          "enum": [
                            "none"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "durationMs": {
                          "maximum": 60000,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "kind": {
                          "enum": [
                            "fade"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind",
                        "durationMs"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "direction": {
                          "enum": [
                            "left",
                            "right",
                            "up",
                            "down"
                          ],
                          "type": "string"
                        },
                        "durationMs": {
                          "maximum": 60000,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "kind": {
                          "enum": [
                            "slide"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind",
                        "durationMs"
                      ],
                      "type": "object"
                    }
                  ]
                },
                "description": {
                  "maxLength": 2000,
                  "type": "string"
                },
                "id": {
                  "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "items": {
                  "items": {
                    "oneOf": [
                      {
                        "properties": {
                          "durationMs": {
                            "maximum": 86400000,
                            "minimum": 1000,
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "id": {
                            "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          },
                          "kind": {
                            "enum": [
                              "scene"
                            ],
                            "type": "string"
                          },
                          "order": {
                            "minimum": 0,
                            "type": "integer"
                          },
                          "sceneId": {
                            "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          },
                          "sceneVersionId": {
                            "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "transition": {
                            "oneOf": [
                              {
                                "properties": {
                                  "kind": {
                                    "enum": [
                                      "none"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind"
                                ],
                                "type": "object"
                              },
                              {
                                "properties": {
                                  "durationMs": {
                                    "maximum": 60000,
                                    "minimum": 0,
                                    "type": "integer"
                                  },
                                  "kind": {
                                    "enum": [
                                      "fade"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "durationMs"
                                ],
                                "type": "object"
                              },
                              {
                                "properties": {
                                  "direction": {
                                    "enum": [
                                      "left",
                                      "right",
                                      "up",
                                      "down"
                                    ],
                                    "type": "string"
                                  },
                                  "durationMs": {
                                    "maximum": 60000,
                                    "minimum": 0,
                                    "type": "integer"
                                  },
                                  "kind": {
                                    "enum": [
                                      "slide"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "durationMs"
                                ],
                                "type": "object"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "kind",
                          "id",
                          "sceneId",
                          "sceneVersionId",
                          "durationMs",
                          "transition",
                          "order"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "assetId": {
                            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          },
                          "durationMs": {
                            "maximum": 86400000,
                            "minimum": 1000,
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "fit": {
                            "default": "cover",
                            "enum": [
                              "cover",
                              "contain"
                            ],
                            "type": "string"
                          },
                          "id": {
                            "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          },
                          "kind": {
                            "enum": [
                              "asset"
                            ],
                            "type": "string"
                          },
                          "order": {
                            "minimum": 0,
                            "type": "integer"
                          },
                          "transition": {
                            "oneOf": [
                              {
                                "properties": {
                                  "kind": {
                                    "enum": [
                                      "none"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind"
                                ],
                                "type": "object"
                              },
                              {
                                "properties": {
                                  "durationMs": {
                                    "maximum": 60000,
                                    "minimum": 0,
                                    "type": "integer"
                                  },
                                  "kind": {
                                    "enum": [
                                      "fade"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "durationMs"
                                ],
                                "type": "object"
                              },
                              {
                                "properties": {
                                  "direction": {
                                    "enum": [
                                      "left",
                                      "right",
                                      "up",
                                      "down"
                                    ],
                                    "type": "string"
                                  },
                                  "durationMs": {
                                    "maximum": 60000,
                                    "minimum": 0,
                                    "type": "integer"
                                  },
                                  "kind": {
                                    "enum": [
                                      "slide"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "durationMs"
                                ],
                                "type": "object"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "kind",
                          "id",
                          "assetId",
                          "durationMs",
                          "transition",
                          "order"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "fallback": {
                            "oneOf": [
                              {
                                "properties": {
                                  "kind": {
                                    "enum": [
                                      "scene"
                                    ],
                                    "type": "string"
                                  },
                                  "sceneId": {
                                    "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                                    "type": "string"
                                  },
                                  "sceneVersionId": {
                                    "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  }
                                },
                                "required": [
                                  "kind",
                                  "sceneId",
                                  "sceneVersionId"
                                ],
                                "type": "object"
                              },
                              {
                                "properties": {
                                  "assetId": {
                                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                                    "type": "string"
                                  },
                                  "fit": {
                                    "default": "cover",
                                    "enum": [
                                      "cover",
                                      "contain"
                                    ],
                                    "type": "string"
                                  },
                                  "kind": {
                                    "enum": [
                                      "asset"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "assetId"
                                ],
                                "type": "object"
                              }
                            ]
                          },
                          "id": {
                            "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          },
                          "kind": {
                            "enum": [
                              "adPod"
                            ],
                            "type": "string"
                          },
                          "networkPositions": {
                            "maximum": 12,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "order": {
                            "minimum": 0,
                            "type": "integer"
                          },
                          "positions": {
                            "maximum": 12,
                            "minimum": 1,
                            "type": "integer"
                          },
                          "spotDurationMs": {
                            "enum": [
                              5000,
                              10000,
                              15000,
                              20000,
                              30000
                            ],
                            "type": "integer"
                          },
                          "transition": {
                            "oneOf": [
                              {
                                "properties": {
                                  "kind": {
                                    "enum": [
                                      "none"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind"
                                ],
                                "type": "object"
                              },
                              {
                                "properties": {
                                  "durationMs": {
                                    "maximum": 60000,
                                    "minimum": 0,
                                    "type": "integer"
                                  },
                                  "kind": {
                                    "enum": [
                                      "fade"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "durationMs"
                                ],
                                "type": "object"
                              },
                              {
                                "properties": {
                                  "direction": {
                                    "enum": [
                                      "left",
                                      "right",
                                      "up",
                                      "down"
                                    ],
                                    "type": "string"
                                  },
                                  "durationMs": {
                                    "maximum": 60000,
                                    "minimum": 0,
                                    "type": "integer"
                                  },
                                  "kind": {
                                    "enum": [
                                      "slide"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "durationMs"
                                ],
                                "type": "object"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "kind",
                          "id",
                          "positions",
                          "networkPositions",
                          "spotDurationMs",
                          "fallback",
                          "transition",
                          "order"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "name": {
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                "source": {
                  "default": {
                    "kind": "manual"
                  },
                  "oneOf": [
                    {
                      "properties": {
                        "kind": {
                          "enum": [
                            "manual"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "folderId": {
                          "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "includeSubfolders": {
                          "default": true,
                          "type": "boolean"
                        },
                        "kind": {
                          "enum": [
                            "folder"
                          ],
                          "type": "string"
                        },
                        "mediaKinds": {
                          "default": [
                            "image",
                            "video"
                          ],
                          "items": {
                            "enum": [
                              "image",
                              "video"
                            ],
                            "type": "string"
                          },
                          "minItems": 1,
                          "type": "array"
                        },
                        "sortBy": {
                          "default": "name-asc",
                          "enum": [
                            "name-asc",
                            "name-desc",
                            "created-desc",
                            "created-asc"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind",
                        "folderId"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "kind": {
                          "enum": [
                            "tags"
                          ],
                          "type": "string"
                        },
                        "mediaKinds": {
                          "default": [
                            "image",
                            "video"
                          ],
                          "items": {
                            "enum": [
                              "image",
                              "video"
                            ],
                            "type": "string"
                          },
                          "minItems": 1,
                          "type": "array"
                        },
                        "sortBy": {
                          "default": "name-asc",
                          "enum": [
                            "name-asc",
                            "name-desc",
                            "created-desc",
                            "created-asc"
                          ],
                          "type": "string"
                        },
                        "tags": {
                          "items": {
                            "maxLength": 50,
                            "minLength": 1,
                            "type": "string"
                          },
                          "maxItems": 10,
                          "minItems": 1,
                          "type": "array"
                        }
                      },
                      "required": [
                        "kind",
                        "tags"
                      ],
                      "type": "object"
                    }
                  ]
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "updatedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "version": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "tenantId",
                "name",
                "description",
                "items",
                "defaultItemDurationMs",
                "defaultTransition",
                "createdById",
                "createdAt",
                "updatedAt",
                "version"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListProofKeysResponse": {
        "example": {
          "keys": [
            {
              "algorithm": "Ed25519",
              "fingerprint": "7f03bd40f529641c",
              "keyId": "szn-proof-2026-02",
              "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAlHSMtWJ7TZOENdKGO44v4rJpxSwYRSPRz51AMmKhH6c=\n-----END PUBLIC KEY-----\n",
              "validFrom": "2026-09-15T01:30:06.000Z",
              "validUntil": null
            },
            {
              "algorithm": "Ed25519",
              "fingerprint": "6cfbb5b0f47aec06",
              "keyId": "szn-proof-2026-01",
              "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEABWTQFfEwLD384AVbknHKnZp5ogHHbTJLqprlXtKxAjQ=\n-----END PUBLIC KEY-----\n",
              "validFrom": "2026-03-03T01:30:04.000Z",
              "validUntil": "2026-09-15T01:30:06.000Z"
            }
          ]
        },
        "properties": {
          "keys": {
            "items": {
              "$ref": "#/components/schemas/ProofPublicKey"
            },
            "type": "array"
          }
        },
        "required": [
          "keys"
        ],
        "type": "object"
      },
      "ListProofsResponse": {
        "example": {
          "items": [
            {
              "addendumOf": {
                "id": "prf_01KZ4T6M80NCHWS00000000398",
                "issuedAt": "2026-10-05T01:30:12.000Z",
                "kind": "closing",
                "number": "SZN-2026-000398"
              },
              "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
              "advertiserName": "Nordwind Naturkosmetik GmbH",
              "airtimeSeconds": 360,
              "bookingLineId": "bkl_01KXR4Q9T0BKNG000000000001",
              "bookingLineName": "Schaufenster und Kasse",
              "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
              "campaignName": "Herbstpflege 2026",
              "checkCode": "C3GB-XAP6-EXN6",
              "closedAt": "2026-10-06T01:25:00.000Z",
              "fulfilment": null,
              "id": "prf_01KZ4T6M80NCHWS00000000412",
              "issuedAt": "2026-10-06T01:30:08.000Z",
              "keyId": "szn-proof-2026-02",
              "kind": "addendum",
              "number": "SZN-2026-000412",
              "owner": "tenant",
              "period": {
                "from": "2026-09-01",
                "timezone": "Europe/Berlin",
                "to": "2026-09-30"
              },
              "periodCloseId": "pcl_01KZ4T6M80ZTRM000000000412",
              "retainedUntil": "2036-10-06T01:25:00.000Z",
              "signedAt": "2026-10-06T01:30:11.000Z",
              "status": "issued",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "validPlays": 36
            },
            {
              "addendumOf": null,
              "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
              "advertiserName": "Nordwind Naturkosmetik GmbH",
              "airtimeSeconds": 56080,
              "bookingLineId": "bkl_01KXR4Q9T0BKNG000000000001",
              "bookingLineName": "Schaufenster und Kasse",
              "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
              "campaignName": "Herbstpflege 2026",
              "checkCode": "4HTC-4PY0-7X1N",
              "closedAt": "2026-10-05T01:25:00.000Z",
              "fulfilment": 0.9502,
              "id": "prf_01KZ4T6M80NCHWS00000000398",
              "issuedAt": "2026-10-05T01:30:12.000Z",
              "keyId": "szn-proof-2026-02",
              "kind": "closing",
              "number": "SZN-2026-000398",
              "owner": "tenant",
              "period": {
                "from": "2026-09-01",
                "timezone": "Europe/Berlin",
                "to": "2026-09-30"
              },
              "periodCloseId": "pcl_01KZ4T6M80ZTRM000000000398",
              "retainedUntil": "2036-10-05T01:25:00.000Z",
              "signedAt": "2026-10-05T01:30:19.000Z",
              "status": "issued",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "validPlays": 5608
            }
          ]
        },
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ProofSummary"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListReportsResponse": {
        "example": {
          "items": [
            {
              "createdAt": "2026-04-02T08:00:00.000Z",
              "description": "Wie viele Stunden jeder Bildschirm in der vergangenen Woche gespielt hat und wie viel seiner Planzeit er sichtbar war.",
              "id": "anr_01KN6K9M00BERCHT0000000001",
              "lastRunAt": "2026-07-20T04:00:00.000Z",
              "lastRunError": null,
              "lastRunStatus": "ok",
              "name": "Spielzeit je Bildschirm",
              "ownerUserId": "usr_01KERQ74K0TEAM000000000001",
              "query": {
                "dimensions": [
                  "player"
                ],
                "filters": {},
                "granularity": "auto",
                "limit": null,
                "measures": [
                  "airtimeSeconds",
                  "availability"
                ],
                "perspective": "venue",
                "sort": {
                  "direction": "desc",
                  "measure": "airtimeSeconds"
                },
                "timezone": "Europe/Berlin",
                "window": {
                  "kind": "previousWeek"
                }
              },
              "schedule": {
                "dayOfWeek": 1,
                "hour": 6,
                "kind": "weekly"
              },
              "scheduleFormat": "pdf",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-07-06T09:20:00.000Z",
              "visibility": "tenant-shared"
            },
            {
              "createdAt": "2026-04-08T13:45:00.000Z",
              "description": "Welche Szenen im Vormonat am häufigsten liefen — Grundlage für die Pflege des Programms.",
              "id": "anr_01KNPNDMV0BERCHT0000000003",
              "lastRunAt": null,
              "lastRunError": null,
              "lastRunStatus": null,
              "name": "Szenen im Vormonat",
              "ownerUserId": "usr_01KFB7QPW0TEAM000000000002",
              "query": {
                "dimensions": [
                  "scene"
                ],
                "filters": {
                  "contentKinds": [
                    "scene"
                  ]
                },
                "granularity": "day",
                "limit": 20,
                "measures": [
                  "plays",
                  "airtimeSeconds"
                ],
                "perspective": "venue",
                "sort": {
                  "direction": "desc",
                  "measure": "plays"
                },
                "timezone": "Europe/Berlin",
                "window": {
                  "kind": "previousMonth"
                }
              },
              "schedule": {
                "dayOfMonth": 1,
                "hour": 7,
                "kind": "monthly"
              },
              "scheduleFormat": "csv",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-04-08T13:45:00.000Z",
              "visibility": "private"
            }
          ],
          "nextCursor": "YW5yOjIwMjYtMDQtMDg",
          "total": 2
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "description": {
                  "maxLength": 1000,
                  "type": "string"
                },
                "id": {
                  "pattern": "^anr_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "lastRunAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "lastRunError": {
                  "maxLength": 200,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "lastRunStatus": {
                  "enum": [
                    "ok",
                    "failed"
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": {
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                "ownerUserId": {
                  "anyOf": [
                    {
                      "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^[0-9a-f]{64}$",
                      "type": "string"
                    }
                  ]
                },
                "query": {
                  "$ref": "#/components/schemas/SavedExploreQuery"
                },
                "schedule": {
                  "oneOf": [
                    {
                      "properties": {
                        "hour": {
                          "maximum": 23,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "kind": {
                          "enum": [
                            "daily"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind",
                        "hour"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "dayOfWeek": {
                          "maximum": 6,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "hour": {
                          "maximum": 23,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "kind": {
                          "enum": [
                            "weekly"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind",
                        "dayOfWeek",
                        "hour"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "dayOfMonth": {
                          "maximum": 28,
                          "minimum": 1,
                          "type": "integer"
                        },
                        "hour": {
                          "maximum": 23,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "kind": {
                          "enum": [
                            "monthly"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind",
                        "dayOfMonth",
                        "hour"
                      ],
                      "type": "object"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "scheduleFormat": {
                  "enum": [
                    "csv",
                    "pdf"
                  ],
                  "type": "string"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "updatedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "visibility": {
                  "enum": [
                    "private",
                    "tenant-shared"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id",
                "tenantId",
                "name",
                "description",
                "query",
                "schedule",
                "ownerUserId",
                "visibility",
                "scheduleFormat",
                "createdAt",
                "updatedAt",
                "lastRunAt",
                "lastRunStatus",
                "lastRunError"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListRolesResponse": {
        "example": {
          "items": [
            {
              "createdAt": "2026-01-12T09:00:00.000Z",
              "description": "Trägt die Organisation: Vertrag und Rechnungen, Zugänge und Rollen, Inhalte und Geräte.",
              "id": "rol_01KERPYWXGRECHT00000000001",
              "isBuiltIn": false,
              "name": "Inhaberin",
              "permissions": [
                "tenant.profile.read",
                "tenant.profile.update",
                "tenant.branding.update",
                "identity.user.list",
                "identity.user.invite",
                "identity.user.assign-roles",
                "access.role.list",
                "access.role.update",
                "access.grant.create",
                "billing.subscription.read",
                "billing.invoice.read",
                "marketplace.app.install",
                "marketplace.app.accept",
                "scene.list",
                "scene.create",
                "scene.update",
                "scene.publish",
                "playlist.update",
                "schedule.update",
                "asset.upload",
                "fleet.player.read",
                "fleet.player.pair"
              ],
              "scopeRestrictions": [
                {
                  "kind": "all"
                }
              ],
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-06-11T04:20:00.000Z",
              "version": 3
            },
            {
              "createdAt": "2026-01-12T09:30:00.000Z",
              "description": "Pflegt Szenen, Wiedergabelisten und Medien und veröffentlicht sie.",
              "id": "rol_01KERPYXWRRECHT00000000002",
              "isBuiltIn": false,
              "name": "Redaktion",
              "permissions": [
                "scene.list",
                "scene.read",
                "scene.create",
                "scene.update",
                "scene.publish",
                "playlist.list",
                "playlist.update",
                "schedule.list",
                "schedule.update",
                "asset.list",
                "asset.read",
                "asset.upload",
                "fleet.player.list",
                "fleet.player.read"
              ],
              "scopeRestrictions": [
                {
                  "kind": "all"
                }
              ],
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-04-14T11:10:00.000Z",
              "version": 2
            },
            {
              "createdAt": "2026-03-21T16:20:00.000Z",
              "description": "Lesekonto für den Betrieb — Startseite, Player und Apps, keine Bearbeitung.",
              "id": "rol_01KERPYYW0RECHT00000000003",
              "isBuiltIn": false,
              "name": "Ansicht",
              "permissions": [
                "scene.list",
                "scene.read",
                "playlist.list",
                "asset.list",
                "asset.read",
                "fleet.player.read"
              ],
              "scopeRestrictions": [
                {
                  "kind": "resource-set",
                  "resourceIds": [
                    "ply_01KHK34MQ0SCREEN0000000001"
                  ],
                  "resourceType": "player"
                }
              ],
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-03-21T16:20:00.000Z",
              "version": 1
            }
          ],
          "management": {
            "allowed": true
          },
          "nextCursor": "cm9sOjIwMjYtMDMtMjE",
          "total": 3
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "description": {
                  "maxLength": 500,
                  "type": "string"
                },
                "id": {
                  "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "isBuiltIn": {
                  "type": "boolean"
                },
                "name": {
                  "maxLength": 100,
                  "minLength": 1,
                  "type": "string"
                },
                "permissions": {
                  "items": {
                    "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$",
                    "type": "string"
                  },
                  "type": "array"
                },
                "scopeRestrictions": {
                  "items": {
                    "oneOf": [
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "all"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "resource-set"
                            ],
                            "type": "string"
                          },
                          "resourceIds": {
                            "items": {
                              "type": "string"
                            },
                            "minItems": 1,
                            "type": "array"
                          },
                          "resourceType": {
                            "enum": [
                              "scene",
                              "playlist",
                              "schedule",
                              "player",
                              "device",
                              "asset",
                              "tenant",
                              "audit-export"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "resourceType",
                          "resourceIds"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "updatedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "version": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "tenantId",
                "name",
                "description",
                "isBuiltIn",
                "permissions",
                "scopeRestrictions",
                "version",
                "createdAt",
                "updatedAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "management": {
            "properties": {
              "allowed": {
                "type": "boolean"
              }
            },
            "required": [
              "allowed"
            ],
            "type": "object"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items",
          "management"
        ],
        "type": "object"
      },
      "ListScenesResponse": {
        "example": {
          "items": [
            {
              "blocked": false,
              "blockedBy": [],
              "createdAt": "2026-03-02T09:15:00.000Z",
              "createdById": "usr_01KERQ74K0TEAM000000000001",
              "currentVersionId": "scv_01KWV8RTT0VERSN00000000001",
              "description": "Startbild im Schaufenster: Wortmarke, Öffnungszeiten und Uhrzeit.",
              "draftDocument": {
                "canvas": {
                  "backgroundColor": "#f7f5f0",
                  "height": 1080,
                  "width": 1920
                },
                "layoutTemplateId": "main-sidebar",
                "transitions": {
                  "in": {
                    "durationMs": 600,
                    "kind": "fade"
                  },
                  "out": {
                    "durationMs": 400,
                    "kind": "fade"
                  }
                },
                "widgets": [
                  {
                    "appId": "core",
                    "appVersionPin": "0.0.0",
                    "config": {
                      "assetId": "ast_01KERR2KG0MEDEN00000000003",
                      "fit": "contain",
                      "variant": "original"
                    },
                    "frame": {
                      "h": 180,
                      "w": 560,
                      "x": 120,
                      "y": 90
                    },
                    "id": "wgi_01KJPXE5A0WDGET00000000003",
                    "slotName": "main",
                    "widgetType": "image",
                    "zIndex": 1
                  },
                  {
                    "appId": "opening-hours",
                    "appVersionPin": "1.1.0",
                    "config": {
                      "backgroundImage": null,
                      "corners": "round",
                      "fallbackLocationId": "loc_01KHK4B3T0ADRESSE000000001",
                      "locationId": null,
                      "showSpecialHint": true,
                      "source": "display",
                      "surface": "green"
                    },
                    "frame": {
                      "h": 660,
                      "w": 1200,
                      "x": 120,
                      "y": 330
                    },
                    "id": "wgi_01KJPXCAQ0WDGET00000000002",
                    "slotName": "main",
                    "widgetType": "opening-hours",
                    "zIndex": 0
                  },
                  {
                    "appId": "clock",
                    "appVersionPin": "1.2.0",
                    "config": {
                      "corners": "round",
                      "date": "long",
                      "hourCycle": "auto",
                      "seconds": false,
                      "surface": "dark",
                      "timezone": "",
                      "variant": "digital",
                      "zone": "display"
                    },
                    "frame": {
                      "h": 1080,
                      "w": 480,
                      "x": 1440,
                      "y": 0
                    },
                    "id": "wgi_01KJPXAG40WDGET00000000001",
                    "slotName": "sidebar",
                    "widgetType": "clock",
                    "zIndex": 0
                  }
                ]
              },
              "hasThumbnail": true,
              "id": "scn_01KJPX8NH0SZENE00000000001",
              "name": "Willkommen & Öffnungszeiten",
              "publishedAt": "2026-07-06T08:30:00.000Z",
              "status": "published",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-07-06T08:30:00.000Z",
              "version": 4
            },
            {
              "blocked": false,
              "blockedBy": [],
              "createdAt": "2026-03-04T14:20:00.000Z",
              "createdById": "usr_01KFB7QPW0TEAM000000000002",
              "currentVersionId": "scv_01KXD78M20VERSN00000000002",
              "description": "Wechselndes Aktionsmotiv, jeden Montag neu eingesetzt.",
              "draftDocument": {
                "canvas": {
                  "backgroundColor": "#f7f5f0",
                  "height": 1080,
                  "width": 1920
                },
                "layoutTemplateId": "standard-1x1",
                "transitions": {
                  "in": {
                    "direction": "left",
                    "durationMs": 500,
                    "kind": "slide"
                  },
                  "out": {
                    "durationMs": 400,
                    "kind": "fade"
                  }
                },
                "widgets": [
                  {
                    "appId": "core",
                    "appVersionPin": "0.0.0",
                    "config": {
                      "assetId": "ast_01KW95DD30MEDEN00000000001",
                      "fit": "cover",
                      "variant": "preview"
                    },
                    "frame": {
                      "h": 1080,
                      "w": 1920,
                      "x": 0,
                      "y": 0
                    },
                    "id": "wgi_01KJWKM7T0WDGET00000000004",
                    "slotName": "main",
                    "widgetType": "image",
                    "zIndex": 0
                  }
                ]
              },
              "hasThumbnail": true,
              "id": "scn_01KJWKGJM0SZENE00000000002",
              "name": "Angebote der Woche",
              "publishedAt": "2026-07-13T07:50:00.000Z",
              "status": "published",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-07-13T07:50:00.000Z",
              "version": 9
            },
            {
              "blocked": false,
              "blockedBy": [],
              "createdAt": "2026-06-08T16:45:00.000Z",
              "createdById": "usr_01KFB7QPW0TEAM000000000002",
              "currentVersionId": null,
              "description": "Entwurf für den Abendbetrieb im Wartebereich.",
              "draftDocument": {
                "canvas": {
                  "backgroundColor": "#1b1b1b",
                  "height": 1920,
                  "width": 1080
                },
                "layoutTemplateId": "portrait-split",
                "transitions": {
                  "in": {
                    "durationMs": 600,
                    "kind": "fade"
                  },
                  "out": {
                    "durationMs": 400,
                    "kind": "fade"
                  }
                },
                "widgets": [
                  {
                    "appId": "pharmacies-on-duty",
                    "appVersionPin": "2.0.1",
                    "config": {
                      "corners": "round",
                      "count": "auto",
                      "emergencyNumberHint": true,
                      "heading": "",
                      "showDistance": true,
                      "showMap": false,
                      "showPhone": true,
                      "showQr": true,
                      "source": {
                        "locationId": null,
                        "mode": "display"
                      },
                      "surface": "duty"
                    },
                    "frame": {
                      "h": 960,
                      "w": 1080,
                      "x": 0,
                      "y": 0
                    },
                    "id": "wgi_01KTM22QX0WDGET00000000006",
                    "slotName": "top",
                    "widgetType": "pharmacies-on-duty-display",
                    "zIndex": 0
                  },
                  {
                    "appId": "weather",
                    "appVersionPin": "1.4.2",
                    "config": {
                      "corners": "round",
                      "location": {
                        "fallback": {
                          "countryCode": "DE",
                          "displayName": "Hamburg",
                          "latitude": 53.5511,
                          "longitude": 9.9937
                        },
                        "mode": "display",
                        "place": null
                      },
                      "showDaily": true,
                      "showHighLow": true,
                      "showHourly": true,
                      "surface": "condition",
                      "units": "metric"
                    },
                    "frame": {
                      "h": 960,
                      "w": 1080,
                      "x": 0,
                      "y": 960
                    },
                    "id": "wgi_01KTM20XA0WDGET00000000005",
                    "slotName": "bottom",
                    "widgetType": "weather",
                    "zIndex": 0
                  }
                ]
              },
              "hasThumbnail": false,
              "id": "scn_01KTM1Z2Q0SZENE00000000003",
              "name": "Notdienst & Wetter",
              "publishedAt": null,
              "status": "draft",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-07-17T09:12:00.000Z",
              "version": 2
            }
          ],
          "nextCursor": "c2NuOjIwMjYtMDYtMDg",
          "total": 3
        },
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ScenePublic"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListSceneTemplatesResponse": {
        "example": {
          "templates": [
            {
              "category": "welcome",
              "description": "Wortmarke oben, Öffnungszeiten darunter, Uhr in der Seitenleiste.",
              "document": {
                "canvas": {
                  "backgroundColor": "#f7f5f0",
                  "height": 1080,
                  "width": 1920
                },
                "layoutTemplateId": "main-sidebar",
                "transitions": {
                  "in": {
                    "durationMs": 600,
                    "kind": "fade"
                  },
                  "out": {
                    "durationMs": 400,
                    "kind": "fade"
                  }
                },
                "widgets": [
                  {
                    "appId": "core",
                    "appVersionPin": "0.0.0",
                    "config": {
                      "assetId": "ast_01KERR2KG0MEDEN00000000003",
                      "fit": "contain",
                      "variant": "original"
                    },
                    "frame": {
                      "h": 180,
                      "w": 560,
                      "x": 120,
                      "y": 90
                    },
                    "id": "wgi_01KJPXE5A0WDGET00000000003",
                    "slotName": "main",
                    "widgetType": "image",
                    "zIndex": 1
                  },
                  {
                    "appId": "opening-hours",
                    "appVersionPin": "1.1.0",
                    "config": {
                      "backgroundImage": null,
                      "corners": "round",
                      "fallbackLocationId": "loc_01KHK4B3T0ADRESSE000000001",
                      "locationId": null,
                      "showSpecialHint": true,
                      "source": "display",
                      "surface": "green"
                    },
                    "frame": {
                      "h": 660,
                      "w": 1200,
                      "x": 120,
                      "y": 330
                    },
                    "id": "wgi_01KJPXCAQ0WDGET00000000002",
                    "slotName": "main",
                    "widgetType": "opening-hours",
                    "zIndex": 0
                  },
                  {
                    "appId": "clock",
                    "appVersionPin": "1.2.0",
                    "config": {
                      "corners": "round",
                      "date": "long",
                      "hourCycle": "auto",
                      "seconds": false,
                      "surface": "dark",
                      "timezone": "",
                      "variant": "digital",
                      "zone": "display"
                    },
                    "frame": {
                      "h": 1080,
                      "w": 480,
                      "x": 1440,
                      "y": 0
                    },
                    "id": "wgi_01KJPXAG40WDGET00000000001",
                    "slotName": "sidebar",
                    "widgetType": "clock",
                    "zIndex": 0
                  }
                ]
              },
              "id": "sct_01KE70EHG0MSTER00000000001",
              "name": "Begrüßung klassisch",
              "orientation": "landscape",
              "requiredAppIds": [
                "clock",
                "opening-hours"
              ]
            },
            {
              "category": "promotion",
              "description": "Ein großflächiges Aktionsmotiv mit Platz für einen Preis.",
              "document": {
                "canvas": {
                  "backgroundColor": "#1b1b1b",
                  "height": 1920,
                  "width": 1080
                },
                "layoutTemplateId": "portrait-full",
                "transitions": {
                  "in": {
                    "direction": "left",
                    "durationMs": 500,
                    "kind": "slide"
                  },
                  "out": {
                    "durationMs": 400,
                    "kind": "fade"
                  }
                },
                "widgets": [
                  {
                    "appId": "core",
                    "appVersionPin": "0.0.0",
                    "config": {
                      "assetId": "ast_01KW95DD30MEDEN00000000001",
                      "fit": "cover",
                      "variant": "preview"
                    },
                    "frame": {
                      "h": 1080,
                      "w": 1920,
                      "x": 0,
                      "y": 0
                    },
                    "id": "wgi_01KJWKM7T0WDGET00000000004",
                    "slotName": "main",
                    "widgetType": "image",
                    "zIndex": 0
                  }
                ]
              },
              "id": "sct_01KE70GC30MSTER00000000002",
              "name": "Angebot mit Bild",
              "orientation": "portrait",
              "requiredAppIds": []
            }
          ]
        },
        "properties": {
          "templates": {
            "items": {
              "$ref": "#/components/schemas/SceneTemplatePublic"
            },
            "type": "array"
          }
        },
        "required": [
          "templates"
        ],
        "type": "object"
      },
      "ListSceneVersionsResponse": {
        "example": {
          "items": [
            {
              "appVersionPins": {
                "clock": "1.2.0",
                "opening-hours": "1.1.0"
              },
              "contentHash": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95",
              "document": {
                "canvas": {
                  "backgroundColor": "#f7f5f0",
                  "height": 1080,
                  "width": 1920
                },
                "layoutTemplateId": "main-sidebar",
                "transitions": {
                  "in": {
                    "durationMs": 600,
                    "kind": "fade"
                  },
                  "out": {
                    "durationMs": 400,
                    "kind": "fade"
                  }
                },
                "widgets": [
                  {
                    "appId": "core",
                    "appVersionPin": "0.0.0",
                    "config": {
                      "assetId": "ast_01KERR2KG0MEDEN00000000003",
                      "fit": "contain",
                      "variant": "original"
                    },
                    "frame": {
                      "h": 180,
                      "w": 560,
                      "x": 120,
                      "y": 90
                    },
                    "id": "wgi_01KJPXE5A0WDGET00000000003",
                    "slotName": "main",
                    "widgetType": "image",
                    "zIndex": 1
                  },
                  {
                    "appId": "opening-hours",
                    "appVersionPin": "1.1.0",
                    "config": {
                      "backgroundImage": null,
                      "corners": "round",
                      "fallbackLocationId": "loc_01KHK4B3T0ADRESSE000000001",
                      "locationId": null,
                      "showSpecialHint": true,
                      "source": "display",
                      "surface": "green"
                    },
                    "frame": {
                      "h": 660,
                      "w": 1200,
                      "x": 120,
                      "y": 330
                    },
                    "id": "wgi_01KJPXCAQ0WDGET00000000002",
                    "slotName": "main",
                    "widgetType": "opening-hours",
                    "zIndex": 0
                  },
                  {
                    "appId": "clock",
                    "appVersionPin": "1.2.0",
                    "config": {
                      "corners": "round",
                      "date": "long",
                      "hourCycle": "auto",
                      "seconds": false,
                      "surface": "dark",
                      "timezone": "",
                      "variant": "digital",
                      "zone": "display"
                    },
                    "frame": {
                      "h": 1080,
                      "w": 480,
                      "x": 1440,
                      "y": 0
                    },
                    "id": "wgi_01KJPXAG40WDGET00000000001",
                    "slotName": "sidebar",
                    "widgetType": "clock",
                    "zIndex": 0
                  }
                ]
              },
              "hasThumbnail": true,
              "id": "scv_01KWV8RTT0VERSN00000000001",
              "publishedAt": "2026-07-06T08:30:00.000Z",
              "publishedById": "usr_01KFB7QPW0TEAM000000000002",
              "releaseNotes": "Sommer-Öffnungszeiten eingetragen, Uhr in die Seitenleiste verschoben.",
              "sceneId": "scn_01KJPX8NH0SZENE00000000001",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "versionNumber": 4
            },
            {
              "appVersionPins": {
                "clock": "1.2.0",
                "opening-hours": "1.0.4"
              },
              "contentHash": "b2f80a41d76c395ee0138b5a4c9d27f6103e8ab7592c4df081a63be95d7c024f",
              "document": {
                "canvas": {
                  "backgroundColor": "#f7f5f0",
                  "height": 1080,
                  "width": 1920
                },
                "layoutTemplateId": "main-sidebar",
                "transitions": {
                  "in": {
                    "durationMs": 600,
                    "kind": "fade"
                  },
                  "out": {
                    "durationMs": 400,
                    "kind": "fade"
                  }
                },
                "widgets": [
                  {
                    "appId": "core",
                    "appVersionPin": "0.0.0",
                    "config": {
                      "assetId": "ast_01KERR2KG0MEDEN00000000003",
                      "fit": "contain",
                      "variant": "original"
                    },
                    "frame": {
                      "h": 180,
                      "w": 560,
                      "x": 120,
                      "y": 90
                    },
                    "id": "wgi_01KJPXE5A0WDGET00000000003",
                    "slotName": "main",
                    "widgetType": "image",
                    "zIndex": 1
                  },
                  {
                    "appId": "opening-hours",
                    "appVersionPin": "1.1.0",
                    "config": {
                      "backgroundImage": null,
                      "corners": "round",
                      "fallbackLocationId": "loc_01KHK4B3T0ADRESSE000000001",
                      "locationId": null,
                      "showSpecialHint": true,
                      "source": "display",
                      "surface": "green"
                    },
                    "frame": {
                      "h": 660,
                      "w": 1200,
                      "x": 120,
                      "y": 330
                    },
                    "id": "wgi_01KJPXCAQ0WDGET00000000002",
                    "slotName": "main",
                    "widgetType": "opening-hours",
                    "zIndex": 0
                  },
                  {
                    "appId": "clock",
                    "appVersionPin": "1.2.0",
                    "config": {
                      "corners": "round",
                      "date": "long",
                      "hourCycle": "auto",
                      "seconds": false,
                      "surface": "dark",
                      "timezone": "",
                      "variant": "digital",
                      "zone": "display"
                    },
                    "frame": {
                      "h": 1080,
                      "w": 480,
                      "x": 1440,
                      "y": 0
                    },
                    "id": "wgi_01KJPXAG40WDGET00000000001",
                    "slotName": "sidebar",
                    "widgetType": "clock",
                    "zIndex": 0
                  }
                ]
              },
              "hasThumbnail": false,
              "id": "scv_01KV5K0JE0VERSN00000000003",
              "publishedAt": "2026-06-15T12:10:00.000Z",
              "publishedById": "usr_01KERQ74K0TEAM000000000001",
              "releaseNotes": "Erste Fassung mit den Öffnungszeiten des Standorts.",
              "sceneId": "scn_01KJPX8NH0SZENE00000000001",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "versionNumber": 3
            }
          ],
          "nextCursor": "c2N2OjIwMjYtMDYtMTU",
          "total": 4
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "appVersionPins": {
                  "additionalProperties": {
                    "pattern": "^\\d+\\.\\d+\\.\\d+$",
                    "type": "string"
                  },
                  "type": "object"
                },
                "contentHash": {
                  "pattern": "^[a-f0-9]{64}$",
                  "type": "string"
                },
                "document": {
                  "properties": {
                    "canvas": {
                      "properties": {
                        "backgroundColor": {
                          "pattern": "^#[0-9a-fA-F]{6}$",
                          "type": "string"
                        },
                        "height": {
                          "maximum": 7680,
                          "minimum": 320,
                          "type": "integer"
                        },
                        "width": {
                          "maximum": 7680,
                          "minimum": 320,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "width",
                        "height",
                        "backgroundColor"
                      ],
                      "type": "object"
                    },
                    "layoutTemplateId": {
                      "pattern": "^(?:lyt_[0-9A-HJKMNP-TV-Z]{26}|standard-1x1|split-vertical|split-horizontal|grid-2x2|main-sidebar|main-sidebar-2|main-sidebar-3|thirds-vertical|quarters-vertical|header-main|main-ticker|header-main-ticker|sidebar-left-main|header-split|grid-3x2|main-sidebar-ticker|hero-strip-3|portrait-full|portrait-split|portrait-thirds|portrait-main-footer|portrait-half-grid-4|portrait-main-footer-2|portrait-main-footer-3|portrait-header-main|portrait-header-main-ticker|portrait-quarters|portrait-grid-2x3|portrait-hero-columns|ultra-full|ultra-halves|ultra-thirds|ultra-quarters|ultra-center-stage|ultra-main-sidebar|ultra-header-thirds|ultra-thirds-ticker)$",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "transitions": {
                      "properties": {
                        "in": {
                          "oneOf": [
                            {
                              "properties": {
                                "kind": {
                                  "enum": [
                                    "none"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "fade"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "direction": {
                                  "enum": [
                                    "left",
                                    "right",
                                    "up",
                                    "down"
                                  ],
                                  "type": "string"
                                },
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "slide"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            }
                          ]
                        },
                        "out": {
                          "oneOf": [
                            {
                              "properties": {
                                "kind": {
                                  "enum": [
                                    "none"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "fade"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "direction": {
                                  "enum": [
                                    "left",
                                    "right",
                                    "up",
                                    "down"
                                  ],
                                  "type": "string"
                                },
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "slide"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            }
                          ]
                        }
                      },
                      "required": [
                        "in",
                        "out"
                      ],
                      "type": "object"
                    },
                    "widgets": {
                      "items": {
                        "properties": {
                          "appId": {
                            "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                            "type": "string"
                          },
                          "appVersionPin": {
                            "pattern": "^\\d+\\.\\d+\\.\\d+$",
                            "type": "string"
                          },
                          "config": {},
                          "frame": {
                            "properties": {
                              "h": {
                                "exclusiveMinimum": 0,
                                "type": "integer"
                              },
                              "w": {
                                "exclusiveMinimum": 0,
                                "type": "integer"
                              },
                              "x": {
                                "minimum": 0,
                                "type": "integer"
                              },
                              "y": {
                                "minimum": 0,
                                "type": "integer"
                              }
                            },
                            "required": [
                              "x",
                              "y",
                              "w",
                              "h"
                            ],
                            "type": "object"
                          },
                          "id": {
                            "pattern": "^wgi_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          },
                          "slotName": {
                            "maxLength": 60,
                            "minLength": 1,
                            "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                            "type": "string"
                          },
                          "widgetType": {
                            "maxLength": 100,
                            "minLength": 2,
                            "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                            "type": "string"
                          },
                          "zIndex": {
                            "maximum": 1000,
                            "minimum": 0,
                            "type": "integer"
                          }
                        },
                        "required": [
                          "id",
                          "appId",
                          "widgetType",
                          "appVersionPin",
                          "frame",
                          "zIndex"
                        ],
                        "type": "object"
                      },
                      "maxItems": 50,
                      "type": "array"
                    }
                  },
                  "required": [
                    "canvas",
                    "layoutTemplateId",
                    "widgets",
                    "transitions"
                  ],
                  "type": "object"
                },
                "hasThumbnail": {
                  "default": false,
                  "type": "boolean"
                },
                "id": {
                  "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "publishedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "publishedById": {
                  "anyOf": [
                    {
                      "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^[0-9a-f]{64}$",
                      "type": "string"
                    }
                  ]
                },
                "releaseNotes": {
                  "maxLength": 2000,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "sceneId": {
                  "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "versionNumber": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "sceneId",
                "tenantId",
                "versionNumber",
                "document",
                "contentHash",
                "appVersionPins",
                "publishedById",
                "publishedAt",
                "releaseNotes"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListSchedulePlayersResponse": {
        "example": {
          "players": [
            {
              "name": "Schaufenster",
              "playerId": "ply_01KHK34MQ0SCREEN0000000001"
            },
            {
              "name": "Wartebereich",
              "playerId": "ply_01KHK3FM90SCREEN0000000002"
            }
          ]
        },
        "properties": {
          "players": {
            "items": {
              "properties": {
                "name": {
                  "type": "string"
                },
                "playerId": {
                  "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                }
              },
              "required": [
                "playerId",
                "name"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "players"
        ],
        "type": "object"
      },
      "ListSchedulesResponse": {
        "example": {
          "items": [
            {
              "assignedPlayerCount": 2,
              "basis": {
                "kind": "playlist",
                "playlistId": "pll_01KWV91ZS0PRGRAMM000000001"
              },
              "id": "sch_01KWVAFRM0ZETPAN0000000001",
              "itemCount": 3,
              "name": "Ladenprogramm",
              "updatedAt": "2026-07-20T09:15:00.000Z"
            },
            {
              "assignedPlayerCount": 0,
              "basis": {
                "kind": "pause"
              },
              "id": "sch_01KWVARXK0ZETPAN0000000002",
              "itemCount": 0,
              "name": "Feiertagsprogramm",
              "updatedAt": "2026-07-20T09:15:00.000Z"
            }
          ],
          "nextCursor": "c2NoOjIwMjYtMDctMDY",
          "total": 2
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "assignedPlayerCount": {
                  "minimum": 0,
                  "type": "integer"
                },
                "basis": {
                  "oneOf": [
                    {
                      "properties": {
                        "kind": {
                          "enum": [
                            "scene"
                          ],
                          "type": "string"
                        },
                        "sceneId": {
                          "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind",
                        "sceneId"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "kind": {
                          "enum": [
                            "playlist"
                          ],
                          "type": "string"
                        },
                        "playlistId": {
                          "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind",
                        "playlistId"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "assetId": {
                          "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "kind": {
                          "enum": [
                            "media"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind",
                        "assetId"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "kind": {
                          "enum": [
                            "pause"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind"
                      ],
                      "type": "object"
                    }
                  ]
                },
                "id": {
                  "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "itemCount": {
                  "minimum": 0,
                  "type": "integer"
                },
                "name": {
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                "updatedAt": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "name",
                "basis",
                "itemCount",
                "assignedPlayerCount",
                "updatedAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListShareLinksResponse": {
        "example": {
          "items": [
            {
              "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
              "advertiserName": "Nordwind Naturkosmetik GmbH",
              "createdAt": "2026-10-12T08:00:00.000Z",
              "expiresAt": "2027-01-10T08:00:00.000Z",
              "id": "shl_01KZ8VBN40VRWS000000000001",
              "label": "Agentur Berger",
              "lastUsedAt": "2026-10-14T09:12:00.000Z",
              "owner": "tenant",
              "revokedAt": null,
              "state": "active"
            },
            {
              "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
              "advertiserName": "Nordwind Naturkosmetik GmbH",
              "createdAt": "2026-08-02T08:00:00.000Z",
              "expiresAt": "2026-10-31T08:00:00.000Z",
              "id": "shl_01KZ8VBN40VRWS000000000002",
              "label": "Lena Brandt, Sommer",
              "lastUsedAt": "2026-09-03T15:40:00.000Z",
              "owner": "tenant",
              "revokedAt": "2026-10-12T07:58:00.000Z",
              "state": "revoked"
            }
          ]
        },
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ShareLink"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListSmartBucketsResponse": {
        "example": [
          {
            "createdAt": "2026-03-02T09:40:00.000Z",
            "createdById": "usr_01KFB7QPW0TEAM000000000002",
            "filter": {
              "includeDeleted": false,
              "includeSubfolders": true,
              "mimeTypes": [
                "image/jpeg",
                "image/png"
              ],
              "sortBy": "created-desc",
              "status": "ready",
              "tags": [
                "angebot"
              ]
            },
            "id": "smb_01KJPYPEC0SMART00000000001",
            "isShared": true,
            "name": "Aktuelle Angebote",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-06-29T07:50:00.000Z"
          }
        ],
        "items": {
          "properties": {
            "createdAt": {
              "format": "date-time",
              "type": "string"
            },
            "createdById": {
              "anyOf": [
                {
                  "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                {
                  "pattern": "^[0-9a-f]{64}$",
                  "type": "string"
                }
              ]
            },
            "filter": {
              "properties": {
                "folderId": {
                  "anyOf": [
                    {
                      "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "enum": [
                        "root"
                      ],
                      "type": "string"
                    },
                    {
                      "type": "null"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "includeDeleted": {
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "enum": [
                        "true",
                        "false"
                      ],
                      "type": "string"
                    }
                  ]
                },
                "includeSubfolders": {
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "enum": [
                        "true",
                        "false"
                      ],
                      "type": "string"
                    }
                  ]
                },
                "maxSizeBytes": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "mimeTypes": {
                  "anyOf": [
                    {
                      "items": {
                        "enum": [
                          "image/jpeg",
                          "image/png",
                          "image/webp",
                          "image/svg+xml",
                          "video/mp4",
                          "video/webm",
                          "application/pdf"
                        ],
                        "type": "string"
                      },
                      "type": "array"
                    },
                    {
                      "enum": [
                        "image/jpeg",
                        "image/png",
                        "image/webp",
                        "image/svg+xml",
                        "video/mp4",
                        "video/webm",
                        "application/pdf"
                      ],
                      "type": "string"
                    }
                  ]
                },
                "minSizeBytes": {
                  "minimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "search": {
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                "sortBy": {
                  "enum": [
                    "name-asc",
                    "name-desc",
                    "created-desc",
                    "created-asc",
                    "size-asc",
                    "size-desc",
                    "type-asc",
                    "type-desc"
                  ],
                  "type": "string"
                },
                "status": {
                  "enum": [
                    "uploading",
                    "processing",
                    "ready",
                    "error"
                  ],
                  "type": "string"
                },
                "tags": {
                  "anyOf": [
                    {
                      "items": {
                        "maxLength": 50,
                        "minLength": 1,
                        "type": "string"
                      },
                      "maxItems": 10,
                      "type": "array"
                    },
                    {
                      "maxLength": 50,
                      "minLength": 1,
                      "type": "string"
                    }
                  ]
                },
                "uploadedAfter": {
                  "format": "date-time",
                  "type": "string"
                },
                "uploadedBefore": {
                  "format": "date-time",
                  "type": "string"
                },
                "usage": {
                  "enum": [
                    "used",
                    "unused"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "id": {
              "pattern": "^smb_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "isShared": {
              "type": "boolean"
            },
            "name": {
              "maxLength": 100,
              "minLength": 1,
              "type": "string"
            },
            "tenantId": {
              "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "updatedAt": {
              "format": "date-time",
              "type": "string"
            }
          },
          "required": [
            "id",
            "tenantId",
            "name",
            "filter",
            "isShared",
            "createdById",
            "createdAt",
            "updatedAt"
          ],
          "type": "object"
        },
        "type": "array"
      },
      "ListSocialProvidersResponse": {
        "example": {
          "providers": [
            "google",
            "microsoft",
            "apple"
          ]
        },
        "properties": {
          "providers": {
            "items": {
              "enum": [
                "google",
                "microsoft",
                "apple"
              ],
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "providers"
        ],
        "type": "object"
      },
      "ListStoreCollectionsResponse": {
        "example": {
          "collections": [
            {
              "appIds": [
                "clock",
                "notice-board"
              ],
              "description": "Apps, die ohne Datenquelle, Konto oder Schlüssel laufen.",
              "display": "row",
              "key": "sofort",
              "textLocale": "de-DE",
              "title": "Sofort startklar"
            },
            {
              "appIds": [
                "pharmacies-on-duty",
                "opening-hours",
                "notice-board"
              ],
              "description": "Notdienst, Öffnungszeiten und Aushang lösen den Papier-Aushang ab.",
              "display": "stack",
              "key": "pharmacy",
              "textLocale": "de-DE",
              "title": "Das Schaufenster, das sich selbst pflegt"
            }
          ]
        },
        "properties": {
          "collections": {
            "items": {
              "$ref": "#/components/schemas/StoreCollectionView"
            },
            "type": "array"
          }
        },
        "required": [
          "collections"
        ],
        "type": "object"
      },
      "ListStoreResponse": {
        "example": {
          "apps": [
            {
              "appId": "pharmacies-on-duty",
              "category": "geschaeft",
              "coverUrl": "/v1/apps/pharmacies-on-duty/2.0.1/store/screenshots/pharmacies-on-duty-display--karten.png",
              "displayName": "Notdienst",
              "firstReleasedAt": "2026-03-02T08:00:00.000Z",
              "iconUrl": "/v1/apps/pharmacies-on-duty/2.0.1/store/icon.svg",
              "locales": [
                "de-DE"
              ],
              "marks": {
                "essential": false,
                "exempt": true,
                "prerelease": null,
                "tier": "pro",
                "trial": true
              },
              "needsSetup": true,
              "offer": {
                "kind": "exempt"
              },
              "offerGroup": "in-package",
              "publisher": {
                "name": "Szenera",
                "verified": true
              },
              "recentlyUpdated": true,
              "state": "update-pending",
              "summary": "Wer heute Nacht Dienst hat — automatisch auf dem Schaufenster.",
              "textLocale": "de-DE",
              "updatedAt": "2026-07-16T08:00:00.000Z",
              "vertical": "pharmacy"
            },
            {
              "appId": "notice-board",
              "category": "gestaltung",
              "coverUrl": "/v1/apps/notice-board/1.0.0/store/screenshots/rich-text--notice-board.png",
              "displayName": "Aushang",
              "firstReleasedAt": "2026-07-01T08:00:00.000Z",
              "iconUrl": "/v1/apps/notice-board/1.0.0/store/icon.svg",
              "locales": [
                "de-DE"
              ],
              "marks": {
                "essential": false,
                "exempt": true,
                "prerelease": null,
                "tier": "pro",
                "trial": false
              },
              "needsSetup": false,
              "offer": {
                "kind": "exempt"
              },
              "offerGroup": "in-package",
              "publisher": {
                "name": "Szenera",
                "verified": true
              },
              "recentlyUpdated": false,
              "state": "installed",
              "summary": "Der Zettel an der Tür, sauber gesetzt statt ausgedruckt.",
              "textLocale": "de-DE",
              "updatedAt": "2026-07-01T08:00:00.000Z",
              "vertical": null
            },
            {
              "appId": "opening-hours",
              "category": "geschaeft",
              "coverUrl": "/v1/apps/opening-hours/1.1.0/store/screenshots/opening-hours--week.png",
              "displayName": "Öffnungszeiten",
              "firstReleasedAt": "2026-01-20T08:00:00.000Z",
              "iconUrl": "/v1/apps/opening-hours/1.1.0/store/icon.svg",
              "locales": [
                "de-DE"
              ],
              "marks": {
                "essential": false,
                "exempt": true,
                "prerelease": null,
                "tier": "pro",
                "trial": false
              },
              "needsSetup": true,
              "offer": {
                "kind": "exempt"
              },
              "offerGroup": "in-package",
              "publisher": {
                "name": "Szenera",
                "verified": true
              },
              "recentlyUpdated": false,
              "state": "installed",
              "summary": "Ob Sie gerade geöffnet haben, auf jedem Display.",
              "textLocale": "de-DE",
              "updatedAt": "2026-05-04T08:00:00.000Z",
              "vertical": null
            },
            {
              "appId": "clock",
              "category": "zeit",
              "coverUrl": "/v1/apps/clock/1.3.0/store/screenshots/clock--digital.png",
              "displayName": "Uhr",
              "firstReleasedAt": "2026-01-12T08:00:00.000Z",
              "iconUrl": "/v1/apps/clock/1.3.0/store/icon.svg",
              "locales": [
                "de-DE"
              ],
              "marks": {
                "essential": false,
                "exempt": false,
                "prerelease": null,
                "tier": null,
                "trial": false
              },
              "needsSetup": false,
              "offer": {
                "kind": "included",
                "package": "START"
              },
              "offerGroup": "in-package",
              "publisher": {
                "name": "Szenera",
                "verified": true
              },
              "recentlyUpdated": false,
              "state": "not-installed",
              "summary": "Uhrzeit und Datum, analog oder digital.",
              "textLocale": "de-DE",
              "updatedAt": "2026-06-20T08:00:00.000Z",
              "vertical": null
            },
            {
              "appId": "weather",
              "category": "information",
              "coverUrl": "/v1/apps/weather/1.4.2/store/screenshots/weather--hourly.png",
              "displayName": "Wetter",
              "firstReleasedAt": "2026-02-10T08:00:00.000Z",
              "iconUrl": "/v1/apps/weather/1.4.2/store/icon.svg",
              "locales": [
                "de-DE"
              ],
              "marks": {
                "essential": false,
                "exempt": false,
                "prerelease": null,
                "tier": null,
                "trial": false
              },
              "needsSetup": false,
              "offer": {
                "kind": "included",
                "package": "START"
              },
              "offerGroup": "in-package",
              "publisher": {
                "name": "Szenera",
                "verified": true
              },
              "recentlyUpdated": false,
              "state": "installed",
              "summary": "Wetterdaten als klar lesbares Display-Widget.",
              "textLocale": "de-DE",
              "updatedAt": "2026-06-02T08:00:00.000Z",
              "vertical": null
            },
            {
              "appId": "calendar",
              "category": "information",
              "coverUrl": "/v1/apps/calendar/1.2.0/store/screenshots/calendar--agenda.png",
              "displayName": "Kalender",
              "firstReleasedAt": "2026-05-18T08:00:00.000Z",
              "iconUrl": "/v1/apps/calendar/1.2.0/store/icon.svg",
              "locales": [
                "de-DE"
              ],
              "marks": {
                "essential": false,
                "exempt": false,
                "prerelease": null,
                "tier": "pro",
                "trial": false
              },
              "needsSetup": false,
              "offer": {
                "kind": "requires-package",
                "package": "PRO"
              },
              "offerGroup": "requires-package",
              "publisher": {
                "name": "Szenera",
                "verified": true
              },
              "recentlyUpdated": false,
              "state": "not-installed",
              "summary": "Termine aus Ihrem Kalender-Abo aufs Display.",
              "textLocale": "de-DE",
              "updatedAt": "2026-06-29T08:00:00.000Z",
              "vertical": null
            },
            {
              "appId": "rss",
              "category": "information",
              "coverUrl": "/v1/apps/rss/1.0.0/store/screenshots/rss--liste.png",
              "displayName": "RSS-Feed",
              "firstReleasedAt": "2026-04-14T08:00:00.000Z",
              "iconUrl": "/v1/apps/rss/1.0.0/store/icon.svg",
              "locales": [
                "de-DE"
              ],
              "marks": {
                "essential": false,
                "exempt": false,
                "prerelease": null,
                "tier": "pro",
                "trial": false
              },
              "needsSetup": false,
              "offer": {
                "kind": "requires-package",
                "package": "PRO"
              },
              "offerGroup": "requires-package",
              "publisher": {
                "name": "Szenera",
                "verified": true
              },
              "recentlyUpdated": false,
              "state": "not-installed",
              "summary": "Aktuelle Meldungen aus jeder Quelle, die einen Feed anbietet.",
              "textLocale": "de-DE",
              "updatedAt": "2026-04-14T08:00:00.000Z",
              "vertical": null
            }
          ],
          "coreFeatures": [
            {
              "appId": "video-wall",
              "installed": false,
              "key": "canvas",
              "offer": {
                "consentFree": true,
                "manifestHash": "3d2e6a0f8c1b4e7a9d5c2f1e0b8a7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b",
                "version": "1.0.0"
              }
            }
          ],
          "facets": {
            "category": [
              {
                "count": 3,
                "value": "information"
              },
              {
                "count": 2,
                "value": "geschaeft"
              },
              {
                "count": 1,
                "value": "gestaltung"
              },
              {
                "count": 1,
                "value": "zeit"
              }
            ],
            "locales": [
              {
                "count": 7,
                "value": "de-DE"
              }
            ],
            "offer": {
              "bookable": 0,
              "inPackage": 5,
              "requiresPackage": [
                {
                  "count": 2,
                  "value": "PRO"
                }
              ]
            },
            "state": {
              "installed": 4,
              "noSetup": 5,
              "notInstalled": 3,
              "updatePending": 1
            },
            "vertical": {
              "count": 1,
              "value": "pharmacy"
            }
          },
          "organization": {
            "canInstall": true,
            "canRequest": true,
            "package": "START",
            "vertical": "pharmacy"
          },
          "summary": {
            "bookable": 0,
            "inPackage": 5,
            "installed": 4,
            "requiresPackage": [
              {
                "count": 2,
                "value": "PRO"
              }
            ],
            "total": 7,
            "updatedThisWeek": 1,
            "updatesPending": [
              {
                "appId": "pharmacies-on-duty",
                "displayName": "Notdienst"
              }
            ]
          }
        },
        "properties": {
          "apps": {
            "items": {
              "$ref": "#/components/schemas/StoreCardView"
            },
            "type": "array"
          },
          "coreFeatures": {
            "items": {
              "$ref": "#/components/schemas/StoreCoreFeature"
            },
            "type": "array"
          },
          "facets": {
            "$ref": "#/components/schemas/StoreFacets"
          },
          "organization": {
            "properties": {
              "canInstall": {
                "type": "boolean"
              },
              "canRequest": {
                "type": "boolean"
              },
              "package": {
                "enum": [
                  "START",
                  "PRO",
                  "PREMIUM",
                  "ENTERPRISE"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "vertical": {
                "enum": [
                  "pharmacy"
                ],
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "package",
              "vertical",
              "canInstall",
              "canRequest"
            ],
            "type": "object"
          },
          "summary": {
            "$ref": "#/components/schemas/StoreSummary"
          }
        },
        "required": [
          "apps",
          "facets",
          "summary",
          "organization",
          "coreFeatures"
        ],
        "type": "object"
      },
      "ListSyncedFoldersResponse": {
        "example": {
          "folders": [
            {
              "connectionId": "cconn_01KT3WD680CNNECTMSGRAPH001",
              "createdAt": "2026-07-20T09:30:00.000Z",
              "id": "syf_01KT3WD680SYNCFDR000000001",
              "lastError": null,
              "lastRunAt": "2026-07-29T16:45:00.000Z",
              "remoteFolderId": "01BYE5RZ6QN3ZWBTUFOFD3IFTLFPQBCXYZ",
              "remoteFolderPath": "Schaufenster",
              "status": "active",
              "targetFolderId": "fld_01KJ7MWKW0MAPPE00000000001",
              "updatedAt": "2026-07-29T16:45:00.000Z"
            }
          ]
        },
        "properties": {
          "folders": {
            "items": {
              "$ref": "#/components/schemas/SyncedFolderPublic"
            },
            "type": "array"
          }
        },
        "required": [
          "folders"
        ],
        "type": "object"
      },
      "ListUsersResponse": {
        "example": {
          "items": [
            {
              "createdAt": "2026-01-12T09:05:00.000Z",
              "deletedAt": null,
              "email": "owner@demo.local",
              "emailVerifiedAt": "2026-01-12T09:12:00.000Z",
              "hasPassword": true,
              "id": "usr_01KERQ74K0TEAM000000000001",
              "lastLoginAt": "2026-07-20T07:55:00.000Z",
              "mfaEnabled": false,
              "mfaEnabledAt": null,
              "profile": {
                "avatarAssetRef": null,
                "displayName": "Julia Petersen",
                "locale": "de-DE",
                "timezone": "Europe/Berlin"
              },
              "roleAssignments": [
                {
                  "assignedAt": "2026-01-12T09:05:00.000Z",
                  "assignedById": "usr_01KERQ74K0TEAM000000000001",
                  "expiresAt": null,
                  "roleId": "rol_01KERPYWXGRECHT00000000001"
                }
              ],
              "roleVersion": 1,
              "status": "active",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-07-20T07:55:00.000Z"
            },
            {
              "createdAt": "2026-01-19T13:40:00.000Z",
              "deletedAt": null,
              "email": "deniz.acar@demo.local",
              "emailVerifiedAt": "2026-01-19T14:02:00.000Z",
              "hasPassword": true,
              "id": "usr_01KFB7QPW0TEAM000000000002",
              "lastLoginAt": "2026-07-20T08:28:00.000Z",
              "mfaEnabled": true,
              "mfaEnabledAt": "2026-02-02T11:20:00.000Z",
              "profile": {
                "avatarAssetRef": null,
                "displayName": "Deniz Acar",
                "locale": "de-DE",
                "timezone": "Europe/Berlin"
              },
              "roleAssignments": [
                {
                  "assignedAt": "2026-01-19T13:41:00.000Z",
                  "assignedById": "usr_01KERQ74K0TEAM000000000001",
                  "expiresAt": null,
                  "roleId": "rol_01KERPYXWRRECHT00000000002"
                }
              ],
              "roleVersion": 2,
              "status": "active",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-07-20T08:28:00.000Z"
            },
            {
              "createdAt": "2026-02-03T08:20:00.000Z",
              "deletedAt": null,
              "email": "sabine.vogt@demo.local",
              "emailVerifiedAt": null,
              "hasPassword": false,
              "id": "usr_01KGH9CHW0TEAM000000000003",
              "lastLoginAt": null,
              "mfaEnabled": false,
              "mfaEnabledAt": null,
              "profile": {
                "avatarAssetRef": null,
                "displayName": "Sabine Vogt",
                "locale": "de-DE",
                "timezone": "Europe/Berlin"
              },
              "roleAssignments": [
                {
                  "assignedAt": "2026-02-03T08:21:00.000Z",
                  "assignedById": "usr_01KERQ74K0TEAM000000000001",
                  "expiresAt": "2026-12-31T23:59:59.000Z",
                  "roleId": "rol_01KERPYYW0RECHT00000000003"
                }
              ],
              "roleVersion": 1,
              "status": "pending",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "updatedAt": "2026-02-03T08:21:00.000Z"
            }
          ],
          "nextCursor": "dXNyOjIwMjYtMDItMDM",
          "seats": {
            "exhausted": false,
            "inUse": 4,
            "limit": 0,
            "members": 3,
            "pendingInvitations": 1
          },
          "total": 3
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "deletedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "email": {
                  "format": "email",
                  "maxLength": 254,
                  "type": "string"
                },
                "emailVerifiedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "hasPassword": {
                  "type": "boolean"
                },
                "id": {
                  "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "lastLoginAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "mfaEnabled": {
                  "type": "boolean"
                },
                "mfaEnabledAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "profile": {
                  "properties": {
                    "avatarAssetRef": {
                      "properties": {
                        "assetId": {
                          "description": "Datei-Kennung|Kennung der Datei in der Medienbibliothek.",
                          "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "variantSet": {
                          "description": "Fassungen|Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                          "items": {
                            "enum": [
                              "original",
                              "thumbnail",
                              "preview",
                              "webp",
                              "playback"
                            ],
                            "type": "string"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "assetId",
                        "variantSet"
                      ],
                      "type": [
                        "object",
                        "null"
                      ]
                    },
                    "displayName": {
                      "maxLength": 100,
                      "minLength": 1,
                      "type": "string"
                    },
                    "locale": {
                      "default": "de-DE",
                      "pattern": "^[a-z]{2}(-[A-Z]{2})?$",
                      "type": "string"
                    },
                    "timezone": {
                      "default": "Europe/Berlin",
                      "type": "string"
                    }
                  },
                  "required": [
                    "displayName",
                    "avatarAssetRef"
                  ],
                  "type": "object"
                },
                "roleAssignments": {
                  "items": {
                    "properties": {
                      "assignedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "assignedById": {
                        "anyOf": [
                          {
                            "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          },
                          {
                            "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          },
                          {
                            "enum": [
                              "scim-directory"
                            ],
                            "type": "string"
                          },
                          {
                            "enum": [
                              "role-expiry"
                            ],
                            "type": "string"
                          }
                        ]
                      },
                      "expiresAt": {
                        "format": "date-time",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "roleId": {
                        "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "roleId",
                      "assignedAt",
                      "assignedById",
                      "expiresAt"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "roleVersion": {
                  "minimum": 0,
                  "type": "integer"
                },
                "status": {
                  "enum": [
                    "pending",
                    "active",
                    "suspended",
                    "deleted"
                  ],
                  "type": "string"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "updatedAt": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "tenantId",
                "email",
                "emailVerifiedAt",
                "profile",
                "roleAssignments",
                "roleVersion",
                "status",
                "createdAt",
                "updatedAt",
                "deletedAt",
                "lastLoginAt",
                "mfaEnabledAt",
                "mfaEnabled",
                "hasPassword"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "seats": {
            "properties": {
              "exhausted": {
                "type": "boolean"
              },
              "inUse": {
                "minimum": 0,
                "type": "integer"
              },
              "limit": {
                "minimum": 0,
                "type": "integer"
              },
              "members": {
                "minimum": 0,
                "type": "integer"
              },
              "pendingInvitations": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "limit",
              "inUse",
              "members",
              "pendingInvitations",
              "exhausted"
            ],
            "type": "object"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items",
          "seats"
        ],
        "type": "object"
      },
      "ListWebhookDeliveriesResponse": {
        "example": {
          "items": [
            {
              "attemptCount": 1,
              "createdAt": "2026-07-20T08:31:05.000Z",
              "deadAt": null,
              "deliveredAt": "2026-07-20T08:31:06.000Z",
              "dispatchedAt": "2026-07-20T08:31:05.000Z",
              "endpointId": "whk_01KPR20K40WEBHK00000000001",
              "eventType": "composition.scene.published",
              "id": "whd_01KXZACW98SENDNG0000000001",
              "nextRetryAt": null,
              "payloadSignature": "c4e93f5a1d78b062ae3419f5d0c7b28a6f5139e4c80b7a26d1f3e59087b4c26d",
              "responseBody": "{\"status\":\"angenommen\"}",
              "responseCode": 200,
              "status": "delivered",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            },
            {
              "attemptCount": 6,
              "createdAt": "2026-07-19T21:14:05.000Z",
              "deadAt": "2026-07-19T22:32:00.000Z",
              "deliveredAt": null,
              "dispatchedAt": "2026-07-19T21:14:05.000Z",
              "endpointId": "whk_01KTNVF9E0WEBHK00000000002",
              "eventType": "fleet.player.status-changed",
              "id": "whd_01KXY3N8A8SENDNG0000000002",
              "nextRetryAt": null,
              "payloadSignature": "18b7d0c94e2a5f6318dc47b0a9e52f7c604b1de8397a5c02f6b8d43910ce75af",
              "responseBody": "Bad Gateway",
              "responseCode": 502,
              "status": "dead",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            }
          ],
          "nextCursor": "d2hkOjIwMjYtMDctMTk",
          "total": 118
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "attemptCount": {
                  "minimum": 0,
                  "type": "integer"
                },
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "deadAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "deliveredAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "dispatchedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "endpointId": {
                  "pattern": "^whk_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "eventType": {
                  "type": "string"
                },
                "id": {
                  "pattern": "^whd_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "nextRetryAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "payloadSignature": {
                  "type": "string"
                },
                "responseBody": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "responseCode": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "status": {
                  "enum": [
                    "pending",
                    "delivered",
                    "failed",
                    "dead"
                  ],
                  "type": "string"
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "tenantId",
                "endpointId",
                "eventType",
                "payloadSignature",
                "status",
                "attemptCount",
                "responseCode",
                "responseBody",
                "nextRetryAt",
                "dispatchedAt",
                "deliveredAt",
                "deadAt",
                "createdAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListWebhookEndpointsResponse": {
        "example": {
          "items": [
            {
              "active": true,
              "consecutiveFailures": 0,
              "createdAt": "2026-04-21T13:00:00.000Z",
              "createdById": "usr_01KERQ74K0TEAM000000000001",
              "events": [
                "composition.scene.published",
                "scheduling.playlist.updated",
                "media-library.asset.ready"
              ],
              "id": "whk_01KPR20K40WEBHK00000000001",
              "lastDeliveryAt": "2026-07-20T08:31:06.000Z",
              "lastFailureAt": null,
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "url": "https://warenwirtschaft.demo.local/hooks/signage"
            },
            {
              "active": false,
              "consecutiveFailures": 21,
              "createdAt": "2026-06-09T09:30:00.000Z",
              "createdById": "usr_01KERQ74K0TEAM000000000001",
              "events": [
                "fleet.player.status-changed"
              ],
              "id": "whk_01KTNVF9E0WEBHK00000000002",
              "lastDeliveryAt": "2026-06-30T09:15:00.000Z",
              "lastFailureAt": "2026-07-18T06:30:00.000Z",
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
              "url": "https://werbeplanung.demo.local/hooks/signage"
            }
          ],
          "nextCursor": "d2hrOjIwMjYtMDYtMDk",
          "total": 2
        },
        "properties": {
          "items": {
            "items": {
              "properties": {
                "active": {
                  "type": "boolean"
                },
                "consecutiveFailures": {
                  "minimum": 0,
                  "type": "integer"
                },
                "createdAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "createdById": {
                  "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "events": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "id": {
                  "pattern": "^whk_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "lastDeliveryAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "lastFailureAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "tenantId": {
                  "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "url": {
                  "format": "uri",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "tenantId",
                "url",
                "events",
                "active",
                "createdById",
                "createdAt",
                "lastDeliveryAt",
                "lastFailureAt",
                "consecutiveFailures"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ListWebhookEventTypesResponse": {
        "example": {
          "areas": [
            {
              "area": "sample",
              "label": "sample"
            }
          ],
          "headers": {
            "deliveryId": "sample",
            "eventType": "sample",
            "signature": "sample"
          },
          "items": [
            {
              "area": "sample",
              "areaLabel": "sample",
              "description": "sample",
              "exampleBody": {
                "sample": null
              },
              "label": "sample",
              "type": "sample"
            }
          ]
        },
        "properties": {
          "areas": {
            "items": {
              "properties": {
                "area": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                }
              },
              "required": [
                "area",
                "label"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "headers": {
            "properties": {
              "deliveryId": {
                "type": "string"
              },
              "eventType": {
                "type": "string"
              },
              "signature": {
                "type": "string"
              }
            },
            "required": [
              "signature",
              "eventType",
              "deliveryId"
            ],
            "type": "object"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/WebhookEventTypeCatalogEntry"
            },
            "type": "array"
          }
        },
        "required": [
          "items",
          "areas",
          "headers"
        ],
        "type": "object"
      },
      "LocationRegion": {
        "enum": [
          "DE-BW",
          "DE-BY",
          "DE-BE",
          "DE-BB",
          "DE-HB",
          "DE-HH",
          "DE-HE",
          "DE-MV",
          "DE-NI",
          "DE-NW",
          "DE-RP",
          "DE-SL",
          "DE-SN",
          "DE-ST",
          "DE-SH",
          "DE-TH"
        ],
        "example": "DE-HH",
        "type": [
          "string",
          "null"
        ]
      },
      "LoginExchangeRequest": {
        "example": {
          "deviceFingerprint": {
            "acceptLanguage": "de-DE,de;q=0.9",
            "geoip": "Hamburg, DE",
            "screenResolution": "2560x1440",
            "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0 Safari/537.36"
          },
          "ticket": "lht_01KXZ88ZE0TCKET00000000001"
        },
        "properties": {
          "deviceFingerprint": {
            "properties": {
              "acceptLanguage": {
                "type": "string"
              },
              "geoip": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "screenResolution": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "userAgent": {
                "type": "string"
              }
            },
            "required": [
              "userAgent",
              "acceptLanguage",
              "screenResolution",
              "geoip"
            ],
            "type": "object"
          },
          "ticket": {
            "pattern": "^lht_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "ticket",
          "deviceFingerprint"
        ],
        "type": "object"
      },
      "LoginOutcome": {
        "example": {
          "accessToken": "beispiel-zugangstoken-nicht-echt",
          "expiresAt": "2026-07-20T08:10:00.000Z",
          "outcome": "session",
          "session": {
            "createdAt": "2026-07-20T07:55:00.000Z",
            "deviceFingerprint": {
              "acceptLanguage": "de-DE,de;q=0.9",
              "geoip": "Hamburg, DE",
              "screenResolution": "2560x1440",
              "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0 Safari/537.36"
            },
            "familyId": "sfm_01KXZ8AT10FAME000000000001",
            "id": "ses_01KXZ8AT10SESSN00000000001",
            "impersonator": null,
            "kind": "user",
            "lastUsedAt": "2026-07-20T09:15:00.000Z",
            "mfaVerifiedAt": null,
            "refreshExpiresAt": "2026-08-19T07:55:00.000Z",
            "status": "active",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "userId": "usr_01KERQ74K0TEAM000000000001"
          }
        },
        "oneOf": [
          {
            "properties": {
              "accessToken": {
                "type": "string"
              },
              "expiresAt": {
                "format": "date-time",
                "type": "string"
              },
              "outcome": {
                "enum": [
                  "session"
                ],
                "type": "string"
              },
              "session": {
                "properties": {
                  "createdAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "deviceFingerprint": {
                    "properties": {
                      "acceptLanguage": {
                        "type": "string"
                      },
                      "geoip": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "screenResolution": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "userAgent": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "userAgent",
                      "acceptLanguage",
                      "screenResolution",
                      "geoip"
                    ],
                    "type": "object"
                  },
                  "familyId": {
                    "pattern": "^sfm_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "id": {
                    "pattern": "^ses_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "impersonator": {
                    "properties": {
                      "operatorUserId": {
                        "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "reason": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "startedAt": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "required": [
                      "operatorUserId",
                      "reason",
                      "startedAt"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "kind": {
                    "enum": [
                      "user",
                      "operator",
                      "impersonation"
                    ],
                    "type": "string"
                  },
                  "lastUsedAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "mfaVerifiedAt": {
                    "format": "date-time",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "refreshExpiresAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "status": {
                    "enum": [
                      "active",
                      "revoked",
                      "expired"
                    ],
                    "type": "string"
                  },
                  "tenantId": {
                    "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "userId": {
                    "anyOf": [
                      {
                        "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      {
                        "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "userId",
                  "tenantId",
                  "kind",
                  "familyId",
                  "refreshExpiresAt",
                  "lastUsedAt",
                  "deviceFingerprint",
                  "impersonator",
                  "mfaVerifiedAt",
                  "status",
                  "createdAt"
                ],
                "type": "object"
              }
            },
            "required": [
              "outcome",
              "accessToken",
              "expiresAt",
              "session"
            ],
            "type": "object"
          },
          {
            "properties": {
              "methods": {
                "items": {
                  "enum": [
                    "totp",
                    "recovery-code"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "mfaSessionId": {
                "pattern": "^ses_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "outcome": {
                "enum": [
                  "mfa-required"
                ],
                "type": "string"
              }
            },
            "required": [
              "outcome",
              "mfaSessionId",
              "methods"
            ],
            "type": "object"
          },
          {
            "properties": {
              "choiceTicket": {
                "pattern": "^lct_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "organizations": {
                "items": {
                  "properties": {
                    "displayName": {
                      "maxLength": 120,
                      "minLength": 1,
                      "type": "string"
                    },
                    "logoUrl": {
                      "format": "uri",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "organizationId": {
                      "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    }
                  },
                  "required": [
                    "organizationId",
                    "displayName",
                    "logoUrl"
                  ],
                  "type": "object"
                },
                "minItems": 2,
                "type": "array"
              },
              "outcome": {
                "enum": [
                  "organization-choice"
                ],
                "type": "string"
              }
            },
            "required": [
              "outcome",
              "choiceTicket",
              "organizations"
            ],
            "type": "object"
          }
        ]
      },
      "LogoutResponse": {
        "example": {
          "revokedCount": 0
        },
        "properties": {
          "revokedCount": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "revokedCount"
        ],
        "type": "object"
      },
      "MandatoryTextChecks": {
        "default": null,
        "example": {
          "legible": true,
          "presentInCreative": true
        },
        "properties": {
          "legible": {
            "type": "boolean"
          },
          "presentInCreative": {
            "type": "boolean"
          }
        },
        "required": [
          "presentInCreative",
          "legible"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "MarkAllReadResponse": {
        "example": {
          "markedCount": 3
        },
        "properties": {
          "markedCount": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "markedCount"
        ],
        "type": "object"
      },
      "MarkAsReadResponse": {
        "example": {
          "actionUrl": "/players/ply_01KHK3FM90SCREEN0000000002",
          "bodyKey": "notification.fleet.player-offline.body",
          "bodyParams": {
            "playerId": "ply_01KHK3FM90SCREEN0000000002",
            "playerName": "Wartebereich"
          },
          "createdAt": "2026-07-19T21:14:00.000Z",
          "dismissedAt": null,
          "expiresAt": null,
          "groupKey": "fleet.player-offline:playerId:ply_01KHK3FM90SCREEN0000000002",
          "id": "ntf_01KXY3N3E0HNWES00000000001",
          "kind": "fleet.player-offline",
          "readAt": "2026-07-20T09:15:00.000Z",
          "severity": "warning",
          "titleKey": "notification.fleet.player-offline.title",
          "titleParams": {}
        },
        "properties": {
          "actionUrl": {
            "maxLength": 2000,
            "pattern": "^(\\/(?!\\/)|https:\\/\\/)",
            "type": [
              "string",
              "null"
            ]
          },
          "bodyKey": {
            "pattern": "^[a-z0-9]+(\\.[a-z0-9-]+)+$",
            "type": "string"
          },
          "bodyParams": {
            "additionalProperties": {},
            "type": "object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "dismissedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "expiresAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "groupKey": {
            "type": "string"
          },
          "id": {
            "pattern": "^ntf_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "kind": {
            "enum": [
              "invitation.accepted",
              "invitation.expired",
              "join-request.received",
              "security.theft-detected",
              "security.impersonation-started",
              "security.password-changed",
              "security.mfa-disabled",
              "security.sso-changed",
              "security.api-key-created",
              "security.custom-domain-removed",
              "identity.role-changed",
              "billing.invoice-paid",
              "billing.invoice-issued",
              "billing.payment-failed",
              "billing.past-due",
              "billing.trial-ending",
              "billing.frozen",
              "billing.unfrozen",
              "billing.vat-id-invalid",
              "billing.license-conflict",
              "billing.override-ending",
              "billing.change-failed",
              "billing.cancel-scheduled",
              "analytics.report-failed",
              "analytics.report-ready",
              "audit.export-ready",
              "media.processing-failed",
              "composition.integrity-issue",
              "fleet.player-offline",
              "fleet.command-failed",
              "identity.device-reregistration-requested",
              "integrations.cloud-connection-broken",
              "integrations.webhook-disabled",
              "marketplace.pending-reacceptance",
              "app-catalog.release-retired",
              "marketplace.release-switched",
              "marketplace.install-requested",
              "marketplace.update-decision-requested",
              "marketplace.app-installed",
              "marketplace.update-declined",
              "marketplace.data-deletion-scheduled",
              "tenancy.suspended",
              "tenancy.deletion-warning",
              "tenancy.reactivated",
              "tenancy.custom-domain-verified",
              "tenancy.sso-break-glass-used",
              "ops.maintenance",
              "ops.maintenance-canceled",
              "ops.incident",
              "ops.incident-resolved",
              "ops.broadcast"
            ],
            "type": "string"
          },
          "readAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "severity": {
            "enum": [
              "info",
              "success",
              "warning",
              "error"
            ],
            "type": "string"
          },
          "titleKey": {
            "pattern": "^[a-z0-9]+(\\.[a-z0-9-]+)+$",
            "type": "string"
          },
          "titleParams": {
            "additionalProperties": {},
            "type": "object"
          }
        },
        "required": [
          "id",
          "kind",
          "titleKey",
          "titleParams",
          "bodyKey",
          "bodyParams",
          "severity",
          "actionUrl",
          "readAt",
          "dismissedAt",
          "createdAt",
          "expiresAt",
          "groupKey"
        ],
        "type": "object"
      },
      "MeasureAggregation": {
        "example": {
          "kind": "sum"
        },
        "oneOf": [
          {
            "properties": {
              "kind": {
                "enum": [
                  "sum"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "denominator": {
                "enum": [
                  "plannedSeconds",
                  "visibleSeconds",
                  "invalidPlays",
                  "evaluatedPlays",
                  "airtimeSeconds",
                  "contacts",
                  "gradeContacts",
                  "bookedPositions",
                  "availablePositions"
                ],
                "type": "string"
              },
              "kind": {
                "enum": [
                  "ratio"
                ],
                "type": "string"
              },
              "numerator": {
                "enum": [
                  "plannedSeconds",
                  "visibleSeconds",
                  "invalidPlays",
                  "evaluatedPlays",
                  "airtimeSeconds",
                  "contacts",
                  "gradeContacts",
                  "bookedPositions",
                  "availablePositions"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind",
              "numerator",
              "denominator"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "distinctCount"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "perLine"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          }
        ]
      },
      "MeHardwareInterestView": {
        "example": {
          "confirmedAt": "2026-08-14T10:24:00.000Z",
          "createdAt": "2026-08-14T10:20:00.000Z",
          "id": "hwi_01KERPXZM0VRMERKNG00000000",
          "note": "Zwei Geraete fuer die Filiale in Wandsbek.",
          "notifiedAt": null,
          "quantity": 2,
          "skuCode": "HW-PLAYER-4G",
          "state": "confirmed"
        },
        "properties": {
          "confirmedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "pattern": "^hwi_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "note": {
            "maxLength": 500,
            "type": [
              "string",
              "null"
            ]
          },
          "notifiedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "quantity": {
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          "skuCode": {
            "maxLength": 60,
            "minLength": 3,
            "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
            "type": "string"
          },
          "state": {
            "enum": [
              "pending",
              "confirmed",
              "notified"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "skuCode",
          "quantity",
          "note",
          "state",
          "confirmedAt",
          "notifiedAt",
          "createdAt"
        ],
        "type": "object"
      },
      "MeHardwareOrderView": {
        "example": {
          "createdAt": "2026-07-20T09:15:00.000Z",
          "currency": "EUR",
          "grossCents": 17731,
          "id": "hwo_01KERPXZM0BESTNR0000000001",
          "invoiceId": null,
          "items": [
            {
              "displayName": "Player Lite",
              "quantity": 1,
              "skuCode": "HW-PLAYER-2G",
              "unitPriceNetCents": 14900
            }
          ],
          "netCents": 14900,
          "orderNumber": "HWO-2026-0042",
          "status": "new",
          "updatedAt": "2026-07-20T09:15:00.000Z",
          "vatCents": 2831
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string"
          },
          "grossCents": {
            "minimum": 0,
            "type": "integer"
          },
          "id": {
            "pattern": "^hwo_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "invoiceId": {
            "default": null,
            "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "items": {
            "items": {
              "properties": {
                "displayName": {
                  "maxLength": 120,
                  "minLength": 1,
                  "type": "string"
                },
                "quantity": {
                  "maximum": 50,
                  "minimum": 1,
                  "type": "integer"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                },
                "unitPriceNetCents": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "skuCode",
                "quantity",
                "unitPriceNetCents",
                "displayName"
              ],
              "type": "object"
            },
            "maxItems": 10,
            "minItems": 1,
            "type": "array"
          },
          "netCents": {
            "minimum": 0,
            "type": "integer"
          },
          "orderNumber": {
            "pattern": "^HWO-\\d{4}-\\d{4,}$",
            "type": "string"
          },
          "status": {
            "enum": [
              "new",
              "confirmed",
              "shipped",
              "cancelled"
            ],
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "vatCents": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "orderNumber",
          "items",
          "currency",
          "netCents",
          "vatCents",
          "grossCents",
          "status",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "MintApiKeyRequest": {
        "example": {
          "expiresAt": "2027-05-04T07:00:00.000Z",
          "name": "Warenwirtschaft-Anbindung",
          "originClass": "custom",
          "rateLimit": "1200/1m",
          "rotationGraceHours": 24,
          "scope": [
            "assets.read",
            "playlists.read"
          ]
        },
        "properties": {
          "expiresAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "originClass": {
            "default": "custom",
            "enum": [
              "read-only",
              "media-automation",
              "content-authoring",
              "playout-control",
              "full",
              "custom"
            ],
            "type": "string"
          },
          "rateLimit": {
            "default": null,
            "pattern": "^[1-9][0-9]*\\/[1-9][0-9]*[smh]$",
            "type": [
              "string",
              "null"
            ]
          },
          "rotationGraceHours": {
            "default": 24,
            "maximum": 72,
            "minimum": 0,
            "type": "integer"
          },
          "scope": {
            "items": {
              "maxLength": 80,
              "minLength": 3,
              "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)*$",
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "name",
          "scope",
          "expiresAt"
        ],
        "type": "object"
      },
      "MintApiKeyResponse": {
        "example": {
          "apiKey": {
            "createdAt": "2026-05-04T07:00:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "expiresAt": "2027-05-04T07:00:00.000Z",
            "id": "akm_01KQRWJRC0APKEY00000000001",
            "keyPrefix": "ak_APKEY0001",
            "lastUsedAt": "2026-07-20T05:00:00.000Z",
            "name": "Warenwirtschaft-Anbindung",
            "originClass": "read-only",
            "rateLimit": "1200/1m",
            "revokedAt": null,
            "revokedById": null,
            "revokedReason": null,
            "revokesAt": null,
            "rotationGraceHours": 0,
            "scope": [
              "assets.read",
              "playlists.read"
            ],
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          },
          "plainKey": "ak_01KQRWJRC0APKEY00000000001",
          "warning": "Store this key now. It will not be shown again."
        },
        "properties": {
          "apiKey": {
            "properties": {
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "createdById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  }
                ]
              },
              "expiresAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^akm_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "keyPrefix": {
                "pattern": "^ak_[0-9A-HJKMNP-TV-Z]{9}$",
                "type": "string"
              },
              "lastUsedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              "originClass": {
                "enum": [
                  "read-only",
                  "media-automation",
                  "content-authoring",
                  "playout-control",
                  "full",
                  "custom"
                ],
                "type": "string"
              },
              "rateLimit": {
                "default": null,
                "pattern": "^[1-9][0-9]*\\/[1-9][0-9]*[smh]$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "revokedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "revokedById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "revokedReason": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "revokesAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "rotationGraceHours": {
                "maximum": 72,
                "minimum": 0,
                "type": "integer"
              },
              "scope": {
                "items": {
                  "maxLength": 80,
                  "minLength": 3,
                  "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)*$",
                  "type": "string"
                },
                "minItems": 1,
                "type": "array"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              }
            },
            "required": [
              "id",
              "tenantId",
              "name",
              "keyPrefix",
              "createdById",
              "scope",
              "originClass",
              "rotationGraceHours",
              "expiresAt",
              "lastUsedAt",
              "revokedAt",
              "revokedById",
              "revokedReason",
              "revokesAt",
              "createdAt"
            ],
            "type": "object"
          },
          "plainKey": {
            "pattern": "^ak_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "warning": {
            "enum": [
              "Store this key now. It will not be shown again."
            ],
            "type": "string"
          }
        },
        "required": [
          "apiKey",
          "plainKey",
          "warning"
        ],
        "type": "object"
      },
      "MintScimTokenResponse": {
        "example": {
          "baseUrl": "https://api.demo.local",
          "plainToken": "sct_01KFB7QPW0SCM0BESPEK000AB1",
          "token": {
            "createdAt": "2026-06-01T08:30:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "id": "sctm_01KFB7QPW0SCM0ZGANG00000A1",
            "lastUsedAt": "2026-07-20T02:00:00.000Z",
            "revokedAt": null,
            "revokedReason": null,
            "revokesAt": null,
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "tokenPrefix": "sct_01KFB7QP"
          },
          "warning": "Store this token now. It will not be shown again."
        },
        "properties": {
          "baseUrl": {
            "type": "string"
          },
          "plainToken": {
            "pattern": "^sct_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "token": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ScimTokenPublic"
              },
              {
                "type": "object"
              }
            ]
          },
          "warning": {
            "enum": [
              "Store this token now. It will not be shown again."
            ],
            "type": "string"
          }
        },
        "required": [
          "token",
          "plainToken",
          "baseUrl",
          "warning"
        ],
        "type": "object"
      },
      "MoveFolderRequest": {
        "example": {
          "parentFolderId": null
        },
        "properties": {
          "parentFolderId": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "parentFolderId"
        ],
        "type": "object"
      },
      "MoveFolderResponse": {
        "example": {
          "createdAt": "2026-03-11T15:20:00.000Z",
          "createdById": "usr_01KFB7QPW0TEAM000000000002",
          "depth": 0,
          "id": "fld_01KKEQQF80MAPPE00000000003",
          "kind": "regular",
          "name": "Videos",
          "parentFolderId": null,
          "path": "/Videos",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-20T09:15:00.000Z"
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "createdById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "depth": {
            "maximum": 7,
            "minimum": 0,
            "type": "integer"
          },
          "id": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "kind": {
            "default": "regular",
            "enum": [
              "regular",
              "brand"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "pattern": "^[^/]+$",
            "type": "string"
          },
          "parentFolderId": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "path": {
            "maxLength": 900,
            "minLength": 1,
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "parentFolderId",
          "name",
          "path",
          "depth",
          "createdById",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "MultipartAbortRequest": {
        "example": {
          "assetId": "ast_01KKEQYSM0MEDEN00000000002"
        },
        "properties": {
          "assetId": {
            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "assetId"
        ],
        "type": "object"
      },
      "MultipartAbortResponse": {
        "example": {
          "aborted": true
        },
        "properties": {
          "aborted": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "aborted"
        ],
        "type": "object"
      },
      "MultipartCompleteRequest": {
        "example": {
          "assetId": "ast_01KKEQYSM0MEDEN00000000002",
          "parts": [
            {
              "eTag": "\"a41c0e93b2d5\"",
              "partNumber": 1
            },
            {
              "eTag": "\"5f28d0b7c194\"",
              "partNumber": 2
            }
          ]
        },
        "properties": {
          "assetId": {
            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "parts": {
            "items": {
              "properties": {
                "eTag": {
                  "minLength": 1,
                  "type": "string"
                },
                "partNumber": {
                  "maximum": 10000,
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "required": [
                "partNumber",
                "eTag"
              ],
              "type": "object"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "assetId",
          "parts"
        ],
        "type": "object"
      },
      "MultipartCompleteResponse": {
        "example": {
          "createdAt": "2026-03-11T15:24:00.000Z",
          "deletedAt": null,
          "dimensions": {
            "height": 1920,
            "width": 1080
          },
          "durationSeconds": 92.4,
          "errorMessage": null,
          "folderId": "fld_01KKEQQF80MAPPE00000000003",
          "id": "ast_01KKEQYSM0MEDEN00000000002",
          "mimeType": "video/mp4",
          "name": "wartebereich-schleife.mp4",
          "originalFileName": "wartebereich-schleife.mp4",
          "pageCount": 1,
          "purgeAt": null,
          "sha256": "41a7c0e93b2d58f6041e7cb85d29a3f70c6b1948de52370af8b6c1d094e2537a",
          "sizeBytes": 24918744,
          "source": null,
          "status": "ready",
          "tags": [
            "wartebereich",
            "video"
          ],
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-03-11T15:27:38.000Z",
          "uploadedById": "usr_01KFB7QPW0TEAM000000000002",
          "variants": [
            {
              "generatedAt": "2026-03-11T15:27:38.000Z",
              "height": 960,
              "id": "asv_01KW95F7P0VARANT0000000001",
              "kind": "thumbnail-lg",
              "sizeBytes": 71204,
              "width": 540
            }
          ],
          "videoCodec": "h264"
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "deletedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "dimensions": {
            "properties": {
              "height": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "width": {
                "exclusiveMinimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "width",
              "height"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "durationSeconds": {
            "exclusiveMinimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "errorMessage": {
            "maxLength": 1000,
            "type": [
              "string",
              "null"
            ]
          },
          "folderId": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "mimeType": {
            "enum": [
              "image/jpeg",
              "image/png",
              "image/webp",
              "image/svg+xml",
              "video/mp4",
              "video/webm",
              "application/pdf"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "originalFileName": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "pageCount": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "purgeAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "sha256": {
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "sizeBytes": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "source": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetSource"
              },
              {
                "default": null,
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "status": {
            "enum": [
              "uploading",
              "processing",
              "ready",
              "error"
            ],
            "type": "string"
          },
          "tags": {
            "items": {
              "maxLength": 50,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 50,
            "type": "array"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "uploadedById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "variants": {
            "items": {
              "properties": {
                "blank": {
                  "type": "boolean"
                },
                "codec": {
                  "maxLength": 31,
                  "minLength": 1,
                  "type": "string"
                },
                "generatedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "height": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "id": {
                  "pattern": "^asv_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "kind": {
                  "anyOf": [
                    {
                      "enum": [
                        "thumbnail-sm",
                        "thumbnail-md",
                        "thumbnail-lg",
                        "preview-720",
                        "preview-1080",
                        "webp-original-size",
                        "playback-1080"
                      ],
                      "type": "string"
                    },
                    {
                      "pattern": "^page-([1-9][0-9]{0,2})$",
                      "type": "string"
                    },
                    {
                      "pattern": "^page-([1-9][0-9]{0,2})-sm$",
                      "type": "string"
                    }
                  ]
                },
                "sha256": {
                  "pattern": "^[0-9a-f]{64}$",
                  "type": "string"
                },
                "sizeBytes": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "width": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "kind",
                "width",
                "height",
                "sizeBytes",
                "generatedAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "videoCodec": {
            "default": null,
            "maxLength": 31,
            "minLength": 1,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "tenantId",
          "folderId",
          "name",
          "originalFileName",
          "mimeType",
          "sizeBytes",
          "sha256",
          "tags",
          "dimensions",
          "durationSeconds",
          "uploadedById",
          "status",
          "errorMessage",
          "createdAt",
          "updatedAt",
          "deletedAt",
          "variants",
          "purgeAt"
        ],
        "type": "object"
      },
      "MultipartInitRequest": {
        "example": {
          "folderId": "fld_01KKEQQF80MAPPE00000000003",
          "mimeType": "video/mp4",
          "name": "wartebereich-schleife.mp4",
          "originalFileName": "wartebereich-schleife.mp4",
          "sha256": "41a7c0e93b2d58f6041e7cb85d29a3f70c6b1948de52370af8b6c1d094e2537a",
          "sizeBytes": 24918744,
          "tags": [
            "wartebereich",
            "video"
          ],
          "totalParts": 3
        },
        "properties": {
          "folderId": {
            "default": null,
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "mimeType": {
            "enum": [
              "image/jpeg",
              "image/png",
              "image/webp",
              "image/svg+xml",
              "video/mp4",
              "video/webm",
              "application/pdf"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "originalFileName": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "sha256": {
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "sizeBytes": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "tags": {
            "default": [],
            "items": {
              "maxLength": 50,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 50,
            "type": "array"
          },
          "totalParts": {
            "maximum": 10000,
            "minimum": 2,
            "type": "integer"
          }
        },
        "required": [
          "originalFileName",
          "mimeType",
          "sizeBytes",
          "sha256",
          "totalParts"
        ],
        "type": "object"
      },
      "MultipartInitResponse": {
        "example": {
          "assetId": "ast_01KKEQYSM0MEDEN00000000002",
          "exists": false,
          "uploadId": "mpu-7c41e0b95a2d"
        },
        "properties": {
          "assetId": {
            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "exists": {
            "type": "boolean"
          },
          "uploadId": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "assetId",
          "exists",
          "uploadId"
        ],
        "type": "object"
      },
      "MultipartPartUrlRequest": {
        "example": {
          "assetId": "ast_01KKEQYSM0MEDEN00000000002",
          "partNumber": 2
        },
        "properties": {
          "assetId": {
            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "partNumber": {
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "assetId",
          "partNumber"
        ],
        "type": "object"
      },
      "MultipartPartUrlResponse": {
        "example": {
          "expiresInSeconds": 900,
          "headers": {
            "content-type": "video/mp4"
          },
          "url": "https://s3.demo.local/signage-medien/uploads/wartebereich-schleife.mp4"
        },
        "properties": {
          "expiresInSeconds": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "headers": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "url",
          "headers",
          "expiresInSeconds"
        ],
        "type": "object"
      },
      "MySessionView": {
        "example": {
          "createdAt": "2026-07-20T07:55:00.000Z",
          "current": true,
          "deviceFingerprint": {
            "acceptLanguage": "de-DE,de;q=0.9",
            "geoip": "Hamburg, DE",
            "screenResolution": "2560x1440",
            "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0 Safari/537.36"
          },
          "familyId": "sfm_01KXZ8AT10FAME000000000001",
          "id": "ses_01KXZ8AT10SESSN00000000001",
          "impersonator": null,
          "kind": "user",
          "lastUsedAt": "2026-07-20T09:15:00.000Z",
          "mfaVerifiedAt": null,
          "refreshExpiresAt": "2026-08-19T07:55:00.000Z",
          "status": "active",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "userId": "usr_01KERQ74K0TEAM000000000001"
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "current": {
            "type": "boolean"
          },
          "deviceFingerprint": {
            "properties": {
              "acceptLanguage": {
                "type": "string"
              },
              "geoip": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "screenResolution": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "userAgent": {
                "type": "string"
              }
            },
            "required": [
              "userAgent",
              "acceptLanguage",
              "screenResolution",
              "geoip"
            ],
            "type": "object"
          },
          "id": {
            "pattern": "^ses_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "kind": {
            "enum": [
              "user",
              "operator",
              "impersonation"
            ],
            "type": "string"
          },
          "lastUsedAt": {
            "format": "date-time",
            "type": "string"
          },
          "mfaVerifiedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "enum": [
              "active",
              "revoked",
              "expired"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "kind",
          "status",
          "deviceFingerprint",
          "lastUsedAt",
          "createdAt",
          "mfaVerifiedAt",
          "current"
        ],
        "type": "object"
      },
      "NetworkParameters": {
        "example": {
          "closeGraceHours": 24,
          "cpmCents": {
            "checkout": 2000,
            "other": 800,
            "sales_floor": 1500,
            "waiting_area": 1500,
            "window": 600
          },
          "dwellSeconds": {
            "checkout": 90,
            "other": 60,
            "sales_floor": 300,
            "waiting_area": 600,
            "window": 5
          },
          "lateWindowHours": 72,
          "placementFactorPermille": {
            "checkout": 800,
            "other": 500,
            "sales_floor": 600,
            "waiting_area": 700,
            "window": 350
          },
          "revenueShare": {
            "creditCapPercent": 100,
            "tenantShareAboveCapPercent": 40
          },
          "sampleCapturesPerLineDay": 1,
          "updatedAt": "2026-09-01T09:00:00.000Z",
          "version": 2
        },
        "properties": {
          "closeGraceHours": {
            "maximum": 72,
            "minimum": 0,
            "type": "integer"
          },
          "cpmCents": {
            "properties": {
              "checkout": {
                "maximum": 100000,
                "minimum": 0,
                "type": "integer"
              },
              "other": {
                "maximum": 100000,
                "minimum": 0,
                "type": "integer"
              },
              "sales_floor": {
                "maximum": 100000,
                "minimum": 0,
                "type": "integer"
              },
              "waiting_area": {
                "maximum": 100000,
                "minimum": 0,
                "type": "integer"
              },
              "window": {
                "maximum": 100000,
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "window",
              "sales_floor",
              "checkout",
              "waiting_area",
              "other"
            ],
            "type": "object"
          },
          "dwellSeconds": {
            "properties": {
              "checkout": {
                "maximum": 3600,
                "minimum": 1,
                "type": "integer"
              },
              "other": {
                "maximum": 3600,
                "minimum": 1,
                "type": "integer"
              },
              "sales_floor": {
                "maximum": 3600,
                "minimum": 1,
                "type": "integer"
              },
              "waiting_area": {
                "maximum": 3600,
                "minimum": 1,
                "type": "integer"
              },
              "window": {
                "maximum": 3600,
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "window",
              "sales_floor",
              "checkout",
              "waiting_area",
              "other"
            ],
            "type": "object"
          },
          "lateWindowHours": {
            "maximum": 168,
            "minimum": 24,
            "type": "integer"
          },
          "placementFactorPermille": {
            "properties": {
              "checkout": {
                "maximum": 1000,
                "minimum": 0,
                "type": "integer"
              },
              "other": {
                "maximum": 1000,
                "minimum": 0,
                "type": "integer"
              },
              "sales_floor": {
                "maximum": 1000,
                "minimum": 0,
                "type": "integer"
              },
              "waiting_area": {
                "maximum": 1000,
                "minimum": 0,
                "type": "integer"
              },
              "window": {
                "maximum": 1000,
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "window",
              "sales_floor",
              "checkout",
              "waiting_area",
              "other"
            ],
            "type": "object"
          },
          "revenueShare": {
            "$ref": "#/components/schemas/RevenueShare"
          },
          "sampleCapturesPerLineDay": {
            "maximum": 4,
            "minimum": 0,
            "type": "integer"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "exclusiveMinimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "placementFactorPermille",
          "dwellSeconds",
          "cpmCents",
          "revenueShare",
          "lateWindowHours",
          "closeGraceHours",
          "sampleCapturesPerLineDay",
          "version",
          "updatedAt"
        ],
        "type": "object"
      },
      "NetworkParticipation": {
        "example": {
          "acceptedAt": null,
          "acceptedBy": null,
          "enabled": false,
          "excludedIndustries": [
            "otc_medicine"
          ],
          "selfBillingConsent": false,
          "showNameInReports": false,
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "termsVersion": null,
          "updatedAt": "2026-08-20T09:00:00.000Z",
          "version": 0
        },
        "properties": {
          "acceptedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "acceptedBy": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "excludedIndustries": {
            "items": {
              "enum": [
                "cosmetics",
                "personal_care",
                "food_supplements",
                "otc_medicine",
                "medical_devices",
                "food_beverage",
                "automotive",
                "household",
                "services",
                "retail",
                "other"
              ],
              "type": "string"
            },
            "maxItems": 20,
            "type": "array"
          },
          "selfBillingConsent": {
            "type": "boolean"
          },
          "showNameInReports": {
            "type": "boolean"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "termsVersion": {
            "maxLength": 40,
            "type": [
              "string",
              "null"
            ]
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "tenantId",
          "enabled",
          "showNameInReports",
          "excludedIndustries",
          "selfBillingConsent",
          "termsVersion",
          "acceptedAt",
          "acceptedBy",
          "version",
          "updatedAt"
        ],
        "type": "object"
      },
      "NotificationAudienceReason": {
        "example": {
          "code": "permission",
          "permission": "billing.invoice.read"
        },
        "properties": {
          "code": {
            "enum": [
              "own-account",
              "initiator",
              "owner",
              "manager",
              "permission",
              "member"
            ],
            "type": "string"
          },
          "permission": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "code",
          "permission"
        ],
        "type": "object"
      },
      "NotificationCount": {
        "example": {
          "total": 0,
          "unread": 0
        },
        "properties": {
          "total": {
            "minimum": 0,
            "type": "integer"
          },
          "unread": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "total",
          "unread"
        ],
        "type": "object"
      },
      "NotificationSummaryResponse": {
        "example": {
          "done": {
            "total": 24,
            "unread": 0
          },
          "inbox": {
            "total": 8,
            "unread": 6
          },
          "sources": {
            "billing": {
              "total": 3,
              "unread": 2
            },
            "content": {
              "total": 1,
              "unread": 1
            },
            "operations": {
              "total": 3,
              "unread": 2
            },
            "platform": {
              "total": 0,
              "unread": 0
            },
            "security": {
              "total": 0,
              "unread": 0
            },
            "team": {
              "total": 1,
              "unread": 1
            }
          }
        },
        "properties": {
          "done": {
            "$ref": "#/components/schemas/NotificationCount"
          },
          "inbox": {
            "$ref": "#/components/schemas/NotificationCount"
          },
          "sources": {
            "properties": {
              "billing": {
                "$ref": "#/components/schemas/NotificationCount"
              },
              "content": {
                "$ref": "#/components/schemas/NotificationCount"
              },
              "operations": {
                "$ref": "#/components/schemas/NotificationCount"
              },
              "platform": {
                "$ref": "#/components/schemas/NotificationCount"
              },
              "security": {
                "$ref": "#/components/schemas/NotificationCount"
              },
              "team": {
                "$ref": "#/components/schemas/NotificationCount"
              }
            },
            "type": "object"
          }
        },
        "required": [
          "inbox",
          "done",
          "sources"
        ],
        "type": "object"
      },
      "OAuthClientConsentView": {
        "example": {
          "clientId": "oac_01KQRWJRC0ANZEGE0000000001",
          "clientUri": "https://anzeigen-assistent.demo.local",
          "logoUri": "https://anzeigen-assistent.demo.local/zeichen.png",
          "name": "Anzeigen-Assistent",
          "redirectHost": "127.0.0.1:8765"
        },
        "properties": {
          "clientId": {
            "pattern": "^oac_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "clientUri": {
            "format": "uri",
            "maxLength": 2048,
            "type": [
              "string",
              "null"
            ]
          },
          "logoUri": {
            "format": "uri",
            "maxLength": 2048,
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "redirectHost": {
            "maxLength": 512,
            "type": "string"
          }
        },
        "required": [
          "clientId",
          "name",
          "clientUri",
          "logoUri",
          "redirectHost"
        ],
        "type": "object"
      },
      "OAuthRevokeRequest": {
        "example": {
          "client_id": "oac_01KQRWJRC0ANZEGE0000000001",
          "token": "ort_BEISPIELWERT3333333333333333333333333333333",
          "token_type_hint": "refresh_token"
        },
        "properties": {
          "client_id": {
            "maxLength": 64,
            "type": "string"
          },
          "token": {
            "maxLength": 128,
            "type": "string"
          },
          "token_type_hint": {
            "enum": [
              "access_token",
              "refresh_token"
            ],
            "type": "string"
          }
        },
        "required": [
          "token"
        ],
        "type": "object"
      },
      "OAuthRevokeResponse": {
        "example": {},
        "properties": {},
        "type": "object"
      },
      "OAuthTokenError": {
        "example": {
          "error": "invalid_grant",
          "error_description": "Der Code ist unbekannt, verbraucht oder abgelaufen."
        },
        "properties": {
          "error": {
            "enum": [
              "invalid_request",
              "invalid_client",
              "invalid_grant",
              "unauthorized_client",
              "unsupported_grant_type",
              "invalid_scope"
            ],
            "type": "string"
          },
          "error_description": {
            "type": "string"
          }
        },
        "required": [
          "error",
          "error_description"
        ],
        "type": "object"
      },
      "OAuthTokenRequest": {
        "example": {
          "client_id": "oac_01KQRWJRC0ANZEGE0000000001",
          "code": "ocd_BEISPIELWERT0000000000000000000000000000000",
          "code_verifier": "BEISPIELWERT1111111111111111111111111111111",
          "grant_type": "authorization_code",
          "redirect_uri": "http://127.0.0.1:8765/callback"
        },
        "properties": {
          "client_id": {
            "maxLength": 64,
            "type": "string"
          },
          "code": {
            "maxLength": 128,
            "type": "string"
          },
          "code_verifier": {
            "maxLength": 128,
            "type": "string"
          },
          "grant_type": {
            "maxLength": 64,
            "type": "string"
          },
          "redirect_uri": {
            "maxLength": 2048,
            "type": "string"
          },
          "refresh_token": {
            "maxLength": 128,
            "type": "string"
          },
          "scope": {
            "maxLength": 4000,
            "type": "string"
          }
        },
        "required": [
          "grant_type"
        ],
        "type": "object"
      },
      "OAuthTokenResponse": {
        "example": {
          "access_token": "oat_BEISPIELWERT2222222222222222222222222222222",
          "expires_in": 3600,
          "refresh_token": "ort_BEISPIELWERT3333333333333333333333333333333",
          "scope": "playlist.read scene.read",
          "token_type": "Bearer"
        },
        "properties": {
          "access_token": {
            "type": "string"
          },
          "expires_in": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "refresh_token": {
            "type": "string"
          },
          "scope": {
            "type": "string"
          },
          "token_type": {
            "enum": [
              "Bearer"
            ],
            "type": "string"
          }
        },
        "required": [
          "access_token",
          "token_type",
          "expires_in",
          "refresh_token",
          "scope"
        ],
        "type": "object"
      },
      "OAuthTokenResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/OAuthTokenResponse"
          },
          {
            "$ref": "#/components/schemas/OAuthTokenError"
          }
        ],
        "example": {
          "access_token": "oat_BEISPIELWERT2222222222222222222222222222222",
          "expires_in": 3600,
          "refresh_token": "ort_BEISPIELWERT3333333333333333333333333333333",
          "scope": "playlist.read scene.read",
          "token_type": "Bearer"
        }
      },
      "OpenCampaignReportRequest": {
        "example": {
          "token": "QHarGvKfElKjVULehOA2mGIKOeOFm8Dro1rCfC9r0zQ"
        },
        "properties": {
          "token": {
            "maxLength": 128,
            "minLength": 20,
            "pattern": "^[A-Za-z0-9_-]+$",
            "type": "string"
          }
        },
        "required": [
          "token"
        ],
        "type": "object"
      },
      "OpenCampaignReportResponse": {
        "example": {
          "expiresAt": "2027-01-10T08:00:00.000Z",
          "proofs": [
            {
              "bookingLineName": "Schaufenster und Kasse",
              "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
              "campaignName": "Herbstpflege 2026",
              "closedAt": "2026-10-05T01:25:00.000Z",
              "files": [
                {
                  "id": "pfi_01KZ4T6M80DTA0398000000001",
                  "kind": "pdf",
                  "name": "SZN-2026-000398.pdf",
                  "sha256": "26d9c86976d75e7e9dc3b2367b5b7ae4140eeeec4c018e84041904080a30f352",
                  "sizeBytes": 412386
                },
                {
                  "id": "pfi_01KZ4T6M80DTA0398000000002",
                  "kind": "csv",
                  "name": "SZN-2026-000398.csv",
                  "sha256": "1d38faf8b62d7fc8a93395228da4ff653476b9b4b34f5898d8454b29f9d35887",
                  "sizeBytes": 61904
                },
                {
                  "id": "pfi_01KZ4T6M80DTA0398000000003",
                  "kind": "manifest",
                  "name": "SZN-2026-000398.manifest.json",
                  "sha256": "53a694909a683177e7ecd597c1eca5b3351aaebdc3f90250b01cc6615040fc7c",
                  "sizeBytes": 168215
                }
              ],
              "fulfilment": 0.9502,
              "id": "prf_01KZ4T6M80NCHWS00000000398",
              "issuedAt": "2026-10-05T01:30:12.000Z",
              "kind": "closing",
              "number": "SZN-2026-000398",
              "period": {
                "from": "2026-09-01",
                "timezone": "Europe/Berlin",
                "to": "2026-09-30"
              },
              "signed": true,
              "validPlays": 5608
            }
          ],
          "report": {
            "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
            "advertiserName": "Nordwind Naturkosmetik GmbH",
            "campaigns": [
              {
                "delivery": {
                  "asOf": "2026-10-11",
                  "campaign": {
                    "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
                    "advertiserName": "Nordwind Naturkosmetik GmbH",
                    "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
                    "dayCount": 61,
                    "dayNumber": 42,
                    "endsOn": "2026-10-31",
                    "goal": "plays",
                    "name": "Herbstpflege 2026",
                    "owner": "tenant",
                    "phase": "running",
                    "startsOn": "2026-09-01",
                    "status": "booked",
                    "timezone": "Europe/Berlin"
                  },
                  "contacts": {
                    "byGrade": [],
                    "contactModelVersion": 1,
                    "gradeCIncluded": false,
                    "total": 39640
                  },
                  "coverage": {
                    "availability": {
                      "upper": 0.9642,
                      "value": 0.96
                    },
                    "plannedSeconds": 2592000,
                    "reportingDisplays": 2,
                    "targetedDisplays": 2,
                    "targetedLocations": 1,
                    "visibleSeconds": 2488320
                  },
                  "curve": [
                    {
                      "cumulativeForecast": null,
                      "cumulativeForecastHigh": null,
                      "cumulativeForecastLow": null,
                      "cumulativePlanned": 7980,
                      "cumulativeValid": 7862,
                      "day": "2026-10-09",
                      "plannedPlays": 210,
                      "preview": false,
                      "validPlays": 206
                    },
                    {
                      "cumulativeForecast": null,
                      "cumulativeForecastHigh": null,
                      "cumulativeForecastLow": null,
                      "cumulativePlanned": 8100,
                      "cumulativeValid": 7928,
                      "day": "2026-10-10",
                      "plannedPlays": 120,
                      "preview": false,
                      "validPlays": 66
                    },
                    {
                      "cumulativeForecast": 8134,
                      "cumulativeForecastHigh": 8141,
                      "cumulativeForecastLow": 8113,
                      "cumulativePlanned": 8310,
                      "cumulativeValid": null,
                      "day": "2026-10-12",
                      "plannedPlays": 210,
                      "preview": true,
                      "validPlays": null
                    },
                    {
                      "cumulativeForecast": 12333,
                      "cumulativeForecastHigh": 12480,
                      "cumulativeForecastLow": 11890,
                      "cumulativePlanned": 12600,
                      "cumulativeValid": null,
                      "day": "2026-10-31",
                      "plannedPlays": 120,
                      "preview": true,
                      "validPlays": null
                    }
                  ],
                  "distribution": {
                    "daypart": [
                      {
                        "airtimeSeconds": 79280,
                        "contacts": 39640,
                        "detail": null,
                        "displays": 2,
                        "key": "other",
                        "label": "Sonstige",
                        "locations": 1,
                        "merged": true,
                        "share": 1,
                        "validPlays": 7928
                      }
                    ],
                    "location": [
                      {
                        "airtimeSeconds": 79280,
                        "contacts": 39640,
                        "detail": null,
                        "displays": 2,
                        "key": "other",
                        "label": "Sonstige",
                        "locations": 1,
                        "merged": true,
                        "share": 1,
                        "validPlays": 7928
                      }
                    ],
                    "placement": [
                      {
                        "airtimeSeconds": 79280,
                        "contacts": 39640,
                        "detail": null,
                        "displays": 2,
                        "key": "other",
                        "label": "Sonstige",
                        "locations": 1,
                        "merged": true,
                        "share": 1,
                        "validPlays": 7928
                      }
                    ],
                    "region": [
                      {
                        "airtimeSeconds": 79280,
                        "contacts": 39640,
                        "detail": null,
                        "displays": 2,
                        "key": "other",
                        "label": "Sonstige",
                        "locations": 1,
                        "merged": true,
                        "share": 1,
                        "validPlays": 7928
                      }
                    ],
                    "venueType": [
                      {
                        "airtimeSeconds": 79280,
                        "contacts": 39640,
                        "detail": null,
                        "displays": 2,
                        "key": "other",
                        "label": "Sonstige",
                        "locations": 1,
                        "merged": true,
                        "share": 1,
                        "validPlays": 7928
                      }
                    ]
                  },
                  "failures": {
                    "byReason": [
                      {
                        "plays": 146,
                        "reason": "too_short",
                        "share": 0.5141
                      },
                      {
                        "plays": 100,
                        "reason": "panel_off",
                        "share": 0.3521
                      },
                      {
                        "plays": 38,
                        "reason": "render_error",
                        "share": 0.1338
                      }
                    ],
                    "invalidPlays": 284,
                    "openGapPlace": "Schaufenster Eingang, Hamburg",
                    "openGapPlays": 54,
                    "panelUnconfirmedPlace": "Kasse 2",
                    "panelUnconfirmedPlays": 3316,
                    "shareOfPlanned": 0.0351
                  },
                  "from": "2026-09-01",
                  "lines": [
                    {
                      "bookingLineId": "bkl_01KXR4Q9T0BKNG000000000001",
                      "endsOn": "2026-10-31",
                      "name": "Schaufenster und Kasse",
                      "panelUnconfirmedShare": 0.4183,
                      "reachedDisplays": 2,
                      "startsOn": "2026-09-01",
                      "state": {
                        "commitment": {
                          "quantity": 12000,
                          "unit": "plays"
                        },
                        "delivered": {
                          "airtimeSeconds": 79280,
                          "contacts": 39640,
                          "plays": 8212,
                          "validPlays": 7928
                        },
                        "deliveredInUnit": 7928,
                        "expectedShare": 0.6429,
                        "forecast": {
                          "at": "2026-10-31",
                          "high": 12480,
                          "highShare": 1.04,
                          "low": 11890,
                          "lowShare": 0.9908,
                          "share": 1.0278,
                          "value": 12333
                        },
                        "fulfilment": 0.6607,
                        "pacing": 1.0277,
                        "plannedPlaysToDate": 8100,
                        "plannedPlaysTotal": 12600,
                        "risk": "warning",
                        "riskPlace": "Schaufenster Eingang, Hamburg",
                        "riskReason": "reportingGaps",
                        "riskText": "Schaufenster Eingang, Hamburg meldet sich nicht"
                      },
                      "targetedDisplays": 2
                    }
                  ],
                  "method": {
                    "contactModel": 1,
                    "networkParameters": null,
                    "validityRule": 1
                  },
                  "notices": [
                    {
                      "code": "openGaps",
                      "params": {
                        "deadline": "2026-10-17T09:00:00.000Z",
                        "hours": 3
                      },
                      "text": "3 Planstunden sind noch nicht gemeldet und können bis 17.10.2026, 11:00 nachkommen. Die Zahlen können noch steigen."
                    },
                    {
                      "code": "smallCellsMerged",
                      "params": {
                        "count": 13,
                        "min": 3
                      },
                      "text": "13 Zellen mit weniger als 3 Standorten sind unter Sonstige zusammengefasst."
                    }
                  ],
                  "periods": [
                    {
                      "closeDueOn": "2026-10-09",
                      "closes": [
                        {
                          "closedAt": "2026-10-09T04:00:00.000Z",
                          "kind": "closing",
                          "number": "NW-2026-09-0001",
                          "periodCloseId": "pcl_01KYAZ4M80PRFNG00000000001",
                          "signedAt": "2026-10-09T04:00:03.000Z"
                        }
                      ],
                      "from": "2026-09-01",
                      "month": "2026-09",
                      "plannedPlays": 6000,
                      "state": "closed",
                      "to": "2026-09-30",
                      "validPlays": 5874
                    },
                    {
                      "closeDueOn": "2026-11-09",
                      "closes": [],
                      "from": "2026-10-01",
                      "month": "2026-10",
                      "plannedPlays": 6600,
                      "state": "interim",
                      "to": "2026-10-31",
                      "validPlays": 2054
                    }
                  ],
                  "summary": {
                    "commitment": {
                      "quantity": 12000,
                      "unit": "plays"
                    },
                    "delivered": {
                      "airtimeSeconds": 79280,
                      "contacts": 39640,
                      "plays": 8212,
                      "validPlays": 7928
                    },
                    "deliveredInUnit": 7928,
                    "expectedShare": 0.6429,
                    "forecast": {
                      "at": "2026-10-31",
                      "high": 12480,
                      "highShare": 1.04,
                      "low": 11890,
                      "lowShare": 0.9908,
                      "share": 1.0278,
                      "value": 12333
                    },
                    "fulfilment": 0.6607,
                    "pacing": 1.0277,
                    "plannedPlaysToDate": 8100,
                    "plannedPlaysTotal": 12600,
                    "risk": "warning",
                    "riskPlace": "Schaufenster Eingang, Hamburg",
                    "riskReason": "reportingGaps",
                    "riskText": "Schaufenster Eingang, Hamburg meldet sich nicht"
                  },
                  "to": "2026-10-11"
                },
                "locations": [
                  {
                    "airtimeSeconds": 46120,
                    "city": "Hamburg",
                    "displays": 1,
                    "label": "Hamburg (227) · Apotheke",
                    "named": false,
                    "postalArea": "227",
                    "validPlays": 4612,
                    "venueType": "pharmacy"
                  },
                  {
                    "airtimeSeconds": 33160,
                    "city": null,
                    "displays": 1,
                    "label": "Ohne Angabe",
                    "named": false,
                    "postalArea": null,
                    "validPlays": 3316,
                    "venueType": null
                  }
                ]
              }
            ],
            "computedAt": "2026-10-12T05:30:00.000Z",
            "from": "2026-09-01",
            "notices": [
              {
                "code": "openGaps",
                "params": {
                  "deadline": "2026-10-17T09:00:00.000Z",
                  "hours": 3
                },
                "text": "3 Planstunden sind noch nicht gemeldet und können bis 17.10.2026, 11:00 nachkommen. Die Zahlen können noch steigen."
              },
              {
                "code": "smallCellsMerged",
                "params": {
                  "count": 13,
                  "min": 3
                },
                "text": "13 Zellen mit weniger als 3 Standorten sind unter Sonstige zusammengefasst."
              }
            ],
            "owner": "tenant",
            "timezone": "Europe/Berlin",
            "to": "2026-10-11"
          }
        },
        "properties": {
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "proofs": {
            "items": {
              "$ref": "#/components/schemas/SharedProof"
            },
            "type": "array"
          },
          "report": {
            "$ref": "#/components/schemas/AdvertiserReport"
          }
        },
        "required": [
          "expiresAt",
          "report",
          "proofs"
        ],
        "type": "object"
      },
      "OpeningHours": {
        "example": {
          "specialDays": [
            {
              "closed": false,
              "endDate": "2026-12-24",
              "label": "Heiligabend",
              "startDate": "2026-12-24",
              "windows": [
                {
                  "closes": "12:00",
                  "opens": "08:30"
                }
              ]
            },
            {
              "closed": true,
              "endDate": "2027-01-02",
              "label": "Inventur",
              "startDate": "2027-01-02",
              "windows": []
            }
          ],
          "weekly": {
            "fri": [
              {
                "closes": "13:00",
                "opens": "08:30"
              },
              {
                "closes": "18:30",
                "opens": "14:00"
              }
            ],
            "mon": [
              {
                "closes": "13:00",
                "opens": "08:30"
              },
              {
                "closes": "18:30",
                "opens": "14:00"
              }
            ],
            "sat": [
              {
                "closes": "14:00",
                "opens": "09:00"
              }
            ],
            "sun": [],
            "thu": [
              {
                "closes": "13:00",
                "opens": "08:30"
              },
              {
                "closes": "18:30",
                "opens": "14:00"
              }
            ],
            "tue": [
              {
                "closes": "13:00",
                "opens": "08:30"
              },
              {
                "closes": "18:30",
                "opens": "14:00"
              }
            ],
            "wed": [
              {
                "closes": "13:00",
                "opens": "08:30"
              }
            ]
          }
        },
        "properties": {
          "specialDays": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/OpeningSpecialDay"
            },
            "maxItems": 100,
            "type": "array"
          },
          "weekly": {
            "$ref": "#/components/schemas/OpeningWeek"
          }
        },
        "required": [
          "weekly"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "OpeningSpecialDay": {
        "example": {
          "closed": false,
          "endDate": "2026-12-24",
          "label": "Heiligabend",
          "startDate": "2026-12-24",
          "windows": [
            {
              "closes": "12:00",
              "opens": "08:30"
            }
          ]
        },
        "properties": {
          "closed": {
            "type": "boolean"
          },
          "endDate": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "label": {
            "maxLength": 60,
            "minLength": 1,
            "type": "string"
          },
          "startDate": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "windows": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/OpeningWindow"
            },
            "maxItems": 6,
            "type": "array"
          }
        },
        "required": [
          "startDate",
          "endDate",
          "label",
          "closed"
        ],
        "type": "object"
      },
      "OpeningWeek": {
        "example": {
          "fri": [
            {
              "closes": "13:00",
              "opens": "08:30"
            },
            {
              "closes": "18:30",
              "opens": "14:00"
            }
          ],
          "mon": [
            {
              "closes": "13:00",
              "opens": "08:30"
            },
            {
              "closes": "18:30",
              "opens": "14:00"
            }
          ],
          "sat": [
            {
              "closes": "14:00",
              "opens": "09:00"
            }
          ],
          "sun": [],
          "thu": [
            {
              "closes": "13:00",
              "opens": "08:30"
            },
            {
              "closes": "18:30",
              "opens": "14:00"
            }
          ],
          "tue": [
            {
              "closes": "13:00",
              "opens": "08:30"
            },
            {
              "closes": "18:30",
              "opens": "14:00"
            }
          ],
          "wed": [
            {
              "closes": "13:00",
              "opens": "08:30"
            }
          ]
        },
        "properties": {
          "fri": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/OpeningWindow"
            },
            "maxItems": 6,
            "type": "array"
          },
          "mon": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/OpeningWindow"
            },
            "maxItems": 6,
            "type": "array"
          },
          "sat": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/OpeningWindow"
            },
            "maxItems": 6,
            "type": "array"
          },
          "sun": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/OpeningWindow"
            },
            "maxItems": 6,
            "type": "array"
          },
          "thu": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/OpeningWindow"
            },
            "maxItems": 6,
            "type": "array"
          },
          "tue": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/OpeningWindow"
            },
            "maxItems": 6,
            "type": "array"
          },
          "wed": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/OpeningWindow"
            },
            "maxItems": 6,
            "type": "array"
          }
        },
        "type": "object"
      },
      "OpeningWindow": {
        "example": {
          "closes": "13:00",
          "opens": "08:30"
        },
        "properties": {
          "closes": {
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
            "type": "string"
          },
          "opens": {
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
            "type": "string"
          }
        },
        "required": [
          "opens",
          "closes"
        ],
        "type": "object"
      },
      "OwnRevenueStatement": {
        "example": {
          "allocations": [
            {
              "basisKind": "valid_plays",
              "basisQuantity": 3850,
              "campaignId": "acp_01KXR4P1Q0NETZKMPGN0000001",
              "campaignName": "Kranich Erkältungszeit",
              "computedAt": "2026-11-10T03:00:12.000Z",
              "month": "2026-10",
              "networkParametersVersion": 2,
              "priceCents": 1200,
              "pricingModel": "per_thousand_plays",
              "revenueCents": 4620,
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            },
            {
              "basisKind": "valid_airtime_seconds",
              "basisQuantity": 12600,
              "campaignId": "acp_01KXR4P1Q0NETZKMPGN0000002",
              "campaignName": "Winterhaut 2026",
              "computedAt": "2026-11-10T03:00:12.000Z",
              "month": "2026-10",
              "networkParametersVersion": 2,
              "priceCents": 90000,
              "pricingModel": "flat",
              "revenueCents": 2480,
              "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
            }
          ],
          "approvedAt": "2026-11-10T09:40:00.000Z",
          "blockers": [],
          "computedAt": "2026-11-10T03:00:12.000Z",
          "creditCapPercent": 100,
          "creditCents": 7100,
          "creditDocument": {
            "grossCents": 8449,
            "issuedAt": "2026-11-10T10:12:00.000Z",
            "netCents": 7100,
            "number": "WG-2026-0001",
            "vatCents": 1349,
            "vatRatePercent": 19
          },
          "documentUrl": "https://s3.demo.local/signage-medien/billing/self-billed-credits/tnt_01KERPXZM0ADERAPTHEKE00001/WG-2026-0001.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=300&X-Amz-Signature=5e2a91c0d4b7f318",
          "id": "rvs_01KZ4E2M90ERTRAG0000000001",
          "issuedAt": "2026-11-10T10:12:00.000Z",
          "month": "2026-10",
          "networkParametersVersion": 2,
          "notes": [],
          "revenueCents": 7100,
          "settlement": null,
          "status": "issued",
          "subscriptionNetCents": 10900,
          "szeneraShareCents": 0,
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "tenantShareAboveCapPercent": 40,
          "updatedAt": "2026-11-10T10:12:00.000Z",
          "version": 3
        },
        "properties": {
          "allocations": {
            "items": {
              "$ref": "#/components/schemas/RevenueAllocation"
            },
            "type": "array"
          },
          "approvedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "blockers": {
            "items": {
              "enum": [
                "billing-profile-missing",
                "vat-scheme-unknown",
                "supplier-tax-id-missing",
                "supplier-abroad",
                "credit-zero"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "computedAt": {
            "format": "date-time",
            "type": "string"
          },
          "creditCapPercent": {
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          },
          "creditCents": {
            "minimum": 0,
            "type": "integer"
          },
          "creditDocument": {
            "$ref": "#/components/schemas/RevenueCreditDocument"
          },
          "documentUrl": {
            "format": "uri",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "pattern": "^rvs_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "issuedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "month": {
            "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
            "type": "string"
          },
          "networkParametersVersion": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "notes": {
            "items": {
              "$ref": "#/components/schemas/RevenueStatementNote"
            },
            "type": "array"
          },
          "revenueCents": {
            "minimum": 0,
            "type": "integer"
          },
          "settlement": {
            "$ref": "#/components/schemas/RevenueSettlement"
          },
          "status": {
            "enum": [
              "draft",
              "approved",
              "issued",
              "settled",
              "no_consent"
            ],
            "type": "string"
          },
          "subscriptionNetCents": {
            "minimum": 0,
            "type": "integer"
          },
          "szeneraShareCents": {
            "minimum": 0,
            "type": "integer"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "tenantShareAboveCapPercent": {
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "tenantId",
          "month",
          "status",
          "revenueCents",
          "subscriptionNetCents",
          "creditCapPercent",
          "tenantShareAboveCapPercent",
          "creditCents",
          "szeneraShareCents",
          "networkParametersVersion",
          "blockers",
          "notes",
          "computedAt",
          "approvedAt",
          "issuedAt",
          "creditDocument",
          "settlement",
          "version",
          "updatedAt",
          "allocations",
          "documentUrl"
        ],
        "type": "object"
      },
      "PasswordLoginRequest": {
        "example": {
          "audience": "tenant",
          "deviceFingerprint": {
            "acceptLanguage": "de-DE,de;q=0.9",
            "geoip": "Hamburg, DE",
            "screenResolution": "2560x1440",
            "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0 Safari/537.36"
          },
          "email": "owner@demo.local",
          "password": "kennwort-platzhalter"
        },
        "properties": {
          "audience": {
            "enum": [
              "tenant",
              "operator"
            ],
            "type": "string"
          },
          "deviceFingerprint": {
            "properties": {
              "acceptLanguage": {
                "type": "string"
              },
              "geoip": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "screenResolution": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "userAgent": {
                "type": "string"
              }
            },
            "required": [
              "userAgent",
              "acceptLanguage",
              "screenResolution",
              "geoip"
            ],
            "type": "object"
          },
          "email": {
            "format": "email",
            "maxLength": 254,
            "type": "string"
          },
          "password": {
            "type": "string"
          }
        },
        "required": [
          "email",
          "password",
          "audience",
          "deviceFingerprint"
        ],
        "type": "object"
      },
      "PaymentSetupIntent": {
        "example": {
          "clientSecret": "seti_demo_adler_apotheke_0001_secret_9f2c",
          "id": "seti_demo_adler_apotheke_0001",
          "publishableKey": "pk_demo_szenera",
          "returnUrl": "https://portal.demo.local/einstellungen/abrechnung"
        },
        "properties": {
          "clientSecret": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "id": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "publishableKey": {
            "maxLength": 255,
            "type": "string"
          },
          "returnUrl": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "id",
          "clientSecret",
          "publishableKey",
          "returnUrl"
        ],
        "type": "object"
      },
      "PlaceBillingOrderRequest": {
        "example": {
          "acceptedDocuments": [
            {
              "key": "terms",
              "path": "/agb",
              "version": "2026-08-22"
            },
            {
              "key": "dpa",
              "path": "/avv",
              "version": "2026-08-22"
            },
            {
              "key": "privacy",
              "path": "/datenschutz",
              "version": "2026-08-22"
            }
          ],
          "actsAsBusiness": true,
          "draft": {
            "apps": [
              "pharmacies-on-duty"
            ],
            "billingCycle": "monthly",
            "displays": 5,
            "hardware": [],
            "packageCode": "PRO",
            "videoWalls": 1
          },
          "locale": "de-DE",
          "previewToken": "bpv_01KERPXZM0VRSCHA0000000000"
        },
        "properties": {
          "acceptedDocuments": {
            "items": {
              "$ref": "#/components/schemas/LegalAcceptedDocument"
            },
            "maxItems": 10,
            "minItems": 1,
            "type": "array"
          },
          "actsAsBusiness": {
            "enum": [
              true
            ],
            "type": "boolean"
          },
          "draft": {
            "$ref": "#/components/schemas/BillingDraft"
          },
          "locale": {
            "maxLength": 10,
            "minLength": 2,
            "type": "string"
          },
          "previewToken": {
            "pattern": "^bpv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "draft",
          "previewToken",
          "acceptedDocuments",
          "actsAsBusiness",
          "locale"
        ],
        "type": "object"
      },
      "PlaceBillingOrderResponse": {
        "example": {
          "creditNote": null,
          "dueToday": {
            "grossCents": 10849,
            "netCents": 9117,
            "vatCents": 1732
          },
          "effectiveAt": "2026-08-16T09:15:00.000Z",
          "hardwareOrderNumber": null,
          "immediateCharge": null,
          "invoiceAmount": null,
          "invoiceId": "inv_01KYXGSD80RECHNNG000000002",
          "invoiceNumber": "INV-2026-0044",
          "lines": [
            {
              "displayName": "Paket Pro",
              "kind": "recurring",
              "netAmountCents": 9620,
              "period": {
                "end": "2026-09-16T09:15:00.000Z",
                "start": "2026-08-16T09:15:00.000Z"
              },
              "quantity": 5,
              "skuCode": "PKG-PRO",
              "specialConditionUntil": null,
              "unitPriceCents": 1924
            },
            {
              "displayName": "Notdienst-Anzeige",
              "kind": "recurring",
              "netAmountCents": 900,
              "period": {
                "end": "2026-09-16T09:15:00.000Z",
                "start": "2026-08-16T09:15:00.000Z"
              },
              "quantity": 1,
              "skuCode": "APP-pharmacies-on-duty",
              "specialConditionUntil": null,
              "unitPriceCents": 900
            },
            {
              "displayName": "Leinwand",
              "kind": "recurring",
              "netAmountCents": 1900,
              "period": {
                "end": "2026-09-16T09:15:00.000Z",
                "start": "2026-08-16T09:15:00.000Z"
              },
              "quantity": 1,
              "skuCode": "LIZ-VIDEOWALL",
              "specialConditionUntil": null,
              "unitPriceCents": 1900
            },
            {
              "displayName": "Paket Starter — Gutschrift für 16 nicht verbrauchte Tage",
              "kind": "credit",
              "netAmountCents": -1893,
              "period": {
                "end": "2026-08-31T23:59:59.000Z",
                "start": "2026-08-01T00:00:00.000Z"
              },
              "quantity": -3,
              "skuCode": "PKG-START",
              "specialConditionUntil": null,
              "unitPriceCents": 631
            },
            {
              "displayName": "Notdienst-Anzeige — Gutschrift für 16 nicht verbrauchte Tage",
              "kind": "credit",
              "netAmountCents": -453,
              "period": {
                "end": "2026-08-31T23:59:59.000Z",
                "start": "2026-08-01T00:00:00.000Z"
              },
              "quantity": -1,
              "skuCode": "APP-pharmacies-on-duty",
              "specialConditionUntil": null,
              "unitPriceCents": 453
            },
            {
              "displayName": "Leinwand — Gutschrift für 16 nicht verbrauchte Tage",
              "kind": "credit",
              "netAmountCents": -957,
              "period": {
                "end": "2026-08-31T23:59:59.000Z",
                "start": "2026-08-01T00:00:00.000Z"
              },
              "quantity": -1,
              "skuCode": "LIZ-VIDEOWALL",
              "specialConditionUntil": null,
              "unitPriceCents": 957
            }
          ],
          "orderNumber": "BST-2026-0311",
          "overview": {
            "apps": [
              {
                "appId": "pharmacies-on-duty",
                "booked": true,
                "displayName": "Notdienst-Anzeige",
                "effectiveMonthlyPriceCents": 900,
                "grandfathered": false,
                "installed": true,
                "monthlyPriceCents": 900,
                "pendingFailedAt": null,
                "pendingQuantity": null,
                "skuCode": "APP-pharmacies-on-duty"
              }
            ],
            "billingCycle": "monthly",
            "cancelAtPeriodEnd": false,
            "cancelEffectiveAt": null,
            "cancelScheduledAt": null,
            "currentPeriodEnd": "2026-09-16T09:15:00.000Z",
            "currentPeriodStart": "2026-08-16T09:15:00.000Z",
            "defaultPaymentMethod": null,
            "desiredPackage": null,
            "dunning": null,
            "graceUntil": null,
            "graceWindowEnd": null,
            "invoiceWayApproved": true,
            "legacyItems": [
              {
                "description": "Anmeldung über das Firmen-Login der Organisation (SSO) — jetzt Teil von Enterprise.",
                "displayName": "Enterprise-Anmeldung",
                "effectiveMonthlyPriceCents": 0,
                "grandfathered": true,
                "pendingFailedAt": null,
                "pendingQuantity": null,
                "quantity": 1,
                "skuCode": "ADDON-SSO"
              }
            ],
            "licenses": {
              "booked": 5,
              "conflictUntil": null,
              "free": 1,
              "frozen": 0,
              "pendingFailedAt": null,
              "pendingQuantity": null,
              "used": 4
            },
            "nextInvoice": {
              "blockers": [],
              "credit": null,
              "currency": "EUR",
              "dueToday": {
                "grossCents": 0,
                "netCents": 0,
                "vatCents": 0
              },
              "effectiveAt": "2026-09-16T09:15:00.000Z",
              "endsTrial": false,
              "lines": [
                {
                  "displayName": "Paket Pro",
                  "kind": "recurring",
                  "netAmountCents": 9620,
                  "period": null,
                  "quantity": 5,
                  "skuCode": "PKG-PRO",
                  "specialConditionUntil": null,
                  "unitPriceCents": 1924
                },
                {
                  "displayName": "Notdienst-Anzeige",
                  "kind": "recurring",
                  "netAmountCents": 900,
                  "period": null,
                  "quantity": 1,
                  "skuCode": "APP-pharmacies-on-duty",
                  "specialConditionUntil": null,
                  "unitPriceCents": 900
                },
                {
                  "displayName": "Leinwand",
                  "kind": "recurring",
                  "netAmountCents": 1900,
                  "period": null,
                  "quantity": 1,
                  "skuCode": "LIZ-VIDEOWALL",
                  "specialConditionUntil": null,
                  "unitPriceCents": 1900
                }
              ],
              "nextInvoiceAt": "2026-09-16T09:15:00.000Z",
              "nextPeriod": {
                "grossCents": 14780,
                "netCents": 12420,
                "vatCents": 2360
              },
              "partialCancellation": null,
              "pendingBillingCycle": null,
              "previewedAt": "2026-08-16T09:15:00.000Z",
              "previewToken": "bpv_01KERPXZM0DANACH0000000000",
              "rule": "R2",
              "targetState": [
                {
                  "carriesDisplays": true,
                  "currentQuantity": 5,
                  "outcome": "unchanged",
                  "packageCode": "PRO",
                  "quantity": 5,
                  "skuCode": "PKG-PRO"
                },
                {
                  "carriesDisplays": false,
                  "currentQuantity": 1,
                  "outcome": "unchanged",
                  "packageCode": null,
                  "quantity": 1,
                  "skuCode": "APP-pharmacies-on-duty"
                },
                {
                  "carriesDisplays": false,
                  "currentQuantity": 1,
                  "outcome": "unchanged",
                  "packageCode": null,
                  "quantity": 1,
                  "skuCode": "LIZ-VIDEOWALL"
                }
              ],
              "tax": {
                "category": "S",
                "exemptionCode": null,
                "hintKey": null,
                "ratePercent": 19,
                "requiresRecipientVatId": false,
                "ruleId": "de-domestic"
              },
              "tierScale": null,
              "trialCredit": null,
              "unchanged": true,
              "usedDisplays": 4,
              "validUntil": "2026-08-16T09:45:00.000Z"
            },
            "overdueCutoff": null,
            "packageCode": "PRO",
            "packages": [
              {
                "available": true,
                "code": "START",
                "current": false,
                "displayName": "Starter",
                "effectiveMonthlyPriceCents": 1490,
                "listPriceCents": 1490,
                "maxDisplays": null,
                "minDisplays": 1,
                "monthlyPriceCents": 1490,
                "pending": false,
                "skuCode": "PKG-START"
              },
              {
                "available": true,
                "code": "PRO",
                "current": true,
                "displayName": "Pro",
                "effectiveMonthlyPriceCents": 2290,
                "listPriceCents": 2290,
                "maxDisplays": null,
                "minDisplays": 1,
                "monthlyPriceCents": 2290,
                "pending": false,
                "skuCode": "PKG-PRO"
              },
              {
                "available": true,
                "code": "PREMIUM",
                "current": false,
                "displayName": "Premium",
                "effectiveMonthlyPriceCents": 2790,
                "listPriceCents": 2790,
                "maxDisplays": null,
                "minDisplays": 5,
                "monthlyPriceCents": 2790,
                "pending": false,
                "skuCode": "PKG-PREMIUM"
              },
              {
                "available": false,
                "code": "ENTERPRISE",
                "current": false,
                "displayName": "Enterprise",
                "effectiveMonthlyPriceCents": 0,
                "listPriceCents": 0,
                "maxDisplays": null,
                "minDisplays": 1,
                "monthlyPriceCents": 0,
                "pending": false,
                "skuCode": "PKG-ENTERPRISE"
              }
            ],
            "paymentWay": {
              "kind": "invoice",
              "nextChargeAt": null,
              "paymentTermsDays": 14
            },
            "paymentWaySecured": true,
            "pendingBillingCycle": null,
            "pendingChangeEffectiveAt": null,
            "pendingDisplays": null,
            "pendingFailedAt": null,
            "pendingPackageCode": null,
            "pricing": {
              "billableQuantity": 5,
              "currency": "EUR",
              "currentUnitPriceCents": 1924,
              "tiers": [],
              "vatRatePercent": 19,
              "yearlyDiscountPercent": 15
            },
            "readiness": {
              "blockers": []
            },
            "source": "invoice",
            "specialConditionUntil": null,
            "status": "active",
            "tenantStatus": "active",
            "trialEndsAt": null,
            "videoWalls": {
              "available": true,
              "booked": 1,
              "displayName": "Leinwand",
              "effectiveMonthlyPriceCents": 1900,
              "grandfathered": false,
              "monthlyPriceCents": 1900,
              "pendingFailedAt": null,
              "pendingQuantity": null,
              "skuCode": "LIZ-VIDEOWALL",
              "used": 1
            }
          },
          "rule": "R1"
        },
        "properties": {
          "creditNote": {
            "default": null,
            "properties": {
              "amountCents": {
                "minimum": 0,
                "type": "integer"
              },
              "invoiceId": {
                "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "invoiceNumber": {
                "maxLength": 20,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "invoiceId",
              "invoiceNumber",
              "amountCents"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "dueToday": {
            "$ref": "#/components/schemas/BillingAmountBlock"
          },
          "effectiveAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "hardwareOrderNumber": {
            "maxLength": 30,
            "type": [
              "string",
              "null"
            ]
          },
          "immediateCharge": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BillingImmediateCharge"
              },
              {
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "invoiceAmount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BillingAmountBlock"
              },
              {
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "invoiceId": {
            "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "invoiceNumber": {
            "maxLength": 20,
            "type": [
              "string",
              "null"
            ]
          },
          "lines": {
            "items": {
              "$ref": "#/components/schemas/BillingPreviewLine"
            },
            "type": "array"
          },
          "orderNumber": {
            "pattern": "^BST-\\d{4}-\\d{4,}$",
            "type": "string"
          },
          "overview": {
            "$ref": "#/components/schemas/GetLicensingOverviewResponse"
          },
          "rule": {
            "default": null,
            "enum": [
              "R1",
              "R2"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "orderNumber",
          "overview",
          "invoiceId",
          "invoiceNumber",
          "invoiceAmount",
          "immediateCharge",
          "hardwareOrderNumber",
          "lines",
          "dueToday"
        ],
        "type": "object"
      },
      "PlaceItem": {
        "example": {
          "id": "01BYE5RZ6QN3ZWBTUFOFD3IFTLGRSTUVW",
          "isFolder": false,
          "mimeType": "image/jpeg",
          "modifiedAt": "2026-07-29T16:40:00.000Z",
          "name": "Aktion Oktober.jpg",
          "sizeBytes": 2214880,
          "thumbnailUrl": "https://graph.demo.local/thumbnails/aktion-oktober?token=kurzlebig"
        },
        "properties": {
          "id": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "isFolder": {
            "type": "boolean"
          },
          "mimeType": {
            "maxLength": 255,
            "minLength": 1,
            "type": [
              "string",
              "null"
            ]
          },
          "modifiedAt": {
            "format": "date-time",
            "type": "string"
          },
          "name": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "sizeBytes": {
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "thumbnailUrl": {
            "format": "uri",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "isFolder",
          "sizeBytes",
          "modifiedAt",
          "mimeType",
          "thumbnailUrl"
        ],
        "type": "object"
      },
      "PlanPod": {
        "example": {
          "networkPositions": 1,
          "offsetMs": 35000,
          "podItemId": "pli_01KXR6B7D8ENTRY00000000005",
          "positions": 3,
          "spotDurationMs": 10000
        },
        "properties": {
          "networkPositions": {
            "maximum": 12,
            "minimum": 0,
            "type": "integer"
          },
          "offsetMs": {
            "minimum": 0,
            "type": "integer"
          },
          "podItemId": {
            "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "positions": {
            "maximum": 12,
            "minimum": 1,
            "type": "integer"
          },
          "spotDurationMs": {
            "enum": [
              5000,
              10000,
              15000,
              20000,
              30000
            ],
            "type": "integer"
          }
        },
        "required": [
          "podItemId",
          "offsetMs",
          "positions",
          "networkPositions",
          "spotDurationMs"
        ],
        "type": "object"
      },
      "PlayerScreenshotEntry": {
        "example": {
          "bytes": 1,
          "capturedAt": "2026-01-01T00:00:00.000Z",
          "content": {
            "assetId": "ast_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "bookingLineId": "bkl_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "creativeId": "crv_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "playId": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "playlistItemId": "pli_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "sceneId": "scn_01ARZ3NDEKTSV4RRFFQ69G5FAV"
          },
          "expiresAt": "2099-12-31T23:59:59.000Z",
          "height": 1,
          "id": "pss_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "lastCapturedAt": "2026-01-01T00:00:00.000Z",
          "playerId": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "repeatCount": 1,
          "screenIndex": 0,
          "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
          "thumbnailUrl": "https://example.com",
          "trigger": "interval",
          "url": "https://example.com",
          "width": 1
        },
        "properties": {
          "bytes": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "capturedAt": {
            "format": "date-time",
            "type": "string"
          },
          "content": {
            "$ref": "#/components/schemas/ScreenshotContent"
          },
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "height": {
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "id": {
            "pattern": "^pss_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "lastCapturedAt": {
            "format": "date-time",
            "type": "string"
          },
          "playerId": {
            "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "repeatCount": {
            "minimum": 1,
            "type": "integer"
          },
          "screenIndex": {
            "maximum": 7,
            "minimum": 0,
            "type": "integer"
          },
          "sha256": {
            "pattern": "^[a-f0-9]{64}$",
            "type": "string"
          },
          "thumbnailUrl": {
            "format": "uri",
            "type": [
              "string",
              "null"
            ]
          },
          "trigger": {
            "enum": [
              "interval",
              "content_change",
              "proof_sample",
              "on_demand"
            ],
            "type": "string"
          },
          "url": {
            "format": "uri",
            "type": "string"
          },
          "width": {
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "playerId",
          "screenIndex",
          "capturedAt",
          "lastCapturedAt",
          "repeatCount",
          "trigger",
          "content",
          "width",
          "height",
          "bytes",
          "sha256",
          "expiresAt",
          "url",
          "thumbnailUrl"
        ],
        "type": "object"
      },
      "PreviewBookingLineRequest": {
        "example": {
          "bookingLineId": null,
          "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
          "commitment": {
            "quantity": 1800,
            "unit": "plays"
          },
          "creatives": [
            {
              "creativeId": "crv_01KXR4RZ80MTV0000000000001",
              "weight": 1
            }
          ],
          "dayparts": [
            {
              "daysOfWeek": [
                1,
                2,
                3,
                4,
                5
              ],
              "timeWindows": [
                {
                  "endTime": "18:30:00",
                  "startTime": "08:00:00"
                }
              ]
            },
            {
              "daysOfWeek": [
                6
              ],
              "timeWindows": [
                {
                  "endTime": "13:00:00",
                  "startTime": "09:00:00"
                }
              ]
            }
          ],
          "endsOn": "2026-10-25",
          "minZoneSharePermille": 250,
          "slotsPerPodTenths": 10,
          "spotDurationMs": 10000,
          "startsOn": "2026-10-05",
          "targeting": {
            "locationIds": [],
            "placements": [],
            "playerIds": [
              "ply_01KHK34MQ0SCREEN0000000001"
            ],
            "regionCodes": [],
            "tagIds": [],
            "tenantIds": [],
            "venueTypes": []
          }
        },
        "properties": {
          "bookingLineId": {
            "default": null,
            "pattern": "^bkl_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "campaignId": {
            "pattern": "^acp_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "commitment": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BookingCommitment"
              },
              {
                "default": null
              }
            ]
          },
          "creatives": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/BookingCreative"
            },
            "maxItems": 20,
            "type": "array"
          },
          "dayparts": {
            "default": [],
            "items": {
              "properties": {
                "daysOfWeek": {
                  "items": {
                    "maximum": 6,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "maxItems": 7,
                  "minItems": 1,
                  "type": "array"
                },
                "timeWindows": {
                  "items": {
                    "properties": {
                      "endTime": {
                        "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                        "type": "string"
                      },
                      "startTime": {
                        "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "startTime",
                      "endTime"
                    ],
                    "type": "object"
                  },
                  "maxItems": 8,
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "daysOfWeek",
                "timeWindows"
              ],
              "type": "object"
            },
            "maxItems": 8,
            "type": "array"
          },
          "endsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "minZoneSharePermille": {
            "default": 250,
            "maximum": 1000,
            "minimum": 0,
            "type": "integer"
          },
          "slotsPerPodTenths": {
            "maximum": 120,
            "minimum": 1,
            "type": "integer"
          },
          "spotDurationMs": {
            "enum": [
              5000,
              10000,
              15000,
              20000,
              30000
            ],
            "type": "integer"
          },
          "startsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "targeting": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BookingTargetingInput"
              },
              {
                "default": {}
              }
            ]
          }
        },
        "required": [
          "startsOn",
          "endsOn",
          "spotDurationMs",
          "slotsPerPodTenths",
          "campaignId"
        ],
        "type": "object"
      },
      "PreviewClosedDate": {
        "example": {
          "date": "2026-12-25",
          "note": "Erster Weihnachtstag"
        },
        "properties": {
          "date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "note": {
            "maxLength": 120,
            "type": "string"
          }
        },
        "required": [
          "date",
          "note"
        ],
        "type": "object"
      },
      "PreviewCommitment": {
        "example": {
          "coveragePermille": 1130,
          "plannedQuantity": 2034,
          "quantity": 1800,
          "recommendedMaxQuantity": 1932,
          "unit": "plays"
        },
        "properties": {
          "coveragePermille": {
            "minimum": 0,
            "type": "integer"
          },
          "plannedQuantity": {
            "minimum": 0,
            "type": "integer"
          },
          "quantity": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "recommendedMaxQuantity": {
            "minimum": 0,
            "type": "integer"
          },
          "unit": {
            "enum": [
              "plays",
              "airtime_seconds",
              "contacts"
            ],
            "type": "string"
          }
        },
        "required": [
          "unit",
          "quantity",
          "plannedQuantity",
          "coveragePermille",
          "recommendedMaxQuantity"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "PreviewContacts": {
        "example": {
          "displaysWithoutProfile": 0,
          "estimated": 3480,
          "gradeSharePermille": {
            "A": 1000,
            "B": 0,
            "C": 0
          }
        },
        "properties": {
          "displaysWithoutProfile": {
            "minimum": 0,
            "type": "integer"
          },
          "estimated": {
            "minimum": 0,
            "type": "integer"
          },
          "gradeSharePermille": {
            "properties": {
              "A": {
                "maximum": 1000,
                "minimum": 0,
                "type": "integer"
              },
              "B": {
                "maximum": 1000,
                "minimum": 0,
                "type": "integer"
              },
              "C": {
                "maximum": 1000,
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "A",
              "B",
              "C"
            ],
            "type": "object"
          }
        },
        "required": [
          "estimated",
          "gradeSharePermille",
          "displaysWithoutProfile"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "PreviewDisplay": {
        "example": {
          "contactsPerOpeningDay": 193,
          "diagonalInches": 55,
          "freeTenthsAfter": 0,
          "freeTenthsBefore": 10,
          "included": true,
          "locationId": "loc_01KHK4B3T0ADRESSE000000001",
          "locationName": "Hauptstelle",
          "orientation": "landscape",
          "panelConfirmed": true,
          "placement": "window",
          "plannedPlays": 2034,
          "plannedPlaysPerOpeningDay": 113,
          "playerId": "ply_01KHK34MQ0SCREEN0000000001",
          "playerName": "Schaufenster Eingang",
          "reason": null,
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
        },
        "properties": {
          "contactsPerOpeningDay": {
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "diagonalInches": {
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "freeTenthsAfter": {
            "type": [
              "integer",
              "null"
            ]
          },
          "freeTenthsBefore": {
            "type": [
              "integer",
              "null"
            ]
          },
          "included": {
            "type": "boolean"
          },
          "locationId": {
            "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "locationName": {
            "type": [
              "string",
              "null"
            ]
          },
          "orientation": {
            "enum": [
              "landscape",
              "portrait"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "panelConfirmed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "placement": {
            "enum": [
              "window",
              "sales_floor",
              "checkout",
              "waiting_area",
              "other"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "plannedPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "plannedPlaysPerOpeningDay": {
            "minimum": 0,
            "type": "integer"
          },
          "playerId": {
            "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "playerName": {
            "type": "string"
          },
          "reason": {
            "enum": [
              "display_inactive",
              "not_selected",
              "region_mismatch",
              "venue_type_mismatch",
              "placement_mismatch",
              "tenant_not_targeted",
              "tenant_not_participating",
              "network_disabled",
              "industry_excluded",
              "orientation_mismatch",
              "no_plan",
              "no_pod_for_spot_length",
              "partition_full"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "playerId",
          "playerName",
          "tenantId",
          "locationId",
          "locationName",
          "placement",
          "orientation",
          "diagonalInches",
          "included",
          "reason",
          "plannedPlays",
          "plannedPlaysPerOpeningDay",
          "contactsPerOpeningDay",
          "freeTenthsBefore",
          "freeTenthsAfter",
          "panelConfirmed"
        ],
        "type": "object"
      },
      "PreviewPlaylistSourceRequest": {
        "example": {
          "limit": 60,
          "source": {
            "folderId": "fld_01KKEQQF80MAPPE00000000003",
            "includeSubfolders": false,
            "kind": "folder",
            "mediaKinds": [
              "image",
              "video"
            ],
            "sortBy": "name-asc"
          }
        },
        "properties": {
          "limit": {
            "default": 60,
            "maximum": 200,
            "minimum": 1,
            "type": "integer"
          },
          "source": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "manual"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "folderId": {
                    "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "includeSubfolders": {
                    "default": true,
                    "type": "boolean"
                  },
                  "kind": {
                    "enum": [
                      "folder"
                    ],
                    "type": "string"
                  },
                  "mediaKinds": {
                    "default": [
                      "image",
                      "video"
                    ],
                    "items": {
                      "enum": [
                        "image",
                        "video"
                      ],
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "sortBy": {
                    "default": "name-asc",
                    "enum": [
                      "name-asc",
                      "name-desc",
                      "created-desc",
                      "created-asc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "folderId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "tags"
                    ],
                    "type": "string"
                  },
                  "mediaKinds": {
                    "default": [
                      "image",
                      "video"
                    ],
                    "items": {
                      "enum": [
                        "image",
                        "video"
                      ],
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "sortBy": {
                    "default": "name-asc",
                    "enum": [
                      "name-asc",
                      "name-desc",
                      "created-desc",
                      "created-asc"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "items": {
                      "maxLength": 50,
                      "minLength": 1,
                      "type": "string"
                    },
                    "maxItems": 10,
                    "minItems": 1,
                    "type": "array"
                  }
                },
                "required": [
                  "kind",
                  "tags"
                ],
                "type": "object"
              }
            ]
          }
        },
        "required": [
          "source"
        ],
        "type": "object"
      },
      "PreviewPlaylistSourceResponse": {
        "example": {
          "capped": false,
          "items": [
            {
              "assetId": "ast_01KKEQYSM0MEDEN00000000002",
              "durationSeconds": 92,
              "mediaKind": "video",
              "name": "Wartebereich-Schleife"
            },
            {
              "assetId": "ast_01KW95DD30MEDEN00000000001",
              "durationSeconds": null,
              "mediaKind": "image",
              "name": "Angebot der Woche"
            }
          ],
          "total": 2
        },
        "properties": {
          "capped": {
            "type": "boolean"
          },
          "items": {
            "items": {
              "properties": {
                "assetId": {
                  "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "durationSeconds": {
                  "exclusiveMinimum": 0,
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "mediaKind": {
                  "enum": [
                    "image",
                    "video"
                  ],
                  "type": "string"
                },
                "name": {
                  "type": "string"
                }
              },
              "required": [
                "assetId",
                "name",
                "mediaKind",
                "durationSeconds"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "total",
          "capped",
          "items"
        ],
        "type": "object"
      },
      "PreviewUninstallImpactResponse": {
        "example": {
          "affectedScenes": [
            {
              "name": "Notdienst & Wetter",
              "sceneId": "scn_01KTM1Z2Q0SZENE00000000003"
            }
          ],
          "bookingRunsUntil": "2026-01-01T00:00:00.000Z",
          "issueCount": 1
        },
        "properties": {
          "affectedScenes": {
            "items": {
              "properties": {
                "name": {
                  "type": "string"
                },
                "sceneId": {
                  "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                }
              },
              "required": [
                "sceneId",
                "name"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "bookingRunsUntil": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "issueCount": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "affectedScenes",
          "issueCount",
          "bookingRunsUntil"
        ],
        "type": "object"
      },
      "PreviewWarning": {
        "example": {
          "code": "partition_full_after",
          "creativeIds": [],
          "playerIds": [
            "ply_01KHK34MQ0SCREEN0000000001"
          ]
        },
        "properties": {
          "code": {
            "enum": [
              "panel_unconfirmed",
              "creative_pending",
              "no_approved_creative",
              "mandatory_text_missing",
              "partition_full_after",
              "plan_extrapolated"
            ],
            "type": "string"
          },
          "creativeIds": {
            "items": {
              "pattern": "^crv_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "type": "array"
          },
          "playerIds": {
            "items": {
              "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "code",
          "playerIds",
          "creativeIds"
        ],
        "type": "object"
      },
      "PreviewWeek": {
        "example": {
          "isoWeek": 41,
          "plannedPlays": 678,
          "weekStartsOn": "2026-10-05"
        },
        "properties": {
          "isoWeek": {
            "maximum": 53,
            "minimum": 1,
            "type": "integer"
          },
          "plannedPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "weekStartsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          }
        },
        "required": [
          "weekStartsOn",
          "isoWeek",
          "plannedPlays"
        ],
        "type": "object"
      },
      "PreviewWidgetDataRequest": {
        "example": {
          "playerId": "ply_01KHK34MQ0SCREEN0000000001",
          "widgets": [
            {
              "appVersionPin": "1.4.2",
              "config": {
                "location": {
                  "fallback": null,
                  "mode": "fixed",
                  "place": {
                    "countryCode": "DE",
                    "displayName": "Hamburg",
                    "latitude": 53.5511,
                    "longitude": 9.9937
                  }
                },
                "showDaily": true,
                "showHighLow": true,
                "showHourly": true,
                "surface": "condition",
                "units": "metric"
              },
              "widgetInstanceId": "wgi_01KTM20XA0WDGET00000000005",
              "widgetType": "weather"
            },
            {
              "appVersionPin": "1.1.0",
              "config": {
                "showSpecialHint": true,
                "source": "display",
                "surface": "green"
              },
              "widgetInstanceId": "wgi_01KJPXCAQ0WDGET00000000002",
              "widgetType": "opening-hours"
            },
            {
              "appVersionPin": "2.0.1",
              "config": {
                "count": "auto",
                "source": {
                  "locationId": null,
                  "mode": "display"
                }
              },
              "widgetInstanceId": "wgi_01KTM22QX0WDGET00000000006",
              "widgetType": "pharmacies-on-duty-display"
            }
          ]
        },
        "properties": {
          "playerId": {
            "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "widgets": {
            "items": {
              "properties": {
                "appVersionPin": {
                  "pattern": "^\\d+\\.\\d+\\.\\d+$",
                  "type": "string"
                },
                "config": {},
                "widgetInstanceId": {
                  "pattern": "^wgi_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "widgetType": {
                  "maxLength": 100,
                  "minLength": 2,
                  "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "widgetInstanceId",
                "widgetType",
                "appVersionPin"
              ],
              "type": "object"
            },
            "maxItems": 50,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "widgets"
        ],
        "type": "object"
      },
      "PreviewWidgetDataResponse": {
        "example": {
          "computedAt": "2026-07-20T09:15:00.000Z",
          "degradedWidgets": [
            {
              "error": "Die Datenbank der Notdienst-App antwortete nicht rechtzeitig.",
              "reason": "resolver-throw",
              "widgetInstanceId": "wgi_01KTM22QX0WDGET00000000006",
              "widgetType": "pharmacies-on-duty-display"
            }
          ],
          "widgetData": {
            "wgi_01KJPXCAQ0WDGET00000000002": {
              "cacheUntil": "2026-07-21T09:15:00.000Z",
              "payload": {
                "hours": {
                  "from": "2026-07-20",
                  "holidays": [],
                  "region": "DE-HH",
                  "specialDays": [
                    {
                      "closed": false,
                      "endDate": "2026-08-08",
                      "label": "Inventur",
                      "startDate": "2026-08-03",
                      "windows": [
                        {
                          "closes": "12:00",
                          "opens": "09:00"
                        }
                      ]
                    }
                  ],
                  "until": "2026-08-09",
                  "weekly": {
                    "fri": [
                      {
                        "closes": "18:30",
                        "opens": "08:00"
                      }
                    ],
                    "mon": [
                      {
                        "closes": "18:30",
                        "opens": "08:00"
                      }
                    ],
                    "sat": [
                      {
                        "closes": "13:00",
                        "opens": "09:00"
                      }
                    ],
                    "sun": [],
                    "thu": [
                      {
                        "closes": "18:30",
                        "opens": "08:00"
                      }
                    ],
                    "tue": [
                      {
                        "closes": "18:30",
                        "opens": "08:00"
                      }
                    ],
                    "wed": [
                      {
                        "closes": "18:30",
                        "opens": "08:00"
                      }
                    ]
                  }
                },
                "location": {
                  "name": "Hauptstelle",
                  "timeZone": "Europe/Berlin"
                },
                "state": "ok"
              },
              "resolvedAt": "2026-07-20T09:15:00.000Z",
              "source": "app:wochenplan",
              "validUntil": "2026-07-20T22:00:00.000Z"
            },
            "wgi_01KTM20XA0WDGET00000000005": {
              "cacheUntil": "2026-07-20T11:00:12.000Z",
              "payload": {
                "city": {
                  "countryCode": "DE",
                  "displayName": "Hamburg",
                  "latitude": 53.55,
                  "longitude": 9.99
                },
                "current": {
                  "condition": "cloudy",
                  "daytime": "day",
                  "feelsLike": 20.8,
                  "humidity": 68,
                  "observedAt": "2026-07-20T08:50:00.000Z",
                  "sunriseAt": "2026-07-20T03:17:00.000Z",
                  "sunsetAt": "2026-07-20T19:38:00.000Z",
                  "temperature": 21.4,
                  "windDirectionDeg": 245,
                  "windSpeed": 4.6
                },
                "forecast": [
                  {
                    "condition": "cloudy",
                    "date": "2026-07-20",
                    "max": 23.6,
                    "min": 15.2,
                    "precipitationMm": 1.2,
                    "precipitationProbability": 40
                  },
                  {
                    "condition": "clear",
                    "date": "2026-07-21",
                    "max": 26,
                    "min": 16.1,
                    "precipitationMm": 0,
                    "precipitationProbability": 10
                  }
                ],
                "units": "metric"
              },
              "resolvedAt": "2026-07-20T09:15:00.000Z",
              "source": "cache:api:wetterdienst",
              "validUntil": "2026-07-20T09:30:12.000Z"
            }
          }
        },
        "properties": {
          "computedAt": {
            "format": "date-time",
            "type": "string"
          },
          "degradedWidgets": {
            "items": {
              "properties": {
                "error": {
                  "maxLength": 500,
                  "type": "string"
                },
                "reason": {
                  "enum": [
                    "resolver-throw",
                    "resolver-timeout",
                    "resolver-output-invalid",
                    "no-resolver",
                    "app-not-installed",
                    "app-disabled",
                    "resolver-null"
                  ],
                  "type": "string"
                },
                "widgetInstanceId": {
                  "pattern": "^wgi_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "widgetType": {
                  "maxLength": 100,
                  "minLength": 2,
                  "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "widgetInstanceId",
                "widgetType",
                "reason"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "widgetData": {
            "additionalProperties": {
              "properties": {
                "cacheUntil": {
                  "format": "date-time",
                  "type": "string"
                },
                "payload": {},
                "resolvedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "source": {
                  "type": "string"
                },
                "validUntil": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "required": [
                "source",
                "resolvedAt",
                "validUntil",
                "cacheUntil"
              ],
              "type": "object"
            },
            "type": "object"
          }
        },
        "required": [
          "widgetData",
          "degradedWidgets",
          "computedAt"
        ],
        "type": "object"
      },
      "PreviewWindow": {
        "example": {
          "activeFrom": "2026-10-04T22:00:00.000Z",
          "activeUntil": "2026-10-25T23:00:00.000Z",
          "closedDates": [],
          "days": 21,
          "openingDays": 18,
          "timezone": "Europe/Berlin"
        },
        "properties": {
          "activeFrom": {
            "format": "date-time",
            "type": "string"
          },
          "activeUntil": {
            "format": "date-time",
            "type": "string"
          },
          "closedDates": {
            "items": {
              "$ref": "#/components/schemas/PreviewClosedDate"
            },
            "type": "array"
          },
          "days": {
            "minimum": 0,
            "type": "integer"
          },
          "openingDays": {
            "minimum": 0,
            "type": "integer"
          },
          "timezone": {
            "type": "string"
          }
        },
        "required": [
          "activeFrom",
          "activeUntil",
          "timezone",
          "days",
          "openingDays",
          "closedDates"
        ],
        "type": "object"
      },
      "ProgramCompatibilityWarning": {
        "example": {
          "appId": "sample",
          "appName": "sample",
          "code": "app-host-unsupported",
          "host": "szenera-os"
        },
        "properties": {
          "appId": {
            "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
            "type": "string"
          },
          "appName": {
            "type": "string"
          },
          "code": {
            "enum": [
              "app-host-unsupported"
            ],
            "type": "string"
          },
          "host": {
            "enum": [
              "szenera-os",
              "fire-tv",
              "tizen",
              "webos",
              "web-display"
            ],
            "type": "string"
          }
        },
        "required": [
          "code",
          "appId",
          "appName",
          "host"
        ],
        "type": "object"
      },
      "ProofCaptures": {
        "example": {
          "count": 26,
          "samples": [
            {
              "batchSha256": "ecd73af0b9464d1df547087ebf3e9820d8f3d3c39398a2edf6fd96e10ba1a945",
              "capturedAt": "2026-09-01T07:12:44.000Z",
              "fileName": "0001-pss_01KZ2C8H40PRBE000000000001.jpg",
              "locationLabel": "Hamburg (227) · Apotheke",
              "placement": "window"
            },
            {
              "batchSha256": "c20dda2078b6ee685e5476c56dbb55e44bab36bb83445767ea8b09fc25066154",
              "capturedAt": "2026-09-10T12:41:03.000Z",
              "fileName": "0009-pss_01KZ2C8H40PRBE000000000009.jpg",
              "locationLabel": "Hamburg (227) · Apotheke",
              "placement": "window"
            },
            {
              "batchSha256": "d7f3fb99136f4df5e7ef211ad3d012f1c49cf4c36b6d3e28d75072b8602c0310",
              "capturedAt": "2026-09-21T09:27:51.000Z",
              "fileName": "0018-pss_01KZ2C8H40PRBE000000000018.jpg",
              "locationLabel": "Hamburg (227) · Apotheke",
              "placement": "window"
            },
            {
              "batchSha256": "a7015b275017ae39a8ef72321dd423437051fe480b337f9dbf0597b0d2c6d9a3",
              "capturedAt": "2026-09-30T14:03:19.000Z",
              "fileName": "0026-pss_01KZ2C8H40PRBE000000000026.jpg",
              "locationLabel": "Hamburg (227) · Apotheke",
              "placement": "window"
            }
          ]
        },
        "properties": {
          "count": {
            "minimum": 0,
            "type": "integer"
          },
          "samples": {
            "items": {
              "properties": {
                "batchSha256": {
                  "pattern": "^[a-f0-9]{64}$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "capturedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "fileName": {
                  "type": "string"
                },
                "locationLabel": {
                  "type": "string"
                },
                "placement": {
                  "enum": [
                    "window",
                    "sales_floor",
                    "checkout",
                    "waiting_area",
                    "other"
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "fileName",
                "capturedAt",
                "locationLabel",
                "placement",
                "batchSha256"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "count",
          "samples"
        ],
        "type": "object"
      },
      "ProofCreative": {
        "example": {
          "approvedAt": "2026-08-26T07:55:00.000Z",
          "contentSha256": "7d2f4c1a9b3e6f58c0a1d2e3f4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3",
          "creativeId": "crv_01KXR4RZ80MTV0000000000001",
          "mandatoryTextChecked": false,
          "name": "Herbstpflege Schaufenster",
          "validPlays": 5608,
          "weight": 1
        },
        "properties": {
          "approvedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "contentSha256": {
            "pattern": "^[a-f0-9]{64}$",
            "type": "string"
          },
          "creativeId": {
            "pattern": "^crv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "mandatoryTextChecked": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "validPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "weight": {
            "exclusiveMinimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "creativeId",
          "name",
          "contentSha256",
          "approvedAt",
          "mandatoryTextChecked",
          "weight",
          "validPlays"
        ],
        "type": "object"
      },
      "ProofCurvePoint": {
        "example": {
          "cumulativePlanned": 3492,
          "cumulativeValid": 3254,
          "day": "2026-09-17",
          "plannedPlays": 260,
          "validPlays": 150
        },
        "properties": {
          "cumulativePlanned": {
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "cumulativeValid": {
            "minimum": 0,
            "type": "integer"
          },
          "day": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "plannedPlays": {
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "validPlays": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "day",
          "validPlays",
          "cumulativeValid",
          "plannedPlays",
          "cumulativePlanned"
        ],
        "type": "object"
      },
      "ProofDelivery": {
        "example": {
          "createdAt": "2026-10-05T01:30:24.000Z",
          "id": "pdy_01KZ4T6M80ZSTG398000000001",
          "mode": "attachment",
          "recipientEmail": "lena.brandt@demo.local",
          "recipientName": "Lena Brandt",
          "sentAt": "2026-10-05T01:30:41.000Z",
          "state": "sent"
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "pattern": "^pdy_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "mode": {
            "enum": [
              "attachment",
              "link"
            ],
            "type": "string"
          },
          "recipientEmail": {
            "type": "string"
          },
          "recipientName": {
            "type": "string"
          },
          "sentAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "enum": [
              "pending",
              "sent",
              "failed",
              "unknown"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "recipientName",
          "recipientEmail",
          "mode",
          "state",
          "sentAt",
          "createdAt"
        ],
        "type": "object"
      },
      "ProofDistribution": {
        "example": {
          "curve": [
            {
              "cumulativePlanned": 260,
              "cumulativeValid": 250,
              "day": "2026-09-01",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 520,
              "cumulativeValid": 500,
              "day": "2026-09-02",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 780,
              "cumulativeValid": 750,
              "day": "2026-09-03",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 1040,
              "cumulativeValid": 1000,
              "day": "2026-09-04",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 1096,
              "cumulativeValid": 1052,
              "day": "2026-09-05",
              "plannedPlays": 56,
              "validPlays": 52
            },
            {
              "cumulativePlanned": 1096,
              "cumulativeValid": 1052,
              "day": "2026-09-06",
              "plannedPlays": 0,
              "validPlays": 0
            },
            {
              "cumulativePlanned": 1356,
              "cumulativeValid": 1302,
              "day": "2026-09-07",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 1616,
              "cumulativeValid": 1552,
              "day": "2026-09-08",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 1876,
              "cumulativeValid": 1802,
              "day": "2026-09-09",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 2136,
              "cumulativeValid": 2052,
              "day": "2026-09-10",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 2396,
              "cumulativeValid": 2302,
              "day": "2026-09-11",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 2452,
              "cumulativeValid": 2354,
              "day": "2026-09-12",
              "plannedPlays": 56,
              "validPlays": 52
            },
            {
              "cumulativePlanned": 2452,
              "cumulativeValid": 2354,
              "day": "2026-09-13",
              "plannedPlays": 0,
              "validPlays": 0
            },
            {
              "cumulativePlanned": 2712,
              "cumulativeValid": 2604,
              "day": "2026-09-14",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 2972,
              "cumulativeValid": 2854,
              "day": "2026-09-15",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 3232,
              "cumulativeValid": 3104,
              "day": "2026-09-16",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 3492,
              "cumulativeValid": 3254,
              "day": "2026-09-17",
              "plannedPlays": 260,
              "validPlays": 150
            },
            {
              "cumulativePlanned": 3752,
              "cumulativeValid": 3504,
              "day": "2026-09-18",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 3808,
              "cumulativeValid": 3556,
              "day": "2026-09-19",
              "plannedPlays": 56,
              "validPlays": 52
            },
            {
              "cumulativePlanned": 3808,
              "cumulativeValid": 3556,
              "day": "2026-09-20",
              "plannedPlays": 0,
              "validPlays": 0
            },
            {
              "cumulativePlanned": 4068,
              "cumulativeValid": 3806,
              "day": "2026-09-21",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 4328,
              "cumulativeValid": 4056,
              "day": "2026-09-22",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 4588,
              "cumulativeValid": 4306,
              "day": "2026-09-23",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 4848,
              "cumulativeValid": 4556,
              "day": "2026-09-24",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 5108,
              "cumulativeValid": 4806,
              "day": "2026-09-25",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 5164,
              "cumulativeValid": 4858,
              "day": "2026-09-26",
              "plannedPlays": 56,
              "validPlays": 52
            },
            {
              "cumulativePlanned": 5164,
              "cumulativeValid": 4858,
              "day": "2026-09-27",
              "plannedPlays": 0,
              "validPlays": 0
            },
            {
              "cumulativePlanned": 5424,
              "cumulativeValid": 5108,
              "day": "2026-09-28",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 5684,
              "cumulativeValid": 5358,
              "day": "2026-09-29",
              "plannedPlays": 260,
              "validPlays": 250
            },
            {
              "cumulativePlanned": 5944,
              "cumulativeValid": 5608,
              "day": "2026-09-30",
              "plannedPlays": 260,
              "validPlays": 250
            }
          ],
          "dayparts": [
            {
              "airtimeSeconds": 11210,
              "displays": 2,
              "key": "early",
              "locations": 1,
              "merged": false,
              "mergedKeys": [],
              "share": 0.1999,
              "validPlays": 1121
            },
            {
              "airtimeSeconds": 11350,
              "displays": 2,
              "key": "morning",
              "locations": 1,
              "merged": false,
              "mergedKeys": [],
              "share": 0.2024,
              "validPlays": 1135
            },
            {
              "airtimeSeconds": 11020,
              "displays": 2,
              "key": "midday",
              "locations": 1,
              "merged": false,
              "mergedKeys": [],
              "share": 0.1965,
              "validPlays": 1102
            },
            {
              "airtimeSeconds": 16520,
              "displays": 2,
              "key": "afternoon",
              "locations": 1,
              "merged": false,
              "mergedKeys": [],
              "share": 0.2946,
              "validPlays": 1652
            },
            {
              "airtimeSeconds": 5980,
              "displays": 2,
              "key": "evening",
              "locations": 1,
              "merged": false,
              "mergedKeys": [],
              "share": 0.1066,
              "validPlays": 598
            }
          ],
          "locations": [
            {
              "airtimeSeconds": 56080,
              "city": "Hamburg",
              "displays": 2,
              "label": "Hamburg (227) · Apotheke",
              "named": false,
              "postalArea": "227",
              "validPlays": 5608,
              "venueType": "pharmacy"
            }
          ],
          "placements": [
            {
              "airtimeSeconds": 56080,
              "displays": 2,
              "key": "merged",
              "locations": 1,
              "merged": true,
              "mergedKeys": [
                "checkout",
                "window"
              ],
              "share": 1,
              "validPlays": 5608
            }
          ],
          "regions": [
            {
              "airtimeSeconds": 56080,
              "displays": 2,
              "key": "merged",
              "locations": 1,
              "merged": true,
              "mergedKeys": [
                "DE-HH"
              ],
              "share": 1,
              "validPlays": 5608
            }
          ],
          "venueTypes": [
            {
              "airtimeSeconds": 56080,
              "displays": 2,
              "key": "merged",
              "locations": 1,
              "merged": true,
              "mergedKeys": [
                "pharmacy"
              ],
              "share": 1,
              "validPlays": 5608
            }
          ]
        },
        "properties": {
          "curve": {
            "items": {
              "$ref": "#/components/schemas/ProofCurvePoint"
            },
            "type": "array"
          },
          "dayparts": {
            "items": {
              "$ref": "#/components/schemas/ProofDistributionEntry"
            },
            "type": "array"
          },
          "locations": {
            "items": {
              "$ref": "#/components/schemas/ProofLocationEntry"
            },
            "type": "array"
          },
          "placements": {
            "items": {
              "$ref": "#/components/schemas/ProofDistributionEntry"
            },
            "type": "array"
          },
          "regions": {
            "items": {
              "$ref": "#/components/schemas/ProofDistributionEntry"
            },
            "type": "array"
          },
          "venueTypes": {
            "items": {
              "$ref": "#/components/schemas/ProofDistributionEntry"
            },
            "type": "array"
          }
        },
        "required": [
          "curve",
          "regions",
          "venueTypes",
          "placements",
          "dayparts",
          "locations"
        ],
        "type": "object"
      },
      "ProofDistributionEntry": {
        "example": {
          "airtimeSeconds": 16520,
          "displays": 2,
          "key": "afternoon",
          "locations": 1,
          "merged": false,
          "mergedKeys": [],
          "share": 0.2946,
          "validPlays": 1652
        },
        "properties": {
          "airtimeSeconds": {
            "minimum": 0,
            "type": "number"
          },
          "displays": {
            "minimum": 0,
            "type": "integer"
          },
          "key": {
            "type": "string"
          },
          "locations": {
            "minimum": 0,
            "type": "integer"
          },
          "merged": {
            "type": "boolean"
          },
          "mergedKeys": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "share": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "validPlays": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "key",
          "validPlays",
          "airtimeSeconds",
          "share",
          "locations",
          "displays",
          "merged",
          "mergedKeys"
        ],
        "type": "object"
      },
      "ProofFigures": {
        "example": {
          "captures": {
            "count": 26,
            "samples": [
              {
                "batchSha256": "ecd73af0b9464d1df547087ebf3e9820d8f3d3c39398a2edf6fd96e10ba1a945",
                "capturedAt": "2026-09-01T07:12:44.000Z",
                "fileName": "0001-pss_01KZ2C8H40PRBE000000000001.jpg",
                "locationLabel": "Hamburg (227) · Apotheke",
                "placement": "window"
              },
              {
                "batchSha256": "c20dda2078b6ee685e5476c56dbb55e44bab36bb83445767ea8b09fc25066154",
                "capturedAt": "2026-09-10T12:41:03.000Z",
                "fileName": "0009-pss_01KZ2C8H40PRBE000000000009.jpg",
                "locationLabel": "Hamburg (227) · Apotheke",
                "placement": "window"
              },
              {
                "batchSha256": "d7f3fb99136f4df5e7ef211ad3d012f1c49cf4c36b6d3e28d75072b8602c0310",
                "capturedAt": "2026-09-21T09:27:51.000Z",
                "fileName": "0018-pss_01KZ2C8H40PRBE000000000018.jpg",
                "locationLabel": "Hamburg (227) · Apotheke",
                "placement": "window"
              },
              {
                "batchSha256": "a7015b275017ae39a8ef72321dd423437051fe480b337f9dbf0597b0d2c6d9a3",
                "capturedAt": "2026-09-30T14:03:19.000Z",
                "fileName": "0026-pss_01KZ2C8H40PRBE000000000026.jpg",
                "locationLabel": "Hamburg (227) · Apotheke",
                "placement": "window"
              }
            ]
          },
          "creatives": [
            {
              "approvedAt": "2026-08-26T07:55:00.000Z",
              "contentSha256": "7d2f4c1a9b3e6f58c0a1d2e3f4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3",
              "creativeId": "crv_01KXR4RZ80MTV0000000000001",
              "mandatoryTextChecked": false,
              "name": "Herbstpflege Schaufenster",
              "validPlays": 5608,
              "weight": 1
            }
          ],
          "distribution": {
            "curve": [
              {
                "cumulativePlanned": 260,
                "cumulativeValid": 250,
                "day": "2026-09-01",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 520,
                "cumulativeValid": 500,
                "day": "2026-09-02",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 780,
                "cumulativeValid": 750,
                "day": "2026-09-03",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 1040,
                "cumulativeValid": 1000,
                "day": "2026-09-04",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 1096,
                "cumulativeValid": 1052,
                "day": "2026-09-05",
                "plannedPlays": 56,
                "validPlays": 52
              },
              {
                "cumulativePlanned": 1096,
                "cumulativeValid": 1052,
                "day": "2026-09-06",
                "plannedPlays": 0,
                "validPlays": 0
              },
              {
                "cumulativePlanned": 1356,
                "cumulativeValid": 1302,
                "day": "2026-09-07",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 1616,
                "cumulativeValid": 1552,
                "day": "2026-09-08",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 1876,
                "cumulativeValid": 1802,
                "day": "2026-09-09",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 2136,
                "cumulativeValid": 2052,
                "day": "2026-09-10",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 2396,
                "cumulativeValid": 2302,
                "day": "2026-09-11",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 2452,
                "cumulativeValid": 2354,
                "day": "2026-09-12",
                "plannedPlays": 56,
                "validPlays": 52
              },
              {
                "cumulativePlanned": 2452,
                "cumulativeValid": 2354,
                "day": "2026-09-13",
                "plannedPlays": 0,
                "validPlays": 0
              },
              {
                "cumulativePlanned": 2712,
                "cumulativeValid": 2604,
                "day": "2026-09-14",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 2972,
                "cumulativeValid": 2854,
                "day": "2026-09-15",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 3232,
                "cumulativeValid": 3104,
                "day": "2026-09-16",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 3492,
                "cumulativeValid": 3254,
                "day": "2026-09-17",
                "plannedPlays": 260,
                "validPlays": 150
              },
              {
                "cumulativePlanned": 3752,
                "cumulativeValid": 3504,
                "day": "2026-09-18",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 3808,
                "cumulativeValid": 3556,
                "day": "2026-09-19",
                "plannedPlays": 56,
                "validPlays": 52
              },
              {
                "cumulativePlanned": 3808,
                "cumulativeValid": 3556,
                "day": "2026-09-20",
                "plannedPlays": 0,
                "validPlays": 0
              },
              {
                "cumulativePlanned": 4068,
                "cumulativeValid": 3806,
                "day": "2026-09-21",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 4328,
                "cumulativeValid": 4056,
                "day": "2026-09-22",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 4588,
                "cumulativeValid": 4306,
                "day": "2026-09-23",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 4848,
                "cumulativeValid": 4556,
                "day": "2026-09-24",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 5108,
                "cumulativeValid": 4806,
                "day": "2026-09-25",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 5164,
                "cumulativeValid": 4858,
                "day": "2026-09-26",
                "plannedPlays": 56,
                "validPlays": 52
              },
              {
                "cumulativePlanned": 5164,
                "cumulativeValid": 4858,
                "day": "2026-09-27",
                "plannedPlays": 0,
                "validPlays": 0
              },
              {
                "cumulativePlanned": 5424,
                "cumulativeValid": 5108,
                "day": "2026-09-28",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 5684,
                "cumulativeValid": 5358,
                "day": "2026-09-29",
                "plannedPlays": 260,
                "validPlays": 250
              },
              {
                "cumulativePlanned": 5944,
                "cumulativeValid": 5608,
                "day": "2026-09-30",
                "plannedPlays": 260,
                "validPlays": 250
              }
            ],
            "dayparts": [
              {
                "airtimeSeconds": 11210,
                "displays": 2,
                "key": "early",
                "locations": 1,
                "merged": false,
                "mergedKeys": [],
                "share": 0.1999,
                "validPlays": 1121
              },
              {
                "airtimeSeconds": 11350,
                "displays": 2,
                "key": "morning",
                "locations": 1,
                "merged": false,
                "mergedKeys": [],
                "share": 0.2024,
                "validPlays": 1135
              },
              {
                "airtimeSeconds": 11020,
                "displays": 2,
                "key": "midday",
                "locations": 1,
                "merged": false,
                "mergedKeys": [],
                "share": 0.1965,
                "validPlays": 1102
              },
              {
                "airtimeSeconds": 16520,
                "displays": 2,
                "key": "afternoon",
                "locations": 1,
                "merged": false,
                "mergedKeys": [],
                "share": 0.2946,
                "validPlays": 1652
              },
              {
                "airtimeSeconds": 5980,
                "displays": 2,
                "key": "evening",
                "locations": 1,
                "merged": false,
                "mergedKeys": [],
                "share": 0.1066,
                "validPlays": 598
              }
            ],
            "locations": [
              {
                "airtimeSeconds": 56080,
                "city": "Hamburg",
                "displays": 2,
                "label": "Hamburg (227) · Apotheke",
                "named": false,
                "postalArea": "227",
                "validPlays": 5608,
                "venueType": "pharmacy"
              }
            ],
            "placements": [
              {
                "airtimeSeconds": 56080,
                "displays": 2,
                "key": "merged",
                "locations": 1,
                "merged": true,
                "mergedKeys": [
                  "checkout",
                  "window"
                ],
                "share": 1,
                "validPlays": 5608
              }
            ],
            "regions": [
              {
                "airtimeSeconds": 56080,
                "displays": 2,
                "key": "merged",
                "locations": 1,
                "merged": true,
                "mergedKeys": [
                  "DE-HH"
                ],
                "share": 1,
                "validPlays": 5608
              }
            ],
            "venueTypes": [
              {
                "airtimeSeconds": 56080,
                "displays": 2,
                "key": "merged",
                "locations": 1,
                "merged": true,
                "mergedKeys": [
                  "pharmacy"
                ],
                "share": 1,
                "validPlays": 5608
              }
            ]
          },
          "kind": "closing",
          "method": {
            "contactModelVersion": 1,
            "dwellSeconds": {
              "checkout": 90,
              "other": 60,
              "sales_floor": 300,
              "waiting_area": 600,
              "window": 5
            },
            "limits": [
              "deviceKeyFile",
              "rendererCapture",
              "contactsModelled",
              "gapIsNotZero",
              "audienceSelfDeclared"
            ],
            "maxClockOffsetMs": 5000,
            "minCompletionPermille": 900,
            "minZoneSharePermille": 250,
            "networkParametersVersion": 2,
            "placementFactorPermille": {
              "checkout": 800,
              "other": 500,
              "sales_floor": 600,
              "waiting_area": 700,
              "window": 350
            },
            "ruleVersion": 1
          },
          "period": {
            "from": "2026-09-01",
            "timezone": "Europe/Berlin",
            "to": "2026-09-30"
          },
          "quality": {
            "coverage": {
              "lateHours": 6,
              "missingHours": 7,
              "onTimeHours": 503,
              "plannedHours": 516,
              "reportedHours": 509,
              "share": 0.9864
            },
            "failures": {
              "byReason": [
                {
                  "plays": 6,
                  "reason": "render_error",
                  "share": 0.0488
                },
                {
                  "plays": 0,
                  "reason": "wrong_content",
                  "share": 0
                },
                {
                  "plays": 96,
                  "reason": "panel_off",
                  "share": 0.7805
                },
                {
                  "plays": 0,
                  "reason": "not_visible",
                  "share": 0
                },
                {
                  "plays": 0,
                  "reason": "zone_too_small",
                  "share": 0
                },
                {
                  "plays": 21,
                  "reason": "too_short",
                  "share": 0.1707
                },
                {
                  "plays": 0,
                  "reason": "outside_booking",
                  "share": 0
                },
                {
                  "plays": 0,
                  "reason": "clock_unreliable",
                  "share": 0
                }
              ],
              "invalid": 123,
              "measured": 5731,
              "share": 0.0215
            },
            "late": {
              "hours": 6,
              "plays": 41,
              "share": 0.0072
            },
            "panelUnconfirmed": {
              "displays": 0,
              "share": 0,
              "validPlays": 0
            }
          },
          "records": {
            "batches": 1416,
            "chain": {
              "fork": 0,
              "gap": 0,
              "ok": 1414,
              "restart": 2
            },
            "devices": 2,
            "plays": 5731,
            "receivedBefore": "2026-10-05T01:25:00.000Z",
            "receivedFrom": null,
            "unsignedBatches": 0
          },
          "result": {
            "airtimeSeconds": 56080,
            "commitment": {
              "lineQuantity": 12000,
              "quantity": 5901.639,
              "unit": "plays"
            },
            "contacts": {
              "byGrade": [
                {
                  "contacts": 18742,
                  "grade": "A",
                  "share": 1
                }
              ],
              "contactModelVersion": 1,
              "gradeCExcluded": false,
              "total": 18742
            },
            "deliveredInUnit": 5608,
            "deliveryToPlan": 0.9435,
            "displays": {
              "reached": 2,
              "targeted": 2
            },
            "fulfilment": 0.9502,
            "locations": {
              "reached": 1,
              "targeted": 1
            },
            "plannedPlays": 5944,
            "plays": 5731,
            "validPlays": 5608
          },
          "schemaVersion": 1,
          "subject": {
            "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
            "advertiserName": "Nordwind Naturkosmetik GmbH",
            "bookingLineId": "bkl_01KXR4Q9T0BKNG000000000001",
            "bookingLineName": "Schaufenster und Kasse",
            "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
            "campaignName": "Herbstpflege 2026",
            "commitment": {
              "quantity": 12000,
              "unit": "plays"
            },
            "lineEndsOn": "2026-10-31",
            "lineStartsOn": "2026-09-01",
            "owner": "tenant",
            "slotsPerPodTenths": 10,
            "spotDurationMs": 10000,
            "targeting": {
              "displays": 2,
              "locations": 1,
              "placements": [
                "window",
                "checkout"
              ],
              "regionCodes": [
                "DE-HH"
              ],
              "venueTypes": [
                "pharmacy"
              ]
            },
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          }
        },
        "properties": {
          "captures": {
            "$ref": "#/components/schemas/ProofCaptures"
          },
          "creatives": {
            "items": {
              "$ref": "#/components/schemas/ProofCreative"
            },
            "type": "array"
          },
          "distribution": {
            "$ref": "#/components/schemas/ProofDistribution"
          },
          "kind": {
            "enum": [
              "closing",
              "addendum",
              "interim"
            ],
            "type": "string"
          },
          "method": {
            "$ref": "#/components/schemas/ProofMethod"
          },
          "period": {
            "$ref": "#/components/schemas/ProofPeriod"
          },
          "quality": {
            "$ref": "#/components/schemas/ProofQuality"
          },
          "records": {
            "$ref": "#/components/schemas/ProofRecords"
          },
          "result": {
            "$ref": "#/components/schemas/ProofResult"
          },
          "schemaVersion": {
            "enum": [
              1
            ],
            "type": "number"
          },
          "subject": {
            "$ref": "#/components/schemas/ProofSubject"
          }
        },
        "required": [
          "schemaVersion",
          "kind",
          "period",
          "subject",
          "records",
          "result",
          "distribution",
          "creatives",
          "quality",
          "captures",
          "method"
        ],
        "type": "object"
      },
      "ProofFile": {
        "example": {
          "id": "pfi_01KZ4T6M80DTA0398000000001",
          "kind": "pdf",
          "name": "SZN-2026-000398.pdf",
          "sha256": "26d9c86976d75e7e9dc3b2367b5b7ae4140eeeec4c018e84041904080a30f352",
          "sizeBytes": 412386
        },
        "properties": {
          "id": {
            "pattern": "^pfi_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "kind": {
            "enum": [
              "pdf",
              "csv",
              "manifest",
              "capture"
            ],
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "sha256": {
            "pattern": "^[a-f0-9]{64}$",
            "type": "string"
          },
          "sizeBytes": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "kind",
          "name",
          "sha256",
          "sizeBytes"
        ],
        "type": "object"
      },
      "ProofFileUrlResponse": {
        "example": {
          "expiresAt": "2026-10-14T09:27:00.000Z",
          "kind": "pdf",
          "name": "SZN-2026-000398.pdf",
          "sha256": "26d9c86976d75e7e9dc3b2367b5b7ae4140eeeec4c018e84041904080a30f352",
          "sizeBytes": 412386,
          "url": "https://s3.demo.local/signage-medien/analytics/proofs/SZN-2026-000398/SZN-2026-000398.pdf?X-Amz-Expires=900"
        },
        "properties": {
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "kind": {
            "enum": [
              "pdf",
              "csv",
              "manifest",
              "capture"
            ],
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "sha256": {
            "pattern": "^[a-f0-9]{64}$",
            "type": "string"
          },
          "sizeBytes": {
            "minimum": 0,
            "type": "integer"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "url",
          "expiresAt",
          "kind",
          "name",
          "sha256",
          "sizeBytes"
        ],
        "type": "object"
      },
      "ProofLocationEntry": {
        "example": {
          "airtimeSeconds": 56080,
          "city": "Hamburg",
          "displays": 2,
          "label": "Hamburg (227) · Apotheke",
          "named": false,
          "postalArea": "227",
          "validPlays": 5608,
          "venueType": "pharmacy"
        },
        "properties": {
          "airtimeSeconds": {
            "minimum": 0,
            "type": "number"
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "displays": {
            "minimum": 0,
            "type": "integer"
          },
          "label": {
            "type": "string"
          },
          "named": {
            "type": "boolean"
          },
          "postalArea": {
            "type": [
              "string",
              "null"
            ]
          },
          "validPlays": {
            "minimum": 0,
            "type": "integer"
          },
          "venueType": {
            "enum": [
              "pharmacy",
              "workshop",
              "bakery",
              "beverage_store",
              "grocery",
              "kiosk",
              "fitness_studio",
              "medical_practice",
              "retail",
              "other"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "label",
          "named",
          "city",
          "postalArea",
          "venueType",
          "validPlays",
          "airtimeSeconds",
          "displays"
        ],
        "type": "object"
      },
      "ProofMethod": {
        "example": {
          "contactModelVersion": 1,
          "dwellSeconds": {
            "checkout": 90,
            "other": 60,
            "sales_floor": 300,
            "waiting_area": 600,
            "window": 5
          },
          "limits": [
            "deviceKeyFile",
            "rendererCapture",
            "contactsModelled",
            "gapIsNotZero",
            "audienceSelfDeclared"
          ],
          "maxClockOffsetMs": 5000,
          "minCompletionPermille": 900,
          "minZoneSharePermille": 250,
          "networkParametersVersion": 2,
          "placementFactorPermille": {
            "checkout": 800,
            "other": 500,
            "sales_floor": 600,
            "waiting_area": 700,
            "window": 350
          },
          "ruleVersion": 1
        },
        "properties": {
          "contactModelVersion": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "dwellSeconds": {
            "properties": {
              "checkout": {
                "maximum": 3600,
                "minimum": 1,
                "type": "integer"
              },
              "other": {
                "maximum": 3600,
                "minimum": 1,
                "type": "integer"
              },
              "sales_floor": {
                "maximum": 3600,
                "minimum": 1,
                "type": "integer"
              },
              "waiting_area": {
                "maximum": 3600,
                "minimum": 1,
                "type": "integer"
              },
              "window": {
                "maximum": 3600,
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "window",
              "sales_floor",
              "checkout",
              "waiting_area",
              "other"
            ],
            "type": "object"
          },
          "limits": {
            "items": {
              "enum": [
                "deviceKeyFile",
                "rendererCapture",
                "contactsModelled",
                "gapIsNotZero",
                "audienceSelfDeclared"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "maxClockOffsetMs": {
            "minimum": 0,
            "type": "integer"
          },
          "minCompletionPermille": {
            "maximum": 1000,
            "minimum": 0,
            "type": "integer"
          },
          "minZoneSharePermille": {
            "maximum": 1000,
            "minimum": 0,
            "type": "integer"
          },
          "networkParametersVersion": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "placementFactorPermille": {
            "properties": {
              "checkout": {
                "maximum": 1000,
                "minimum": 0,
                "type": "integer"
              },
              "other": {
                "maximum": 1000,
                "minimum": 0,
                "type": "integer"
              },
              "sales_floor": {
                "maximum": 1000,
                "minimum": 0,
                "type": "integer"
              },
              "waiting_area": {
                "maximum": 1000,
                "minimum": 0,
                "type": "integer"
              },
              "window": {
                "maximum": 1000,
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "window",
              "sales_floor",
              "checkout",
              "waiting_area",
              "other"
            ],
            "type": "object"
          },
          "ruleVersion": {
            "exclusiveMinimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "ruleVersion",
          "contactModelVersion",
          "networkParametersVersion",
          "minZoneSharePermille",
          "minCompletionPermille",
          "maxClockOffsetMs",
          "placementFactorPermille",
          "dwellSeconds",
          "limits"
        ],
        "type": "object"
      },
      "ProofPeriod": {
        "example": {
          "from": "2026-09-01",
          "timezone": "Europe/Berlin",
          "to": "2026-09-30"
        },
        "properties": {
          "from": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "timezone": {
            "type": "string"
          },
          "to": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          }
        },
        "required": [
          "from",
          "to",
          "timezone"
        ],
        "type": "object"
      },
      "ProofPublicKey": {
        "example": {
          "algorithm": "Ed25519",
          "fingerprint": "7f03bd40f529641c",
          "keyId": "szn-proof-2026-02",
          "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAlHSMtWJ7TZOENdKGO44v4rJpxSwYRSPRz51AMmKhH6c=\n-----END PUBLIC KEY-----\n",
          "validFrom": "2026-09-15T01:30:06.000Z",
          "validUntil": null
        },
        "properties": {
          "algorithm": {
            "enum": [
              "Ed25519"
            ],
            "type": "string"
          },
          "fingerprint": {
            "pattern": "^[a-f0-9]{16}$",
            "type": "string"
          },
          "keyId": {
            "type": "string"
          },
          "publicKeyPem": {
            "type": "string"
          },
          "validFrom": {
            "format": "date-time",
            "type": "string"
          },
          "validUntil": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "keyId",
          "algorithm",
          "fingerprint",
          "publicKeyPem",
          "validFrom",
          "validUntil"
        ],
        "type": "object"
      },
      "ProofQuality": {
        "example": {
          "coverage": {
            "lateHours": 6,
            "missingHours": 7,
            "onTimeHours": 503,
            "plannedHours": 516,
            "reportedHours": 509,
            "share": 0.9864
          },
          "failures": {
            "byReason": [
              {
                "plays": 6,
                "reason": "render_error",
                "share": 0.0488
              },
              {
                "plays": 0,
                "reason": "wrong_content",
                "share": 0
              },
              {
                "plays": 96,
                "reason": "panel_off",
                "share": 0.7805
              },
              {
                "plays": 0,
                "reason": "not_visible",
                "share": 0
              },
              {
                "plays": 0,
                "reason": "zone_too_small",
                "share": 0
              },
              {
                "plays": 21,
                "reason": "too_short",
                "share": 0.1707
              },
              {
                "plays": 0,
                "reason": "outside_booking",
                "share": 0
              },
              {
                "plays": 0,
                "reason": "clock_unreliable",
                "share": 0
              }
            ],
            "invalid": 123,
            "measured": 5731,
            "share": 0.0215
          },
          "late": {
            "hours": 6,
            "plays": 41,
            "share": 0.0072
          },
          "panelUnconfirmed": {
            "displays": 0,
            "share": 0,
            "validPlays": 0
          }
        },
        "properties": {
          "coverage": {
            "properties": {
              "lateHours": {
                "minimum": 0,
                "type": "integer"
              },
              "missingHours": {
                "minimum": 0,
                "type": "integer"
              },
              "onTimeHours": {
                "minimum": 0,
                "type": "integer"
              },
              "plannedHours": {
                "minimum": 0,
                "type": "integer"
              },
              "reportedHours": {
                "minimum": 0,
                "type": "integer"
              },
              "share": {
                "minimum": 0,
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "plannedHours",
              "reportedHours",
              "onTimeHours",
              "lateHours",
              "missingHours",
              "share"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "failures": {
            "properties": {
              "byReason": {
                "items": {
                  "properties": {
                    "plays": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "reason": {
                      "enum": [
                        "pending",
                        "valid",
                        "render_error",
                        "wrong_content",
                        "panel_off",
                        "not_visible",
                        "zone_too_small",
                        "too_short",
                        "outside_booking",
                        "not_planned",
                        "clock_unreliable"
                      ],
                      "type": "string"
                    },
                    "share": {
                      "minimum": 0,
                      "type": [
                        "number",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "reason",
                    "plays",
                    "share"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "invalid": {
                "minimum": 0,
                "type": "integer"
              },
              "measured": {
                "minimum": 0,
                "type": "integer"
              },
              "share": {
                "minimum": 0,
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "measured",
              "invalid",
              "share",
              "byReason"
            ],
            "type": "object"
          },
          "late": {
            "properties": {
              "hours": {
                "minimum": 0,
                "type": "integer"
              },
              "plays": {
                "minimum": 0,
                "type": "integer"
              },
              "share": {
                "minimum": 0,
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "plays",
              "hours",
              "share"
            ],
            "type": "object"
          },
          "panelUnconfirmed": {
            "properties": {
              "displays": {
                "minimum": 0,
                "type": "integer"
              },
              "share": {
                "minimum": 0,
                "type": [
                  "number",
                  "null"
                ]
              },
              "validPlays": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "validPlays",
              "share",
              "displays"
            ],
            "type": "object"
          }
        },
        "required": [
          "coverage",
          "panelUnconfirmed",
          "late",
          "failures"
        ],
        "type": "object"
      },
      "ProofRecords": {
        "example": {
          "batches": 1416,
          "chain": {
            "fork": 0,
            "gap": 0,
            "ok": 1414,
            "restart": 2
          },
          "devices": 2,
          "plays": 5731,
          "receivedBefore": "2026-10-05T01:25:00.000Z",
          "receivedFrom": null,
          "unsignedBatches": 0
        },
        "properties": {
          "batches": {
            "minimum": 0,
            "type": "integer"
          },
          "chain": {
            "properties": {
              "fork": {
                "minimum": 0,
                "type": "integer"
              },
              "gap": {
                "minimum": 0,
                "type": "integer"
              },
              "ok": {
                "minimum": 0,
                "type": "integer"
              },
              "restart": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "ok",
              "gap",
              "fork",
              "restart"
            ],
            "type": "object"
          },
          "devices": {
            "minimum": 0,
            "type": "integer"
          },
          "plays": {
            "minimum": 0,
            "type": "integer"
          },
          "receivedBefore": {
            "format": "date-time",
            "type": "string"
          },
          "receivedFrom": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "unsignedBatches": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "receivedFrom",
          "receivedBefore",
          "plays",
          "batches",
          "devices",
          "unsignedBatches",
          "chain"
        ],
        "type": "object"
      },
      "ProofReference": {
        "example": {
          "id": "prf_01KZ4T6M80NCHWS00000000412",
          "issuedAt": "2026-10-06T01:30:08.000Z",
          "kind": "addendum",
          "number": "SZN-2026-000412"
        },
        "properties": {
          "id": {
            "pattern": "^prf_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "issuedAt": {
            "format": "date-time",
            "type": "string"
          },
          "kind": {
            "enum": [
              "closing",
              "addendum",
              "interim"
            ],
            "type": "string"
          },
          "number": {
            "pattern": "^SZN-\\d{4}-\\d{6}$",
            "type": "string"
          }
        },
        "required": [
          "id",
          "number",
          "kind",
          "issuedAt"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "ProofResult": {
        "example": {
          "airtimeSeconds": 56080,
          "commitment": {
            "lineQuantity": 12000,
            "quantity": 5901.639,
            "unit": "plays"
          },
          "contacts": {
            "byGrade": [
              {
                "contacts": 18742,
                "grade": "A",
                "share": 1
              }
            ],
            "contactModelVersion": 1,
            "gradeCExcluded": false,
            "total": 18742
          },
          "deliveredInUnit": 5608,
          "deliveryToPlan": 0.9435,
          "displays": {
            "reached": 2,
            "targeted": 2
          },
          "fulfilment": 0.9502,
          "locations": {
            "reached": 1,
            "targeted": 1
          },
          "plannedPlays": 5944,
          "plays": 5731,
          "validPlays": 5608
        },
        "properties": {
          "airtimeSeconds": {
            "minimum": 0,
            "type": "number"
          },
          "commitment": {
            "properties": {
              "lineQuantity": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "quantity": {
                "minimum": 0,
                "type": "number"
              },
              "unit": {
                "enum": [
                  "plays",
                  "airtime_seconds",
                  "contacts"
                ],
                "type": "string"
              }
            },
            "required": [
              "unit",
              "quantity",
              "lineQuantity"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "contacts": {
            "properties": {
              "byGrade": {
                "items": {
                  "properties": {
                    "contacts": {
                      "minimum": 0,
                      "type": "number"
                    },
                    "grade": {
                      "enum": [
                        "A",
                        "B"
                      ],
                      "type": "string"
                    },
                    "share": {
                      "minimum": 0,
                      "type": [
                        "number",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "grade",
                    "contacts",
                    "share"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "contactModelVersion": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "gradeCExcluded": {
                "type": "boolean"
              },
              "total": {
                "minimum": 0,
                "type": "number"
              }
            },
            "required": [
              "total",
              "contactModelVersion",
              "gradeCExcluded",
              "byGrade"
            ],
            "type": "object"
          },
          "deliveredInUnit": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "deliveryToPlan": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "displays": {
            "properties": {
              "reached": {
                "minimum": 0,
                "type": "integer"
              },
              "targeted": {
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "reached",
              "targeted"
            ],
            "type": "object"
          },
          "fulfilment": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "locations": {
            "properties": {
              "reached": {
                "minimum": 0,
                "type": "integer"
              },
              "targeted": {
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "reached",
              "targeted"
            ],
            "type": "object"
          },
          "plannedPlays": {
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "plays": {
            "minimum": 0,
            "type": "integer"
          },
          "validPlays": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "validPlays",
          "plays",
          "airtimeSeconds",
          "commitment",
          "deliveredInUnit",
          "fulfilment",
          "plannedPlays",
          "deliveryToPlan",
          "contacts",
          "locations",
          "displays"
        ],
        "type": "object"
      },
      "ProofSubject": {
        "example": {
          "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
          "advertiserName": "Nordwind Naturkosmetik GmbH",
          "bookingLineId": "bkl_01KXR4Q9T0BKNG000000000001",
          "bookingLineName": "Schaufenster und Kasse",
          "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
          "campaignName": "Herbstpflege 2026",
          "commitment": {
            "quantity": 12000,
            "unit": "plays"
          },
          "lineEndsOn": "2026-10-31",
          "lineStartsOn": "2026-09-01",
          "owner": "tenant",
          "slotsPerPodTenths": 10,
          "spotDurationMs": 10000,
          "targeting": {
            "displays": 2,
            "locations": 1,
            "placements": [
              "window",
              "checkout"
            ],
            "regionCodes": [
              "DE-HH"
            ],
            "venueTypes": [
              "pharmacy"
            ]
          },
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
        },
        "properties": {
          "advertiserId": {
            "pattern": "^adv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "advertiserName": {
            "type": "string"
          },
          "bookingLineId": {
            "pattern": "^bkl_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "bookingLineName": {
            "type": "string"
          },
          "campaignId": {
            "pattern": "^acp_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "campaignName": {
            "type": "string"
          },
          "commitment": {
            "$ref": "#/components/schemas/BookingCommitment"
          },
          "lineEndsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "lineStartsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "owner": {
            "enum": [
              "tenant",
              "network"
            ],
            "type": "string"
          },
          "slotsPerPodTenths": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "spotDurationMs": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "targeting": {
            "properties": {
              "displays": {
                "minimum": 0,
                "type": "integer"
              },
              "locations": {
                "minimum": 0,
                "type": "integer"
              },
              "placements": {
                "items": {
                  "enum": [
                    "window",
                    "sales_floor",
                    "checkout",
                    "waiting_area",
                    "other"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "regionCodes": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "venueTypes": {
                "items": {
                  "enum": [
                    "pharmacy",
                    "workshop",
                    "bakery",
                    "beverage_store",
                    "grocery",
                    "kiosk",
                    "fitness_studio",
                    "medical_practice",
                    "retail",
                    "other"
                  ],
                  "type": "string"
                },
                "type": "array"
              }
            },
            "required": [
              "regionCodes",
              "venueTypes",
              "placements",
              "locations",
              "displays"
            ],
            "type": "object"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "owner",
          "tenantId",
          "advertiserId",
          "advertiserName",
          "campaignId",
          "campaignName",
          "bookingLineId",
          "bookingLineName",
          "lineStartsOn",
          "lineEndsOn",
          "spotDurationMs",
          "slotsPerPodTenths",
          "commitment",
          "targeting"
        ],
        "type": "object"
      },
      "ProofSummary": {
        "example": {
          "addendumOf": null,
          "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
          "advertiserName": "Nordwind Naturkosmetik GmbH",
          "airtimeSeconds": 56080,
          "bookingLineId": "bkl_01KXR4Q9T0BKNG000000000001",
          "bookingLineName": "Schaufenster und Kasse",
          "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
          "campaignName": "Herbstpflege 2026",
          "checkCode": "4HTC-4PY0-7X1N",
          "closedAt": "2026-10-05T01:25:00.000Z",
          "fulfilment": 0.9502,
          "id": "prf_01KZ4T6M80NCHWS00000000398",
          "issuedAt": "2026-10-05T01:30:12.000Z",
          "keyId": "szn-proof-2026-02",
          "kind": "closing",
          "number": "SZN-2026-000398",
          "owner": "tenant",
          "period": {
            "from": "2026-09-01",
            "timezone": "Europe/Berlin",
            "to": "2026-09-30"
          },
          "periodCloseId": "pcl_01KZ4T6M80ZTRM000000000398",
          "retainedUntil": "2036-10-05T01:25:00.000Z",
          "signedAt": "2026-10-05T01:30:19.000Z",
          "status": "issued",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "validPlays": 5608
        },
        "properties": {
          "addendumOf": {
            "$ref": "#/components/schemas/ProofReference"
          },
          "advertiserId": {
            "pattern": "^adv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "advertiserName": {
            "type": "string"
          },
          "airtimeSeconds": {
            "minimum": 0,
            "type": "number"
          },
          "bookingLineId": {
            "pattern": "^bkl_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "bookingLineName": {
            "type": "string"
          },
          "campaignId": {
            "pattern": "^acp_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "campaignName": {
            "type": "string"
          },
          "checkCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "closedAt": {
            "format": "date-time",
            "type": "string"
          },
          "fulfilment": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "id": {
            "pattern": "^prf_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "issuedAt": {
            "format": "date-time",
            "type": "string"
          },
          "keyId": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "enum": [
              "closing",
              "addendum",
              "interim"
            ],
            "type": "string"
          },
          "number": {
            "pattern": "^SZN-\\d{4}-\\d{6}$",
            "type": "string"
          },
          "owner": {
            "enum": [
              "tenant",
              "network"
            ],
            "type": "string"
          },
          "period": {
            "$ref": "#/components/schemas/ProofPeriod"
          },
          "periodCloseId": {
            "pattern": "^pcl_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "retainedUntil": {
            "format": "date-time",
            "type": "string"
          },
          "signedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "enum": [
              "issuing",
              "issued"
            ],
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "validPlays": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "number",
          "kind",
          "status",
          "periodCloseId",
          "owner",
          "tenantId",
          "advertiserId",
          "advertiserName",
          "campaignId",
          "campaignName",
          "bookingLineId",
          "bookingLineName",
          "period",
          "closedAt",
          "issuedAt",
          "signedAt",
          "keyId",
          "checkCode",
          "validPlays",
          "airtimeSeconds",
          "fulfilment",
          "addendumOf",
          "retainedUntil"
        ],
        "type": "object"
      },
      "ProtectedResourceMetadata": {
        "example": {
          "authorization_servers": [
            "https://api.szenera.demo.local"
          ],
          "bearer_methods_supported": [
            "header"
          ],
          "resource": "https://api.szenera.demo.local",
          "resource_documentation": "https://example.com",
          "scopes_supported": [
            "playlist.read",
            "scene.read",
            "scene.write"
          ]
        },
        "properties": {
          "authorization_servers": {
            "items": {
              "format": "uri",
              "type": "string"
            },
            "type": "array"
          },
          "bearer_methods_supported": {
            "items": {
              "enum": [
                "header"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "resource": {
            "format": "uri",
            "type": "string"
          },
          "resource_documentation": {
            "format": "uri",
            "type": "string"
          },
          "scopes_supported": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "resource",
          "authorization_servers",
          "scopes_supported",
          "bearer_methods_supported"
        ],
        "type": "object"
      },
      "ProvisionedWebDisplay": {
        "example": {
          "connectUrl": "https://example.com",
          "name": "sample",
          "playerId": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV"
        },
        "properties": {
          "connectUrl": {
            "format": "uri",
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "playerId": {
            "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "playerId",
          "name",
          "connectUrl"
        ],
        "type": "object"
      },
      "ProvisionWebDisplaysRequest": {
        "example": {
          "count": 1,
          "locationId": "loc_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "namePrefix": "sample"
        },
        "properties": {
          "count": {
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          "locationId": {
            "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "namePrefix": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "count"
        ],
        "type": "object"
      },
      "ProvisionWebDisplaysResponse": {
        "example": {
          "displayAddress": "https://webplayer.signage.example",
          "displays": [
            {
              "connectUrl": "https://webplayer.signage.example/?reconnect=drc_01KHK3FM90KASSE00000000001",
              "name": "Kasse",
              "playerId": "ply_01KHK3FM90SCREEN0000000006"
            }
          ],
          "expiresAt": "2026-07-21T09:15:00.000Z",
          "issuedAt": "2026-07-20T09:15:00.000Z",
          "szeneraProvisioning": 1
        },
        "properties": {
          "displayAddress": {
            "format": "uri",
            "type": "string"
          },
          "displays": {
            "items": {
              "$ref": "#/components/schemas/ProvisionedWebDisplay"
            },
            "maxItems": 50,
            "minItems": 1,
            "type": "array"
          },
          "edition": {
            "enum": [
              "consumer",
              "business"
            ],
            "type": "string"
          },
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "issuedAt": {
            "format": "date-time",
            "type": "string"
          },
          "szeneraProvisioning": {
            "enum": [
              1
            ],
            "type": "number"
          }
        },
        "required": [
          "szeneraProvisioning",
          "displayAddress",
          "issuedAt",
          "expiresAt",
          "displays"
        ],
        "type": "object"
      },
      "PublicPricingQuoteResponse": {
        "example": {
          "currency": "EUR",
          "displays": 5,
          "monthlyTotalGrossCents": 13031,
          "monthlyTotalNetCents": 10950,
          "monthlyUnitPriceNetCents": 2190,
          "package": "PRO",
          "vatRatePercent": 19,
          "yearlySavingsPerYearNetCents": 13140,
          "yearlyTotalPerMonthGrossCents": 11727,
          "yearlyTotalPerMonthNetCents": 9855,
          "yearlyTotalPerYearGrossCents": 140729,
          "yearlyTotalPerYearNetCents": 118260,
          "yearlyUnitPricePerMonthNetCents": 1971
        },
        "properties": {
          "currency": {
            "enum": [
              "EUR"
            ],
            "type": "string"
          },
          "displays": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "monthlyTotalGrossCents": {
            "minimum": 0,
            "type": "integer"
          },
          "monthlyTotalNetCents": {
            "minimum": 0,
            "type": "integer"
          },
          "monthlyUnitPriceNetCents": {
            "minimum": 0,
            "type": "integer"
          },
          "package": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": "string"
          },
          "vatRatePercent": {
            "maximum": 100,
            "minimum": 0,
            "type": "number"
          },
          "yearlySavingsPerYearNetCents": {
            "minimum": 0,
            "type": "integer"
          },
          "yearlyTotalPerMonthGrossCents": {
            "minimum": 0,
            "type": "integer"
          },
          "yearlyTotalPerMonthNetCents": {
            "minimum": 0,
            "type": "integer"
          },
          "yearlyTotalPerYearGrossCents": {
            "minimum": 0,
            "type": "integer"
          },
          "yearlyTotalPerYearNetCents": {
            "minimum": 0,
            "type": "integer"
          },
          "yearlyUnitPricePerMonthNetCents": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "package",
          "displays",
          "currency",
          "vatRatePercent",
          "monthlyUnitPriceNetCents",
          "monthlyTotalNetCents",
          "monthlyTotalGrossCents",
          "yearlyUnitPricePerMonthNetCents",
          "yearlyTotalPerMonthNetCents",
          "yearlyTotalPerMonthGrossCents",
          "yearlyTotalPerYearNetCents",
          "yearlyTotalPerYearGrossCents",
          "yearlySavingsPerYearNetCents"
        ],
        "type": "object"
      },
      "PublicPricingResponse": {
        "example": {
          "currency": "EUR",
          "hardware": [
            {
              "announced": false,
              "available": true,
              "code": "HW-PLAYER-2G",
              "oneTimeGrossCents": 17731,
              "oneTimeNetCents": 14900
            },
            {
              "announced": true,
              "available": false,
              "code": "HW-PLAYER-4G",
              "oneTimeGrossCents": 22491,
              "oneTimeNetCents": 18900
            }
          ],
          "packages": [
            {
              "code": "START",
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyGrossCents": 1773,
              "monthlyNetCents": 1490,
              "tiers": [
                {
                  "fromDisplays": 1,
                  "monthlyGrossCents": 1773,
                  "monthlyNetCents": 1490,
                  "upToDisplays": 4,
                  "yearlyPerMonthGrossCents": 1596,
                  "yearlyPerMonthNetCents": 1341
                },
                {
                  "fromDisplays": 5,
                  "monthlyGrossCents": 1726,
                  "monthlyNetCents": 1450,
                  "upToDisplays": 9,
                  "yearlyPerMonthGrossCents": 1553,
                  "yearlyPerMonthNetCents": 1305
                },
                {
                  "fromDisplays": 10,
                  "monthlyGrossCents": 1678,
                  "monthlyNetCents": 1410,
                  "upToDisplays": 14,
                  "yearlyPerMonthGrossCents": 1510,
                  "yearlyPerMonthNetCents": 1269
                },
                {
                  "fromDisplays": 15,
                  "monthlyGrossCents": 1630,
                  "monthlyNetCents": 1370,
                  "upToDisplays": 19,
                  "yearlyPerMonthGrossCents": 1467,
                  "yearlyPerMonthNetCents": 1233
                },
                {
                  "fromDisplays": 20,
                  "monthlyGrossCents": 1583,
                  "monthlyNetCents": 1330,
                  "upToDisplays": 24,
                  "yearlyPerMonthGrossCents": 1424,
                  "yearlyPerMonthNetCents": 1197
                },
                {
                  "fromDisplays": 25,
                  "monthlyGrossCents": 1535,
                  "monthlyNetCents": 1290,
                  "upToDisplays": null,
                  "yearlyPerMonthGrossCents": 1382,
                  "yearlyPerMonthNetCents": 1161
                }
              ],
              "yearlyPerMonthGrossCents": 1596,
              "yearlyPerMonthNetCents": 1341
            },
            {
              "code": "PRO",
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyGrossCents": 2725,
              "monthlyNetCents": 2290,
              "tiers": [
                {
                  "fromDisplays": 1,
                  "monthlyGrossCents": 2725,
                  "monthlyNetCents": 2290,
                  "upToDisplays": 4,
                  "yearlyPerMonthGrossCents": 2453,
                  "yearlyPerMonthNetCents": 2061
                },
                {
                  "fromDisplays": 5,
                  "monthlyGrossCents": 2606,
                  "monthlyNetCents": 2190,
                  "upToDisplays": 9,
                  "yearlyPerMonthGrossCents": 2345,
                  "yearlyPerMonthNetCents": 1971
                },
                {
                  "fromDisplays": 10,
                  "monthlyGrossCents": 2499,
                  "monthlyNetCents": 2100,
                  "upToDisplays": 14,
                  "yearlyPerMonthGrossCents": 2249,
                  "yearlyPerMonthNetCents": 1890
                },
                {
                  "fromDisplays": 15,
                  "monthlyGrossCents": 2404,
                  "monthlyNetCents": 2020,
                  "upToDisplays": 19,
                  "yearlyPerMonthGrossCents": 2163,
                  "yearlyPerMonthNetCents": 1818
                },
                {
                  "fromDisplays": 20,
                  "monthlyGrossCents": 2321,
                  "monthlyNetCents": 1950,
                  "upToDisplays": 24,
                  "yearlyPerMonthGrossCents": 2088,
                  "yearlyPerMonthNetCents": 1755
                },
                {
                  "fromDisplays": 25,
                  "monthlyGrossCents": 2249,
                  "monthlyNetCents": 1890,
                  "upToDisplays": null,
                  "yearlyPerMonthGrossCents": 2024,
                  "yearlyPerMonthNetCents": 1701
                }
              ],
              "yearlyPerMonthGrossCents": 2453,
              "yearlyPerMonthNetCents": 2061
            },
            {
              "code": "PREMIUM",
              "maxDisplays": null,
              "minDisplays": 5,
              "monthlyGrossCents": 3320,
              "monthlyNetCents": 2790,
              "tiers": [
                {
                  "fromDisplays": 5,
                  "monthlyGrossCents": 3320,
                  "monthlyNetCents": 2790,
                  "upToDisplays": 9,
                  "yearlyPerMonthGrossCents": 2988,
                  "yearlyPerMonthNetCents": 2511
                },
                {
                  "fromDisplays": 10,
                  "monthlyGrossCents": 3035,
                  "monthlyNetCents": 2550,
                  "upToDisplays": 14,
                  "yearlyPerMonthGrossCents": 2731,
                  "yearlyPerMonthNetCents": 2295
                },
                {
                  "fromDisplays": 15,
                  "monthlyGrossCents": 2844,
                  "monthlyNetCents": 2390,
                  "upToDisplays": 19,
                  "yearlyPerMonthGrossCents": 2560,
                  "yearlyPerMonthNetCents": 2151
                },
                {
                  "fromDisplays": 20,
                  "monthlyGrossCents": 2713,
                  "monthlyNetCents": 2280,
                  "upToDisplays": 24,
                  "yearlyPerMonthGrossCents": 2442,
                  "yearlyPerMonthNetCents": 2052
                },
                {
                  "fromDisplays": 25,
                  "monthlyGrossCents": 2606,
                  "monthlyNetCents": 2190,
                  "upToDisplays": null,
                  "yearlyPerMonthGrossCents": 2345,
                  "yearlyPerMonthNetCents": 1971
                }
              ],
              "yearlyPerMonthGrossCents": 2988,
              "yearlyPerMonthNetCents": 2511
            }
          ],
          "trialDays": 30,
          "vatRatePercent": 19,
          "yearlyDiscountPercent": 10
        },
        "properties": {
          "currency": {
            "enum": [
              "EUR"
            ],
            "type": "string"
          },
          "hardware": {
            "items": {
              "properties": {
                "announced": {
                  "type": "boolean"
                },
                "available": {
                  "type": "boolean"
                },
                "code": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                },
                "oneTimeGrossCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "oneTimeNetCents": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "code",
                "oneTimeNetCents",
                "oneTimeGrossCents",
                "available",
                "announced"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "packages": {
            "items": {
              "properties": {
                "code": {
                  "enum": [
                    "START",
                    "PRO",
                    "PREMIUM"
                  ],
                  "type": "string"
                },
                "maxDisplays": {
                  "exclusiveMinimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "minDisplays": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "monthlyGrossCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "monthlyNetCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "tiers": {
                  "items": {
                    "properties": {
                      "fromDisplays": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "monthlyGrossCents": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "monthlyNetCents": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "upToDisplays": {
                        "exclusiveMinimum": 0,
                        "type": [
                          "integer",
                          "null"
                        ]
                      },
                      "yearlyPerMonthGrossCents": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "yearlyPerMonthNetCents": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "fromDisplays",
                      "upToDisplays",
                      "monthlyNetCents",
                      "monthlyGrossCents",
                      "yearlyPerMonthNetCents",
                      "yearlyPerMonthGrossCents"
                    ],
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "yearlyPerMonthGrossCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "yearlyPerMonthNetCents": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "code",
                "maxDisplays",
                "minDisplays",
                "monthlyNetCents",
                "monthlyGrossCents",
                "yearlyPerMonthNetCents",
                "yearlyPerMonthGrossCents",
                "tiers"
              ],
              "type": "object"
            },
            "minItems": 1,
            "type": "array"
          },
          "trialDays": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "vatRatePercent": {
            "maximum": 100,
            "minimum": 0,
            "type": "number"
          },
          "yearlyDiscountPercent": {
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "currency",
          "vatRatePercent",
          "trialDays",
          "yearlyDiscountPercent",
          "packages",
          "hardware"
        ],
        "type": "object"
      },
      "PublishSceneRequest": {
        "example": {
          "expectedVersion": 3,
          "releaseNotes": "Sommer-Öffnungszeiten eingetragen, Uhr in die Seitenleiste verschoben."
        },
        "properties": {
          "expectedVersion": {
            "minimum": 1,
            "type": "integer"
          },
          "releaseNotes": {
            "default": null,
            "maxLength": 2000,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "PublishSceneResponse": {
        "example": {
          "noOp": false,
          "sceneId": "scn_01KJPX8NH0SZENE00000000001",
          "version": {
            "appVersionPins": {
              "clock": "1.2.0",
              "opening-hours": "1.1.0"
            },
            "contentHash": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95",
            "document": {
              "canvas": {
                "backgroundColor": "#f7f5f0",
                "height": 1080,
                "width": 1920
              },
              "layoutTemplateId": "main-sidebar",
              "transitions": {
                "in": {
                  "durationMs": 600,
                  "kind": "fade"
                },
                "out": {
                  "durationMs": 400,
                  "kind": "fade"
                }
              },
              "widgets": [
                {
                  "appId": "core",
                  "appVersionPin": "0.0.0",
                  "config": {
                    "assetId": "ast_01KERR2KG0MEDEN00000000003",
                    "fit": "contain",
                    "variant": "original"
                  },
                  "frame": {
                    "h": 180,
                    "w": 560,
                    "x": 120,
                    "y": 90
                  },
                  "id": "wgi_01KJPXE5A0WDGET00000000003",
                  "slotName": "main",
                  "widgetType": "image",
                  "zIndex": 1
                },
                {
                  "appId": "opening-hours",
                  "appVersionPin": "1.1.0",
                  "config": {
                    "backgroundImage": null,
                    "corners": "round",
                    "fallbackLocationId": "loc_01KHK4B3T0ADRESSE000000001",
                    "locationId": null,
                    "showSpecialHint": true,
                    "source": "display",
                    "surface": "green"
                  },
                  "frame": {
                    "h": 660,
                    "w": 1200,
                    "x": 120,
                    "y": 330
                  },
                  "id": "wgi_01KJPXCAQ0WDGET00000000002",
                  "slotName": "main",
                  "widgetType": "opening-hours",
                  "zIndex": 0
                },
                {
                  "appId": "clock",
                  "appVersionPin": "1.2.0",
                  "config": {
                    "corners": "round",
                    "date": "long",
                    "hourCycle": "auto",
                    "seconds": false,
                    "surface": "dark",
                    "timezone": "",
                    "variant": "digital",
                    "zone": "display"
                  },
                  "frame": {
                    "h": 1080,
                    "w": 480,
                    "x": 1440,
                    "y": 0
                  },
                  "id": "wgi_01KJPXAG40WDGET00000000001",
                  "slotName": "sidebar",
                  "widgetType": "clock",
                  "zIndex": 0
                }
              ]
            },
            "hasThumbnail": false,
            "id": "scv_01KWV8RTT0VERSN00000000001",
            "publishedAt": "2026-07-06T08:30:00.000Z",
            "publishedById": "usr_01KFB7QPW0TEAM000000000002",
            "releaseNotes": "Sommer-Öffnungszeiten eingetragen, Uhr in die Seitenleiste verschoben.",
            "sceneId": "scn_01KJPX8NH0SZENE00000000001",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "versionNumber": 4
          },
          "warnings": [
            {
              "message": "Für „Öffnungszeiten\" liegt bereits Fassung 1.2.0 vor.",
              "type": "AppVersionBehind"
            }
          ]
        },
        "properties": {
          "noOp": {
            "type": "boolean"
          },
          "sceneId": {
            "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "version": {
            "properties": {
              "appVersionPins": {
                "additionalProperties": {
                  "pattern": "^\\d+\\.\\d+\\.\\d+$",
                  "type": "string"
                },
                "type": "object"
              },
              "contentHash": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              },
              "document": {
                "properties": {
                  "canvas": {
                    "properties": {
                      "backgroundColor": {
                        "pattern": "^#[0-9a-fA-F]{6}$",
                        "type": "string"
                      },
                      "height": {
                        "maximum": 7680,
                        "minimum": 320,
                        "type": "integer"
                      },
                      "width": {
                        "maximum": 7680,
                        "minimum": 320,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "width",
                      "height",
                      "backgroundColor"
                    ],
                    "type": "object"
                  },
                  "layoutTemplateId": {
                    "pattern": "^(?:lyt_[0-9A-HJKMNP-TV-Z]{26}|standard-1x1|split-vertical|split-horizontal|grid-2x2|main-sidebar|main-sidebar-2|main-sidebar-3|thirds-vertical|quarters-vertical|header-main|main-ticker|header-main-ticker|sidebar-left-main|header-split|grid-3x2|main-sidebar-ticker|hero-strip-3|portrait-full|portrait-split|portrait-thirds|portrait-main-footer|portrait-half-grid-4|portrait-main-footer-2|portrait-main-footer-3|portrait-header-main|portrait-header-main-ticker|portrait-quarters|portrait-grid-2x3|portrait-hero-columns|ultra-full|ultra-halves|ultra-thirds|ultra-quarters|ultra-center-stage|ultra-main-sidebar|ultra-header-thirds|ultra-thirds-ticker)$",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "transitions": {
                    "properties": {
                      "in": {
                        "oneOf": [
                          {
                            "properties": {
                              "kind": {
                                "enum": [
                                  "none"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "kind"
                            ],
                            "type": "object"
                          },
                          {
                            "properties": {
                              "durationMs": {
                                "maximum": 60000,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "kind": {
                                "enum": [
                                  "fade"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "kind",
                              "durationMs"
                            ],
                            "type": "object"
                          },
                          {
                            "properties": {
                              "direction": {
                                "enum": [
                                  "left",
                                  "right",
                                  "up",
                                  "down"
                                ],
                                "type": "string"
                              },
                              "durationMs": {
                                "maximum": 60000,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "kind": {
                                "enum": [
                                  "slide"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "kind",
                              "durationMs"
                            ],
                            "type": "object"
                          }
                        ]
                      },
                      "out": {
                        "oneOf": [
                          {
                            "properties": {
                              "kind": {
                                "enum": [
                                  "none"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "kind"
                            ],
                            "type": "object"
                          },
                          {
                            "properties": {
                              "durationMs": {
                                "maximum": 60000,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "kind": {
                                "enum": [
                                  "fade"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "kind",
                              "durationMs"
                            ],
                            "type": "object"
                          },
                          {
                            "properties": {
                              "direction": {
                                "enum": [
                                  "left",
                                  "right",
                                  "up",
                                  "down"
                                ],
                                "type": "string"
                              },
                              "durationMs": {
                                "maximum": 60000,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "kind": {
                                "enum": [
                                  "slide"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "kind",
                              "durationMs"
                            ],
                            "type": "object"
                          }
                        ]
                      }
                    },
                    "required": [
                      "in",
                      "out"
                    ],
                    "type": "object"
                  },
                  "widgets": {
                    "items": {
                      "properties": {
                        "appId": {
                          "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                          "type": "string"
                        },
                        "appVersionPin": {
                          "pattern": "^\\d+\\.\\d+\\.\\d+$",
                          "type": "string"
                        },
                        "config": {},
                        "frame": {
                          "properties": {
                            "h": {
                              "exclusiveMinimum": 0,
                              "type": "integer"
                            },
                            "w": {
                              "exclusiveMinimum": 0,
                              "type": "integer"
                            },
                            "x": {
                              "minimum": 0,
                              "type": "integer"
                            },
                            "y": {
                              "minimum": 0,
                              "type": "integer"
                            }
                          },
                          "required": [
                            "x",
                            "y",
                            "w",
                            "h"
                          ],
                          "type": "object"
                        },
                        "id": {
                          "pattern": "^wgi_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "slotName": {
                          "maxLength": 60,
                          "minLength": 1,
                          "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                          "type": "string"
                        },
                        "widgetType": {
                          "maxLength": 100,
                          "minLength": 2,
                          "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                          "type": "string"
                        },
                        "zIndex": {
                          "maximum": 1000,
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "id",
                        "appId",
                        "widgetType",
                        "appVersionPin",
                        "frame",
                        "zIndex"
                      ],
                      "type": "object"
                    },
                    "maxItems": 50,
                    "type": "array"
                  }
                },
                "required": [
                  "canvas",
                  "layoutTemplateId",
                  "widgets",
                  "transitions"
                ],
                "type": "object"
              },
              "hasThumbnail": {
                "default": false,
                "type": "boolean"
              },
              "id": {
                "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "publishedAt": {
                "format": "date-time",
                "type": "string"
              },
              "publishedById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  }
                ]
              },
              "releaseNotes": {
                "maxLength": 2000,
                "type": [
                  "string",
                  "null"
                ]
              },
              "sceneId": {
                "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "versionNumber": {
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "id",
              "sceneId",
              "tenantId",
              "versionNumber",
              "document",
              "contentHash",
              "appVersionPins",
              "publishedById",
              "publishedAt",
              "releaseNotes"
            ],
            "type": "object"
          },
          "warnings": {
            "items": {
              "properties": {
                "message": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "type",
                "message"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "sceneId",
          "version",
          "noOp",
          "warnings"
        ],
        "type": "object"
      },
      "QuietHours": {
        "example": {
          "enabled": true,
          "end": "07:00",
          "includeWeekends": true,
          "start": "20:00"
        },
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "end": {
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
            "type": "string"
          },
          "includeWeekends": {
            "type": "boolean"
          },
          "start": {
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "start",
          "end",
          "includeWeekends"
        ],
        "type": "object"
      },
      "ReachDisplay": {
        "example": {
          "locationId": "loc_01KHK4B3T0ADRESSE000000001",
          "locationName": "Hauptstelle",
          "playerId": "ply_01KHK34MQ0SCREEN0000000001",
          "playerName": "Schaufenster Eingang",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
        },
        "properties": {
          "locationId": {
            "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "locationName": {
            "type": [
              "string",
              "null"
            ]
          },
          "playerId": {
            "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "playerName": {
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "playerId",
          "playerName",
          "tenantId",
          "locationId",
          "locationName"
        ],
        "type": "object"
      },
      "ReactivateSubscriptionResponse": {
        "example": {
          "billingAnchorDay": 1,
          "billingCycle": "monthly",
          "cancelAtPeriodEnd": false,
          "canceledAt": null,
          "cancelScheduledAt": "2026-01-01T00:00:00.000Z",
          "createdAt": "2026-01-12T09:02:00.000Z",
          "currentPeriodEnd": "2026-07-31T23:59:59.000Z",
          "currentPeriodStart": "2026-07-01T00:00:00.000Z",
          "desiredBillingCycle": null,
          "desiredDisplays": 1,
          "desiredPackageCode": null,
          "graceUntil": null,
          "id": "sub_01KERQ1MT0VERTRAG000000001",
          "licenseConflictUntil": "2026-01-01T00:00:00.000Z",
          "packageCode": "START",
          "pendingBillingCycle": null,
          "pendingDisplays": null,
          "pendingFailedAt": null,
          "pendingPackageCode": null,
          "source": "invoice",
          "status": "active",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "trialEndsAt": null,
          "trialExtensionCount": 0,
          "trialExtensionDays": 0,
          "updatedAt": "2026-07-20T09:15:00.000Z"
        },
        "properties": {
          "billingAnchorDay": {
            "maximum": 31,
            "minimum": 1,
            "type": "integer"
          },
          "billingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": "string"
          },
          "cancelAtPeriodEnd": {
            "type": "boolean"
          },
          "canceledAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "cancelScheduledAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "currentPeriodEnd": {
            "format": "date-time",
            "type": "string"
          },
          "currentPeriodStart": {
            "format": "date-time",
            "type": "string"
          },
          "desiredBillingCycle": {
            "default": null,
            "maxLength": 20,
            "type": [
              "string",
              "null"
            ]
          },
          "desiredDisplays": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "desiredPackageCode": {
            "default": null,
            "maxLength": 20,
            "type": [
              "string",
              "null"
            ]
          },
          "graceUntil": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "pattern": "^sub_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "licenseConflictUntil": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "packageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pendingBillingCycle": {
            "default": null,
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pendingDisplays": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "pendingFailedAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "pendingPackageCode": {
            "default": null,
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "source": {
            "enum": [
              "invoice",
              "stripe"
            ],
            "type": "string"
          },
          "status": {
            "enum": [
              "trial",
              "active",
              "past_due",
              "canceled",
              "suspended"
            ],
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "trialEndsAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "trialExtensionCount": {
            "default": 0,
            "minimum": 0,
            "type": "integer"
          },
          "trialExtensionDays": {
            "default": 0,
            "minimum": 0,
            "type": "integer"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "source",
          "packageCode",
          "billingCycle",
          "status",
          "currentPeriodStart",
          "currentPeriodEnd",
          "billingAnchorDay",
          "trialEndsAt",
          "cancelAtPeriodEnd",
          "graceUntil",
          "canceledAt",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "ReactivateUserResponse": {
        "example": {
          "createdAt": "2026-01-19T13:40:00.000Z",
          "deletedAt": null,
          "email": "deniz.acar@demo.local",
          "emailVerifiedAt": "2026-01-19T14:02:00.000Z",
          "hasPassword": true,
          "id": "usr_01KFB7QPW0TEAM000000000002",
          "lastLoginAt": "2026-07-20T08:28:00.000Z",
          "mfaEnabled": true,
          "mfaEnabledAt": "2026-02-02T11:20:00.000Z",
          "profile": {
            "avatarAssetRef": null,
            "displayName": "Deniz Acar",
            "locale": "de-DE",
            "timezone": "Europe/Berlin"
          },
          "roleAssignments": [
            {
              "assignedAt": "2026-01-19T13:41:00.000Z",
              "assignedById": "usr_01KERQ74K0TEAM000000000001",
              "expiresAt": null,
              "roleId": "rol_01KERPYXWRRECHT00000000002"
            }
          ],
          "roleVersion": 2,
          "status": "active",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-20T09:15:00.000Z"
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "deletedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "email": {
            "format": "email",
            "maxLength": 254,
            "type": "string"
          },
          "emailVerifiedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "hasPassword": {
            "type": "boolean"
          },
          "id": {
            "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "lastLoginAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "mfaEnabled": {
            "type": "boolean"
          },
          "mfaEnabledAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "profile": {
            "properties": {
              "avatarAssetRef": {
                "properties": {
                  "assetId": {
                    "description": "Datei-Kennung|Kennung der Datei in der Medienbibliothek.",
                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "variantSet": {
                    "description": "Fassungen|Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                    "items": {
                      "enum": [
                        "original",
                        "thumbnail",
                        "preview",
                        "webp",
                        "playback"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "assetId",
                  "variantSet"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "displayName": {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              "locale": {
                "default": "de-DE",
                "pattern": "^[a-z]{2}(-[A-Z]{2})?$",
                "type": "string"
              },
              "timezone": {
                "default": "Europe/Berlin",
                "type": "string"
              }
            },
            "required": [
              "displayName",
              "avatarAssetRef"
            ],
            "type": "object"
          },
          "roleAssignments": {
            "items": {
              "properties": {
                "assignedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "assignedById": {
                  "anyOf": [
                    {
                      "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    {
                      "enum": [
                        "scim-directory"
                      ],
                      "type": "string"
                    },
                    {
                      "enum": [
                        "role-expiry"
                      ],
                      "type": "string"
                    }
                  ]
                },
                "expiresAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "roleId": {
                  "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                }
              },
              "required": [
                "roleId",
                "assignedAt",
                "assignedById",
                "expiresAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "roleVersion": {
            "minimum": 0,
            "type": "integer"
          },
          "status": {
            "enum": [
              "pending",
              "active",
              "suspended",
              "deleted"
            ],
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "email",
          "emailVerifiedAt",
          "profile",
          "roleAssignments",
          "roleVersion",
          "status",
          "createdAt",
          "updatedAt",
          "deletedAt",
          "lastLoginAt",
          "mfaEnabledAt",
          "mfaEnabled",
          "hasPassword"
        ],
        "type": "object"
      },
      "RecheckIntegrityResponse": {
        "example": {
          "autoFixed": 2,
          "open": 1
        },
        "properties": {
          "autoFixed": {
            "minimum": 0,
            "type": "integer"
          },
          "open": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "open",
          "autoFixed"
        ],
        "type": "object"
      },
      "RefreshPlayerSnapshotResponse": {
        "example": {
          "status": "queued"
        },
        "properties": {
          "status": {
            "enum": [
              "queued",
              "recomputed"
            ],
            "type": "string"
          }
        },
        "required": [
          "status"
        ],
        "type": "object"
      },
      "RefreshResponse": {
        "example": {
          "accessToken": "beispiel-zugangstoken-nicht-echt",
          "expiresAt": "2026-07-20T09:30:00.000Z"
        },
        "properties": {
          "accessToken": {
            "type": "string"
          },
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "accessToken",
          "expiresAt"
        ],
        "type": "object"
      },
      "RegenerateUserRecoveryCodesRequest": {
        "example": {
          "challenge": {
            "code": "123456",
            "kind": "totp"
          },
          "reason": "Notfallschlüssel waren nicht mehr auffindbar."
        },
        "properties": {
          "challenge": {
            "oneOf": [
              {
                "properties": {
                  "code": {
                    "pattern": "^\\d{6}$",
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "totp"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "code"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "code": {
                    "minLength": 1,
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "recovery"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "code"
                ],
                "type": "object"
              }
            ]
          }
        },
        "required": [
          "challenge"
        ],
        "type": "object"
      },
      "RegenerateUserRecoveryCodesResponse": {
        "example": {
          "recoveryCodes": [
            "A7K2-9QM4",
            "H3XD-5RT8",
            "P9WV-2NB6",
            "K4ML-7ZC3",
            "R6QT-8JD5",
            "M2NP-4KV9",
            "T8HB-3XR7",
            "D5JW-6QM2",
            "V3RK-9NT4",
            "B7ZP-2HD8"
          ]
        },
        "properties": {
          "recoveryCodes": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "recoveryCodes"
        ],
        "type": "object"
      },
      "RegisterOAuthClientError": {
        "example": {
          "error": "invalid_redirect_uri",
          "error_description": "Rücksprung-Adressen müssen https sein oder auf localhost zeigen."
        },
        "properties": {
          "error": {
            "enum": [
              "invalid_redirect_uri",
              "invalid_client_metadata"
            ],
            "type": "string"
          },
          "error_description": {
            "type": "string"
          }
        },
        "required": [
          "error",
          "error_description"
        ],
        "type": "object"
      },
      "RegisterOAuthClientRequest": {
        "example": {
          "client_name": "Anzeigen-Assistent",
          "client_uri": "https://anzeigen-assistent.demo.local",
          "grant_types": [
            "authorization_code",
            "refresh_token"
          ],
          "logo_uri": "https://anzeigen-assistent.demo.local/zeichen.png",
          "redirect_uris": [
            "http://127.0.0.1:8765/callback"
          ],
          "response_types": [
            "code"
          ],
          "token_endpoint_auth_method": "none"
        },
        "properties": {
          "client_name": {
            "maxLength": 120,
            "type": "string"
          },
          "client_uri": {
            "maxLength": 2048,
            "type": "string"
          },
          "grant_types": {
            "items": {
              "maxLength": 64,
              "type": "string"
            },
            "type": "array"
          },
          "logo_uri": {
            "maxLength": 2048,
            "type": "string"
          },
          "redirect_uris": {
            "items": {
              "maxLength": 2048,
              "type": "string"
            },
            "maxItems": 10,
            "type": "array"
          },
          "response_types": {
            "items": {
              "maxLength": 64,
              "type": "string"
            },
            "type": "array"
          },
          "scope": {
            "maxLength": 4000,
            "type": "string"
          },
          "token_endpoint_auth_method": {
            "maxLength": 64,
            "type": "string"
          }
        },
        "required": [
          "client_name",
          "redirect_uris"
        ],
        "type": "object"
      },
      "RegisterOAuthClientResponse": {
        "example": {
          "client_id": "oac_01KQRWJRC0ANZEGE0000000001",
          "client_id_issued_at": 1781878800,
          "client_name": "Anzeigen-Assistent",
          "client_uri": "https://anzeigen-assistent.demo.local",
          "grant_types": [
            "authorization_code",
            "refresh_token"
          ],
          "logo_uri": "https://anzeigen-assistent.demo.local/zeichen.png",
          "redirect_uris": [
            "http://127.0.0.1:8765/callback"
          ],
          "response_types": [
            "code"
          ],
          "token_endpoint_auth_method": "none"
        },
        "properties": {
          "client_id": {
            "pattern": "^oac_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "client_id_issued_at": {
            "minimum": 0,
            "type": "integer"
          },
          "client_name": {
            "type": "string"
          },
          "client_uri": {
            "type": [
              "string",
              "null"
            ]
          },
          "grant_types": {
            "items": {
              "enum": [
                "authorization_code",
                "refresh_token"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "logo_uri": {
            "type": [
              "string",
              "null"
            ]
          },
          "redirect_uris": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "response_types": {
            "items": {
              "enum": [
                "code"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "token_endpoint_auth_method": {
            "enum": [
              "none"
            ],
            "type": "string"
          }
        },
        "required": [
          "client_id",
          "client_id_issued_at",
          "client_name",
          "redirect_uris",
          "token_endpoint_auth_method",
          "grant_types",
          "response_types",
          "client_uri",
          "logo_uri"
        ],
        "type": "object"
      },
      "RegisterOAuthClientResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/RegisterOAuthClientResponse"
          },
          {
            "$ref": "#/components/schemas/RegisterOAuthClientError"
          }
        ],
        "example": {
          "client_id": "oac_01KQRWJRC0ANZEGE0000000001",
          "client_id_issued_at": 1781878800,
          "client_name": "Anzeigen-Assistent",
          "client_uri": "https://anzeigen-assistent.demo.local",
          "grant_types": [
            "authorization_code",
            "refresh_token"
          ],
          "logo_uri": "https://anzeigen-assistent.demo.local/zeichen.png",
          "redirect_uris": [
            "http://127.0.0.1:8765/callback"
          ],
          "response_types": [
            "code"
          ],
          "token_endpoint_auth_method": "none"
        }
      },
      "RejectAppUpdateRequest": {
        "example": {
          "manifestHash": "6232f20f63df0aaff6984f3ba10b3b4fac21d45ce4b9546614b37d4d712d2c19"
        },
        "properties": {
          "manifestHash": {
            "pattern": "^[a-f0-9]{64}$",
            "type": "string"
          }
        },
        "required": [
          "manifestHash"
        ],
        "type": "object"
      },
      "RejectAppUpdateResponse": {
        "example": {
          "grant": {
            "acceptedAt": "2026-04-14T11:05:00.000Z",
            "acceptedById": "usr_01KERQ74K0TEAM000000000001",
            "acceptedManifestHash": "cbe771029f86d29d1013d459af92daa9114ebd908fc1243904d180c9e865ff11",
            "appId": "pharmacies-on-duty",
            "declinedAt": "2026-07-20T09:10:00.000Z",
            "declinedReleaseId": "arl_01KX0P4XW0AVERSN0000000002",
            "declinedVersion": "2.0.1",
            "id": "tag_01KP5RMX20GRANT00000000002",
            "installedAt": "2026-04-14T11:05:00.000Z",
            "installedById": "usr_01KERQ74K0TEAM000000000001",
            "installedReleaseId": "arl_01KP5RMC40AVERSN0000000005",
            "installedVersion": "2.0.0",
            "pendingDeadline": null,
            "pendingManifestHash": null,
            "pendingReasons": [],
            "pendingReleaseId": null,
            "status": "active",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "uninstalledAt": null,
            "uninstalledById": null
          }
        },
        "properties": {
          "grant": {
            "properties": {
              "acceptedAt": {
                "format": "date-time",
                "type": "string"
              },
              "acceptedById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "acceptedManifestHash": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              },
              "appId": {
                "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                "type": "string"
              },
              "declinedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "declinedReleaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "declinedVersion": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^tag_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "installedAt": {
                "format": "date-time",
                "type": "string"
              },
              "installedById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "installedReleaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "installedVersion": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": "string"
              },
              "pendingDeadline": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingManifestHash": {
                "pattern": "^[a-f0-9]{64}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingReasons": {
                "items": {
                  "enum": [
                    "permissions",
                    "access",
                    "terms",
                    "retirement"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "pendingReleaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "enum": [
                  "active",
                  "pending-reacceptance",
                  "uninstalled"
                ],
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "uninstalledAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "uninstalledById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "tenantId",
              "appId",
              "installedVersion",
              "installedReleaseId",
              "installedAt",
              "installedById",
              "acceptedManifestHash",
              "acceptedAt",
              "acceptedById",
              "status",
              "pendingManifestHash",
              "pendingReleaseId",
              "pendingReasons",
              "pendingDeadline",
              "declinedReleaseId",
              "declinedVersion",
              "declinedAt",
              "uninstalledAt",
              "uninstalledById"
            ],
            "type": "object"
          }
        },
        "required": [
          "grant"
        ],
        "type": "object"
      },
      "ReleaseDeviceRequest": {
        "example": {
          "reason": "reconnect"
        },
        "properties": {
          "reason": {
            "enum": [
              "reconnect",
              "factory",
              "removed"
            ],
            "type": "string"
          }
        },
        "required": [
          "reason"
        ],
        "type": "object"
      },
      "ReleaseDeviceResponse": {
        "example": {
          "deviceId": "dev_01KHK32T40GERAET0000000001",
          "reason": "reconnect",
          "rendererSessionsRevoked": 1,
          "status": "unclaimed",
          "wipeLevel": "tenant-data"
        },
        "properties": {
          "deviceId": {
            "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "reason": {
            "enum": [
              "reconnect",
              "factory",
              "removed",
              "ops",
              "tenant-deleted"
            ],
            "type": "string"
          },
          "rendererSessionsRevoked": {
            "minimum": 0,
            "type": "integer"
          },
          "status": {
            "enum": [
              "unclaimed",
              "active",
              "blocked"
            ],
            "type": "string"
          },
          "wipeLevel": {
            "enum": [
              "tenant-data",
              "factory"
            ],
            "type": "string"
          }
        },
        "required": [
          "deviceId",
          "status",
          "reason",
          "wipeLevel",
          "rendererSessionsRevoked"
        ],
        "type": "object"
      },
      "RemoveCustomDomainResponse": {
        "example": {
          "removed": true
        },
        "properties": {
          "removed": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "removed"
        ],
        "type": "object"
      },
      "RemoveSsoDomainResponse": {
        "example": {
          "removed": true
        },
        "properties": {
          "removed": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "removed"
        ],
        "type": "object"
      },
      "RenderSceneVersionRequest": {
        "example": {
          "width": 512
        },
        "properties": {
          "width": {
            "default": 512,
            "maximum": 1920,
            "minimum": 256,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "RenderSceneVersionResponse": {
        "example": {
          "jobId": "scv_01KWV8RTT0VERSN00000000001~7b1f0c2e-64a8-4e51-9a3d-2f7c9b0e4d11",
          "state": "queued"
        },
        "properties": {
          "jobId": {
            "minLength": 1,
            "type": "string"
          },
          "state": {
            "enum": [
              "queued",
              "running",
              "completed",
              "failed"
            ],
            "type": "string"
          }
        },
        "required": [
          "jobId",
          "state"
        ],
        "type": "object"
      },
      "ReplaceCreativeFromAssetRequest": {
        "example": {
          "assetId": "ast_01ARZ3NDEKTSV4RRFFQ69G5FAV"
        },
        "properties": {
          "assetId": {
            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "assetId"
        ],
        "type": "object"
      },
      "ReportWindow": {
        "example": {
          "from": "2026-07-08",
          "kind": "fixed",
          "to": "2026-07-08"
        },
        "oneOf": [
          {
            "properties": {
              "from": {
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                "type": "string"
              },
              "kind": {
                "enum": [
                  "fixed"
                ],
                "type": "string"
              },
              "to": {
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                "type": "string"
              }
            },
            "required": [
              "kind",
              "from",
              "to"
            ],
            "type": "object"
          },
          {
            "properties": {
              "days": {
                "maximum": 400,
                "minimum": 1,
                "type": "integer"
              },
              "kind": {
                "enum": [
                  "lastDays"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind",
              "days"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "previousWeek"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "previousMonth"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "monthToDate"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          }
        ]
      },
      "ReprocessAssetResponse": {
        "example": {
          "createdAt": "2026-07-15T13:05:00.000Z",
          "deletedAt": null,
          "dimensions": {
            "height": 2160,
            "width": 3840
          },
          "durationSeconds": null,
          "errorMessage": null,
          "folderId": "fld_01KJ7MWKW0MAPPE00000000001",
          "id": "ast_01KXJY2V30MEDEN00000000004",
          "mimeType": "image/jpeg",
          "name": "angebot-oktober.jpg",
          "originalFileName": "Angebot Oktober Entwurf.jpg",
          "pageCount": 1,
          "purgeAt": null,
          "sha256": "8b3c07e2f5914da6c0b78e34215fd9c608a7b3e1420d95f6ca87b0e39d152c4f",
          "sizeBytes": 2214880,
          "source": null,
          "status": "processing",
          "tags": [
            "angebot",
            "herbst"
          ],
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-20T09:15:00.000Z",
          "uploadedById": "usr_01KFB7QPW0TEAM000000000002",
          "variants": [],
          "videoCodec": null
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "deletedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "dimensions": {
            "properties": {
              "height": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "width": {
                "exclusiveMinimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "width",
              "height"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "durationSeconds": {
            "exclusiveMinimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "errorMessage": {
            "maxLength": 1000,
            "type": [
              "string",
              "null"
            ]
          },
          "folderId": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "mimeType": {
            "enum": [
              "image/jpeg",
              "image/png",
              "image/webp",
              "image/svg+xml",
              "video/mp4",
              "video/webm",
              "application/pdf"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "originalFileName": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "pageCount": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "purgeAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "sha256": {
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "sizeBytes": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "source": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetSource"
              },
              {
                "default": null,
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "status": {
            "enum": [
              "uploading",
              "processing",
              "ready",
              "error"
            ],
            "type": "string"
          },
          "tags": {
            "items": {
              "maxLength": 50,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 50,
            "type": "array"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "uploadedById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "variants": {
            "items": {
              "properties": {
                "blank": {
                  "type": "boolean"
                },
                "codec": {
                  "maxLength": 31,
                  "minLength": 1,
                  "type": "string"
                },
                "generatedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "height": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "id": {
                  "pattern": "^asv_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "kind": {
                  "anyOf": [
                    {
                      "enum": [
                        "thumbnail-sm",
                        "thumbnail-md",
                        "thumbnail-lg",
                        "preview-720",
                        "preview-1080",
                        "webp-original-size",
                        "playback-1080"
                      ],
                      "type": "string"
                    },
                    {
                      "pattern": "^page-([1-9][0-9]{0,2})$",
                      "type": "string"
                    },
                    {
                      "pattern": "^page-([1-9][0-9]{0,2})-sm$",
                      "type": "string"
                    }
                  ]
                },
                "sha256": {
                  "pattern": "^[0-9a-f]{64}$",
                  "type": "string"
                },
                "sizeBytes": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "width": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "kind",
                "width",
                "height",
                "sizeBytes",
                "generatedAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "videoCodec": {
            "default": null,
            "maxLength": 31,
            "minLength": 1,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "tenantId",
          "folderId",
          "name",
          "originalFileName",
          "mimeType",
          "sizeBytes",
          "sha256",
          "tags",
          "dimensions",
          "durationSeconds",
          "uploadedById",
          "status",
          "errorMessage",
          "createdAt",
          "updatedAt",
          "deletedAt",
          "variants",
          "purgeAt"
        ],
        "type": "object"
      },
      "RequestAuditExportRequest": {
        "example": {
          "filter": {
            "from": "2026-04-01T00:00:00.000Z",
            "to": "2026-07-01T00:00:00.000Z"
          },
          "format": "csv"
        },
        "properties": {
          "filter": {
            "default": {},
            "properties": {
              "actorRef": {
                "type": "string"
              },
              "eventType": {
                "type": "string"
              },
              "from": {
                "format": "date-time",
                "type": "string"
              },
              "severity": {
                "enum": [
                  "debug",
                  "info",
                  "warn",
                  "error"
                ],
                "type": "string"
              },
              "to": {
                "format": "date-time",
                "type": "string"
              }
            },
            "type": "object"
          },
          "format": {
            "enum": [
              "csv",
              "json",
              "pdf"
            ],
            "type": "string"
          }
        },
        "required": [
          "format"
        ],
        "type": "object"
      },
      "RequestAuditExportResponse": {
        "example": {
          "completedAt": null,
          "createdAt": "2026-07-17T09:00:00.000Z",
          "errorMessage": null,
          "expiresAt": null,
          "filter": {
            "from": "2026-04-01T00:00:00.000Z",
            "to": "2026-07-01T00:00:00.000Z"
          },
          "format": "csv",
          "id": "aex_01KXQMVNM0EXPRT00000000001",
          "requestedByUserId": "usr_01KERQ74K0TEAM000000000001",
          "rowCount": null,
          "status": "pending",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "truncated": false
        },
        "properties": {
          "completedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "errorMessage": {
            "type": [
              "string",
              "null"
            ]
          },
          "expiresAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "filter": {
            "properties": {
              "actorRef": {
                "type": "string"
              },
              "eventType": {
                "type": "string"
              },
              "from": {
                "format": "date-time",
                "type": "string"
              },
              "severity": {
                "enum": [
                  "debug",
                  "info",
                  "warn",
                  "error"
                ],
                "type": "string"
              },
              "to": {
                "format": "date-time",
                "type": "string"
              }
            },
            "type": "object"
          },
          "format": {
            "enum": [
              "csv",
              "json",
              "pdf"
            ],
            "type": "string"
          },
          "id": {
            "pattern": "^aex_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "requestedByUserId": {
            "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "rowCount": {
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "status": {
            "enum": [
              "pending",
              "processing",
              "completed",
              "failed"
            ],
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "truncated": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "tenantId",
          "requestedByUserId",
          "format",
          "status",
          "filter",
          "rowCount",
          "errorMessage",
          "expiresAt",
          "createdAt",
          "completedAt",
          "truncated"
        ],
        "type": "object"
      },
      "RequestCustomDomainRequest": {
        "example": {
          "domain": "anzeige.adler-apotheke.demo.local"
        },
        "properties": {
          "domain": {
            "maxLength": 253,
            "pattern": "^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$",
            "type": "string"
          }
        },
        "required": [
          "domain"
        ],
        "type": "object"
      },
      "RequestCustomDomainResponse": {
        "example": {
          "cnameTarget": "edge.signage.demo.local",
          "domain": "anzeige.adler-apotheke.demo.local",
          "recordName": "_signage-verify.anzeige.adler-apotheke.demo.local",
          "status": "pending",
          "verificationToken": "sgnv-8f21c7d40ab3e59d"
        },
        "properties": {
          "cnameTarget": {
            "type": "string"
          },
          "domain": {
            "type": "string"
          },
          "recordName": {
            "type": "string"
          },
          "status": {
            "enum": [
              "pending",
              "verified",
              "failed"
            ],
            "type": "string"
          },
          "verificationToken": {
            "type": "string"
          }
        },
        "required": [
          "domain",
          "status",
          "verificationToken",
          "cnameTarget",
          "recordName"
        ],
        "type": "object"
      },
      "RequestOwnerDecisionRequest": {
        "example": {
          "message": "Für die Termine der Impfaktion im Herbst."
        },
        "properties": {
          "message": {
            "maxLength": 280,
            "type": "string"
          }
        },
        "type": "object"
      },
      "RequestOwnerDecisionResponse": {
        "example": {
          "created": true,
          "request": {
            "appId": "calendar",
            "kind": "install",
            "message": "Für die Termine der Impfaktion im Herbst.",
            "requestedAt": "2026-07-19T15:30:00.000Z",
            "requestedById": "usr_01KFB7QPW0TEAM000000000002",
            "version": "1.2.0"
          }
        },
        "properties": {
          "created": {
            "type": "boolean"
          },
          "request": {
            "$ref": "#/components/schemas/AppOwnerRequestView"
          }
        },
        "required": [
          "request",
          "created"
        ],
        "type": "object"
      },
      "ResendInvitationResponse": {
        "example": {
          "expiresAt": "2026-07-27T09:15:00.000Z",
          "invitationId": "ivt_01KXFZ39F0ENADNG0000000001"
        },
        "properties": {
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "invitationId": {
            "pattern": "^ivt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "invitationId",
          "expiresAt"
        ],
        "type": "object"
      },
      "ResolveIntegrityIssueRequest": {
        "example": {
          "resolution": "manual-fixed"
        },
        "properties": {
          "resolution": {
            "enum": [
              "manual-fixed",
              "ignored"
            ],
            "type": "string"
          }
        },
        "required": [
          "resolution"
        ],
        "type": "object"
      },
      "ResolveIntegrityIssueResponse": {
        "example": {
          "detectedAt": "2026-07-17T04:10:00.000Z",
          "id": "sii_01KXQ48NE0PRFNG00000000001",
          "payload": {
            "appId": "weather",
            "availableVersion": "1.4.2",
            "retiredVersion": "1.3.0",
            "widgetInstanceId": "wgi_01KTM20XA0WDGET00000000005"
          },
          "resolution": "manual-fixed",
          "resolvedAt": "2026-07-17T09:12:00.000Z",
          "resolvedById": "usr_01KFB7QPW0TEAM000000000002",
          "sceneId": "scn_01KTM1Z2Q0SZENE00000000003",
          "severity": "WARNING",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "type": "WidgetVersionRetired"
        },
        "properties": {
          "detectedAt": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "pattern": "^sii_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "payload": {},
          "resolution": {
            "enum": [
              "auto-fixed",
              "manual-fixed",
              "ignored"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "resolvedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "resolvedById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "sceneId": {
            "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "severity": {
            "enum": [
              "BLOCKING",
              "WARNING",
              "INFO"
            ],
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "type": {
            "enum": [
              "WidgetVersionRetired",
              "AppUninstalled",
              "AssetDeleted",
              "LayoutTemplateDeleted",
              "ConfigSchemaIncompatible",
              "AppVersionHeld",
              "DocumentPagesChanged"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "sceneId",
          "tenantId",
          "type",
          "severity",
          "detectedAt",
          "resolvedAt",
          "resolvedById",
          "resolution"
        ],
        "type": "object"
      },
      "RestoreAssetResponse": {
        "example": {
          "createdAt": "2026-07-15T13:05:00.000Z",
          "deletedAt": null,
          "dimensions": {
            "height": 2160,
            "width": 3840
          },
          "durationSeconds": null,
          "errorMessage": null,
          "folderId": "fld_01KJ7MWKW0MAPPE00000000001",
          "id": "ast_01KXJY2V30MEDEN00000000004",
          "mimeType": "image/jpeg",
          "name": "angebot-oktober.jpg",
          "originalFileName": "Angebot Oktober Entwurf.jpg",
          "pageCount": 1,
          "purgeAt": null,
          "sha256": "8b3c07e2f5914da6c0b78e34215fd9c608a7b3e1420d95f6ca87b0e39d152c4f",
          "sizeBytes": 2214880,
          "source": null,
          "status": "ready",
          "tags": [
            "angebot",
            "herbst"
          ],
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-20T09:15:00.000Z",
          "uploadedById": "usr_01KFB7QPW0TEAM000000000002",
          "variants": [],
          "videoCodec": null
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "deletedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "dimensions": {
            "properties": {
              "height": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "width": {
                "exclusiveMinimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "width",
              "height"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "durationSeconds": {
            "exclusiveMinimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "errorMessage": {
            "maxLength": 1000,
            "type": [
              "string",
              "null"
            ]
          },
          "folderId": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "mimeType": {
            "enum": [
              "image/jpeg",
              "image/png",
              "image/webp",
              "image/svg+xml",
              "video/mp4",
              "video/webm",
              "application/pdf"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "originalFileName": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "pageCount": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "purgeAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "sha256": {
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "sizeBytes": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "source": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetSource"
              },
              {
                "default": null,
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "status": {
            "enum": [
              "uploading",
              "processing",
              "ready",
              "error"
            ],
            "type": "string"
          },
          "tags": {
            "items": {
              "maxLength": 50,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 50,
            "type": "array"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "uploadedById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "variants": {
            "items": {
              "properties": {
                "blank": {
                  "type": "boolean"
                },
                "codec": {
                  "maxLength": 31,
                  "minLength": 1,
                  "type": "string"
                },
                "generatedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "height": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "id": {
                  "pattern": "^asv_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "kind": {
                  "anyOf": [
                    {
                      "enum": [
                        "thumbnail-sm",
                        "thumbnail-md",
                        "thumbnail-lg",
                        "preview-720",
                        "preview-1080",
                        "webp-original-size",
                        "playback-1080"
                      ],
                      "type": "string"
                    },
                    {
                      "pattern": "^page-([1-9][0-9]{0,2})$",
                      "type": "string"
                    },
                    {
                      "pattern": "^page-([1-9][0-9]{0,2})-sm$",
                      "type": "string"
                    }
                  ]
                },
                "sha256": {
                  "pattern": "^[0-9a-f]{64}$",
                  "type": "string"
                },
                "sizeBytes": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "width": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "kind",
                "width",
                "height",
                "sizeBytes",
                "generatedAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "videoCodec": {
            "default": null,
            "maxLength": 31,
            "minLength": 1,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "tenantId",
          "folderId",
          "name",
          "originalFileName",
          "mimeType",
          "sizeBytes",
          "sha256",
          "tags",
          "dimensions",
          "durationSeconds",
          "uploadedById",
          "status",
          "errorMessage",
          "createdAt",
          "updatedAt",
          "deletedAt",
          "variants",
          "purgeAt"
        ],
        "type": "object"
      },
      "RestoreNotificationResponse": {
        "example": {
          "actionUrl": "/players/ply_01KHK3FM90SCREEN0000000002",
          "bodyKey": "notification.fleet.player-offline.body",
          "bodyParams": {
            "playerId": "ply_01KHK3FM90SCREEN0000000002",
            "playerName": "Wartebereich"
          },
          "createdAt": "2026-07-19T21:14:00.000Z",
          "dismissedAt": null,
          "expiresAt": null,
          "groupKey": "fleet.player-offline:playerId:ply_01KHK3FM90SCREEN0000000002",
          "id": "ntf_01KXY3N3E0HNWES00000000001",
          "kind": "fleet.player-offline",
          "readAt": "2026-07-20T09:15:00.000Z",
          "severity": "warning",
          "titleKey": "notification.fleet.player-offline.title",
          "titleParams": {}
        },
        "properties": {
          "actionUrl": {
            "maxLength": 2000,
            "pattern": "^(\\/(?!\\/)|https:\\/\\/)",
            "type": [
              "string",
              "null"
            ]
          },
          "bodyKey": {
            "pattern": "^[a-z0-9]+(\\.[a-z0-9-]+)+$",
            "type": "string"
          },
          "bodyParams": {
            "additionalProperties": {},
            "type": "object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "dismissedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "expiresAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "groupKey": {
            "type": "string"
          },
          "id": {
            "pattern": "^ntf_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "kind": {
            "enum": [
              "invitation.accepted",
              "invitation.expired",
              "join-request.received",
              "security.theft-detected",
              "security.impersonation-started",
              "security.password-changed",
              "security.mfa-disabled",
              "security.sso-changed",
              "security.api-key-created",
              "security.custom-domain-removed",
              "identity.role-changed",
              "billing.invoice-paid",
              "billing.invoice-issued",
              "billing.payment-failed",
              "billing.past-due",
              "billing.trial-ending",
              "billing.frozen",
              "billing.unfrozen",
              "billing.vat-id-invalid",
              "billing.license-conflict",
              "billing.override-ending",
              "billing.change-failed",
              "billing.cancel-scheduled",
              "analytics.report-failed",
              "analytics.report-ready",
              "audit.export-ready",
              "media.processing-failed",
              "composition.integrity-issue",
              "fleet.player-offline",
              "fleet.command-failed",
              "identity.device-reregistration-requested",
              "integrations.cloud-connection-broken",
              "integrations.webhook-disabled",
              "marketplace.pending-reacceptance",
              "app-catalog.release-retired",
              "marketplace.release-switched",
              "marketplace.install-requested",
              "marketplace.update-decision-requested",
              "marketplace.app-installed",
              "marketplace.update-declined",
              "marketplace.data-deletion-scheduled",
              "tenancy.suspended",
              "tenancy.deletion-warning",
              "tenancy.reactivated",
              "tenancy.custom-domain-verified",
              "tenancy.sso-break-glass-used",
              "ops.maintenance",
              "ops.maintenance-canceled",
              "ops.incident",
              "ops.incident-resolved",
              "ops.broadcast"
            ],
            "type": "string"
          },
          "readAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "severity": {
            "enum": [
              "info",
              "success",
              "warning",
              "error"
            ],
            "type": "string"
          },
          "titleKey": {
            "pattern": "^[a-z0-9]+(\\.[a-z0-9-]+)+$",
            "type": "string"
          },
          "titleParams": {
            "additionalProperties": {},
            "type": "object"
          }
        },
        "required": [
          "id",
          "kind",
          "titleKey",
          "titleParams",
          "bodyKey",
          "bodyParams",
          "severity",
          "actionUrl",
          "readAt",
          "dismissedAt",
          "createdAt",
          "expiresAt",
          "groupKey"
        ],
        "type": "object"
      },
      "RetryWebhookDeliveryResponse": {
        "example": {
          "attemptCount": 6,
          "createdAt": "2026-07-19T21:14:05.000Z",
          "deadAt": null,
          "deliveredAt": null,
          "dispatchedAt": "2026-07-19T21:14:05.000Z",
          "endpointId": "whk_01KTNVF9E0WEBHK00000000002",
          "eventType": "fleet.player.status-changed",
          "id": "whd_01KXY3N8A8SENDNG0000000002",
          "nextRetryAt": "2026-07-20T09:15:00.000Z",
          "payloadSignature": "18b7d0c94e2a5f6318dc47b0a9e52f7c604b1de8397a5c02f6b8d43910ce75af",
          "responseBody": null,
          "responseCode": null,
          "status": "pending",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
        },
        "properties": {
          "attemptCount": {
            "minimum": 0,
            "type": "integer"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "deadAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "deliveredAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "dispatchedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "endpointId": {
            "pattern": "^whk_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "eventType": {
            "type": "string"
          },
          "id": {
            "pattern": "^whd_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "nextRetryAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "payloadSignature": {
            "type": "string"
          },
          "responseBody": {
            "type": [
              "string",
              "null"
            ]
          },
          "responseCode": {
            "type": [
              "integer",
              "null"
            ]
          },
          "status": {
            "enum": [
              "pending",
              "delivered",
              "failed",
              "dead"
            ],
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "endpointId",
          "eventType",
          "payloadSignature",
          "status",
          "attemptCount",
          "responseCode",
          "responseBody",
          "nextRetryAt",
          "dispatchedAt",
          "deliveredAt",
          "deadAt",
          "createdAt"
        ],
        "type": "object"
      },
      "RevenueAllocation": {
        "example": {
          "basisKind": "valid_plays",
          "basisQuantity": 3850,
          "campaignId": "acp_01KXR4P1Q0NETZKMPGN0000001",
          "campaignName": "Kranich Erkältungszeit",
          "computedAt": "2026-11-10T03:00:12.000Z",
          "month": "2026-10",
          "networkParametersVersion": 2,
          "priceCents": 1200,
          "pricingModel": "per_thousand_plays",
          "revenueCents": 4620,
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
        },
        "properties": {
          "basisKind": {
            "enum": [
              "valid_airtime_seconds",
              "graded_contacts",
              "valid_plays"
            ],
            "type": "string"
          },
          "basisQuantity": {
            "minimum": 0,
            "type": "number"
          },
          "campaignId": {
            "pattern": "^acp_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "campaignName": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "computedAt": {
            "format": "date-time",
            "type": "string"
          },
          "month": {
            "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
            "type": "string"
          },
          "networkParametersVersion": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "priceCents": {
            "minimum": 0,
            "type": "integer"
          },
          "pricingModel": {
            "enum": [
              "flat",
              "cpm",
              "per_thousand_plays"
            ],
            "type": "string"
          },
          "revenueCents": {
            "minimum": 0,
            "type": "integer"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "month",
          "campaignId",
          "campaignName",
          "tenantId",
          "pricingModel",
          "priceCents",
          "basisKind",
          "basisQuantity",
          "revenueCents",
          "networkParametersVersion",
          "computedAt"
        ],
        "type": "object"
      },
      "RevenueCreditDocument": {
        "example": {
          "grossCents": 8449,
          "issuedAt": "2026-11-10T10:12:00.000Z",
          "netCents": 7100,
          "number": "WG-2026-0001",
          "vatCents": 1349,
          "vatRatePercent": 19
        },
        "properties": {
          "grossCents": {
            "minimum": 0,
            "type": "integer"
          },
          "issuedAt": {
            "format": "date-time",
            "type": "string"
          },
          "netCents": {
            "minimum": 0,
            "type": "integer"
          },
          "number": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string"
          },
          "vatCents": {
            "minimum": 0,
            "type": "integer"
          },
          "vatRatePercent": {
            "maximum": 100,
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "number",
          "issuedAt",
          "netCents",
          "vatRatePercent",
          "vatCents",
          "grossCents"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "RevenueSettlement": {
        "example": {
          "invoiceId": "inv_01KZ4DXW30RECHNNG000000003",
          "invoiceNumber": "INV-2026-0045",
          "kind": "offset",
          "settledAt": "2026-11-11T08:30:00.000Z"
        },
        "oneOf": [
          {
            "properties": {
              "invoiceId": {
                "maxLength": 30,
                "minLength": 1,
                "type": "string"
              },
              "invoiceNumber": {
                "maxLength": 20,
                "minLength": 1,
                "type": "string"
              },
              "kind": {
                "enum": [
                  "offset"
                ],
                "type": "string"
              },
              "settledAt": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "kind",
              "invoiceId",
              "invoiceNumber",
              "settledAt"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "paid"
                ],
                "type": "string"
              },
              "paidOn": {
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                "type": "string"
              },
              "settledAt": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "kind",
              "paidOn",
              "settledAt"
            ],
            "type": "object"
          },
          {
            "type": "null"
          }
        ]
      },
      "RevenueShare": {
        "example": {
          "creditCapPercent": 100,
          "tenantShareAboveCapPercent": 40
        },
        "properties": {
          "creditCapPercent": {
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          },
          "tenantShareAboveCapPercent": {
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "creditCapPercent",
          "tenantShareAboveCapPercent"
        ],
        "type": "object"
      },
      "RevenueStatementNote": {
        "example": {
          "campaignId": "acp_01KXR4P1Q0NETZKMPGN0000002",
          "campaignName": "Winterhaut 2026",
          "kind": "flat-price-exhausted"
        },
        "properties": {
          "campaignId": {
            "pattern": "^acp_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "campaignName": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "kind": {
            "enum": [
              "flat-price-exhausted"
            ],
            "type": "string"
          }
        },
        "required": [
          "kind",
          "campaignId",
          "campaignName"
        ],
        "type": "object"
      },
      "RevertToVersionResponse": {
        "example": {
          "blocked": false,
          "blockedBy": [],
          "createdAt": "2026-03-02T09:15:00.000Z",
          "createdById": "usr_01KERQ74K0TEAM000000000001",
          "currentVersionId": "scv_01KWV8RTT0VERSN00000000001",
          "description": "Startbild im Schaufenster: Wortmarke, Öffnungszeiten und Uhrzeit.",
          "draftDocument": {
            "canvas": {
              "backgroundColor": "#f7f5f0",
              "height": 1080,
              "width": 1920
            },
            "layoutTemplateId": "main-sidebar",
            "transitions": {
              "in": {
                "durationMs": 600,
                "kind": "fade"
              },
              "out": {
                "durationMs": 400,
                "kind": "fade"
              }
            },
            "widgets": [
              {
                "appId": "core",
                "appVersionPin": "0.0.0",
                "config": {
                  "assetId": "ast_01KERR2KG0MEDEN00000000003",
                  "fit": "contain",
                  "variant": "original"
                },
                "frame": {
                  "h": 180,
                  "w": 560,
                  "x": 120,
                  "y": 90
                },
                "id": "wgi_01KJPXE5A0WDGET00000000003",
                "slotName": "main",
                "widgetType": "image",
                "zIndex": 1
              },
              {
                "appId": "opening-hours",
                "appVersionPin": "1.1.0",
                "config": {
                  "backgroundImage": null,
                  "corners": "round",
                  "fallbackLocationId": "loc_01KHK4B3T0ADRESSE000000001",
                  "locationId": null,
                  "showSpecialHint": true,
                  "source": "display",
                  "surface": "green"
                },
                "frame": {
                  "h": 660,
                  "w": 1200,
                  "x": 120,
                  "y": 330
                },
                "id": "wgi_01KJPXCAQ0WDGET00000000002",
                "slotName": "main",
                "widgetType": "opening-hours",
                "zIndex": 0
              },
              {
                "appId": "clock",
                "appVersionPin": "1.2.0",
                "config": {
                  "corners": "round",
                  "date": "long",
                  "hourCycle": "auto",
                  "seconds": false,
                  "surface": "dark",
                  "timezone": "",
                  "variant": "digital",
                  "zone": "display"
                },
                "frame": {
                  "h": 1080,
                  "w": 480,
                  "x": 1440,
                  "y": 0
                },
                "id": "wgi_01KJPXAG40WDGET00000000001",
                "slotName": "sidebar",
                "widgetType": "clock",
                "zIndex": 0
              }
            ]
          },
          "hasThumbnail": true,
          "id": "scn_01KJPX8NH0SZENE00000000001",
          "name": "Willkommen & Öffnungszeiten",
          "publishedAt": "2026-07-06T08:30:00.000Z",
          "status": "published",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-17T09:20:00.000Z",
          "version": 5
        },
        "properties": {
          "blocked": {
            "default": false,
            "type": "boolean"
          },
          "blockedBy": {
            "default": [],
            "items": {
              "properties": {
                "appId": {
                  "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "reason": {
                  "enum": [
                    "ok",
                    "pro-required",
                    "premium-required",
                    "booking-required",
                    "exempt"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "appId",
                "name",
                "reason"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "createdById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "currentVersionId": {
            "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "maxLength": 2000,
            "type": "string"
          },
          "draftDocument": {
            "properties": {
              "canvas": {
                "properties": {
                  "backgroundColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  },
                  "height": {
                    "maximum": 7680,
                    "minimum": 320,
                    "type": "integer"
                  },
                  "width": {
                    "maximum": 7680,
                    "minimum": 320,
                    "type": "integer"
                  }
                },
                "required": [
                  "width",
                  "height",
                  "backgroundColor"
                ],
                "type": "object"
              },
              "layoutTemplateId": {
                "pattern": "^(?:lyt_[0-9A-HJKMNP-TV-Z]{26}|standard-1x1|split-vertical|split-horizontal|grid-2x2|main-sidebar|main-sidebar-2|main-sidebar-3|thirds-vertical|quarters-vertical|header-main|main-ticker|header-main-ticker|sidebar-left-main|header-split|grid-3x2|main-sidebar-ticker|hero-strip-3|portrait-full|portrait-split|portrait-thirds|portrait-main-footer|portrait-half-grid-4|portrait-main-footer-2|portrait-main-footer-3|portrait-header-main|portrait-header-main-ticker|portrait-quarters|portrait-grid-2x3|portrait-hero-columns|ultra-full|ultra-halves|ultra-thirds|ultra-quarters|ultra-center-stage|ultra-main-sidebar|ultra-header-thirds|ultra-thirds-ticker)$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "transitions": {
                "properties": {
                  "in": {
                    "oneOf": [
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "none"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "fade"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "direction": {
                            "enum": [
                              "left",
                              "right",
                              "up",
                              "down"
                            ],
                            "type": "string"
                          },
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "slide"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "out": {
                    "oneOf": [
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "none"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "fade"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "direction": {
                            "enum": [
                              "left",
                              "right",
                              "up",
                              "down"
                            ],
                            "type": "string"
                          },
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "slide"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      }
                    ]
                  }
                },
                "required": [
                  "in",
                  "out"
                ],
                "type": "object"
              },
              "widgets": {
                "items": {
                  "properties": {
                    "appId": {
                      "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "appVersionPin": {
                      "pattern": "^\\d+\\.\\d+\\.\\d+$",
                      "type": "string"
                    },
                    "config": {},
                    "frame": {
                      "properties": {
                        "h": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        },
                        "w": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        },
                        "x": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "y": {
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "x",
                        "y",
                        "w",
                        "h"
                      ],
                      "type": "object"
                    },
                    "id": {
                      "pattern": "^wgi_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "slotName": {
                      "maxLength": 60,
                      "minLength": 1,
                      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "widgetType": {
                      "maxLength": 100,
                      "minLength": 2,
                      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "zIndex": {
                      "maximum": 1000,
                      "minimum": 0,
                      "type": "integer"
                    }
                  },
                  "required": [
                    "id",
                    "appId",
                    "widgetType",
                    "appVersionPin",
                    "frame",
                    "zIndex"
                  ],
                  "type": "object"
                },
                "maxItems": 50,
                "type": "array"
              }
            },
            "required": [
              "canvas",
              "layoutTemplateId",
              "widgets",
              "transitions"
            ],
            "type": "object"
          },
          "hasThumbnail": {
            "default": false,
            "type": "boolean"
          },
          "id": {
            "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "publishedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "enum": [
              "draft",
              "published",
              "archived"
            ],
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "tenantId",
          "name",
          "description",
          "status",
          "currentVersionId",
          "draftDocument",
          "version",
          "createdById",
          "createdAt",
          "updatedAt",
          "publishedAt"
        ],
        "type": "object"
      },
      "RevokeApiKeyRequest": {
        "example": {
          "reason": "owner-rotation"
        },
        "properties": {
          "reason": {
            "enum": [
              "owner-rotation",
              "compromised"
            ],
            "type": "string"
          }
        },
        "required": [
          "reason"
        ],
        "type": "object"
      },
      "RevokeApiKeyResponse": {
        "example": {
          "apiKey": {
            "createdAt": "2026-05-04T07:00:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "expiresAt": "2027-05-04T07:00:00.000Z",
            "id": "akm_01KQRWJRC0APKEY00000000001",
            "keyPrefix": "ak_APKEY0001",
            "lastUsedAt": "2026-07-20T05:00:00.000Z",
            "name": "Warenwirtschaft-Anbindung",
            "originClass": "read-only",
            "rateLimit": "1200/1m",
            "revokedAt": "2026-07-20T09:15:00.000Z",
            "revokedById": "usr_01KERQ74K0TEAM000000000001",
            "revokedReason": "Anbindung wurde abgeschaltet.",
            "revokesAt": null,
            "rotationGraceHours": 0,
            "scope": [
              "assets.read",
              "playlists.read"
            ],
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          },
          "revokedAt": "2026-07-20T09:15:00.000Z"
        },
        "properties": {
          "apiKey": {
            "properties": {
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "createdById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  }
                ]
              },
              "expiresAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^akm_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "keyPrefix": {
                "pattern": "^ak_[0-9A-HJKMNP-TV-Z]{9}$",
                "type": "string"
              },
              "lastUsedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              "originClass": {
                "enum": [
                  "read-only",
                  "media-automation",
                  "content-authoring",
                  "playout-control",
                  "full",
                  "custom"
                ],
                "type": "string"
              },
              "rateLimit": {
                "default": null,
                "pattern": "^[1-9][0-9]*\\/[1-9][0-9]*[smh]$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "revokedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "revokedById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "revokedReason": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "revokesAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "rotationGraceHours": {
                "maximum": 72,
                "minimum": 0,
                "type": "integer"
              },
              "scope": {
                "items": {
                  "maxLength": 80,
                  "minLength": 3,
                  "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)*$",
                  "type": "string"
                },
                "minItems": 1,
                "type": "array"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              }
            },
            "required": [
              "id",
              "tenantId",
              "name",
              "keyPrefix",
              "createdById",
              "scope",
              "originClass",
              "rotationGraceHours",
              "expiresAt",
              "lastUsedAt",
              "revokedAt",
              "revokedById",
              "revokedReason",
              "revokesAt",
              "createdAt"
            ],
            "type": "object"
          },
          "revokedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "apiKey",
          "revokedAt"
        ],
        "type": "object"
      },
      "RevokeConnectedApplicationResponse": {
        "example": {
          "revokedAt": "2026-07-20T09:15:00.000Z",
          "revokedGrants": 2
        },
        "properties": {
          "revokedAt": {
            "format": "date-time",
            "type": "string"
          },
          "revokedGrants": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "revokedGrants",
          "revokedAt"
        ],
        "type": "object"
      },
      "RevokeGrantResponse": {
        "example": {
          "revoked": true
        },
        "properties": {
          "revoked": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "revoked"
        ],
        "type": "object"
      },
      "RevokeInvitationResponse": {
        "example": {
          "invitationId": "ivt_01KXFZ39F0ENADNG0000000001",
          "revokedAt": "2026-07-20T09:15:00.000Z"
        },
        "properties": {
          "invitationId": {
            "pattern": "^ivt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "revokedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "invitationId",
          "revokedAt"
        ],
        "type": "object"
      },
      "RevokeScimTokenResponse": {
        "example": {
          "revokedAt": "2026-07-20T09:15:00.000Z",
          "revokedCount": 1
        },
        "properties": {
          "revokedAt": {
            "format": "date-time",
            "type": "string"
          },
          "revokedCount": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "revokedAt",
          "revokedCount"
        ],
        "type": "object"
      },
      "RevokeShareLinkResponse": {
        "example": {
          "shareLink": {
            "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
            "advertiserName": "Nordwind Naturkosmetik GmbH",
            "createdAt": "2026-08-02T08:00:00.000Z",
            "expiresAt": "2026-10-31T08:00:00.000Z",
            "id": "shl_01KZ8VBN40VRWS000000000002",
            "label": "Lena Brandt, Sommer",
            "lastUsedAt": "2026-09-03T15:40:00.000Z",
            "owner": "tenant",
            "revokedAt": "2026-10-12T07:58:00.000Z",
            "state": "revoked"
          }
        },
        "properties": {
          "shareLink": {
            "$ref": "#/components/schemas/ShareLink"
          }
        },
        "required": [
          "shareLink"
        ],
        "type": "object"
      },
      "RotateApiKeyRequest": {
        "example": {
          "graceHours": 0,
          "reason": "Jährlicher Wechsel des Zugangsschlüssels."
        },
        "properties": {
          "graceHours": {
            "maximum": 72,
            "minimum": 0,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "RotateApiKeyResponse": {
        "example": {
          "newApiKey": {
            "createdAt": "2026-07-20T09:15:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "expiresAt": "2027-05-04T07:00:00.000Z",
            "id": "akm_01KQRWJRC0APKEY00000000001",
            "keyPrefix": "ak_APKEY0001",
            "lastUsedAt": "2026-07-20T05:00:00.000Z",
            "name": "Warenwirtschaft-Anbindung",
            "originClass": "read-only",
            "rateLimit": "1200/1m",
            "revokedAt": null,
            "revokedById": null,
            "revokedReason": null,
            "revokesAt": null,
            "rotationGraceHours": 0,
            "scope": [
              "assets.read",
              "playlists.read"
            ],
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          },
          "newPlainKey": "ak_01KQRWJRC0APKEY00000000001",
          "oldApiKey": {
            "createdAt": "2026-05-04T07:00:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "expiresAt": "2027-05-04T07:00:00.000Z",
            "id": "akm_01KQRWJRC0APKEY00000000001",
            "keyPrefix": "ak_APKEY0001",
            "lastUsedAt": "2026-07-20T05:00:00.000Z",
            "name": "Warenwirtschaft-Anbindung",
            "originClass": "read-only",
            "rateLimit": "1200/1m",
            "revokedAt": null,
            "revokedById": null,
            "revokedReason": null,
            "revokesAt": "2026-07-27T09:15:00.000Z",
            "rotationGraceHours": 0,
            "scope": [
              "assets.read",
              "playlists.read"
            ],
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          },
          "oldRevokesAt": "2026-07-27T09:15:00.000Z"
        },
        "properties": {
          "newApiKey": {
            "properties": {
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "createdById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  }
                ]
              },
              "expiresAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^akm_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "keyPrefix": {
                "pattern": "^ak_[0-9A-HJKMNP-TV-Z]{9}$",
                "type": "string"
              },
              "lastUsedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              "originClass": {
                "enum": [
                  "read-only",
                  "media-automation",
                  "content-authoring",
                  "playout-control",
                  "full",
                  "custom"
                ],
                "type": "string"
              },
              "rateLimit": {
                "default": null,
                "pattern": "^[1-9][0-9]*\\/[1-9][0-9]*[smh]$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "revokedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "revokedById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "revokedReason": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "revokesAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "rotationGraceHours": {
                "maximum": 72,
                "minimum": 0,
                "type": "integer"
              },
              "scope": {
                "items": {
                  "maxLength": 80,
                  "minLength": 3,
                  "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)*$",
                  "type": "string"
                },
                "minItems": 1,
                "type": "array"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              }
            },
            "required": [
              "id",
              "tenantId",
              "name",
              "keyPrefix",
              "createdById",
              "scope",
              "originClass",
              "rotationGraceHours",
              "expiresAt",
              "lastUsedAt",
              "revokedAt",
              "revokedById",
              "revokedReason",
              "revokesAt",
              "createdAt"
            ],
            "type": "object"
          },
          "newPlainKey": {
            "pattern": "^ak_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "oldApiKey": {
            "properties": {
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "createdById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  }
                ]
              },
              "expiresAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^akm_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "keyPrefix": {
                "pattern": "^ak_[0-9A-HJKMNP-TV-Z]{9}$",
                "type": "string"
              },
              "lastUsedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              "originClass": {
                "enum": [
                  "read-only",
                  "media-automation",
                  "content-authoring",
                  "playout-control",
                  "full",
                  "custom"
                ],
                "type": "string"
              },
              "rateLimit": {
                "default": null,
                "pattern": "^[1-9][0-9]*\\/[1-9][0-9]*[smh]$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "revokedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "revokedById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "revokedReason": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "revokesAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "rotationGraceHours": {
                "maximum": 72,
                "minimum": 0,
                "type": "integer"
              },
              "scope": {
                "items": {
                  "maxLength": 80,
                  "minLength": 3,
                  "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)*$",
                  "type": "string"
                },
                "minItems": 1,
                "type": "array"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              }
            },
            "required": [
              "id",
              "tenantId",
              "name",
              "keyPrefix",
              "createdById",
              "scope",
              "originClass",
              "rotationGraceHours",
              "expiresAt",
              "lastUsedAt",
              "revokedAt",
              "revokedById",
              "revokedReason",
              "revokesAt",
              "createdAt"
            ],
            "type": "object"
          },
          "oldRevokesAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "newApiKey",
          "newPlainKey",
          "oldApiKey",
          "oldRevokesAt"
        ],
        "type": "object"
      },
      "RotateScimTokenRequest": {
        "example": {
          "graceHours": 24
        },
        "properties": {
          "graceHours": {
            "default": 24,
            "maximum": 72,
            "minimum": 0,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "RotateScimTokenResponse": {
        "example": {
          "plainToken": "sct_01KFB7QPW0SCM0BESPEK000AB1",
          "previous": {
            "createdAt": "2026-06-01T08:30:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "id": "sctm_01KFB7QPW0SCM0ZGANG00000A1",
            "lastUsedAt": "2026-07-20T02:00:00.000Z",
            "revokedAt": null,
            "revokedReason": null,
            "revokesAt": "2026-07-27T09:15:00.000Z",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "tokenPrefix": "sct_01KFB7QP"
          },
          "previousRevokesAt": "2026-07-27T09:15:00.000Z",
          "token": {
            "createdAt": "2026-07-20T09:15:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "id": "sctm_01KFB7QPW0SCM0ZGANG00000A2",
            "lastUsedAt": null,
            "revokedAt": null,
            "revokedReason": null,
            "revokesAt": null,
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "tokenPrefix": "sct_01KFB7QP"
          },
          "warning": "Store this token now. It will not be shown again."
        },
        "properties": {
          "plainToken": {
            "pattern": "^sct_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "previous": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ScimTokenPublic"
              },
              {
                "type": "object"
              }
            ]
          },
          "previousRevokesAt": {
            "format": "date-time",
            "type": "string"
          },
          "token": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ScimTokenPublic"
              },
              {
                "type": "object"
              }
            ]
          },
          "warning": {
            "enum": [
              "Store this token now. It will not be shown again."
            ],
            "type": "string"
          }
        },
        "required": [
          "token",
          "plainToken",
          "previous",
          "previousRevokesAt",
          "warning"
        ],
        "type": "object"
      },
      "RotateSecretResponse": {
        "example": {
          "secret": "whsec_5nQ8jVzT4wYb2HcKd7RmFp3aXe6sGu9L"
        },
        "properties": {
          "secret": {
            "pattern": "^whsec_[A-Za-z0-9_-]{32,}$",
            "type": "string"
          }
        },
        "required": [
          "secret"
        ],
        "type": "object"
      },
      "RunExploreResponse": {
        "example": {
          "computedAt": "2026-10-12T05:30:00.000Z",
          "dimensions": [
            {
              "key": "player",
              "label": "Display"
            }
          ],
          "granularity": "hour",
          "measures": [
            {
              "bounded": false,
              "class": "measured",
              "key": "airtimeSeconds",
              "label": "Sendezeit",
              "method": {
                "contactModel": null,
                "networkParameters": null,
                "validityRule": 1
              },
              "unit": "seconds"
            },
            {
              "bounded": true,
              "class": "derived",
              "key": "availability",
              "label": "Verfügbarkeit",
              "method": {
                "contactModel": null,
                "networkParameters": null,
                "validityRule": null
              },
              "unit": "ratio"
            }
          ],
          "notices": [
            {
              "code": "openGaps",
              "params": {
                "deadline": "2026-10-17T09:00:00.000Z",
                "hours": 3
              },
              "text": "3 Planstunden sind noch nicht gemeldet und können bis 17.10.2026, 11:00 nachkommen. Die Zahlen können noch steigen."
            }
          ],
          "perspective": "venue",
          "presentation": "ranking",
          "rows": [
            {
              "dimensions": [
                {
                  "label": "Schaufenster Eingang",
                  "value": "ply_01KHK34MQ0SCREEN0000000001"
                }
              ],
              "merged": false,
              "upper": [
                null,
                0.975
              ],
              "values": [
                198900,
                0.925
              ]
            },
            {
              "dimensions": [
                {
                  "label": "Wartebereich",
                  "value": "ply_01KHK3FM90SCREEN0000000002"
                }
              ],
              "merged": false,
              "upper": [
                null,
                0.9333
              ],
              "values": [
                199800,
                0.9333
              ]
            },
            {
              "dimensions": [
                {
                  "label": "Beratungsraum",
                  "value": "ply_01KRX5JVJ0SCREEN0000000003"
                }
              ],
              "merged": false,
              "upper": [
                null,
                0.9792
              ],
              "values": [
                210600,
                0.9792
              ]
            }
          ],
          "suggestions": [
            {
              "key": "compareWithPreviousPeriod",
              "label": "mit dem Zeitraum davor vergleichen",
              "query": {
                "dimensions": [
                  "player"
                ],
                "filters": {},
                "granularity": "auto",
                "limit": null,
                "measures": [
                  "airtimeSeconds",
                  "availability"
                ],
                "perspective": "venue",
                "sort": {
                  "direction": "asc",
                  "measure": "availability"
                },
                "window": {
                  "from": "2026-09-28",
                  "timezone": "Europe/Berlin",
                  "to": "2026-10-04"
                }
              }
            },
            {
              "key": "byHourOfDay",
              "label": "nach Stunde des Tages",
              "query": {
                "dimensions": [
                  "player",
                  "hourOfDay"
                ],
                "filters": {},
                "granularity": "hour",
                "limit": null,
                "measures": [
                  "airtimeSeconds",
                  "availability"
                ],
                "perspective": "venue",
                "sort": {
                  "direction": "asc",
                  "measure": "availability"
                },
                "window": {
                  "from": "2026-10-05",
                  "timezone": "Europe/Berlin",
                  "to": "2026-10-11"
                }
              }
            }
          ],
          "totals": {
            "upper": [
              null,
              0.9625
            ],
            "values": [
              609300,
              0.9458
            ]
          },
          "window": {
            "from": "2026-10-05",
            "requestedFrom": "2026-10-05",
            "requestedTo": "2026-10-11",
            "timezone": "Europe/Berlin",
            "to": "2026-10-11"
          }
        },
        "properties": {
          "computedAt": {
            "format": "date-time",
            "type": "string"
          },
          "dimensions": {
            "items": {
              "$ref": "#/components/schemas/ExploreDimensionColumn"
            },
            "type": "array"
          },
          "granularity": {
            "enum": [
              "hour",
              "day"
            ],
            "type": "string"
          },
          "measures": {
            "items": {
              "$ref": "#/components/schemas/ExploreMeasureColumn"
            },
            "type": "array"
          },
          "notices": {
            "items": {
              "$ref": "#/components/schemas/ExploreNotice"
            },
            "type": "array"
          },
          "perspective": {
            "enum": [
              "venue",
              "network",
              "advertiser"
            ],
            "type": "string"
          },
          "presentation": {
            "enum": [
              "single",
              "timeSeries",
              "raster",
              "ranking",
              "matrix",
              "table"
            ],
            "type": "string"
          },
          "rows": {
            "items": {
              "$ref": "#/components/schemas/ExploreRow"
            },
            "type": "array"
          },
          "suggestions": {
            "items": {
              "$ref": "#/components/schemas/ExploreSuggestion"
            },
            "type": "array"
          },
          "totals": {
            "$ref": "#/components/schemas/ExploreTotals"
          },
          "window": {
            "$ref": "#/components/schemas/ExploreResolvedWindow"
          }
        },
        "required": [
          "perspective",
          "window",
          "granularity",
          "dimensions",
          "measures",
          "rows",
          "totals",
          "notices",
          "presentation",
          "suggestions",
          "computedAt"
        ],
        "type": "object"
      },
      "RunReportRequest": {
        "example": {
          "format": "csv"
        },
        "properties": {
          "format": {
            "enum": [
              "csv",
              "pdf"
            ],
            "type": "string"
          }
        },
        "required": [
          "format"
        ],
        "type": "object"
      },
      "RunReportResponse": {
        "example": {
          "generatedReportId": "gnr_01KXYTWGG0BERCHT0000000002",
          "status": "queued"
        },
        "properties": {
          "generatedReportId": {
            "pattern": "^gnr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "status": {
            "enum": [
              "queued"
            ],
            "type": "string"
          }
        },
        "required": [
          "generatedReportId",
          "status"
        ],
        "type": "object"
      },
      "RunSyncedFolderResponse": {
        "example": {
          "queued": true,
          "syncedFolderId": "syf_01KT3WD680SYNCFDR000000001"
        },
        "properties": {
          "queued": {
            "type": "boolean"
          },
          "syncedFolderId": {
            "pattern": "^syf_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "queued",
          "syncedFolderId"
        ],
        "type": "object"
      },
      "SavedExploreQuery": {
        "example": {
          "dimensions": [
            "scene"
          ],
          "filters": {
            "contentKinds": [
              "scene"
            ]
          },
          "granularity": "day",
          "limit": 20,
          "measures": [
            "airtimeSeconds",
            "plays"
          ],
          "perspective": "venue",
          "sort": {
            "direction": "desc",
            "measure": "airtimeSeconds"
          },
          "timezone": "Europe/Berlin",
          "window": {
            "kind": "previousMonth"
          }
        },
        "properties": {
          "dimensions": {
            "default": [],
            "items": {
              "enum": [
                "period",
                "month",
                "week",
                "day",
                "weekday",
                "daypart",
                "hour",
                "hourOfDay",
                "network",
                "region",
                "venueType",
                "location",
                "player",
                "placement",
                "tag",
                "group",
                "owner",
                "advertiser",
                "campaign",
                "bookingLine",
                "creative",
                "contentKind",
                "schedule",
                "playlist",
                "scene",
                "asset",
                "status",
                "late",
                "grade",
                "play"
              ],
              "type": "string"
            },
            "maxItems": 3,
            "type": "array"
          },
          "filters": {
            "$ref": "#/components/schemas/ExploreFilters"
          },
          "granularity": {
            "default": "auto",
            "enum": [
              "auto",
              "hour",
              "day"
            ],
            "type": "string"
          },
          "limit": {
            "default": null,
            "maximum": 5000,
            "minimum": 1,
            "type": [
              "integer",
              "null"
            ]
          },
          "measures": {
            "items": {
              "enum": [
                "plannedSeconds",
                "visibleSeconds",
                "availability",
                "gapHours",
                "lateHours",
                "renderErrors",
                "plays",
                "validPlays",
                "airtimeSeconds",
                "plannedPlays",
                "fulfilment",
                "pacing",
                "failureRate",
                "screenShare",
                "reachedLocations",
                "contacts",
                "contactValueCents",
                "audienceGradeMix",
                "fillRate"
              ],
              "type": "string"
            },
            "maxItems": 6,
            "minItems": 1,
            "type": "array"
          },
          "perspective": {
            "default": "venue",
            "enum": [
              "venue",
              "network",
              "advertiser"
            ],
            "type": "string"
          },
          "sort": {
            "$ref": "#/components/schemas/ExploreSort"
          },
          "timezone": {
            "type": "string"
          },
          "window": {
            "$ref": "#/components/schemas/ReportWindow"
          }
        },
        "required": [
          "measures",
          "window"
        ],
        "type": "object"
      },
      "ScenePublic": {
        "example": {
          "blocked": false,
          "blockedBy": [],
          "createdAt": "2026-03-02T09:15:00.000Z",
          "createdById": "usr_01KERQ74K0TEAM000000000001",
          "currentVersionId": "scv_01KWV8RTT0VERSN00000000001",
          "description": "Startbild im Schaufenster: Wortmarke, Öffnungszeiten und Uhrzeit.",
          "draftDocument": {
            "canvas": {
              "backgroundColor": "#f7f5f0",
              "height": 1080,
              "width": 1920
            },
            "layoutTemplateId": "main-sidebar",
            "transitions": {
              "in": {
                "durationMs": 600,
                "kind": "fade"
              },
              "out": {
                "durationMs": 400,
                "kind": "fade"
              }
            },
            "widgets": [
              {
                "appId": "core",
                "appVersionPin": "0.0.0",
                "config": {
                  "assetId": "ast_01KERR2KG0MEDEN00000000003",
                  "fit": "contain",
                  "variant": "original"
                },
                "frame": {
                  "h": 180,
                  "w": 560,
                  "x": 120,
                  "y": 90
                },
                "id": "wgi_01KJPXE5A0WDGET00000000003",
                "slotName": "main",
                "widgetType": "image",
                "zIndex": 1
              },
              {
                "appId": "opening-hours",
                "appVersionPin": "1.1.0",
                "config": {
                  "backgroundImage": null,
                  "corners": "round",
                  "fallbackLocationId": "loc_01KHK4B3T0ADRESSE000000001",
                  "locationId": null,
                  "showSpecialHint": true,
                  "source": "display",
                  "surface": "green"
                },
                "frame": {
                  "h": 660,
                  "w": 1200,
                  "x": 120,
                  "y": 330
                },
                "id": "wgi_01KJPXCAQ0WDGET00000000002",
                "slotName": "main",
                "widgetType": "opening-hours",
                "zIndex": 0
              },
              {
                "appId": "clock",
                "appVersionPin": "1.2.0",
                "config": {
                  "corners": "round",
                  "date": "long",
                  "hourCycle": "auto",
                  "seconds": false,
                  "surface": "dark",
                  "timezone": "",
                  "variant": "digital",
                  "zone": "display"
                },
                "frame": {
                  "h": 1080,
                  "w": 480,
                  "x": 1440,
                  "y": 0
                },
                "id": "wgi_01KJPXAG40WDGET00000000001",
                "slotName": "sidebar",
                "widgetType": "clock",
                "zIndex": 0
              }
            ]
          },
          "hasThumbnail": true,
          "id": "scn_01KJPX8NH0SZENE00000000001",
          "name": "Willkommen & Öffnungszeiten",
          "publishedAt": "2026-07-06T08:30:00.000Z",
          "status": "published",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-06T08:30:00.000Z",
          "version": 4
        },
        "properties": {
          "blocked": {
            "default": false,
            "type": "boolean"
          },
          "blockedBy": {
            "default": [],
            "items": {
              "properties": {
                "appId": {
                  "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "reason": {
                  "enum": [
                    "ok",
                    "pro-required",
                    "premium-required",
                    "booking-required",
                    "exempt"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "appId",
                "name",
                "reason"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "createdById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "currentVersionId": {
            "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "maxLength": 2000,
            "type": "string"
          },
          "draftDocument": {
            "properties": {
              "canvas": {
                "properties": {
                  "backgroundColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  },
                  "height": {
                    "maximum": 7680,
                    "minimum": 320,
                    "type": "integer"
                  },
                  "width": {
                    "maximum": 7680,
                    "minimum": 320,
                    "type": "integer"
                  }
                },
                "required": [
                  "width",
                  "height",
                  "backgroundColor"
                ],
                "type": "object"
              },
              "layoutTemplateId": {
                "pattern": "^(?:lyt_[0-9A-HJKMNP-TV-Z]{26}|standard-1x1|split-vertical|split-horizontal|grid-2x2|main-sidebar|main-sidebar-2|main-sidebar-3|thirds-vertical|quarters-vertical|header-main|main-ticker|header-main-ticker|sidebar-left-main|header-split|grid-3x2|main-sidebar-ticker|hero-strip-3|portrait-full|portrait-split|portrait-thirds|portrait-main-footer|portrait-half-grid-4|portrait-main-footer-2|portrait-main-footer-3|portrait-header-main|portrait-header-main-ticker|portrait-quarters|portrait-grid-2x3|portrait-hero-columns|ultra-full|ultra-halves|ultra-thirds|ultra-quarters|ultra-center-stage|ultra-main-sidebar|ultra-header-thirds|ultra-thirds-ticker)$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "transitions": {
                "properties": {
                  "in": {
                    "oneOf": [
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "none"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "fade"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "direction": {
                            "enum": [
                              "left",
                              "right",
                              "up",
                              "down"
                            ],
                            "type": "string"
                          },
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "slide"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "out": {
                    "oneOf": [
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "none"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "fade"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "direction": {
                            "enum": [
                              "left",
                              "right",
                              "up",
                              "down"
                            ],
                            "type": "string"
                          },
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "slide"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      }
                    ]
                  }
                },
                "required": [
                  "in",
                  "out"
                ],
                "type": "object"
              },
              "widgets": {
                "items": {
                  "properties": {
                    "appId": {
                      "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "appVersionPin": {
                      "pattern": "^\\d+\\.\\d+\\.\\d+$",
                      "type": "string"
                    },
                    "config": {},
                    "frame": {
                      "properties": {
                        "h": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        },
                        "w": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        },
                        "x": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "y": {
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "x",
                        "y",
                        "w",
                        "h"
                      ],
                      "type": "object"
                    },
                    "id": {
                      "pattern": "^wgi_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "slotName": {
                      "maxLength": 60,
                      "minLength": 1,
                      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "widgetType": {
                      "maxLength": 100,
                      "minLength": 2,
                      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "zIndex": {
                      "maximum": 1000,
                      "minimum": 0,
                      "type": "integer"
                    }
                  },
                  "required": [
                    "id",
                    "appId",
                    "widgetType",
                    "appVersionPin",
                    "frame",
                    "zIndex"
                  ],
                  "type": "object"
                },
                "maxItems": 50,
                "type": "array"
              }
            },
            "required": [
              "canvas",
              "layoutTemplateId",
              "widgets",
              "transitions"
            ],
            "type": "object"
          },
          "hasThumbnail": {
            "default": false,
            "type": "boolean"
          },
          "id": {
            "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "publishedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "enum": [
              "draft",
              "published",
              "archived"
            ],
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "tenantId",
          "name",
          "description",
          "status",
          "currentVersionId",
          "draftDocument",
          "version",
          "createdById",
          "createdAt",
          "updatedAt",
          "publishedAt"
        ],
        "type": "object"
      },
      "SceneTemplatePublic": {
        "example": {
          "category": "welcome",
          "description": "Wortmarke oben, Öffnungszeiten darunter, Uhr in der Seitenleiste.",
          "document": {
            "canvas": {
              "backgroundColor": "#f7f5f0",
              "height": 1080,
              "width": 1920
            },
            "layoutTemplateId": "main-sidebar",
            "transitions": {
              "in": {
                "durationMs": 600,
                "kind": "fade"
              },
              "out": {
                "durationMs": 400,
                "kind": "fade"
              }
            },
            "widgets": [
              {
                "appId": "core",
                "appVersionPin": "0.0.0",
                "config": {
                  "assetId": "ast_01KERR2KG0MEDEN00000000003",
                  "fit": "contain",
                  "variant": "original"
                },
                "frame": {
                  "h": 180,
                  "w": 560,
                  "x": 120,
                  "y": 90
                },
                "id": "wgi_01KJPXE5A0WDGET00000000003",
                "slotName": "main",
                "widgetType": "image",
                "zIndex": 1
              },
              {
                "appId": "opening-hours",
                "appVersionPin": "1.1.0",
                "config": {
                  "backgroundImage": null,
                  "corners": "round",
                  "fallbackLocationId": "loc_01KHK4B3T0ADRESSE000000001",
                  "locationId": null,
                  "showSpecialHint": true,
                  "source": "display",
                  "surface": "green"
                },
                "frame": {
                  "h": 660,
                  "w": 1200,
                  "x": 120,
                  "y": 330
                },
                "id": "wgi_01KJPXCAQ0WDGET00000000002",
                "slotName": "main",
                "widgetType": "opening-hours",
                "zIndex": 0
              },
              {
                "appId": "clock",
                "appVersionPin": "1.2.0",
                "config": {
                  "corners": "round",
                  "date": "long",
                  "hourCycle": "auto",
                  "seconds": false,
                  "surface": "dark",
                  "timezone": "",
                  "variant": "digital",
                  "zone": "display"
                },
                "frame": {
                  "h": 1080,
                  "w": 480,
                  "x": 1440,
                  "y": 0
                },
                "id": "wgi_01KJPXAG40WDGET00000000001",
                "slotName": "sidebar",
                "widgetType": "clock",
                "zIndex": 0
              }
            ]
          },
          "id": "sct_01KE70EHG0MSTER00000000001",
          "name": "Begrüßung klassisch",
          "orientation": "landscape",
          "requiredAppIds": [
            "clock",
            "opening-hours"
          ]
        },
        "properties": {
          "category": {
            "enum": [
              "welcome",
              "information",
              "promotion",
              "notice",
              "health",
              "food",
              "event",
              "data",
              "seasonal"
            ],
            "type": "string"
          },
          "description": {
            "maxLength": 500,
            "type": "string"
          },
          "document": {
            "properties": {
              "canvas": {
                "properties": {
                  "backgroundColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  },
                  "height": {
                    "maximum": 7680,
                    "minimum": 320,
                    "type": "integer"
                  },
                  "width": {
                    "maximum": 7680,
                    "minimum": 320,
                    "type": "integer"
                  }
                },
                "required": [
                  "width",
                  "height",
                  "backgroundColor"
                ],
                "type": "object"
              },
              "layoutTemplateId": {
                "pattern": "^(?:lyt_[0-9A-HJKMNP-TV-Z]{26}|standard-1x1|split-vertical|split-horizontal|grid-2x2|main-sidebar|main-sidebar-2|main-sidebar-3|thirds-vertical|quarters-vertical|header-main|main-ticker|header-main-ticker|sidebar-left-main|header-split|grid-3x2|main-sidebar-ticker|hero-strip-3|portrait-full|portrait-split|portrait-thirds|portrait-main-footer|portrait-half-grid-4|portrait-main-footer-2|portrait-main-footer-3|portrait-header-main|portrait-header-main-ticker|portrait-quarters|portrait-grid-2x3|portrait-hero-columns|ultra-full|ultra-halves|ultra-thirds|ultra-quarters|ultra-center-stage|ultra-main-sidebar|ultra-header-thirds|ultra-thirds-ticker)$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "transitions": {
                "properties": {
                  "in": {
                    "oneOf": [
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "none"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "fade"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "direction": {
                            "enum": [
                              "left",
                              "right",
                              "up",
                              "down"
                            ],
                            "type": "string"
                          },
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "slide"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "out": {
                    "oneOf": [
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "none"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "fade"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "direction": {
                            "enum": [
                              "left",
                              "right",
                              "up",
                              "down"
                            ],
                            "type": "string"
                          },
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "slide"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      }
                    ]
                  }
                },
                "required": [
                  "in",
                  "out"
                ],
                "type": "object"
              },
              "widgets": {
                "items": {
                  "properties": {
                    "appId": {
                      "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "appVersionPin": {
                      "pattern": "^\\d+\\.\\d+\\.\\d+$",
                      "type": "string"
                    },
                    "config": {},
                    "frame": {
                      "properties": {
                        "h": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        },
                        "w": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        },
                        "x": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "y": {
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "x",
                        "y",
                        "w",
                        "h"
                      ],
                      "type": "object"
                    },
                    "id": {
                      "pattern": "^wgi_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "slotName": {
                      "maxLength": 60,
                      "minLength": 1,
                      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "widgetType": {
                      "maxLength": 100,
                      "minLength": 2,
                      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "zIndex": {
                      "maximum": 1000,
                      "minimum": 0,
                      "type": "integer"
                    }
                  },
                  "required": [
                    "id",
                    "appId",
                    "widgetType",
                    "appVersionPin",
                    "frame",
                    "zIndex"
                  ],
                  "type": "object"
                },
                "maxItems": 50,
                "type": "array"
              }
            },
            "required": [
              "canvas",
              "layoutTemplateId",
              "widgets",
              "transitions"
            ],
            "type": "object"
          },
          "id": {
            "pattern": "^sct_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "orientation": {
            "enum": [
              "landscape",
              "portrait"
            ],
            "type": "string"
          },
          "requiredAppIds": {
            "items": {
              "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "category",
          "orientation",
          "document",
          "requiredAppIds"
        ],
        "type": "object"
      },
      "SceneValidationFinding": {
        "example": {
          "field": "sample",
          "message": "sample",
          "severity": "BLOCKING",
          "type": "WidgetVersionRetired",
          "widgetId": "wgi_01ARZ3NDEKTSV4RRFFQ69G5FAV"
        },
        "properties": {
          "field": {
            "type": [
              "string",
              "null"
            ]
          },
          "message": {
            "minLength": 1,
            "type": "string"
          },
          "severity": {
            "enum": [
              "BLOCKING",
              "WARNING",
              "INFO"
            ],
            "type": "string"
          },
          "type": {
            "enum": [
              "WidgetVersionRetired",
              "AppUninstalled",
              "AssetDeleted",
              "LayoutTemplateDeleted",
              "ConfigSchemaIncompatible",
              "AppVersionHeld",
              "DocumentPagesChanged"
            ],
            "type": "string"
          },
          "widgetId": {
            "pattern": "^wgi_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "type",
          "severity",
          "message",
          "widgetId",
          "field"
        ],
        "type": "object"
      },
      "ScimEmail": {
        "example": {
          "primary": true,
          "type": "work",
          "value": "deniz.acar@demo.local"
        },
        "properties": {
          "primary": {
            "type": "boolean"
          },
          "type": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "value"
        ],
        "type": "object"
      },
      "ScimGroupListResponse": {
        "example": {
          "itemsPerPage": 1,
          "Resources": [
            {
              "displayName": "Redaktion",
              "id": "rol_01KERPYXWRRECHT00000000002",
              "members": [
                {
                  "display": "Deniz Acar",
                  "type": "User",
                  "value": "usr_01KFB7QPW0TEAM000000000002"
                }
              ],
              "meta": {
                "created": "2026-01-12T09:05:00.000Z",
                "lastModified": "2026-01-12T09:05:00.000Z",
                "location": "https://api.demo.local/scim/v2/Groups/rol_01KERPYXWRRECHT00000000002",
                "resourceType": "Group"
              },
              "schemas": [
                "urn:ietf:params:scim:schemas:core:2.0:Group"
              ]
            }
          ],
          "schemas": [
            "urn:ietf:params:scim:api:messages:2.0:ListResponse"
          ],
          "startIndex": 1,
          "totalResults": 1
        },
        "properties": {
          "itemsPerPage": {
            "minimum": 0,
            "type": "integer"
          },
          "Resources": {
            "items": {
              "$ref": "#/components/schemas/ScimGroupResource"
            },
            "type": "array"
          },
          "schemas": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "startIndex": {
            "minimum": 1,
            "type": "integer"
          },
          "totalResults": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "schemas",
          "totalResults",
          "startIndex",
          "itemsPerPage",
          "Resources"
        ],
        "type": "object"
      },
      "ScimGroupMember": {
        "example": {
          "display": "Deniz Acar",
          "type": "User",
          "value": "usr_01KFB7QPW0TEAM000000000002"
        },
        "properties": {
          "$ref": {
            "type": "string"
          },
          "display": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "value"
        ],
        "type": "object"
      },
      "ScimGroupResource": {
        "example": {
          "displayName": "Redaktion",
          "id": "rol_01KERPYXWRRECHT00000000002",
          "members": [
            {
              "display": "Deniz Acar",
              "type": "User",
              "value": "usr_01KFB7QPW0TEAM000000000002"
            }
          ],
          "meta": {
            "created": "2026-01-12T09:05:00.000Z",
            "lastModified": "2026-01-12T09:05:00.000Z",
            "location": "https://api.demo.local/scim/v2/Groups/rol_01KERPYXWRRECHT00000000002",
            "resourceType": "Group"
          },
          "schemas": [
            "urn:ietf:params:scim:schemas:core:2.0:Group"
          ]
        },
        "properties": {
          "displayName": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "members": {
            "items": {
              "$ref": "#/components/schemas/ScimGroupMember"
            },
            "type": "array"
          },
          "meta": {
            "$ref": "#/components/schemas/ScimMeta"
          },
          "schemas": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "schemas",
          "id",
          "displayName",
          "members",
          "meta"
        ],
        "type": "object"
      },
      "ScimGroupWrite": {
        "example": {
          "displayName": "Redaktion",
          "externalId": "entra-group-4d81b6",
          "members": [
            {
              "display": "Deniz Acar",
              "type": "User",
              "value": "usr_01KFB7QPW0TEAM000000000002"
            }
          ],
          "schemas": [
            "urn:ietf:params:scim:schemas:core:2.0:Group"
          ]
        },
        "properties": {
          "displayName": {
            "maxLength": 60,
            "minLength": 1,
            "type": "string"
          },
          "externalId": {
            "maxLength": 255,
            "type": "string"
          },
          "members": {
            "items": {
              "$ref": "#/components/schemas/ScimGroupMember"
            },
            "type": "array"
          },
          "schemas": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "displayName"
        ],
        "type": "object"
      },
      "ScimMeta": {
        "example": {
          "created": "2026-01-19T13:40:00.000Z",
          "lastModified": "2026-07-20T08:28:00.000Z",
          "location": "https://api.demo.local/scim/v2/Users/usr_01KFB7QPW0TEAM000000000002",
          "resourceType": "User"
        },
        "properties": {
          "created": {
            "format": "date-time",
            "type": "string"
          },
          "lastModified": {
            "format": "date-time",
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "resourceType": {
            "enum": [
              "User",
              "Group"
            ],
            "type": "string"
          }
        },
        "required": [
          "resourceType",
          "created",
          "lastModified",
          "location"
        ],
        "type": "object"
      },
      "ScimName": {
        "example": {
          "familyName": "Acar",
          "formatted": "Deniz Acar",
          "givenName": "Deniz"
        },
        "properties": {
          "familyName": {
            "maxLength": 60,
            "type": "string"
          },
          "formatted": {
            "maxLength": 120,
            "type": "string"
          },
          "givenName": {
            "maxLength": 60,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ScimPatchOperation": {
        "example": {
          "op": "replace",
          "path": "active",
          "value": false
        },
        "properties": {
          "op": {
            "type": "string"
          },
          "path": {
            "maxLength": 200,
            "type": "string"
          },
          "value": {}
        },
        "required": [
          "op"
        ],
        "type": "object"
      },
      "ScimPatchRequest": {
        "example": {
          "Operations": [
            {
              "op": "replace",
              "path": "active",
              "value": false
            }
          ],
          "schemas": [
            "urn:ietf:params:scim:api:messages:2.0:PatchOp"
          ]
        },
        "properties": {
          "Operations": {
            "items": {
              "$ref": "#/components/schemas/ScimPatchOperation"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array"
          },
          "schemas": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "Operations"
        ],
        "type": "object"
      },
      "ScimResourceType": {
        "example": {
          "description": "sample",
          "endpoint": "sample",
          "id": "sample",
          "meta": {
            "location": "sample",
            "resourceType": "ResourceType"
          },
          "name": "sample",
          "schema": "sample",
          "schemas": [
            "sample"
          ]
        },
        "properties": {
          "description": {
            "type": "string"
          },
          "endpoint": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "meta": {
            "properties": {
              "location": {
                "type": "string"
              },
              "resourceType": {
                "enum": [
                  "ResourceType"
                ],
                "type": "string"
              }
            },
            "required": [
              "resourceType",
              "location"
            ],
            "type": "object"
          },
          "name": {
            "type": "string"
          },
          "schema": {
            "type": "string"
          },
          "schemas": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "schemas",
          "id",
          "name",
          "endpoint",
          "description",
          "schema",
          "meta"
        ],
        "type": "object"
      },
      "ScimResourceTypeListResponse": {
        "example": {
          "Resources": [
            {
              "description": "sample",
              "endpoint": "sample",
              "id": "sample",
              "meta": {
                "location": "sample",
                "resourceType": "ResourceType"
              },
              "name": "sample",
              "schema": "sample",
              "schemas": [
                "sample"
              ]
            }
          ],
          "schemas": [
            "sample"
          ],
          "totalResults": 0
        },
        "properties": {
          "Resources": {
            "items": {
              "$ref": "#/components/schemas/ScimResourceType"
            },
            "type": "array"
          },
          "schemas": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "totalResults": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "schemas",
          "totalResults",
          "Resources"
        ],
        "type": "object"
      },
      "ScimSchemaDescriptor": {
        "example": {
          "attributes": [
            {
              "multiValued": false,
              "mutability": "readOnly",
              "name": "sample",
              "required": false,
              "type": "sample",
              "uniqueness": "none"
            }
          ],
          "description": "sample",
          "id": "sample",
          "meta": {
            "location": "sample",
            "resourceType": "Schema"
          },
          "name": "sample"
        },
        "properties": {
          "attributes": {
            "items": {
              "properties": {
                "multiValued": {
                  "type": "boolean"
                },
                "mutability": {
                  "enum": [
                    "readOnly",
                    "readWrite",
                    "immutable",
                    "writeOnly"
                  ],
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "required": {
                  "type": "boolean"
                },
                "type": {
                  "type": "string"
                },
                "uniqueness": {
                  "enum": [
                    "none",
                    "server",
                    "global"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "name",
                "type",
                "multiValued",
                "required",
                "mutability",
                "uniqueness"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "description": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "meta": {
            "properties": {
              "location": {
                "type": "string"
              },
              "resourceType": {
                "enum": [
                  "Schema"
                ],
                "type": "string"
              }
            },
            "required": [
              "resourceType",
              "location"
            ],
            "type": "object"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "attributes",
          "meta"
        ],
        "type": "object"
      },
      "ScimSchemaListResponse": {
        "example": {
          "Resources": [
            {
              "attributes": [
                {
                  "multiValued": false,
                  "mutability": "readOnly",
                  "name": "sample",
                  "required": false,
                  "type": "sample",
                  "uniqueness": "none"
                }
              ],
              "description": "sample",
              "id": "sample",
              "meta": {
                "location": "sample",
                "resourceType": "Schema"
              },
              "name": "sample"
            }
          ],
          "schemas": [
            "sample"
          ],
          "totalResults": 0
        },
        "properties": {
          "Resources": {
            "items": {
              "$ref": "#/components/schemas/ScimSchemaDescriptor"
            },
            "type": "array"
          },
          "schemas": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "totalResults": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "schemas",
          "totalResults",
          "Resources"
        ],
        "type": "object"
      },
      "ScimServiceProviderConfig": {
        "example": {
          "authenticationSchemes": [
            {
              "description": "sample",
              "name": "sample",
              "primary": false,
              "type": "sample"
            }
          ],
          "bulk": {
            "maxOperations": 1,
            "maxPayloadSize": 1,
            "supported": false
          },
          "changePassword": {
            "supported": false
          },
          "documentationUri": "sample",
          "etag": {
            "supported": false
          },
          "filter": {
            "maxResults": 1,
            "supported": false
          },
          "patch": {
            "supported": false
          },
          "schemas": [
            "sample"
          ],
          "sort": {
            "supported": false
          }
        },
        "properties": {
          "authenticationSchemes": {
            "items": {
              "properties": {
                "description": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "primary": {
                  "type": "boolean"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "type",
                "name",
                "description",
                "primary"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "bulk": {
            "properties": {
              "maxOperations": {
                "type": "number"
              },
              "maxPayloadSize": {
                "type": "number"
              },
              "supported": {
                "type": "boolean"
              }
            },
            "required": [
              "supported",
              "maxOperations",
              "maxPayloadSize"
            ],
            "type": "object"
          },
          "changePassword": {
            "properties": {
              "supported": {
                "type": "boolean"
              }
            },
            "required": [
              "supported"
            ],
            "type": "object"
          },
          "documentationUri": {
            "type": "string"
          },
          "etag": {
            "properties": {
              "supported": {
                "type": "boolean"
              }
            },
            "required": [
              "supported"
            ],
            "type": "object"
          },
          "filter": {
            "properties": {
              "maxResults": {
                "type": "number"
              },
              "supported": {
                "type": "boolean"
              }
            },
            "required": [
              "supported",
              "maxResults"
            ],
            "type": "object"
          },
          "patch": {
            "properties": {
              "supported": {
                "type": "boolean"
              }
            },
            "required": [
              "supported"
            ],
            "type": "object"
          },
          "schemas": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sort": {
            "properties": {
              "supported": {
                "type": "boolean"
              }
            },
            "required": [
              "supported"
            ],
            "type": "object"
          }
        },
        "required": [
          "schemas",
          "documentationUri",
          "patch",
          "bulk",
          "filter",
          "changePassword",
          "sort",
          "etag",
          "authenticationSchemes"
        ],
        "type": "object"
      },
      "ScimTokenPublic": {
        "example": {
          "createdAt": "2026-06-01T08:30:00.000Z",
          "createdById": "usr_01KERQ74K0TEAM000000000001",
          "id": "sctm_01KFB7QPW0SCM0ZGANG00000A1",
          "lastUsedAt": "2026-07-20T02:00:00.000Z",
          "revokedAt": null,
          "revokedReason": null,
          "revokesAt": null,
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "tokenPrefix": "sct_01KFB7QP"
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "createdById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "id": {
            "pattern": "^sctm_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "lastUsedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "revokedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "revokedReason": {
            "type": [
              "string",
              "null"
            ]
          },
          "revokesAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "tokenPrefix": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "tokenPrefix",
          "createdById",
          "lastUsedAt",
          "revokedAt",
          "revokedReason",
          "revokesAt",
          "createdAt"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "ScimUserGroupRef": {
        "example": {
          "display": "Redaktion",
          "value": "rol_01KERPYXWRRECHT00000000002"
        },
        "properties": {
          "$ref": {
            "type": "string"
          },
          "display": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "value"
        ],
        "type": "object"
      },
      "ScimUserListResponse": {
        "example": {
          "itemsPerPage": 1,
          "Resources": [
            {
              "active": true,
              "displayName": "Deniz Acar",
              "emails": [
                {
                  "primary": true,
                  "type": "work",
                  "value": "deniz.acar@demo.local"
                }
              ],
              "externalId": "entra-8f3c1a20",
              "groups": [
                {
                  "display": "Redaktion",
                  "value": "rol_01KERPYXWRRECHT00000000002"
                }
              ],
              "id": "usr_01KFB7QPW0TEAM000000000002",
              "meta": {
                "created": "2026-01-19T13:40:00.000Z",
                "lastModified": "2026-07-20T08:28:00.000Z",
                "location": "https://api.demo.local/scim/v2/Users/usr_01KFB7QPW0TEAM000000000002",
                "resourceType": "User"
              },
              "name": {
                "familyName": "Acar",
                "formatted": "Deniz Acar",
                "givenName": "Deniz"
              },
              "schemas": [
                "urn:ietf:params:scim:schemas:core:2.0:User"
              ],
              "userName": "deniz.acar@demo.local"
            }
          ],
          "schemas": [
            "urn:ietf:params:scim:api:messages:2.0:ListResponse"
          ],
          "startIndex": 1,
          "totalResults": 1
        },
        "properties": {
          "itemsPerPage": {
            "minimum": 0,
            "type": "integer"
          },
          "Resources": {
            "items": {
              "$ref": "#/components/schemas/ScimUserResource"
            },
            "type": "array"
          },
          "schemas": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "startIndex": {
            "minimum": 1,
            "type": "integer"
          },
          "totalResults": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "schemas",
          "totalResults",
          "startIndex",
          "itemsPerPage",
          "Resources"
        ],
        "type": "object"
      },
      "ScimUserResource": {
        "example": {
          "active": true,
          "displayName": "Deniz Acar",
          "emails": [
            {
              "primary": true,
              "type": "work",
              "value": "deniz.acar@demo.local"
            }
          ],
          "externalId": "entra-8f3c1a20",
          "groups": [
            {
              "display": "Redaktion",
              "value": "rol_01KERPYXWRRECHT00000000002"
            }
          ],
          "id": "usr_01KFB7QPW0TEAM000000000002",
          "meta": {
            "created": "2026-01-19T13:40:00.000Z",
            "lastModified": "2026-07-20T08:28:00.000Z",
            "location": "https://api.demo.local/scim/v2/Users/usr_01KFB7QPW0TEAM000000000002",
            "resourceType": "User"
          },
          "name": {
            "familyName": "Acar",
            "formatted": "Deniz Acar",
            "givenName": "Deniz"
          },
          "schemas": [
            "urn:ietf:params:scim:schemas:core:2.0:User"
          ],
          "userName": "deniz.acar@demo.local"
        },
        "properties": {
          "active": {
            "type": "boolean"
          },
          "displayName": {
            "type": "string"
          },
          "emails": {
            "items": {
              "$ref": "#/components/schemas/ScimEmail"
            },
            "type": "array"
          },
          "externalId": {
            "type": [
              "string",
              "null"
            ]
          },
          "groups": {
            "items": {
              "$ref": "#/components/schemas/ScimUserGroupRef"
            },
            "type": "array"
          },
          "id": {
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/ScimMeta"
          },
          "name": {
            "$ref": "#/components/schemas/ScimName"
          },
          "schemas": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "userName": {
            "type": "string"
          }
        },
        "required": [
          "schemas",
          "id",
          "userName",
          "emails",
          "active",
          "groups",
          "meta"
        ],
        "type": "object"
      },
      "ScimUserWrite": {
        "example": {
          "active": true,
          "displayName": "Deniz Acar",
          "emails": [
            {
              "primary": true,
              "type": "work",
              "value": "deniz.acar@demo.local"
            }
          ],
          "externalId": "entra-8f3c1a20",
          "locale": "de-DE",
          "name": {
            "familyName": "Acar",
            "formatted": "Deniz Acar",
            "givenName": "Deniz"
          },
          "schemas": [
            "urn:ietf:params:scim:schemas:core:2.0:User"
          ],
          "timezone": "Europe/Berlin",
          "userName": "deniz.acar@demo.local"
        },
        "properties": {
          "active": {
            "type": "boolean"
          },
          "displayName": {
            "maxLength": 120,
            "type": "string"
          },
          "emails": {
            "items": {
              "$ref": "#/components/schemas/ScimEmail"
            },
            "type": "array"
          },
          "externalId": {
            "maxLength": 255,
            "type": "string"
          },
          "locale": {
            "maxLength": 20,
            "type": "string"
          },
          "name": {
            "$ref": "#/components/schemas/ScimName"
          },
          "schemas": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "timezone": {
            "maxLength": 64,
            "type": "string"
          },
          "userName": {
            "maxLength": 254,
            "minLength": 3,
            "type": "string"
          }
        },
        "required": [
          "userName"
        ],
        "type": "object"
      },
      "ScreenshotContent": {
        "example": {
          "assetId": "ast_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "bookingLineId": "bkl_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "creativeId": "crv_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "playId": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "playlistItemId": "pli_01ARZ3NDEKTSV4RRFFQ69G5FAV",
          "sceneId": "scn_01ARZ3NDEKTSV4RRFFQ69G5FAV"
        },
        "properties": {
          "assetId": {
            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "bookingLineId": {
            "pattern": "^bkl_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "creativeId": {
            "pattern": "^crv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "playId": {
            "pattern": "^[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "playlistItemId": {
            "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "sceneId": {
            "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "SendMagicLinkRequest": {
        "example": {
          "audience": "tenant",
          "email": "owner@demo.local"
        },
        "properties": {
          "audience": {
            "enum": [
              "tenant",
              "operator"
            ],
            "type": "string"
          },
          "email": {
            "format": "email",
            "maxLength": 254,
            "type": "string"
          }
        },
        "required": [
          "email",
          "audience"
        ],
        "type": "object"
      },
      "SendMagicLinkResponse": {
        "example": {
          "accepted": true
        },
        "properties": {
          "accepted": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "accepted"
        ],
        "type": "object"
      },
      "SendPasswordResetRequest": {
        "example": {
          "audience": "tenant",
          "email": "deniz.acar@demo.local"
        },
        "properties": {
          "audience": {
            "enum": [
              "tenant",
              "operator"
            ],
            "type": "string"
          },
          "email": {
            "format": "email",
            "maxLength": 254,
            "type": "string"
          }
        },
        "required": [
          "email",
          "audience"
        ],
        "type": "object"
      },
      "SendPasswordResetResponse": {
        "example": {
          "accepted": true
        },
        "properties": {
          "accepted": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "accepted"
        ],
        "type": "object"
      },
      "SetBetaEnrollmentRequest": {
        "example": {
          "enrolled": true
        },
        "properties": {
          "enrolled": {
            "type": "boolean"
          }
        },
        "required": [
          "enrolled"
        ],
        "type": "object"
      },
      "SetDefaultPaymentMethodResponse": {
        "example": {
          "methods": [
            {
              "attachedAt": "2026-01-12T09:20:00.000Z",
              "expiresAt": null,
              "isDefault": true,
              "kind": "sepa_debit",
              "lastFour": "4021",
              "stripePaymentMethodId": "pm_lastschrift_geschaeftskonto"
            },
            {
              "attachedAt": "2026-04-02T11:05:00.000Z",
              "expiresAt": "2029-11-30T23:59:59.000Z",
              "isDefault": false,
              "kind": "card",
              "lastFour": "4412",
              "stripePaymentMethodId": "pm_karte_inhaberin"
            }
          ]
        },
        "properties": {
          "methods": {
            "items": {
              "properties": {
                "attachedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "expiresAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "isDefault": {
                  "type": "boolean"
                },
                "kind": {
                  "enum": [
                    "card",
                    "sepa_debit"
                  ],
                  "type": "string"
                },
                "lastFour": {
                  "pattern": "^\\d{4}$",
                  "type": "string"
                },
                "stripePaymentMethodId": {
                  "type": "string"
                }
              },
              "required": [
                "stripePaymentMethodId",
                "kind",
                "lastFour",
                "expiresAt",
                "isDefault",
                "attachedAt"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "methods"
        ],
        "type": "object"
      },
      "SetDisplayGroupProgramRequest": {
        "example": {
          "program": {
            "kind": "schedule",
            "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001"
          }
        },
        "properties": {
          "program": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "schedule"
                    ],
                    "type": "string"
                  },
                  "scheduleId": {
                    "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "scheduleId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "scene"
                    ],
                    "type": "string"
                  },
                  "sceneId": {
                    "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "sceneId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "playlist"
                    ],
                    "type": "string"
                  },
                  "playlistId": {
                    "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "playlistId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "assetId": {
                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "media"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "assetId"
                ],
                "type": "object"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "program"
        ],
        "type": "object"
      },
      "SetDisplayGroupProgramResponse": {
        "example": {
          "memberPlayerIds": [
            "ply_01KHK34MQ0SCREEN0000000004",
            "ply_01KHK34MQ0SCREEN0000000005"
          ],
          "program": {
            "kind": "schedule",
            "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001"
          }
        },
        "properties": {
          "memberPlayerIds": {
            "items": {
              "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "type": "array"
          },
          "program": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "schedule"
                    ],
                    "type": "string"
                  },
                  "scheduleId": {
                    "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "scheduleId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "scene"
                    ],
                    "type": "string"
                  },
                  "sceneId": {
                    "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "sceneId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "playlist"
                    ],
                    "type": "string"
                  },
                  "playlistId": {
                    "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "playlistId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "assetId": {
                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "media"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "assetId"
                ],
                "type": "object"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "program",
          "memberPlayerIds"
        ],
        "type": "object"
      },
      "SetPaymentWayRequest": {
        "example": {
          "returnUrl": "https://portal.demo.local/einstellungen/abrechnung",
          "setAsDefault": false,
          "way": "stripe"
        },
        "properties": {
          "returnUrl": {
            "format": "uri",
            "type": "string"
          },
          "setAsDefault": {
            "type": "boolean"
          },
          "way": {
            "enum": [
              "invoice",
              "stripe"
            ],
            "type": "string"
          }
        },
        "required": [
          "way"
        ],
        "type": "object"
      },
      "SetPaymentWayResponse": {
        "example": {
          "setupIntent": null,
          "url": "https://zahlungen.demo.local/kasse/adler-apotheke-zahlweg",
          "way": "invoice"
        },
        "properties": {
          "setupIntent": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentSetupIntent"
              },
              {
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "way": {
            "enum": [
              "invoice",
              "stripe"
            ],
            "type": "string"
          }
        },
        "required": [
          "way",
          "setupIntent"
        ],
        "type": "object"
      },
      "SetPlayerGeoLocationRequest": {
        "example": {
          "city": "sample",
          "country": "DE",
          "lat": -90,
          "lng": -180,
          "postalCode": "sample",
          "region": "sample",
          "street": "sample"
        },
        "properties": {
          "city": {
            "maxLength": 120,
            "type": "string"
          },
          "country": {
            "maxLength": 2,
            "minLength": 2,
            "type": "string"
          },
          "lat": {
            "maximum": 90,
            "minimum": -90,
            "type": "number"
          },
          "lng": {
            "maximum": 180,
            "minimum": -180,
            "type": "number"
          },
          "postalCode": {
            "maxLength": 20,
            "type": "string"
          },
          "region": {
            "maxLength": 120,
            "type": "string"
          },
          "street": {
            "maxLength": 200,
            "type": "string"
          }
        },
        "required": [
          "lat",
          "lng"
        ],
        "type": "object"
      },
      "SetPlayerGeoLocationResponse": {
        "example": {
          "player": {
            "config": {
              "audioMuted": false,
              "brightness": 0,
              "contentFit": "contain",
              "identifyPulseColor": "#000000",
              "resolutionMode": "auto",
              "rotation": 0
            },
            "connector": "sample",
            "createdAt": "2026-01-01T00:00:00.000Z",
            "createdById": "usr_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "decommissionedAt": "2026-01-01T00:00:00.000Z",
            "description": "sample",
            "deviceId": "dev_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "deviceKind": "pi",
            "geoLocation": {
              "accuracyM": 0,
              "city": "sample",
              "country": "DE",
              "determinedAt": "2026-01-01T00:00:00.000Z",
              "lat": -90,
              "lng": -180,
              "postalCode": "sample",
              "region": "sample",
              "source": "wifi",
              "street": "sample"
            },
            "host": "szenera-os",
            "id": "ply_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "lastHeartbeatAt": "2026-01-01T00:00:00.000Z",
            "lastSnapshotHash": "sample",
            "lastTelemetry": {
              "agent": {
                "buildSha": "sample",
                "renderTokenExpiresAt": "2099-12-31T23:59:59.000Z",
                "version": "sample"
              },
              "appFailures": [
                {
                  "id": "sample",
                  "reason": "missing",
                  "since": "2026-01-01T00:00:00.000Z",
                  "version": "sample"
                }
              ],
              "apps": [
                {
                  "id": "sample",
                  "installedAt": "2026-01-01T00:00:00.000Z",
                  "sizeBytes": 0,
                  "version": "sample"
                }
              ],
              "chromium": {
                "cdpConnected": false,
                "lastFrameAt": "2026-01-01T00:00:00.000Z",
                "memoryMb": 0,
                "state": "rendering"
              },
              "cpuTempC": 1,
              "disk": {
                "rootTotal": 0,
                "rootUsed": 0,
                "stateTotal": 0,
                "stateUsed": 0
              },
              "display": {
                "connected": false,
                "connector": "sample",
                "diagonalInch": 1,
                "heightPx": 1,
                "manufacturer": "sample",
                "model": "sample",
                "refreshHz": 1,
                "serial": "sample",
                "widthPx": 1
              },
              "hardware": {
                "coreVolts": 1,
                "cpuCores": 1,
                "cpuModel": "sample",
                "kernel": "sample",
                "model": "sample",
                "serial": "sample",
                "storageHealthPercent": 0,
                "throttledEver": false,
                "throttledNow": false
              },
              "loadAvg": [
                0
              ],
              "mediaCache": {
                "entries": [
                  {
                    "ageSeconds": 0,
                    "assetId": "sample",
                    "mediaKey": "sample",
                    "present": false,
                    "sizeBytes": 0
                  }
                ],
                "entryCount": 0,
                "limitBytes": 0,
                "overflowBytes": 0,
                "presentCount": 0,
                "requiredBytes": 0,
                "usedBytes": 0
              },
              "memory": {
                "freeMb": 0,
                "total": 0,
                "used": 0
              },
              "network": {
                "apiLatencyMs": 0,
                "apiReachable": false,
                "gateway": "sample",
                "iface": "sample",
                "ip": "sample",
                "macAddress": "sample",
                "tailscaleConnected": false,
                "wifiChannel": 1,
                "wifiFrequencyMhz": 1,
                "wifiSignal": 1,
                "wifiSsid": "sample",
                "wifiTxRateMbps": 0
              },
              "rauc": {
                "bootedFromTryboot": false,
                "currentSlot": "sample",
                "lastSuccessAt": "2026-01-01T00:00:00.000Z"
              },
              "renderer": {
                "activatedAt": "2026-01-01T00:00:00.000Z",
                "build": "aaaaaaaaaaaa",
                "capabilities": [
                  "sample"
                ],
                "failures": 0,
                "linkOnline": false,
                "profile": "modern",
                "releaseSeq": 1,
                "resilience": "fresh",
                "source": "bundle",
                "state": "scene",
                "version": "1.0.0"
              },
              "screens": [
                {
                  "chromium": {
                    "cdpConnected": false,
                    "state": "rendering"
                  },
                  "powerIntent": "on",
                  "powerState": "on",
                  "renderer": {
                    "failures": 0,
                    "linkOnline": false,
                    "resilience": "fresh",
                    "state": "scene"
                  },
                  "screenIndex": 0
                }
              ],
              "snapshot": {
                "lastCheckedAt": "2026-01-01T00:00:00.000Z",
                "lastRefreshAt": "2026-01-01T00:00:00.000Z",
                "manifestHash": "sample",
                "stale": false
              },
              "time": {
                "ntpSynchronized": false,
                "offsetMs": 1,
                "timezone": "Europe/Berlin"
              },
              "uptime": 0
            },
            "locationId": "loc_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "name": "sample",
            "otaState": {
              "bootDurationMs": 0,
              "installedVersion": "sample",
              "lastError": {
                "at": "2026-01-01T00:00:00.000Z",
                "code": "sample",
                "message": "sample"
              },
              "lastTransitionAt": "2026-01-01T00:00:00.000Z",
              "phase": "idle",
              "rollbackReason": "sample",
              "targetVersion": "sample"
            },
            "screenIndex": 0,
            "status": "online",
            "suspendedAt": "2026-01-01T00:00:00.000Z",
            "suspendedReason": "tenant",
            "tagIds": [
              "ptg_01ARZ3NDEKTSV4RRFFQ69G5FAV"
            ],
            "tenantId": "tnt_01ARZ3NDEKTSV4RRFFQ69G5FAV",
            "updatedAt": "2026-01-01T00:00:00.000Z",
            "version": 0
          }
        },
        "properties": {
          "player": {
            "properties": {
              "config": {
                "properties": {
                  "audioMuted": {
                    "type": "boolean"
                  },
                  "brightness": {
                    "maximum": 100,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "contentFit": {
                    "anyOf": [
                      {
                        "enum": [
                          "contain"
                        ],
                        "type": "string"
                      },
                      {
                        "enum": [
                          "cover"
                        ],
                        "type": "string"
                      }
                    ],
                    "default": "contain"
                  },
                  "identifyPulseColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  },
                  "resolutionMode": {
                    "anyOf": [
                      {
                        "enum": [
                          "auto"
                        ],
                        "type": "string"
                      },
                      {
                        "properties": {
                          "height": {
                            "maximum": 4320,
                            "minimum": 1,
                            "type": "integer"
                          },
                          "width": {
                            "maximum": 7680,
                            "minimum": 1,
                            "type": "integer"
                          }
                        },
                        "required": [
                          "width",
                          "height"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "rotation": {
                    "anyOf": [
                      {
                        "enum": [
                          0
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          90
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          180
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          270
                        ],
                        "type": "number"
                      }
                    ]
                  }
                },
                "required": [
                  "audioMuted",
                  "brightness",
                  "rotation",
                  "resolutionMode",
                  "identifyPulseColor"
                ],
                "type": "object"
              },
              "connector": {
                "maxLength": 32,
                "minLength": 1,
                "type": [
                  "string",
                  "null"
                ]
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "createdById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "decommissionedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "description": {
                "maxLength": 500,
                "type": "string"
              },
              "deviceId": {
                "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "deviceKind": {
                "enum": [
                  "pi",
                  "browser"
                ],
                "type": "string"
              },
              "geoLocation": {
                "properties": {
                  "accuracyM": {
                    "minimum": 0,
                    "type": "number"
                  },
                  "city": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "country": {
                    "maxLength": 2,
                    "minLength": 2,
                    "type": "string"
                  },
                  "determinedAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "lat": {
                    "maximum": 90,
                    "minimum": -90,
                    "type": "number"
                  },
                  "lng": {
                    "maximum": 180,
                    "minimum": -180,
                    "type": "number"
                  },
                  "postalCode": {
                    "maxLength": 20,
                    "type": "string"
                  },
                  "region": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "source": {
                    "enum": [
                      "wifi",
                      "ip",
                      "manual"
                    ],
                    "type": "string"
                  },
                  "street": {
                    "maxLength": 200,
                    "type": "string"
                  }
                },
                "required": [
                  "lat",
                  "lng",
                  "accuracyM",
                  "source",
                  "determinedAt"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "host": {
                "enum": [
                  "szenera-os",
                  "fire-tv",
                  "tizen",
                  "webos",
                  "web-display"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "lastHeartbeatAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastSnapshotHash": {
                "maxLength": 128,
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastTelemetry": {
                "properties": {
                  "agent": {
                    "properties": {
                      "buildSha": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "renderTokenExpiresAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "version": {
                        "maxLength": 100,
                        "type": "string"
                      }
                    },
                    "required": [
                      "version"
                    ],
                    "type": "object"
                  },
                  "appFailures": {
                    "items": {
                      "properties": {
                        "id": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "reason": {
                          "enum": [
                            "missing",
                            "rejected",
                            "failed"
                          ],
                          "type": "string"
                        },
                        "since": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "version": {
                          "maxLength": 64,
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "version",
                        "reason",
                        "since"
                      ],
                      "type": "object"
                    },
                    "maxItems": 20,
                    "type": "array"
                  },
                  "apps": {
                    "items": {
                      "properties": {
                        "id": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "installedAt": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "sizeBytes": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "version": {
                          "maxLength": 64,
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "version"
                      ],
                      "type": "object"
                    },
                    "maxItems": 50,
                    "type": "array"
                  },
                  "chromium": {
                    "properties": {
                      "cdpConnected": {
                        "type": "boolean"
                      },
                      "lastFrameAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "memoryMb": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "state": {
                        "enum": [
                          "rendering",
                          "pairing",
                          "hung",
                          "starting",
                          "stopped",
                          "unplugged"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "state"
                    ],
                    "type": "object"
                  },
                  "cpuTempC": {
                    "type": "number"
                  },
                  "disk": {
                    "properties": {
                      "rootTotal": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "rootUsed": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "stateTotal": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "stateUsed": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "rootUsed",
                      "rootTotal",
                      "stateUsed",
                      "stateTotal"
                    ],
                    "type": "object"
                  },
                  "display": {
                    "properties": {
                      "connected": {
                        "type": "boolean"
                      },
                      "connector": {
                        "maxLength": 30,
                        "type": "string"
                      },
                      "diagonalInch": {
                        "type": "number"
                      },
                      "heightPx": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "manufacturer": {
                        "maxLength": 60,
                        "type": "string"
                      },
                      "model": {
                        "maxLength": 60,
                        "type": "string"
                      },
                      "refreshHz": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "serial": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "widthPx": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "hardware": {
                    "properties": {
                      "coreVolts": {
                        "type": "number"
                      },
                      "cpuCores": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "cpuModel": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "kernel": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "model": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "serial": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "storageHealthPercent": {
                        "maximum": 100,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "throttledEver": {
                        "type": "boolean"
                      },
                      "throttledNow": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "loadAvg": {
                    "items": {
                      "minimum": 0,
                      "type": "number"
                    },
                    "maxItems": 3,
                    "type": "array"
                  },
                  "mediaCache": {
                    "properties": {
                      "entries": {
                        "items": {
                          "properties": {
                            "ageSeconds": {
                              "minimum": 0,
                              "type": "integer"
                            },
                            "assetId": {
                              "maxLength": 30,
                              "type": "string"
                            },
                            "mediaKey": {
                              "maxLength": 128,
                              "minLength": 1,
                              "type": "string"
                            },
                            "present": {
                              "type": "boolean"
                            },
                            "sizeBytes": {
                              "minimum": 0,
                              "type": "integer"
                            }
                          },
                          "required": [
                            "mediaKey",
                            "present"
                          ],
                          "type": "object"
                        },
                        "maxItems": 200,
                        "type": "array"
                      },
                      "entryCount": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "limitBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "overflowBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "presentCount": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "requiredBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "usedBytes": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "limitBytes",
                      "usedBytes",
                      "requiredBytes",
                      "overflowBytes",
                      "entryCount",
                      "presentCount"
                    ],
                    "type": "object"
                  },
                  "memory": {
                    "properties": {
                      "freeMb": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "total": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "used": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "total",
                      "used",
                      "freeMb"
                    ],
                    "type": "object"
                  },
                  "network": {
                    "properties": {
                      "apiLatencyMs": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "apiReachable": {
                        "type": "boolean"
                      },
                      "gateway": {
                        "maxLength": 45,
                        "type": "string"
                      },
                      "iface": {
                        "maxLength": 20,
                        "type": "string"
                      },
                      "ip": {
                        "maxLength": 45,
                        "type": "string"
                      },
                      "macAddress": {
                        "maxLength": 17,
                        "type": "string"
                      },
                      "tailscaleConnected": {
                        "type": "boolean"
                      },
                      "wifiChannel": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "wifiFrequencyMhz": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "wifiSignal": {
                        "type": "integer"
                      },
                      "wifiSsid": {
                        "maxLength": 100,
                        "type": "string"
                      },
                      "wifiTxRateMbps": {
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "type": "object"
                  },
                  "rauc": {
                    "properties": {
                      "bootedFromTryboot": {
                        "type": "boolean"
                      },
                      "currentSlot": {
                        "maxLength": 50,
                        "type": "string"
                      },
                      "lastSuccessAt": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "required": [
                      "currentSlot",
                      "bootedFromTryboot"
                    ],
                    "type": "object"
                  },
                  "renderer": {
                    "properties": {
                      "activatedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "build": {
                        "pattern": "^[0-9a-f]{12}$",
                        "type": "string"
                      },
                      "capabilities": {
                        "items": {
                          "maxLength": 32,
                          "minLength": 1,
                          "type": "string"
                        },
                        "maxItems": 32,
                        "type": "array"
                      },
                      "failures": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "linkOnline": {
                        "type": "boolean"
                      },
                      "profile": {
                        "enum": [
                          "modern",
                          "legacy"
                        ],
                        "type": "string"
                      },
                      "releaseSeq": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "resilience": {
                        "enum": [
                          "fresh",
                          "stale-but-served",
                          "last-known-good",
                          "loading",
                          "error"
                        ],
                        "type": "string"
                      },
                      "source": {
                        "enum": [
                          "bundle",
                          "hosted"
                        ],
                        "type": "string"
                      },
                      "state": {
                        "enum": [
                          "scene",
                          "pairing",
                          "unassigned",
                          "loading",
                          "error",
                          "disconnected"
                        ],
                        "type": "string"
                      },
                      "version": {
                        "maxLength": 40,
                        "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "state"
                    ],
                    "type": "object"
                  },
                  "screens": {
                    "items": {
                      "properties": {
                        "chromium": {
                          "properties": {
                            "cdpConnected": {
                              "type": "boolean"
                            },
                            "state": {
                              "enum": [
                                "rendering",
                                "pairing",
                                "hung",
                                "starting",
                                "stopped",
                                "unplugged"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "state"
                          ],
                          "type": "object"
                        },
                        "powerIntent": {
                          "enum": [
                            "on",
                            "standby"
                          ],
                          "type": "string"
                        },
                        "powerState": {
                          "enum": [
                            "on",
                            "standby",
                            "unknown"
                          ],
                          "type": "string"
                        },
                        "renderer": {
                          "properties": {
                            "failures": {
                              "minimum": 0,
                              "type": "integer"
                            },
                            "linkOnline": {
                              "type": "boolean"
                            },
                            "resilience": {
                              "enum": [
                                "fresh",
                                "stale-but-served",
                                "last-known-good",
                                "loading",
                                "error"
                              ],
                              "type": "string"
                            },
                            "state": {
                              "enum": [
                                "scene",
                                "pairing",
                                "unassigned",
                                "loading",
                                "error",
                                "disconnected"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "state"
                          ],
                          "type": "object"
                        },
                        "screenIndex": {
                          "maximum": 7,
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "screenIndex"
                      ],
                      "type": "object"
                    },
                    "maxItems": 8,
                    "type": "array"
                  },
                  "snapshot": {
                    "properties": {
                      "lastCheckedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "lastRefreshAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "manifestHash": {
                        "maxLength": 128,
                        "type": "string"
                      },
                      "stale": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "manifestHash",
                      "stale",
                      "lastRefreshAt"
                    ],
                    "type": "object"
                  },
                  "time": {
                    "properties": {
                      "ntpSynchronized": {
                        "type": "boolean"
                      },
                      "offsetMs": {
                        "type": "integer"
                      },
                      "timezone": {
                        "maxLength": 60,
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uptime": {
                    "minimum": 0,
                    "type": "integer"
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "locationId": {
                "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "otaState": {
                "properties": {
                  "bootDurationMs": {
                    "minimum": 0,
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "installedVersion": {
                    "maxLength": 100,
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "lastError": {
                    "properties": {
                      "at": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "code": {
                        "maxLength": 100,
                        "type": "string"
                      },
                      "message": {
                        "maxLength": 500,
                        "type": "string"
                      }
                    },
                    "required": [
                      "code",
                      "message",
                      "at"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "lastTransitionAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "phase": {
                    "enum": [
                      "idle",
                      "downloading",
                      "installing",
                      "tryboot-waiting",
                      "completed",
                      "rolled-back",
                      "failed"
                    ],
                    "type": "string"
                  },
                  "rollbackReason": {
                    "maxLength": 500,
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "targetVersion": {
                    "maxLength": 100,
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "phase",
                  "targetVersion",
                  "installedVersion",
                  "lastTransitionAt",
                  "lastError",
                  "bootDurationMs",
                  "rollbackReason"
                ],
                "type": "object"
              },
              "screenIndex": {
                "maximum": 7,
                "minimum": 0,
                "type": "integer"
              },
              "status": {
                "enum": [
                  "online",
                  "stale",
                  "offline",
                  "paired-not-claimed",
                  "suspended",
                  "decommissioned"
                ],
                "type": "string"
              },
              "suspendedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "suspendedReason": {
                "enum": [
                  "tenant",
                  "quota"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "tagIds": {
                "items": {
                  "pattern": "^ptg_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "maxItems": 50,
                "type": "array"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "version": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "id",
              "tenantId",
              "deviceId",
              "connector",
              "screenIndex",
              "name",
              "description",
              "tagIds",
              "locationId",
              "config",
              "status",
              "suspendedReason",
              "lastHeartbeatAt",
              "createdById",
              "createdAt",
              "updatedAt",
              "decommissionedAt",
              "version",
              "geoLocation",
              "lastSnapshotHash",
              "lastTelemetry",
              "otaState"
            ],
            "type": "object"
          }
        },
        "required": [
          "player"
        ],
        "type": "object"
      },
      "SetPlayerOverrideRequest": {
        "example": {
          "content": {
            "kind": "scene",
            "sceneId": "scn_01KJPX8NH0SZENE00000000001"
          },
          "until": "2026-07-20T16:00:00.000Z"
        },
        "properties": {
          "content": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "schedule"
                    ],
                    "type": "string"
                  },
                  "scheduleId": {
                    "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "scheduleId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "scene"
                    ],
                    "type": "string"
                  },
                  "sceneId": {
                    "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "sceneId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "playlist"
                    ],
                    "type": "string"
                  },
                  "playlistId": {
                    "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "playlistId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "assetId": {
                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "media"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "assetId"
                ],
                "type": "object"
              }
            ]
          },
          "until": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "content",
          "until"
        ],
        "type": "object"
      },
      "SetPlayerOverrideResponse": {
        "example": {
          "program": {
            "override": {
              "content": {
                "kind": "scene",
                "sceneId": "scn_01KJPX8NH0SZENE00000000001"
              },
              "setAt": "2026-07-20T08:00:00.000Z",
              "setById": "usr_01KERQ74K0TEAM000000000001",
              "until": "2026-07-20T16:00:00.000Z"
            },
            "playerId": "ply_01KHK34MQ0SCREEN0000000001",
            "program": {
              "kind": "schedule",
              "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001"
            },
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-20T08:00:00.000Z",
            "updatedById": "usr_01KERQ74K0TEAM000000000001",
            "version": 3
          }
        },
        "properties": {
          "program": {
            "properties": {
              "override": {
                "properties": {
                  "content": {
                    "oneOf": [
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "schedule"
                            ],
                            "type": "string"
                          },
                          "scheduleId": {
                            "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "scheduleId"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "scene"
                            ],
                            "type": "string"
                          },
                          "sceneId": {
                            "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "sceneId"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "playlist"
                            ],
                            "type": "string"
                          },
                          "playlistId": {
                            "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "playlistId"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "assetId": {
                            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          },
                          "kind": {
                            "enum": [
                              "media"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "assetId"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "setAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "setById": {
                    "anyOf": [
                      {
                        "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      {
                        "pattern": "^[0-9a-f]{64}$",
                        "type": "string"
                      }
                    ]
                  },
                  "until": {
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "required": [
                  "content",
                  "until",
                  "setAt",
                  "setById"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "playerId": {
                "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "program": {
                "oneOf": [
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "schedule"
                        ],
                        "type": "string"
                      },
                      "scheduleId": {
                        "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "scheduleId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "scene"
                        ],
                        "type": "string"
                      },
                      "sceneId": {
                        "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "sceneId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "playlist"
                        ],
                        "type": "string"
                      },
                      "playlistId": {
                        "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "playlistId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "assetId": {
                        "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "kind": {
                        "enum": [
                          "media"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "assetId"
                    ],
                    "type": "object"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "updatedById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  }
                ]
              },
              "version": {
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "playerId",
              "tenantId",
              "program",
              "override",
              "updatedById",
              "updatedAt",
              "version"
            ],
            "type": "object"
          }
        },
        "required": [
          "program"
        ],
        "type": "object"
      },
      "SetPlayerProgramRequest": {
        "example": {
          "program": {
            "kind": "schedule",
            "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001"
          }
        },
        "properties": {
          "program": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "schedule"
                    ],
                    "type": "string"
                  },
                  "scheduleId": {
                    "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "scheduleId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "scene"
                    ],
                    "type": "string"
                  },
                  "sceneId": {
                    "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "sceneId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "playlist"
                    ],
                    "type": "string"
                  },
                  "playlistId": {
                    "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "playlistId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "assetId": {
                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "media"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "assetId"
                ],
                "type": "object"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "program"
        ],
        "type": "object"
      },
      "SetPlayerProgramResponse": {
        "example": {
          "program": {
            "override": null,
            "playerId": "ply_01KHK34MQ0SCREEN0000000001",
            "program": {
              "kind": "schedule",
              "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001"
            },
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-20T09:15:00.000Z",
            "updatedById": "usr_01KERQ74K0TEAM000000000001",
            "version": 2
          },
          "warnings": []
        },
        "properties": {
          "program": {
            "properties": {
              "override": {
                "properties": {
                  "content": {
                    "oneOf": [
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "schedule"
                            ],
                            "type": "string"
                          },
                          "scheduleId": {
                            "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "scheduleId"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "scene"
                            ],
                            "type": "string"
                          },
                          "sceneId": {
                            "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "sceneId"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "playlist"
                            ],
                            "type": "string"
                          },
                          "playlistId": {
                            "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "playlistId"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "assetId": {
                            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                            "type": "string"
                          },
                          "kind": {
                            "enum": [
                              "media"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "assetId"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "setAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "setById": {
                    "anyOf": [
                      {
                        "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      {
                        "pattern": "^[0-9a-f]{64}$",
                        "type": "string"
                      }
                    ]
                  },
                  "until": {
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "required": [
                  "content",
                  "until",
                  "setAt",
                  "setById"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "playerId": {
                "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "program": {
                "oneOf": [
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "schedule"
                        ],
                        "type": "string"
                      },
                      "scheduleId": {
                        "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "scheduleId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "scene"
                        ],
                        "type": "string"
                      },
                      "sceneId": {
                        "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "sceneId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "playlist"
                        ],
                        "type": "string"
                      },
                      "playlistId": {
                        "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "playlistId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "assetId": {
                        "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "kind": {
                        "enum": [
                          "media"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "assetId"
                    ],
                    "type": "object"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "updatedById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  }
                ]
              },
              "version": {
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "playerId",
              "tenantId",
              "program",
              "override",
              "updatedById",
              "updatedAt",
              "version"
            ],
            "type": "object"
          },
          "warnings": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/ProgramCompatibilityWarning"
            },
            "type": "array"
          }
        },
        "required": [
          "program"
        ],
        "type": "object"
      },
      "SetReportScheduleRequest": {
        "example": {
          "schedule": {
            "dayOfWeek": 1,
            "hour": 6,
            "kind": "weekly"
          }
        },
        "properties": {
          "schedule": {
            "oneOf": [
              {
                "properties": {
                  "hour": {
                    "maximum": 23,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "daily"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "hour"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "dayOfWeek": {
                    "maximum": 6,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "hour": {
                    "maximum": 23,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "weekly"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "dayOfWeek",
                  "hour"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "dayOfMonth": {
                    "maximum": 28,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "hour": {
                    "maximum": 23,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "monthly"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "dayOfMonth",
                  "hour"
                ],
                "type": "object"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "schedule"
        ],
        "type": "object"
      },
      "SetReportScheduleResponse": {
        "example": {
          "createdAt": "2026-04-02T08:00:00.000Z",
          "description": "Wie viele Stunden jeder Bildschirm in der vergangenen Woche gespielt hat und wie viel seiner Planzeit er sichtbar war.",
          "id": "anr_01KN6K9M00BERCHT0000000001",
          "lastRunAt": "2026-07-20T04:00:00.000Z",
          "lastRunError": null,
          "lastRunStatus": "ok",
          "name": "Spielzeit je Bildschirm",
          "ownerUserId": "usr_01KERQ74K0TEAM000000000001",
          "query": {
            "dimensions": [
              "player"
            ],
            "filters": {},
            "granularity": "auto",
            "limit": null,
            "measures": [
              "airtimeSeconds",
              "availability"
            ],
            "perspective": "venue",
            "sort": {
              "direction": "desc",
              "measure": "airtimeSeconds"
            },
            "timezone": "Europe/Berlin",
            "window": {
              "kind": "previousWeek"
            }
          },
          "schedule": {
            "dayOfWeek": 1,
            "hour": 6,
            "kind": "weekly"
          },
          "scheduleFormat": "pdf",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-20T09:15:00.000Z",
          "visibility": "tenant-shared"
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "maxLength": 1000,
            "type": "string"
          },
          "id": {
            "pattern": "^anr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "lastRunAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "lastRunError": {
            "maxLength": 200,
            "type": [
              "string",
              "null"
            ]
          },
          "lastRunStatus": {
            "enum": [
              "ok",
              "failed"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "ownerUserId": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "query": {
            "$ref": "#/components/schemas/SavedExploreQuery"
          },
          "schedule": {
            "oneOf": [
              {
                "properties": {
                  "hour": {
                    "maximum": 23,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "daily"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "hour"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "dayOfWeek": {
                    "maximum": 6,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "hour": {
                    "maximum": 23,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "weekly"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "dayOfWeek",
                  "hour"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "dayOfMonth": {
                    "maximum": 28,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "hour": {
                    "maximum": 23,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "monthly"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "dayOfMonth",
                  "hour"
                ],
                "type": "object"
              },
              {
                "type": "null"
              }
            ]
          },
          "scheduleFormat": {
            "enum": [
              "csv",
              "pdf"
            ],
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "visibility": {
            "enum": [
              "private",
              "tenant-shared"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "name",
          "description",
          "query",
          "schedule",
          "ownerUserId",
          "visibility",
          "scheduleFormat",
          "createdAt",
          "updatedAt",
          "lastRunAt",
          "lastRunStatus",
          "lastRunError"
        ],
        "type": "object"
      },
      "SetSsoEnforcementRequest": {
        "example": {
          "breakGlassUserIds": [],
          "enforce": false
        },
        "properties": {
          "breakGlassUserIds": {
            "default": [],
            "items": {
              "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 2,
            "type": "array"
          },
          "enforce": {
            "type": "boolean"
          }
        },
        "required": [
          "enforce"
        ],
        "type": "object"
      },
      "SetUserPasswordRequest": {
        "example": {
          "newPassword": "neues-kennwort-platzhalter"
        },
        "properties": {
          "newPassword": {
            "maxLength": 128,
            "minLength": 12,
            "type": "string"
          }
        },
        "required": [
          "newPassword"
        ],
        "type": "object"
      },
      "SetUserPasswordResponse": {
        "example": {
          "setAt": "2026-01-01T00:00:00.000Z"
        },
        "properties": {
          "setAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "setAt"
        ],
        "type": "object"
      },
      "SharedProof": {
        "example": {
          "bookingLineName": "Schaufenster und Kasse",
          "campaignId": "acp_01KXR4P1Q0KAMPAGNE00000001",
          "campaignName": "Herbstpflege 2026",
          "closedAt": "2026-10-05T01:25:00.000Z",
          "files": [
            {
              "id": "pfi_01KZ4T6M80DTA0398000000001",
              "kind": "pdf",
              "name": "SZN-2026-000398.pdf",
              "sha256": "26d9c86976d75e7e9dc3b2367b5b7ae4140eeeec4c018e84041904080a30f352",
              "sizeBytes": 412386
            },
            {
              "id": "pfi_01KZ4T6M80DTA0398000000002",
              "kind": "csv",
              "name": "SZN-2026-000398.csv",
              "sha256": "1d38faf8b62d7fc8a93395228da4ff653476b9b4b34f5898d8454b29f9d35887",
              "sizeBytes": 61904
            },
            {
              "id": "pfi_01KZ4T6M80DTA0398000000003",
              "kind": "manifest",
              "name": "SZN-2026-000398.manifest.json",
              "sha256": "53a694909a683177e7ecd597c1eca5b3351aaebdc3f90250b01cc6615040fc7c",
              "sizeBytes": 168215
            }
          ],
          "fulfilment": 0.9502,
          "id": "prf_01KZ4T6M80NCHWS00000000398",
          "issuedAt": "2026-10-05T01:30:12.000Z",
          "kind": "closing",
          "number": "SZN-2026-000398",
          "period": {
            "from": "2026-09-01",
            "timezone": "Europe/Berlin",
            "to": "2026-09-30"
          },
          "signed": true,
          "validPlays": 5608
        },
        "properties": {
          "bookingLineName": {
            "type": "string"
          },
          "campaignId": {
            "pattern": "^acp_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "campaignName": {
            "type": "string"
          },
          "closedAt": {
            "format": "date-time",
            "type": "string"
          },
          "files": {
            "items": {
              "$ref": "#/components/schemas/ProofFile"
            },
            "type": "array"
          },
          "fulfilment": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "id": {
            "pattern": "^prf_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "issuedAt": {
            "format": "date-time",
            "type": "string"
          },
          "kind": {
            "enum": [
              "closing",
              "addendum",
              "interim"
            ],
            "type": "string"
          },
          "number": {
            "pattern": "^SZN-\\d{4}-\\d{6}$",
            "type": "string"
          },
          "period": {
            "$ref": "#/components/schemas/ProofPeriod"
          },
          "signed": {
            "type": "boolean"
          },
          "validPlays": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "number",
          "kind",
          "campaignId",
          "campaignName",
          "bookingLineName",
          "period",
          "closedAt",
          "issuedAt",
          "signed",
          "validPlays",
          "fulfilment",
          "files"
        ],
        "type": "object"
      },
      "ShareLink": {
        "example": {
          "advertiserId": "adv_01KXR4M8A0WERBPARTNER00001",
          "advertiserName": "Nordwind Naturkosmetik GmbH",
          "createdAt": "2026-10-12T08:00:00.000Z",
          "expiresAt": "2027-01-10T08:00:00.000Z",
          "id": "shl_01KZ8VBN40VRWS000000000001",
          "label": "Agentur Berger",
          "lastUsedAt": "2026-10-14T09:12:00.000Z",
          "owner": "tenant",
          "revokedAt": null,
          "state": "active"
        },
        "properties": {
          "advertiserId": {
            "pattern": "^adv_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "advertiserName": {
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "expiresAt": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "pattern": "^shl_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "lastUsedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "owner": {
            "enum": [
              "tenant",
              "network"
            ],
            "type": "string"
          },
          "revokedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "enum": [
              "active",
              "expired",
              "revoked"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "advertiserId",
          "advertiserName",
          "owner",
          "label",
          "state",
          "expiresAt",
          "revokedAt",
          "lastUsedAt",
          "createdAt"
        ],
        "type": "object"
      },
      "SignupAvailabilityResponse": {
        "example": {
          "enabled": false
        },
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ],
        "type": "object"
      },
      "SignupCompleteRequest": {
        "example": {
          "acceptedTerms": true,
          "desiredPackage": {
            "billingCycle": "monthly",
            "displays": 5,
            "packageCode": "PRO"
          },
          "deviceFingerprint": {
            "acceptLanguage": "de-DE,de;q=0.9",
            "geoip": "Hamburg, DE",
            "screenResolution": "1512x982",
            "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko)"
          },
          "displayName": "Julia Petersen",
          "organization": {
            "address": {
              "city": "Hamburg",
              "country": "DE",
              "postalCode": "22765",
              "region": "Hamburg",
              "street": "Bahnhofstraße 12"
            },
            "displayName": "Adler-Apotheke",
            "locale": "de-DE",
            "timezone": "Europe/Berlin"
          },
          "password": "kennwort-aus-dem-tresor-einsetzen",
          "signupTicket": "sgt_01KXN115S0TCKET00000000003"
        },
        "properties": {
          "acceptedTerms": {
            "enum": [
              true
            ],
            "type": "boolean"
          },
          "desiredPackage": {
            "$ref": "#/components/schemas/SignupDesiredPackage"
          },
          "deviceFingerprint": {
            "properties": {
              "acceptLanguage": {
                "type": "string"
              },
              "geoip": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "screenResolution": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "userAgent": {
                "type": "string"
              }
            },
            "required": [
              "userAgent",
              "acceptLanguage",
              "screenResolution",
              "geoip"
            ],
            "type": "object"
          },
          "displayName": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "organization": {
            "properties": {
              "address": {
                "properties": {
                  "city": {
                    "maxLength": 100,
                    "type": "string"
                  },
                  "country": {
                    "maxLength": 2,
                    "minLength": 2,
                    "type": "string"
                  },
                  "postalCode": {
                    "maxLength": 20,
                    "type": "string"
                  },
                  "region": {
                    "maxLength": 100,
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "street": {
                    "maxLength": 200,
                    "type": "string"
                  }
                },
                "required": [
                  "street",
                  "postalCode",
                  "city",
                  "region",
                  "country"
                ],
                "type": "object"
              },
              "displayName": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "locale": {
                "default": "de-DE",
                "pattern": "^[a-z]{2}(-[A-Z]{2})?$",
                "type": "string"
              },
              "timezone": {
                "default": "Europe/Berlin",
                "type": "string"
              }
            },
            "required": [
              "displayName",
              "address"
            ],
            "type": "object"
          },
          "password": {
            "default": null,
            "maxLength": 128,
            "minLength": 12,
            "type": [
              "string",
              "null"
            ]
          },
          "signupTicket": {
            "pattern": "^sgt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "signupTicket",
          "displayName",
          "organization",
          "acceptedTerms",
          "deviceFingerprint"
        ],
        "type": "object"
      },
      "SignupDesiredPackage": {
        "default": null,
        "example": {
          "billingCycle": "monthly",
          "displays": 5,
          "packageCode": "PRO"
        },
        "properties": {
          "billingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": "string"
          },
          "displays": {
            "maximum": 500,
            "minimum": 1,
            "type": "integer"
          },
          "packageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM"
            ],
            "type": "string"
          }
        },
        "required": [
          "packageCode",
          "displays",
          "billingCycle"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "SignupJoinRequest": {
        "example": {
          "displayName": "Tobias Reuter",
          "message": "Ich übernehme ab August die Schaufenster-Gestaltung und brauche Zugang zu den Szenen.",
          "organizationId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "signupTicket": "sgt_01KXN115S0TCKET00000000003"
        },
        "properties": {
          "displayName": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "message": {
            "default": null,
            "maxLength": 1000,
            "type": [
              "string",
              "null"
            ]
          },
          "organizationId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "signupTicket": {
            "pattern": "^sgt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "signupTicket",
          "organizationId",
          "displayName"
        ],
        "type": "object"
      },
      "SignupJoinResponse": {
        "example": {
          "accepted": true
        },
        "properties": {
          "accepted": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "accepted"
        ],
        "type": "object"
      },
      "SignupSocialRequest": {
        "example": {
          "handoffTicket": "lht_01KXZ88ZE0TCKET00000000001"
        },
        "properties": {
          "handoffTicket": {
            "pattern": "^lht_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "handoffTicket"
        ],
        "type": "object"
      },
      "SignupStartRequest": {
        "example": {
          "email": "t.reuter@demo.local",
          "entry": "pricing-calculator"
        },
        "properties": {
          "email": {
            "format": "email",
            "maxLength": 254,
            "type": "string"
          },
          "entry": {
            "enum": [
              "pricing-calculator",
              "pricing-page",
              "home-page",
              "shop",
              "content-page",
              "trial-card",
              "mail",
              "direct",
              "pairing",
              "display-counter",
              "app",
              "video-wall",
              "package",
              "billing-cycle",
              "hardware"
            ],
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "SignupStartResponse": {
        "example": {
          "accepted": true
        },
        "properties": {
          "accepted": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "accepted"
        ],
        "type": "object"
      },
      "SignupVerifyRequest": {
        "example": {
          "token": "4b7e0f92a5c34d18be6207fa9d31c85b"
        },
        "properties": {
          "token": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "token"
        ],
        "type": "object"
      },
      "SignupVerifyResponse": {
        "example": {
          "displayName": "Tobias Reuter",
          "email": "t.reuter@demo.local",
          "passwordRequired": true,
          "route": {
            "kind": "join",
            "organizations": [
              {
                "displayName": "Adler-Apotheke",
                "organizationId": "tnt_01KERPXZM0ADERAPTHEKE00001"
              }
            ]
          },
          "signupTicket": "sgt_01KXN115S0TCKET00000000003"
        },
        "properties": {
          "displayName": {
            "maxLength": 100,
            "minLength": 1,
            "type": [
              "string",
              "null"
            ]
          },
          "email": {
            "format": "email",
            "maxLength": 254,
            "type": "string"
          },
          "passwordRequired": {
            "type": "boolean"
          },
          "route": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "create"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "join"
                    ],
                    "type": "string"
                  },
                  "organizations": {
                    "items": {
                      "properties": {
                        "displayName": {
                          "maxLength": 200,
                          "minLength": 1,
                          "type": "string"
                        },
                        "organizationId": {
                          "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        }
                      },
                      "required": [
                        "organizationId",
                        "displayName"
                      ],
                      "type": "object"
                    },
                    "minItems": 1,
                    "type": "array"
                  }
                },
                "required": [
                  "kind",
                  "organizations"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "sso"
                    ],
                    "type": "string"
                  },
                  "sso": {
                    "properties": {
                      "displayName": {
                        "maxLength": 60,
                        "minLength": 1,
                        "type": "string"
                      },
                      "providerId": {
                        "pattern": "^ssop_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "providerId",
                      "displayName"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "kind",
                  "sso"
                ],
                "type": "object"
              }
            ]
          },
          "signupTicket": {
            "pattern": "^sgt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "signupTicket",
          "email",
          "displayName",
          "passwordRequired",
          "route"
        ],
        "type": "object"
      },
      "SkipSetupStepRequest": {
        "example": {
          "reason": "Wir zahlen per Rechnung; ein Zahlungsmittel hinterlegen wir nicht.",
          "step": "payment-method-attached"
        },
        "properties": {
          "reason": {
            "default": null,
            "maxLength": 500,
            "type": [
              "string",
              "null"
            ]
          },
          "step": {
            "enum": [
              "tenant-profile-completed",
              "branding-uploaded",
              "first-user-invited",
              "payment-method-attached",
              "first-app-installed",
              "first-scene-created",
              "first-player-paired"
            ],
            "type": "string"
          }
        },
        "required": [
          "step"
        ],
        "type": "object"
      },
      "SkipSetupStepResponse": {
        "example": {
          "progress": {
            "completedAt": "2026-07-20T09:15:00.000Z",
            "steps": [
              {
                "completedAt": "2026-01-12T09:00:00.000Z",
                "skippedAt": null,
                "skippedReason": null,
                "step": "tenant-profile-completed"
              },
              {
                "completedAt": "2026-01-12T10:40:00.000Z",
                "skippedAt": null,
                "skippedReason": null,
                "step": "branding-uploaded"
              },
              {
                "completedAt": "2026-03-20T08:00:00.000Z",
                "skippedAt": null,
                "skippedReason": null,
                "step": "first-user-invited"
              },
              {
                "completedAt": null,
                "skippedAt": "2026-07-20T09:15:00.000Z",
                "skippedReason": "Wir zahlen per Rechnung; ein Zahlungsmittel hinterlegen wir nicht.",
                "step": "payment-method-attached"
              },
              {
                "completedAt": "2026-02-09T10:20:00.000Z",
                "skippedAt": null,
                "skippedReason": null,
                "step": "first-app-installed"
              },
              {
                "completedAt": "2026-03-02T09:15:00.000Z",
                "skippedAt": null,
                "skippedReason": null,
                "step": "first-scene-created"
              },
              {
                "completedAt": "2026-03-05T13:25:00.000Z",
                "skippedAt": null,
                "skippedReason": null,
                "step": "first-player-paired"
              }
            ],
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          }
        },
        "properties": {
          "progress": {
            "properties": {
              "completedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "steps": {
                "items": {
                  "properties": {
                    "completedAt": {
                      "format": "date-time",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "skippedAt": {
                      "format": "date-time",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "skippedReason": {
                      "maxLength": 500,
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "step": {
                      "enum": [
                        "tenant-profile-completed",
                        "branding-uploaded",
                        "first-user-invited",
                        "payment-method-attached",
                        "first-app-installed",
                        "first-scene-created",
                        "first-player-paired"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "step",
                    "completedAt",
                    "skippedAt",
                    "skippedReason"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              }
            },
            "required": [
              "tenantId",
              "steps",
              "completedAt"
            ],
            "type": "object"
          }
        },
        "required": [
          "progress"
        ],
        "type": "object"
      },
      "SsoDomainResponse": {
        "example": {
          "domain": "adler-apotheke.demo.local",
          "providerId": "ssop_01KT3WD680SSPRV00000000001",
          "recordName": "_signage-sso.adler-apotheke.demo.local",
          "requestedAt": "2026-06-02T10:00:00.000Z",
          "status": "verified",
          "verificationToken": "ssov-41c9be072ad5",
          "verifiedAt": "2026-06-02T10:24:00.000Z"
        },
        "properties": {
          "domain": {
            "maxLength": 253,
            "pattern": "^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$",
            "type": "string"
          },
          "providerId": {
            "pattern": "^ssop_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "recordName": {
            "minLength": 1,
            "type": "string"
          },
          "requestedAt": {
            "format": "date-time",
            "type": "string"
          },
          "status": {
            "enum": [
              "pending",
              "verified"
            ],
            "type": "string"
          },
          "verificationToken": {
            "maxLength": 64,
            "minLength": 8,
            "type": "string"
          },
          "verifiedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "domain",
          "providerId",
          "status",
          "verificationToken",
          "requestedAt",
          "verifiedAt",
          "recordName"
        ],
        "type": "object"
      },
      "SsoProviderResponse": {
        "example": {
          "breakGlassUserIds": [
            "usr_01KERQ74K0TEAM000000000001"
          ],
          "clientId": "signage-portal",
          "createdAt": "2026-06-02T10:00:00.000Z",
          "defaultRoleId": "rol_01KERPYYW0RECHT00000000003",
          "displayName": "Adler-Apotheke Firmenkonto",
          "domains": [
            {
              "domain": "adler-apotheke.demo.local",
              "providerId": "ssop_01KT3WD680SSPRV00000000001",
              "recordName": "_signage-sso.adler-apotheke.demo.local",
              "requestedAt": "2026-06-02T10:00:00.000Z",
              "status": "verified",
              "verificationToken": "ssov-41c9be072ad5",
              "verifiedAt": "2026-06-02T10:24:00.000Z"
            }
          ],
          "enforce": false,
          "id": "ssop_01KT3WD680SSPRV00000000001",
          "issuer": "https://anmeldung.adler-apotheke.demo.local",
          "jitProvisioning": true,
          "lastBreakGlassLoginAt": null,
          "lastVerifiedLoginAt": "2026-07-19T16:42:00.000Z",
          "protocol": "oidc",
          "status": "active",
          "updatedAt": "2026-06-02T10:24:00.000Z"
        },
        "properties": {
          "breakGlassUserIds": {
            "items": {
              "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
              "type": "string"
            },
            "maxItems": 2,
            "type": "array"
          },
          "clientId": {
            "maxLength": 256,
            "minLength": 1,
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "defaultRoleId": {
            "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "displayName": {
            "maxLength": 60,
            "minLength": 1,
            "type": "string"
          },
          "domains": {
            "items": {
              "properties": {
                "domain": {
                  "maxLength": 253,
                  "pattern": "^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$",
                  "type": "string"
                },
                "providerId": {
                  "pattern": "^ssop_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "recordName": {
                  "minLength": 1,
                  "type": "string"
                },
                "requestedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "status": {
                  "enum": [
                    "pending",
                    "verified"
                  ],
                  "type": "string"
                },
                "verificationToken": {
                  "maxLength": 64,
                  "minLength": 8,
                  "type": "string"
                },
                "verifiedAt": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "domain",
                "providerId",
                "status",
                "verificationToken",
                "requestedAt",
                "verifiedAt",
                "recordName"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "enforce": {
            "type": "boolean"
          },
          "id": {
            "pattern": "^ssop_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "issuer": {
            "format": "uri",
            "type": "string"
          },
          "jitProvisioning": {
            "type": "boolean"
          },
          "lastBreakGlassLoginAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "lastVerifiedLoginAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "protocol": {
            "enum": [
              "oidc"
            ],
            "type": "string"
          },
          "status": {
            "enum": [
              "draft",
              "active",
              "disabled"
            ],
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "protocol",
          "displayName",
          "status",
          "enforce",
          "issuer",
          "clientId",
          "defaultRoleId",
          "jitProvisioning",
          "lastVerifiedLoginAt",
          "breakGlassUserIds",
          "lastBreakGlassLoginAt",
          "createdAt",
          "updatedAt",
          "domains"
        ],
        "type": "object"
      },
      "StoreCardView": {
        "example": {
          "appId": "clock",
          "category": "zeit",
          "coverUrl": "/v1/apps/clock/1.3.0/store/screenshots/clock--digital.png",
          "displayName": "Uhr",
          "firstReleasedAt": "2026-01-12T08:00:00.000Z",
          "iconUrl": "/v1/apps/clock/1.3.0/store/icon.svg",
          "locales": [
            "de-DE"
          ],
          "marks": {
            "essential": false,
            "exempt": false,
            "prerelease": null,
            "tier": null,
            "trial": false
          },
          "needsSetup": false,
          "offer": {
            "kind": "included",
            "package": "START"
          },
          "offerGroup": "in-package",
          "publisher": {
            "name": "Szenera",
            "verified": true
          },
          "recentlyUpdated": false,
          "state": "not-installed",
          "summary": "Uhrzeit und Datum, analog oder digital.",
          "textLocale": "de-DE",
          "updatedAt": "2026-06-20T08:00:00.000Z",
          "vertical": null
        },
        "properties": {
          "appId": {
            "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
            "type": "string"
          },
          "category": {
            "enum": [
              "zeit",
              "information",
              "web-video",
              "gestaltung",
              "geschaeft"
            ],
            "type": "string"
          },
          "coverUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "displayName": {
            "type": "string"
          },
          "firstReleasedAt": {
            "format": "date-time",
            "type": "string"
          },
          "iconUrl": {
            "type": "string"
          },
          "locales": {
            "items": {
              "pattern": "^[a-z]{2}-[A-Z]{2}$",
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "marks": {
            "$ref": "#/components/schemas/StoreMarks"
          },
          "needsSetup": {
            "type": "boolean"
          },
          "offer": {
            "$ref": "#/components/schemas/StoreOffer"
          },
          "offerGroup": {
            "enum": [
              "in-package",
              "requires-package",
              "bookable"
            ],
            "type": "string"
          },
          "publisher": {
            "$ref": "#/components/schemas/StorePublisher"
          },
          "recentlyUpdated": {
            "type": "boolean"
          },
          "state": {
            "enum": [
              "not-installed",
              "installed",
              "update-pending",
              "locked"
            ],
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "textLocale": {
            "pattern": "^[a-z]{2}-[A-Z]{2}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "vertical": {
            "enum": [
              "pharmacy"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "appId",
          "displayName",
          "summary",
          "textLocale",
          "iconUrl",
          "coverUrl",
          "publisher",
          "category",
          "vertical",
          "marks",
          "offer",
          "offerGroup",
          "state",
          "needsSetup",
          "locales",
          "firstReleasedAt",
          "updatedAt",
          "recentlyUpdated"
        ],
        "type": "object"
      },
      "StoreCollectionView": {
        "example": {
          "appIds": [
            "pharmacies-on-duty",
            "opening-hours",
            "notice-board"
          ],
          "description": "Notdienst, Öffnungszeiten und Aushang lösen den Papier-Aushang ab.",
          "display": "stack",
          "key": "pharmacy",
          "textLocale": "de-DE",
          "title": "Das Schaufenster, das sich selbst pflegt"
        },
        "properties": {
          "appIds": {
            "items": {
              "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "description": {
            "type": "string"
          },
          "display": {
            "enum": [
              "stack",
              "row"
            ],
            "type": "string"
          },
          "key": {
            "maxLength": 40,
            "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
            "type": "string"
          },
          "textLocale": {
            "pattern": "^[a-z]{2}-[A-Z]{2}$",
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "key",
          "title",
          "description",
          "textLocale",
          "appIds",
          "display"
        ],
        "type": "object"
      },
      "StoreCoreFeature": {
        "example": {
          "appId": "sample",
          "installed": false,
          "key": "canvas",
          "offer": {
            "consentFree": false,
            "manifestHash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
            "version": "1.0.0"
          }
        },
        "properties": {
          "appId": {
            "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
            "type": "string"
          },
          "installed": {
            "type": "boolean"
          },
          "key": {
            "enum": [
              "canvas"
            ],
            "type": "string"
          },
          "offer": {
            "properties": {
              "consentFree": {
                "type": "boolean"
              },
              "manifestHash": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              },
              "version": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": "string"
              }
            },
            "required": [
              "version",
              "manifestHash",
              "consentFree"
            ],
            "type": [
              "object",
              "null"
            ]
          }
        },
        "required": [
          "key",
          "appId",
          "installed",
          "offer"
        ],
        "type": "object"
      },
      "StoreEntryView": {
        "example": {
          "appId": "clock",
          "data": {
            "connects": [],
            "dataAccess": {
              "external": [],
              "reads": [],
              "retention": "kept",
              "writes": []
            },
            "privacy": {
              "recipients": [],
              "retention": "kept",
              "storesOwnData": false
            },
            "resources": [],
            "terms": null,
            "unlocks": []
          },
          "head": {
            "category": "zeit",
            "description": "Digitale oder analoge Uhr mit Datum, in jeder Größe gut lesbar.",
            "displayName": "Uhr",
            "facts": {
              "channel": "stable",
              "locales": [
                "de-DE"
              ],
              "releasedAt": "2026-06-20T08:00:00.000Z",
              "version": "1.3.0"
            },
            "iconUrl": "/v1/apps/clock/1.3.0/store/icon.svg",
            "marks": {
              "essential": false,
              "exempt": false,
              "prerelease": null,
              "tier": null,
              "trial": false
            },
            "publisher": {
              "name": "Szenera",
              "verified": true
            },
            "tagline": "Uhrzeit und Datum, analog oder digital.",
            "vertical": null
          },
          "manifestHash": "3c1d6e0b2f4a59c8e7d6b5a4f3e2d1c0b9a8f7e6d5c4b3a29180f7e6d5c4b3a2",
          "overview": {
            "compatibility": {
              "hosts": [
                "szenera-os",
                "fire-tv",
                "tizen",
                "webos",
                "web-display"
              ],
              "offline": "full",
              "orientations": [
                "landscape",
                "portrait"
              ]
            },
            "description": "Digitale oder analoge Uhr mit Datum, in jeder Größe gut lesbar.",
            "highlights": [
              {
                "description": "Die Uhr läuft auf dem Gerät und braucht kein Netz.",
                "title": "Immer genau"
              }
            ],
            "related": [
              {
                "appId": "weather",
                "displayName": "Wetter",
                "iconUrl": "/v1/apps/weather/1.4.2/store/icon.svg",
                "tagline": "Wetterdaten als klar lesbares Display-Widget."
              }
            ],
            "whatsNew": {
              "locale": "de-DE",
              "releasedAt": "2026-06-20T08:00:00.000Z",
              "text": "- Neue Darstellung mit Sekundenzeiger\n- Datum wahlweise ausgeschrieben",
              "version": "1.3.0"
            }
          },
          "ownerRequest": null,
          "quickFacts": {
            "external": false,
            "locales": [
              "de-DE"
            ],
            "ownData": 0,
            "runsOn": {
              "displays": {
                "compatible": 3,
                "total": 3
              },
              "hosts": [
                "szenera-os",
                "fire-tv",
                "tizen",
                "webos",
                "web-display"
              ]
            },
            "setupSteps": 1,
            "views": 2
          },
          "retainedData": null,
          "setup": {
            "permissions": [],
            "publisher": {
              "name": "Szenera",
              "verified": true
            },
            "steps": [
              {
                "description": "Das Uhr-Widget im Szenen-Editor auf die Fläche ziehen.",
                "done": null,
                "target": {
                  "kind": "scene"
                },
                "title": "Widget platzieren"
              }
            ],
            "technical": {
              "appId": "clock",
              "category": "zeit",
              "channel": "stable",
              "signed": true,
              "sizeBytes": 98304,
              "version": "1.3.0"
            }
          },
          "situation": {
            "action": "install",
            "installed": null,
            "kind": "included",
            "offer": {
              "kind": "included",
              "package": "START"
            },
            "reason": {
              "code": "included",
              "package": "START"
            },
            "state": "not-installed",
            "update": null
          },
          "textLocale": "de-DE",
          "versions": [
            {
              "consent": null,
              "current": true,
              "installed": false,
              "note": {
                "locale": "de-DE",
                "text": "- Neue Darstellung mit Sekundenzeiger\n- Datum wahlweise ausgeschrieben"
              },
              "releasedAt": "2026-06-20T08:00:00.000Z",
              "releaseId": "arl_01KXG5WQ80AVERSN0000000007",
              "retirement": null,
              "version": "1.3.0"
            },
            {
              "consent": null,
              "current": false,
              "installed": false,
              "note": null,
              "releasedAt": "2026-01-12T08:00:00.000Z",
              "releaseId": "arl_01KFB7Z0E0AVERSN0000000008",
              "retirement": null,
              "version": "1.2.0"
            }
          ],
          "views": {
            "mainViewUrl": "/v1/apps/clock/1.3.0/store/screenshots/clock--digital.png",
            "sceneExampleUrl": "/v1/apps/clock/1.3.0/store/scene-example.png",
            "widgets": [
              {
                "description": "Zeigt Uhrzeit und Datum.",
                "id": "clock",
                "name": "Uhr",
                "views": [
                  {
                    "aspect": "16:9",
                    "description": "Große Ziffern mit Datum darunter.",
                    "id": "digital",
                    "imageUrl": "/v1/apps/clock/1.3.0/store/screenshots/clock--digital.png",
                    "label": "Digital",
                    "primary": true
                  },
                  {
                    "aspect": "9:16",
                    "description": null,
                    "id": "hochkant",
                    "imageUrl": "/v1/apps/clock/1.3.0/store/screenshots/clock--hochkant.png",
                    "label": "Hochkant",
                    "primary": false
                  }
                ]
              }
            ]
          }
        },
        "properties": {
          "appId": {
            "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
            "type": "string"
          },
          "data": {
            "properties": {
              "connects": {
                "items": {
                  "maxLength": 40,
                  "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                  "type": "string"
                },
                "type": "array"
              },
              "dataAccess": {
                "properties": {
                  "external": {
                    "default": [],
                    "items": {
                      "properties": {
                        "name": {
                          "maxLength": 60,
                          "minLength": 1,
                          "type": "string"
                        },
                        "purpose": {
                          "maxLength": 200,
                          "minLength": 1,
                          "type": "string"
                        },
                        "sends": {
                          "maxLength": 200,
                          "type": "string"
                        }
                      },
                      "required": [
                        "name",
                        "purpose"
                      ],
                      "type": "object"
                    },
                    "maxItems": 8,
                    "type": "array"
                  },
                  "reads": {
                    "default": [],
                    "items": {
                      "enum": [
                        "tenant-profile",
                        "tenant-branding",
                        "media-library",
                        "team",
                        "player-location",
                        "fleet-locations",
                        "location-hours"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "retention": {
                    "default": "kept",
                    "enum": [
                      "kept",
                      "deleted"
                    ],
                    "type": "string"
                  },
                  "writes": {
                    "default": [],
                    "items": {
                      "maxLength": 60,
                      "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*:create-[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "maxItems": 8,
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "privacy": {
                "properties": {
                  "recipients": {
                    "items": {
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "purpose": {
                          "type": "string"
                        },
                        "sends": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "name",
                        "purpose",
                        "sends"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "retention": {
                    "enum": [
                      "kept",
                      "deleted"
                    ],
                    "type": "string"
                  },
                  "storesOwnData": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "recipients",
                  "storesOwnData",
                  "retention"
                ],
                "type": "object"
              },
              "resources": {
                "items": {
                  "properties": {
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "id": {
                      "maxLength": 100,
                      "minLength": 2,
                      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "slug": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "slug",
                    "name",
                    "description"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "terms": {
                "properties": {
                  "summary": {
                    "minLength": 1,
                    "type": "string"
                  },
                  "termsPath": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "summary",
                  "termsPath"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "unlocks": {
                "items": {
                  "maxLength": 40,
                  "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                  "type": "string"
                },
                "type": "array"
              }
            },
            "required": [
              "resources",
              "dataAccess",
              "privacy",
              "connects",
              "unlocks",
              "terms"
            ],
            "type": "object"
          },
          "head": {
            "properties": {
              "category": {
                "enum": [
                  "zeit",
                  "information",
                  "web-video",
                  "gestaltung",
                  "geschaeft"
                ],
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "displayName": {
                "type": "string"
              },
              "facts": {
                "properties": {
                  "channel": {
                    "enum": [
                      "canary",
                      "beta",
                      "stable",
                      "deprecated",
                      "retired"
                    ],
                    "type": "string"
                  },
                  "locales": {
                    "items": {
                      "pattern": "^[a-z]{2}-[A-Z]{2}$",
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "releasedAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "version": {
                    "pattern": "^\\d+\\.\\d+\\.\\d+$",
                    "type": "string"
                  }
                },
                "required": [
                  "version",
                  "channel",
                  "releasedAt",
                  "locales"
                ],
                "type": "object"
              },
              "iconUrl": {
                "type": "string"
              },
              "marks": {
                "$ref": "#/components/schemas/StoreMarks"
              },
              "publisher": {
                "$ref": "#/components/schemas/StorePublisher"
              },
              "tagline": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "vertical": {
                "enum": [
                  "pharmacy"
                ],
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "displayName",
              "tagline",
              "description",
              "publisher",
              "category",
              "vertical",
              "iconUrl",
              "marks",
              "facts"
            ],
            "type": "object"
          },
          "manifestHash": {
            "pattern": "^[a-f0-9]{64}$",
            "type": "string"
          },
          "overview": {
            "properties": {
              "compatibility": {
                "additionalProperties": false,
                "properties": {
                  "hosts": {
                    "items": {
                      "enum": [
                        "szenera-os",
                        "fire-tv",
                        "tizen",
                        "webos",
                        "web-display"
                      ],
                      "type": "string"
                    },
                    "maxItems": 5,
                    "minItems": 1,
                    "type": "array"
                  },
                  "offline": {
                    "enum": [
                      "full",
                      "last-known",
                      "none"
                    ],
                    "type": "string"
                  },
                  "orientations": {
                    "items": {
                      "enum": [
                        "landscape",
                        "portrait"
                      ],
                      "type": "string"
                    },
                    "maxItems": 2,
                    "minItems": 1,
                    "type": "array"
                  }
                },
                "required": [
                  "hosts",
                  "orientations",
                  "offline"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "description": {
                "type": "string"
              },
              "highlights": {
                "items": {
                  "properties": {
                    "description": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "title",
                    "description"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "related": {
                "items": {
                  "properties": {
                    "appId": {
                      "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "displayName": {
                      "type": "string"
                    },
                    "iconUrl": {
                      "type": "string"
                    },
                    "tagline": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "appId",
                    "displayName",
                    "tagline",
                    "iconUrl"
                  ],
                  "type": "object"
                },
                "maxItems": 6,
                "type": "array"
              },
              "whatsNew": {
                "properties": {
                  "locale": {
                    "pattern": "^[a-z]{2}-[A-Z]{2}$",
                    "type": "string"
                  },
                  "releasedAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "text": {
                    "minLength": 1,
                    "type": "string"
                  },
                  "version": {
                    "pattern": "^\\d+\\.\\d+\\.\\d+$",
                    "type": "string"
                  }
                },
                "required": [
                  "version",
                  "releasedAt",
                  "text",
                  "locale"
                ],
                "type": [
                  "object",
                  "null"
                ]
              }
            },
            "required": [
              "whatsNew",
              "highlights",
              "description",
              "compatibility",
              "related"
            ],
            "type": "object"
          },
          "ownerRequest": {
            "properties": {
              "byMe": {
                "type": "boolean"
              },
              "kind": {
                "enum": [
                  "install",
                  "update-decision"
                ],
                "type": "string"
              },
              "requestedAt": {
                "format": "date-time",
                "type": "string"
              },
              "version": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "kind",
              "requestedAt",
              "byMe",
              "version"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "quickFacts": {
            "properties": {
              "external": {
                "type": "boolean"
              },
              "locales": {
                "items": {
                  "pattern": "^[a-z]{2}-[A-Z]{2}$",
                  "type": "string"
                },
                "minItems": 1,
                "type": "array"
              },
              "ownData": {
                "minimum": 0,
                "type": "integer"
              },
              "runsOn": {
                "properties": {
                  "displays": {
                    "properties": {
                      "compatible": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "total": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "total",
                      "compatible"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "hosts": {
                    "items": {
                      "enum": [
                        "szenera-os",
                        "fire-tv",
                        "tizen",
                        "webos",
                        "web-display"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "hosts",
                  "displays"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "setupSteps": {
                "minimum": 0,
                "type": "integer"
              },
              "views": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "runsOn",
              "ownData",
              "external",
              "setupSteps",
              "views",
              "locales"
            ],
            "type": "object"
          },
          "retainedData": {
            "properties": {
              "deletion": {
                "properties": {
                  "dueAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "state": {
                    "enum": [
                      "scheduled",
                      "cancelled",
                      "completed"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "state",
                  "dueAt"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "total": {
                "exclusiveMinimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "total",
              "deletion"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "setup": {
            "properties": {
              "permissions": {
                "items": {
                  "properties": {
                    "description": {
                      "type": "string"
                    },
                    "key": {
                      "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$",
                      "type": "string"
                    },
                    "label": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "label",
                    "description"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "publisher": {
                "$ref": "#/components/schemas/StorePublisher"
              },
              "steps": {
                "items": {
                  "properties": {
                    "description": {
                      "type": "string"
                    },
                    "done": {
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "target": {
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "resource"
                              ],
                              "type": "string"
                            },
                            "resourceSlug": {
                              "type": "string"
                            },
                            "resourceType": {
                              "maxLength": 100,
                              "minLength": 2,
                              "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "resourceType",
                            "resourceSlug"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "scene"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "title": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "title",
                    "description",
                    "target",
                    "done"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "technical": {
                "properties": {
                  "appId": {
                    "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                    "type": "string"
                  },
                  "category": {
                    "enum": [
                      "zeit",
                      "information",
                      "web-video",
                      "gestaltung",
                      "geschaeft"
                    ],
                    "type": "string"
                  },
                  "channel": {
                    "enum": [
                      "canary",
                      "beta",
                      "stable",
                      "deprecated",
                      "retired"
                    ],
                    "type": "string"
                  },
                  "signed": {
                    "type": "boolean"
                  },
                  "sizeBytes": {
                    "minimum": 0,
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "version": {
                    "pattern": "^\\d+\\.\\d+\\.\\d+$",
                    "type": "string"
                  }
                },
                "required": [
                  "appId",
                  "version",
                  "channel",
                  "sizeBytes",
                  "signed",
                  "category"
                ],
                "type": "object"
              }
            },
            "required": [
              "steps",
              "permissions",
              "publisher",
              "technical"
            ],
            "type": "object"
          },
          "situation": {
            "$ref": "#/components/schemas/StoreSituation"
          },
          "textLocale": {
            "pattern": "^[a-z]{2}-[A-Z]{2}$",
            "type": "string"
          },
          "versions": {
            "items": {
              "properties": {
                "consent": {
                  "properties": {
                    "reasons": {
                      "items": {
                        "enum": [
                          "permissions",
                          "access",
                          "terms"
                        ],
                        "type": "string"
                      },
                      "minItems": 1,
                      "type": "array"
                    },
                    "termsPath": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "reasons",
                    "termsPath"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "current": {
                  "type": "boolean"
                },
                "installed": {
                  "type": "boolean"
                },
                "note": {
                  "properties": {
                    "locale": {
                      "pattern": "^[a-z]{2}-[A-Z]{2}$",
                      "type": "string"
                    },
                    "text": {
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "locale",
                    "text"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "releasedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "releaseId": {
                  "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "retirement": {
                  "properties": {
                    "advisory": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "endsAt": {
                      "format": "date-time",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "retiredAt": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "required": [
                    "retiredAt",
                    "endsAt",
                    "advisory"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "version": {
                  "pattern": "^\\d+\\.\\d+\\.\\d+$",
                  "type": "string"
                }
              },
              "required": [
                "releaseId",
                "version",
                "releasedAt",
                "current",
                "installed",
                "note",
                "consent",
                "retirement"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "views": {
            "properties": {
              "mainViewUrl": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "sceneExampleUrl": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "widgets": {
                "items": {
                  "properties": {
                    "description": {
                      "type": "string"
                    },
                    "id": {
                      "maxLength": 100,
                      "minLength": 2,
                      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "views": {
                      "items": {
                        "properties": {
                          "aspect": {
                            "enum": [
                              "16:9",
                              "9:16"
                            ],
                            "type": "string"
                          },
                          "description": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "id": {
                            "type": "string"
                          },
                          "imageUrl": {
                            "type": "string"
                          },
                          "label": {
                            "type": "string"
                          },
                          "primary": {
                            "type": "boolean"
                          },
                          "size": {
                            "properties": {
                              "h": {
                                "exclusiveMinimum": 0,
                                "maximum": 1080,
                                "type": "integer"
                              },
                              "w": {
                                "exclusiveMinimum": 0,
                                "maximum": 1920,
                                "type": "integer"
                              }
                            },
                            "required": [
                              "w",
                              "h"
                            ],
                            "type": "object"
                          }
                        },
                        "required": [
                          "id",
                          "label",
                          "description",
                          "aspect",
                          "primary",
                          "imageUrl"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "description",
                    "views"
                  ],
                  "type": "object"
                },
                "type": "array"
              }
            },
            "required": [
              "widgets",
              "sceneExampleUrl",
              "mainViewUrl"
            ],
            "type": "object"
          }
        },
        "required": [
          "appId",
          "textLocale",
          "manifestHash",
          "head",
          "situation",
          "quickFacts",
          "overview",
          "views",
          "data",
          "setup",
          "versions",
          "ownerRequest",
          "retainedData"
        ],
        "type": "object"
      },
      "StoreFacets": {
        "example": {
          "category": [
            {
              "count": 3,
              "value": "information"
            },
            {
              "count": 2,
              "value": "geschaeft"
            },
            {
              "count": 1,
              "value": "gestaltung"
            },
            {
              "count": 1,
              "value": "zeit"
            }
          ],
          "locales": [
            {
              "count": 7,
              "value": "de-DE"
            }
          ],
          "offer": {
            "bookable": 0,
            "inPackage": 5,
            "requiresPackage": [
              {
                "count": 2,
                "value": "PRO"
              }
            ]
          },
          "state": {
            "installed": 4,
            "noSetup": 5,
            "notInstalled": 3,
            "updatePending": 1
          },
          "vertical": {
            "count": 1,
            "value": "pharmacy"
          }
        },
        "properties": {
          "category": {
            "items": {
              "properties": {
                "count": {
                  "minimum": 0,
                  "type": "integer"
                },
                "value": {
                  "enum": [
                    "zeit",
                    "information",
                    "web-video",
                    "gestaltung",
                    "geschaeft"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "value",
                "count"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "locales": {
            "items": {
              "properties": {
                "count": {
                  "minimum": 0,
                  "type": "integer"
                },
                "value": {
                  "pattern": "^[a-z]{2}-[A-Z]{2}$",
                  "type": "string"
                }
              },
              "required": [
                "value",
                "count"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "offer": {
            "properties": {
              "bookable": {
                "minimum": 0,
                "type": "integer"
              },
              "inPackage": {
                "minimum": 0,
                "type": "integer"
              },
              "requiresPackage": {
                "items": {
                  "properties": {
                    "count": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "value": {
                      "enum": [
                        "START",
                        "PRO",
                        "PREMIUM",
                        "ENTERPRISE"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "value",
                    "count"
                  ],
                  "type": "object"
                },
                "type": "array"
              }
            },
            "required": [
              "inPackage",
              "requiresPackage",
              "bookable"
            ],
            "type": "object"
          },
          "state": {
            "properties": {
              "installed": {
                "minimum": 0,
                "type": "integer"
              },
              "noSetup": {
                "minimum": 0,
                "type": "integer"
              },
              "notInstalled": {
                "minimum": 0,
                "type": "integer"
              },
              "updatePending": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "installed",
              "updatePending",
              "noSetup",
              "notInstalled"
            ],
            "type": "object"
          },
          "vertical": {
            "properties": {
              "count": {
                "minimum": 0,
                "type": "integer"
              },
              "value": {
                "enum": [
                  "pharmacy"
                ],
                "type": "string"
              }
            },
            "required": [
              "value",
              "count"
            ],
            "type": [
              "object",
              "null"
            ]
          }
        },
        "required": [
          "category",
          "offer",
          "state",
          "vertical",
          "locales"
        ],
        "type": "object"
      },
      "StoreMarks": {
        "example": {
          "essential": false,
          "exempt": false,
          "prerelease": "beta",
          "tier": "pro",
          "trial": false
        },
        "properties": {
          "essential": {
            "type": "boolean"
          },
          "exempt": {
            "type": "boolean"
          },
          "prerelease": {
            "enum": [
              "beta",
              "canary"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "tier": {
            "enum": [
              "pro",
              "addon"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "trial": {
            "type": "boolean"
          }
        },
        "required": [
          "tier",
          "trial",
          "prerelease",
          "essential",
          "exempt"
        ],
        "type": "object"
      },
      "StoreOffer": {
        "example": {
          "kind": "included",
          "package": "START"
        },
        "oneOf": [
          {
            "properties": {
              "kind": {
                "enum": [
                  "included"
                ],
                "type": "string"
              },
              "package": {
                "enum": [
                  "START",
                  "PRO",
                  "PREMIUM",
                  "ENTERPRISE"
                ],
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "kind",
              "package"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "requires-package"
                ],
                "type": "string"
              },
              "package": {
                "enum": [
                  "START",
                  "PRO",
                  "PREMIUM",
                  "ENTERPRISE"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind",
              "package"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "bookable"
                ],
                "type": "string"
              },
              "price": {
                "$ref": "#/components/schemas/StorePrice"
              }
            },
            "required": [
              "kind",
              "price"
            ],
            "type": "object"
          },
          {
            "properties": {
              "endsAtPeriodEnd": {
                "type": "boolean"
              },
              "kind": {
                "enum": [
                  "booked"
                ],
                "type": "string"
              },
              "price": {
                "$ref": "#/components/schemas/StorePrice"
              }
            },
            "required": [
              "kind",
              "price",
              "endsAtPeriodEnd"
            ],
            "type": "object"
          },
          {
            "properties": {
              "kind": {
                "enum": [
                  "exempt"
                ],
                "type": "string"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          }
        ]
      },
      "StorePrice": {
        "example": {
          "currency": "EUR",
          "monthlyNetCents": 0,
          "proratedUntil": "2026-01-01T00:00:00.000Z",
          "vatRatePercent": 0
        },
        "properties": {
          "currency": {
            "enum": [
              "EUR"
            ],
            "type": "string"
          },
          "monthlyNetCents": {
            "minimum": 0,
            "type": "integer"
          },
          "proratedUntil": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "vatRatePercent": {
            "maximum": 100,
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "monthlyNetCents",
          "currency",
          "vatRatePercent",
          "proratedUntil"
        ],
        "type": "object"
      },
      "StorePublisher": {
        "example": {
          "name": "sample",
          "verified": false
        },
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "verified": {
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "verified"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "StoreReason": {
        "example": {
          "code": "included",
          "package": "START"
        },
        "oneOf": [
          {
            "properties": {
              "code": {
                "enum": [
                  "included"
                ],
                "type": "string"
              },
              "package": {
                "enum": [
                  "START",
                  "PRO",
                  "PREMIUM",
                  "ENTERPRISE"
                ],
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "code",
              "package"
            ],
            "type": "object"
          },
          {
            "properties": {
              "also": {
                "properties": {
                  "count": {
                    "minimum": 0,
                    "type": "integer"
                  },
                  "names": {
                    "items": {
                      "type": "string"
                    },
                    "maxItems": 3,
                    "type": "array"
                  }
                },
                "required": [
                  "count",
                  "names"
                ],
                "type": "object"
              },
              "code": {
                "enum": [
                  "requires-package"
                ],
                "type": "string"
              },
              "package": {
                "enum": [
                  "START",
                  "PRO",
                  "PREMIUM",
                  "ENTERPRISE"
                ],
                "type": "string"
              }
            },
            "required": [
              "code",
              "package",
              "also"
            ],
            "type": "object"
          },
          {
            "properties": {
              "code": {
                "enum": [
                  "bookable"
                ],
                "type": "string"
              },
              "price": {
                "$ref": "#/components/schemas/StorePrice"
              }
            },
            "required": [
              "code",
              "price"
            ],
            "type": "object"
          },
          {
            "properties": {
              "code": {
                "enum": [
                  "booked"
                ],
                "type": "string"
              },
              "endsAtPeriodEnd": {
                "type": "boolean"
              },
              "periodEnd": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "price": {
                "$ref": "#/components/schemas/StorePrice"
              }
            },
            "required": [
              "code",
              "price",
              "endsAtPeriodEnd",
              "periodEnd"
            ],
            "type": "object"
          },
          {
            "properties": {
              "code": {
                "enum": [
                  "exempt"
                ],
                "type": "string"
              }
            },
            "required": [
              "code"
            ],
            "type": "object"
          },
          {
            "properties": {
              "code": {
                "enum": [
                  "installed"
                ],
                "type": "string"
              },
              "sceneCount": {
                "minimum": 0,
                "type": "integer"
              },
              "setup": {
                "properties": {
                  "done": {
                    "minimum": 0,
                    "type": "integer"
                  },
                  "total": {
                    "exclusiveMinimum": 0,
                    "type": "integer"
                  }
                },
                "required": [
                  "done",
                  "total"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "version": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": "string"
              }
            },
            "required": [
              "code",
              "version",
              "sceneCount",
              "setup"
            ],
            "type": "object"
          },
          {
            "properties": {
              "code": {
                "enum": [
                  "update-waiting"
                ],
                "type": "string"
              },
              "deadline": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "fromVersion": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": "string"
              },
              "reasons": {
                "items": {
                  "enum": [
                    "permissions",
                    "access",
                    "terms",
                    "retirement"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "toVersion": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": "string"
              }
            },
            "required": [
              "code",
              "fromVersion",
              "toVersion",
              "reasons",
              "deadline"
            ],
            "type": "object"
          },
          {
            "properties": {
              "code": {
                "enum": [
                  "package-lost"
                ],
                "type": "string"
              },
              "package": {
                "enum": [
                  "START",
                  "PRO",
                  "PREMIUM",
                  "ENTERPRISE"
                ],
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "code",
              "package"
            ],
            "type": "object"
          },
          {
            "properties": {
              "code": {
                "enum": [
                  "platform-disabled"
                ],
                "type": "string"
              },
              "installed": {
                "type": "boolean"
              }
            },
            "required": [
              "code",
              "installed"
            ],
            "type": "object"
          },
          {
            "properties": {
              "code": {
                "enum": [
                  "retired"
                ],
                "type": "string"
              }
            },
            "required": [
              "code"
            ],
            "type": "object"
          },
          {
            "properties": {
              "code": {
                "enum": [
                  "owner-required"
                ],
                "type": "string"
              }
            },
            "required": [
              "code"
            ],
            "type": "object"
          },
          {
            "properties": {
              "byMe": {
                "type": "boolean"
              },
              "code": {
                "enum": [
                  "install-requested"
                ],
                "type": "string"
              },
              "requestedAt": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "code",
              "requestedAt",
              "byMe"
            ],
            "type": "object"
          },
          {
            "properties": {
              "code": {
                "enum": [
                  "not-permitted"
                ],
                "type": "string"
              }
            },
            "required": [
              "code"
            ],
            "type": "object"
          }
        ]
      },
      "StoreSituation": {
        "example": {
          "action": "install",
          "installed": null,
          "kind": "included",
          "offer": {
            "kind": "included",
            "package": "START"
          },
          "reason": {
            "code": "included",
            "package": "START"
          },
          "state": "not-installed",
          "update": null
        },
        "properties": {
          "action": {
            "enum": [
              "install",
              "book-and-install",
              "view-packages",
              "open-app",
              "view-update",
              "request-install",
              "none"
            ],
            "type": "string"
          },
          "installed": {
            "properties": {
              "releaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "version": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": "string"
              }
            },
            "required": [
              "version",
              "releaseId"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "kind": {
            "enum": [
              "included",
              "requires-package",
              "bookable",
              "booked",
              "exempt",
              "installed",
              "update-pending",
              "locked",
              "disabled"
            ],
            "type": "string"
          },
          "offer": {
            "$ref": "#/components/schemas/StoreOffer"
          },
          "reason": {
            "$ref": "#/components/schemas/StoreReason"
          },
          "state": {
            "enum": [
              "not-installed",
              "installed",
              "update-pending",
              "locked"
            ],
            "type": "string"
          },
          "update": {
            "properties": {
              "deadline": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "reasons": {
                "items": {
                  "enum": [
                    "permissions",
                    "access",
                    "terms",
                    "retirement"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "state": {
                "enum": [
                  "pending",
                  "offer"
                ],
                "type": "string"
              },
              "toVersion": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": "string"
              }
            },
            "required": [
              "state",
              "toVersion",
              "reasons",
              "deadline"
            ],
            "type": [
              "object",
              "null"
            ]
          }
        },
        "required": [
          "kind",
          "action",
          "reason",
          "offer",
          "state",
          "installed",
          "update"
        ],
        "type": "object"
      },
      "StoreSummary": {
        "example": {
          "bookable": 0,
          "inPackage": 5,
          "installed": 4,
          "requiresPackage": [
            {
              "count": 2,
              "value": "PRO"
            }
          ],
          "total": 7,
          "updatedThisWeek": 1,
          "updatesPending": [
            {
              "appId": "pharmacies-on-duty",
              "displayName": "Notdienst"
            }
          ]
        },
        "properties": {
          "bookable": {
            "minimum": 0,
            "type": "integer"
          },
          "inPackage": {
            "minimum": 0,
            "type": "integer"
          },
          "installed": {
            "minimum": 0,
            "type": "integer"
          },
          "requiresPackage": {
            "items": {
              "properties": {
                "count": {
                  "minimum": 0,
                  "type": "integer"
                },
                "value": {
                  "enum": [
                    "START",
                    "PRO",
                    "PREMIUM",
                    "ENTERPRISE"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "value",
                "count"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          },
          "updatedThisWeek": {
            "minimum": 0,
            "type": "integer"
          },
          "updatesPending": {
            "items": {
              "properties": {
                "appId": {
                  "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                  "type": "string"
                },
                "displayName": {
                  "type": "string"
                }
              },
              "required": [
                "appId",
                "displayName"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "total",
          "inPackage",
          "requiresPackage",
          "bookable",
          "installed",
          "updatesPending",
          "updatedThisWeek"
        ],
        "type": "object"
      },
      "SuspendUserRequest": {
        "example": {
          "reason": "Elternzeit — Zugang ruht bis zur Rückkehr."
        },
        "properties": {
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "reason"
        ],
        "type": "object"
      },
      "SuspendUserResponse": {
        "example": {
          "user": {
            "createdAt": "2026-01-19T13:40:00.000Z",
            "deletedAt": null,
            "email": "deniz.acar@demo.local",
            "emailVerifiedAt": "2026-01-19T14:02:00.000Z",
            "hasPassword": true,
            "id": "usr_01KFB7QPW0TEAM000000000002",
            "lastLoginAt": "2026-07-20T08:28:00.000Z",
            "mfaEnabled": true,
            "mfaEnabledAt": "2026-02-02T11:20:00.000Z",
            "profile": {
              "avatarAssetRef": null,
              "displayName": "Deniz Acar",
              "locale": "de-DE",
              "timezone": "Europe/Berlin"
            },
            "roleAssignments": [
              {
                "assignedAt": "2026-01-19T13:41:00.000Z",
                "assignedById": "usr_01KERQ74K0TEAM000000000001",
                "expiresAt": null,
                "roleId": "rol_01KERPYXWRRECHT00000000002"
              }
            ],
            "roleVersion": 2,
            "status": "suspended",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-20T09:15:00.000Z"
          }
        },
        "properties": {
          "user": {
            "properties": {
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "deletedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "email": {
                "format": "email",
                "maxLength": 254,
                "type": "string"
              },
              "emailVerifiedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "hasPassword": {
                "type": "boolean"
              },
              "id": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "lastLoginAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "mfaEnabled": {
                "type": "boolean"
              },
              "mfaEnabledAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "profile": {
                "properties": {
                  "avatarAssetRef": {
                    "properties": {
                      "assetId": {
                        "description": "Datei-Kennung|Kennung der Datei in der Medienbibliothek.",
                        "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "variantSet": {
                        "description": "Fassungen|Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                        "items": {
                          "enum": [
                            "original",
                            "thumbnail",
                            "preview",
                            "webp",
                            "playback"
                          ],
                          "type": "string"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "assetId",
                      "variantSet"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "displayName": {
                    "maxLength": 100,
                    "minLength": 1,
                    "type": "string"
                  },
                  "locale": {
                    "default": "de-DE",
                    "pattern": "^[a-z]{2}(-[A-Z]{2})?$",
                    "type": "string"
                  },
                  "timezone": {
                    "default": "Europe/Berlin",
                    "type": "string"
                  }
                },
                "required": [
                  "displayName",
                  "avatarAssetRef"
                ],
                "type": "object"
              },
              "roleAssignments": {
                "items": {
                  "properties": {
                    "assignedAt": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "assignedById": {
                      "anyOf": [
                        {
                          "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        {
                          "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        {
                          "enum": [
                            "scim-directory"
                          ],
                          "type": "string"
                        },
                        {
                          "enum": [
                            "role-expiry"
                          ],
                          "type": "string"
                        }
                      ]
                    },
                    "expiresAt": {
                      "format": "date-time",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "roleId": {
                      "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    }
                  },
                  "required": [
                    "roleId",
                    "assignedAt",
                    "assignedById",
                    "expiresAt"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "roleVersion": {
                "minimum": 0,
                "type": "integer"
              },
              "status": {
                "enum": [
                  "pending",
                  "active",
                  "suspended",
                  "deleted"
                ],
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "id",
              "tenantId",
              "email",
              "emailVerifiedAt",
              "profile",
              "roleAssignments",
              "roleVersion",
              "status",
              "createdAt",
              "updatedAt",
              "deletedAt",
              "lastLoginAt",
              "mfaEnabledAt",
              "mfaEnabled",
              "hasPassword"
            ],
            "type": "object"
          }
        },
        "required": [
          "user"
        ],
        "type": "object"
      },
      "SyncedFolderPublic": {
        "example": {
          "connectionId": "cconn_01KT3WD680CNNECTMSGRAPH001",
          "createdAt": "2026-07-20T09:30:00.000Z",
          "id": "syf_01KT3WD680SYNCFDR000000001",
          "lastError": null,
          "lastRunAt": "2026-07-29T16:45:00.000Z",
          "remoteFolderId": "01BYE5RZ6QN3ZWBTUFOFD3IFTLFPQBCXYZ",
          "remoteFolderPath": "Schaufenster",
          "status": "active",
          "targetFolderId": "fld_01KJ7MWKW0MAPPE00000000001",
          "updatedAt": "2026-07-29T16:45:00.000Z"
        },
        "properties": {
          "connectionId": {
            "pattern": "^cconn_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "pattern": "^syf_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "lastError": {
            "maxLength": 500,
            "type": [
              "string",
              "null"
            ]
          },
          "lastRunAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "remoteFolderId": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "remoteFolderPath": {
            "maxLength": 1000,
            "minLength": 1,
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "paused"
            ],
            "type": "string"
          },
          "targetFolderId": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "connectionId",
          "remoteFolderId",
          "remoteFolderPath",
          "targetFolderId",
          "status",
          "lastRunAt",
          "lastError",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "TagPlayerResponse": {
        "example": {
          "player": {
            "config": {
              "audioMuted": true,
              "brightness": 100,
              "contentFit": "contain",
              "identifyPulseColor": "#1f6f4a",
              "resolutionMode": "auto",
              "rotation": 0
            },
            "connector": "HDMI-A-1",
            "createdAt": "2026-02-16T11:25:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "decommissionedAt": null,
            "description": "Querformat-Bildschirm im Schaufenster, sichtbar von der Straße.",
            "deviceId": "dev_01KHK32T40GERAET0000000001",
            "deviceKind": "pi",
            "geoLocation": {
              "accuracyM": 28,
              "city": "Hamburg",
              "country": "DE",
              "determinedAt": "2026-07-18T06:12:00.000Z",
              "lat": 53.5511,
              "lng": 9.9937,
              "postalCode": "22765",
              "region": "Hamburg",
              "source": "wifi",
              "street": "Bahnhofstraße 12"
            },
            "host": "szenera-os",
            "id": "ply_01KHK34MQ0SCREEN0000000001",
            "lastHeartbeatAt": "2026-07-20T09:14:32.000Z",
            "lastSnapshotHash": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95",
            "lastTelemetry": {
              "agent": {
                "buildSha": "9f41c0e7b2",
                "renderTokenExpiresAt": "2099-12-31T23:59:59.000Z",
                "version": "1.8.3"
              },
              "apps": [
                {
                  "id": "pharmacies-on-duty",
                  "installedAt": "2026-07-14T04:12:51.000Z",
                  "sizeBytes": 1248576,
                  "version": "1.4.0"
                },
                {
                  "id": "weather",
                  "installedAt": "2026-06-28T03:41:09.000Z",
                  "sizeBytes": 486400,
                  "version": "2.1.3"
                },
                {
                  "id": "opening-hours",
                  "installedAt": "2026-05-02T22:07:33.000Z",
                  "sizeBytes": 312320,
                  "version": "1.0.2"
                }
              ],
              "chromium": {
                "cdpConnected": true,
                "lastFrameAt": "2026-07-20T09:14:32.000Z",
                "memoryMb": 612,
                "state": "rendering"
              },
              "cpuTempC": 57.4,
              "disk": {
                "rootTotal": 15032385536,
                "rootUsed": 6442450944,
                "stateTotal": 120259084288,
                "stateUsed": 15032385536
              },
              "display": {
                "connected": true,
                "connector": "HDMI-A-1",
                "diagonalInch": 42.5,
                "heightPx": 2160,
                "manufacturer": "SAM",
                "model": "QM43R",
                "refreshHz": 60,
                "serial": "0BQH3CKN800142",
                "widthPx": 3840
              },
              "hardware": {
                "coreVolts": 0.9,
                "cpuCores": 4,
                "cpuModel": "Cortex-A76",
                "kernel": "6.12.96+rpt-rpi-2712",
                "model": "Raspberry Pi 5 Model B Rev 1.0",
                "serial": "10000000d4e5f6a7",
                "storageHealthPercent": 98,
                "throttledEver": false,
                "throttledNow": false
              },
              "loadAvg": [
                0.07,
                0.09,
                0.08
              ],
              "mediaCache": {
                "entries": [
                  {
                    "ageSeconds": 7412,
                    "assetId": "ast_01KW95DD30MEDEN00000000001",
                    "mediaKey": "9d4f2b8c1e07a5364bd80f9127ce5a3b6408df215c93ea7b0d6154f8a2b3c70e-webp",
                    "present": true,
                    "sizeBytes": 1884160
                  },
                  {
                    "ageSeconds": 7412,
                    "assetId": "ast_01KXJY2V30MEDEN00000000004",
                    "mediaKey": "8b3c07e2f5914da6c0b78e34215fd9c608a7b3e1420d95f6ca87b0e39d152c4f-webp",
                    "present": true,
                    "sizeBytes": 428241
                  },
                  {
                    "assetId": "ast_01KKEQYSM0MEDEN00000000002",
                    "mediaKey": "41a7c0e93b2d58f6041e7cb85d29a3f70c6b1948de52370af8b6c1d094e2537a-playback",
                    "present": false,
                    "sizeBytes": 262227456
                  }
                ],
                "entryCount": 3,
                "limitBytes": 10737418240,
                "overflowBytes": 0,
                "presentCount": 2,
                "requiredBytes": 264539857,
                "usedBytes": 2312401
              },
              "memory": {
                "freeMb": 6656,
                "total": 8192,
                "used": 1536
              },
              "network": {
                "apiLatencyMs": 76,
                "apiReachable": true,
                "gateway": "192.0.2.1",
                "iface": "wlan0",
                "ip": "192.0.2.24",
                "macAddress": "2c:cf:67:92:fb:76",
                "tailscaleConnected": false,
                "wifiChannel": 36,
                "wifiFrequencyMhz": 5180,
                "wifiSignal": -68,
                "wifiSsid": "Apotheke-Backoffice",
                "wifiTxRateMbps": 433.3
              },
              "rauc": {
                "bootedFromTryboot": false,
                "currentSlot": "A",
                "lastSuccessAt": "2026-07-20T09:14:32.000Z"
              },
              "renderer": {
                "activatedAt": "2026-07-20T08:27:00.000Z",
                "build": "c41e09a7f2b3",
                "capabilities": [
                  "adPods"
                ],
                "failures": 0,
                "linkOnline": false,
                "profile": "modern",
                "releaseSeq": 41,
                "resilience": "fresh",
                "source": "bundle",
                "state": "scene",
                "version": "0.4.12"
              },
              "screens": [
                {
                  "chromium": {
                    "cdpConnected": false,
                    "state": "rendering"
                  },
                  "powerIntent": "on",
                  "powerState": "on",
                  "renderer": {
                    "failures": 0,
                    "linkOnline": false,
                    "resilience": "fresh",
                    "state": "scene"
                  },
                  "screenIndex": 0
                }
              ],
              "snapshot": {
                "lastCheckedAt": "2026-07-20T09:12:04.000Z",
                "lastRefreshAt": "2026-07-20T06:00:12.000Z",
                "manifestHash": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95",
                "stale": false
              },
              "time": {
                "ntpSynchronized": true,
                "offsetMs": 12,
                "timezone": "Europe/Berlin"
              },
              "uptime": 431520
            },
            "locationId": "loc_01KHK4B3T0ADRESSE000000001",
            "name": "Schaufenster Eingang",
            "otaState": {
              "bootDurationMs": 41200,
              "installedVersion": "2026.6.1",
              "lastError": null,
              "lastTransitionAt": "2026-07-16T02:14:38.000Z",
              "phase": "completed",
              "rollbackReason": null,
              "targetVersion": "2026.6.1"
            },
            "screenIndex": 0,
            "status": "online",
            "suspendedAt": null,
            "suspendedReason": null,
            "tagIds": [
              "ptg_01KHK403M0TAG0000000000001"
            ],
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-16T02:14:38.000Z",
            "version": 7
          }
        },
        "properties": {
          "player": {
            "properties": {
              "config": {
                "properties": {
                  "audioMuted": {
                    "type": "boolean"
                  },
                  "brightness": {
                    "maximum": 100,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "contentFit": {
                    "anyOf": [
                      {
                        "enum": [
                          "contain"
                        ],
                        "type": "string"
                      },
                      {
                        "enum": [
                          "cover"
                        ],
                        "type": "string"
                      }
                    ],
                    "default": "contain"
                  },
                  "identifyPulseColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  },
                  "resolutionMode": {
                    "anyOf": [
                      {
                        "enum": [
                          "auto"
                        ],
                        "type": "string"
                      },
                      {
                        "properties": {
                          "height": {
                            "maximum": 4320,
                            "minimum": 1,
                            "type": "integer"
                          },
                          "width": {
                            "maximum": 7680,
                            "minimum": 1,
                            "type": "integer"
                          }
                        },
                        "required": [
                          "width",
                          "height"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "rotation": {
                    "anyOf": [
                      {
                        "enum": [
                          0
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          90
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          180
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          270
                        ],
                        "type": "number"
                      }
                    ]
                  }
                },
                "required": [
                  "audioMuted",
                  "brightness",
                  "rotation",
                  "resolutionMode",
                  "identifyPulseColor"
                ],
                "type": "object"
              },
              "connector": {
                "maxLength": 32,
                "minLength": 1,
                "type": [
                  "string",
                  "null"
                ]
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "createdById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "decommissionedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "description": {
                "maxLength": 500,
                "type": "string"
              },
              "deviceId": {
                "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "deviceKind": {
                "enum": [
                  "pi",
                  "browser"
                ],
                "type": "string"
              },
              "geoLocation": {
                "properties": {
                  "accuracyM": {
                    "minimum": 0,
                    "type": "number"
                  },
                  "city": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "country": {
                    "maxLength": 2,
                    "minLength": 2,
                    "type": "string"
                  },
                  "determinedAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "lat": {
                    "maximum": 90,
                    "minimum": -90,
                    "type": "number"
                  },
                  "lng": {
                    "maximum": 180,
                    "minimum": -180,
                    "type": "number"
                  },
                  "postalCode": {
                    "maxLength": 20,
                    "type": "string"
                  },
                  "region": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "source": {
                    "enum": [
                      "wifi",
                      "ip",
                      "manual"
                    ],
                    "type": "string"
                  },
                  "street": {
                    "maxLength": 200,
                    "type": "string"
                  }
                },
                "required": [
                  "lat",
                  "lng",
                  "accuracyM",
                  "source",
                  "determinedAt"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "host": {
                "enum": [
                  "szenera-os",
                  "fire-tv",
                  "tizen",
                  "webos",
                  "web-display"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "lastHeartbeatAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastSnapshotHash": {
                "maxLength": 128,
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastTelemetry": {
                "properties": {
                  "agent": {
                    "properties": {
                      "buildSha": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "renderTokenExpiresAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "version": {
                        "maxLength": 100,
                        "type": "string"
                      }
                    },
                    "required": [
                      "version"
                    ],
                    "type": "object"
                  },
                  "appFailures": {
                    "items": {
                      "properties": {
                        "id": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "reason": {
                          "enum": [
                            "missing",
                            "rejected",
                            "failed"
                          ],
                          "type": "string"
                        },
                        "since": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "version": {
                          "maxLength": 64,
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "version",
                        "reason",
                        "since"
                      ],
                      "type": "object"
                    },
                    "maxItems": 20,
                    "type": "array"
                  },
                  "apps": {
                    "items": {
                      "properties": {
                        "id": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "installedAt": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "sizeBytes": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "version": {
                          "maxLength": 64,
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "version"
                      ],
                      "type": "object"
                    },
                    "maxItems": 50,
                    "type": "array"
                  },
                  "chromium": {
                    "properties": {
                      "cdpConnected": {
                        "type": "boolean"
                      },
                      "lastFrameAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "memoryMb": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "state": {
                        "enum": [
                          "rendering",
                          "pairing",
                          "hung",
                          "starting",
                          "stopped",
                          "unplugged"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "state"
                    ],
                    "type": "object"
                  },
                  "cpuTempC": {
                    "type": "number"
                  },
                  "disk": {
                    "properties": {
                      "rootTotal": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "rootUsed": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "stateTotal": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "stateUsed": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "rootUsed",
                      "rootTotal",
                      "stateUsed",
                      "stateTotal"
                    ],
                    "type": "object"
                  },
                  "display": {
                    "properties": {
                      "connected": {
                        "type": "boolean"
                      },
                      "connector": {
                        "maxLength": 30,
                        "type": "string"
                      },
                      "diagonalInch": {
                        "type": "number"
                      },
                      "heightPx": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "manufacturer": {
                        "maxLength": 60,
                        "type": "string"
                      },
                      "model": {
                        "maxLength": 60,
                        "type": "string"
                      },
                      "refreshHz": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "serial": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "widthPx": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "hardware": {
                    "properties": {
                      "coreVolts": {
                        "type": "number"
                      },
                      "cpuCores": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "cpuModel": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "kernel": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "model": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "serial": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "storageHealthPercent": {
                        "maximum": 100,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "throttledEver": {
                        "type": "boolean"
                      },
                      "throttledNow": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "loadAvg": {
                    "items": {
                      "minimum": 0,
                      "type": "number"
                    },
                    "maxItems": 3,
                    "type": "array"
                  },
                  "mediaCache": {
                    "properties": {
                      "entries": {
                        "items": {
                          "properties": {
                            "ageSeconds": {
                              "minimum": 0,
                              "type": "integer"
                            },
                            "assetId": {
                              "maxLength": 30,
                              "type": "string"
                            },
                            "mediaKey": {
                              "maxLength": 128,
                              "minLength": 1,
                              "type": "string"
                            },
                            "present": {
                              "type": "boolean"
                            },
                            "sizeBytes": {
                              "minimum": 0,
                              "type": "integer"
                            }
                          },
                          "required": [
                            "mediaKey",
                            "present"
                          ],
                          "type": "object"
                        },
                        "maxItems": 200,
                        "type": "array"
                      },
                      "entryCount": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "limitBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "overflowBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "presentCount": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "requiredBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "usedBytes": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "limitBytes",
                      "usedBytes",
                      "requiredBytes",
                      "overflowBytes",
                      "entryCount",
                      "presentCount"
                    ],
                    "type": "object"
                  },
                  "memory": {
                    "properties": {
                      "freeMb": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "total": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "used": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "total",
                      "used",
                      "freeMb"
                    ],
                    "type": "object"
                  },
                  "network": {
                    "properties": {
                      "apiLatencyMs": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "apiReachable": {
                        "type": "boolean"
                      },
                      "gateway": {
                        "maxLength": 45,
                        "type": "string"
                      },
                      "iface": {
                        "maxLength": 20,
                        "type": "string"
                      },
                      "ip": {
                        "maxLength": 45,
                        "type": "string"
                      },
                      "macAddress": {
                        "maxLength": 17,
                        "type": "string"
                      },
                      "tailscaleConnected": {
                        "type": "boolean"
                      },
                      "wifiChannel": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "wifiFrequencyMhz": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "wifiSignal": {
                        "type": "integer"
                      },
                      "wifiSsid": {
                        "maxLength": 100,
                        "type": "string"
                      },
                      "wifiTxRateMbps": {
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "type": "object"
                  },
                  "rauc": {
                    "properties": {
                      "bootedFromTryboot": {
                        "type": "boolean"
                      },
                      "currentSlot": {
                        "maxLength": 50,
                        "type": "string"
                      },
                      "lastSuccessAt": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "required": [
                      "currentSlot",
                      "bootedFromTryboot"
                    ],
                    "type": "object"
                  },
                  "renderer": {
                    "properties": {
                      "activatedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "build": {
                        "pattern": "^[0-9a-f]{12}$",
                        "type": "string"
                      },
                      "capabilities": {
                        "items": {
                          "maxLength": 32,
                          "minLength": 1,
                          "type": "string"
                        },
                        "maxItems": 32,
                        "type": "array"
                      },
                      "failures": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "linkOnline": {
                        "type": "boolean"
                      },
                      "profile": {
                        "enum": [
                          "modern",
                          "legacy"
                        ],
                        "type": "string"
                      },
                      "releaseSeq": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "resilience": {
                        "enum": [
                          "fresh",
                          "stale-but-served",
                          "last-known-good",
                          "loading",
                          "error"
                        ],
                        "type": "string"
                      },
                      "source": {
                        "enum": [
                          "bundle",
                          "hosted"
                        ],
                        "type": "string"
                      },
                      "state": {
                        "enum": [
                          "scene",
                          "pairing",
                          "unassigned",
                          "loading",
                          "error",
                          "disconnected"
                        ],
                        "type": "string"
                      },
                      "version": {
                        "maxLength": 40,
                        "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "state"
                    ],
                    "type": "object"
                  },
                  "screens": {
                    "items": {
                      "properties": {
                        "chromium": {
                          "properties": {
                            "cdpConnected": {
                              "type": "boolean"
                            },
                            "state": {
                              "enum": [
                                "rendering",
                                "pairing",
                                "hung",
                                "starting",
                                "stopped",
                                "unplugged"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "state"
                          ],
                          "type": "object"
                        },
                        "powerIntent": {
                          "enum": [
                            "on",
                            "standby"
                          ],
                          "type": "string"
                        },
                        "powerState": {
                          "enum": [
                            "on",
                            "standby",
                            "unknown"
                          ],
                          "type": "string"
                        },
                        "renderer": {
                          "properties": {
                            "failures": {
                              "minimum": 0,
                              "type": "integer"
                            },
                            "linkOnline": {
                              "type": "boolean"
                            },
                            "resilience": {
                              "enum": [
                                "fresh",
                                "stale-but-served",
                                "last-known-good",
                                "loading",
                                "error"
                              ],
                              "type": "string"
                            },
                            "state": {
                              "enum": [
                                "scene",
                                "pairing",
                                "unassigned",
                                "loading",
                                "error",
                                "disconnected"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "state"
                          ],
                          "type": "object"
                        },
                        "screenIndex": {
                          "maximum": 7,
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "screenIndex"
                      ],
                      "type": "object"
                    },
                    "maxItems": 8,
                    "type": "array"
                  },
                  "snapshot": {
                    "properties": {
                      "lastCheckedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "lastRefreshAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "manifestHash": {
                        "maxLength": 128,
                        "type": "string"
                      },
                      "stale": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "manifestHash",
                      "stale",
                      "lastRefreshAt"
                    ],
                    "type": "object"
                  },
                  "time": {
                    "properties": {
                      "ntpSynchronized": {
                        "type": "boolean"
                      },
                      "offsetMs": {
                        "type": "integer"
                      },
                      "timezone": {
                        "maxLength": 60,
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uptime": {
                    "minimum": 0,
                    "type": "integer"
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "locationId": {
                "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "otaState": {
                "properties": {
                  "bootDurationMs": {
                    "minimum": 0,
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "installedVersion": {
                    "maxLength": 100,
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "lastError": {
                    "properties": {
                      "at": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "code": {
                        "maxLength": 100,
                        "type": "string"
                      },
                      "message": {
                        "maxLength": 500,
                        "type": "string"
                      }
                    },
                    "required": [
                      "code",
                      "message",
                      "at"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "lastTransitionAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "phase": {
                    "enum": [
                      "idle",
                      "downloading",
                      "installing",
                      "tryboot-waiting",
                      "completed",
                      "rolled-back",
                      "failed"
                    ],
                    "type": "string"
                  },
                  "rollbackReason": {
                    "maxLength": 500,
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "targetVersion": {
                    "maxLength": 100,
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "phase",
                  "targetVersion",
                  "installedVersion",
                  "lastTransitionAt",
                  "lastError",
                  "bootDurationMs",
                  "rollbackReason"
                ],
                "type": "object"
              },
              "screenIndex": {
                "maximum": 7,
                "minimum": 0,
                "type": "integer"
              },
              "status": {
                "enum": [
                  "online",
                  "stale",
                  "offline",
                  "paired-not-claimed",
                  "suspended",
                  "decommissioned"
                ],
                "type": "string"
              },
              "suspendedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "suspendedReason": {
                "enum": [
                  "tenant",
                  "quota"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "tagIds": {
                "items": {
                  "pattern": "^ptg_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "maxItems": 50,
                "type": "array"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "version": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "id",
              "tenantId",
              "deviceId",
              "connector",
              "screenIndex",
              "name",
              "description",
              "tagIds",
              "locationId",
              "config",
              "status",
              "suspendedReason",
              "lastHeartbeatAt",
              "createdById",
              "createdAt",
              "updatedAt",
              "decommissionedAt",
              "version",
              "geoLocation",
              "lastSnapshotHash",
              "lastTelemetry",
              "otaState"
            ],
            "type": "object"
          }
        },
        "required": [
          "player"
        ],
        "type": "object"
      },
      "TaxOutcome": {
        "example": {
          "category": "S",
          "exemptionCode": null,
          "hintKey": null,
          "ratePercent": 19,
          "requiresRecipientVatId": false,
          "ruleId": "de-domestic"
        },
        "properties": {
          "category": {
            "enum": [
              "S",
              "AE",
              "K",
              "G",
              "E",
              "O"
            ],
            "type": "string"
          },
          "exemptionCode": {
            "maxLength": 20,
            "type": [
              "string",
              "null"
            ]
          },
          "hintKey": {
            "enum": [
              "reverse-charge",
              "not-taxable-third-country",
              "issuer-exempt"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "ratePercent": {
            "maximum": 100,
            "minimum": 0,
            "type": "number"
          },
          "requiresRecipientVatId": {
            "type": "boolean"
          },
          "ruleId": {
            "enum": [
              "de-domestic",
              "eu-b2b-reverse",
              "third-country",
              "issuer-exempt"
            ],
            "type": "string"
          }
        },
        "required": [
          "ratePercent",
          "category",
          "exemptionCode",
          "hintKey",
          "ruleId",
          "requiresRecipientVatId"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "UninstallAppRequest": {
        "example": {
          "confirm": true
        },
        "properties": {
          "confirm": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "confirm"
        ],
        "type": "object"
      },
      "UninstallAppResponse": {
        "example": {
          "grant": {
            "acceptedAt": "2026-06-22T15:30:00.000Z",
            "acceptedById": "usr_01KERQ74K0TEAM000000000001",
            "acceptedManifestHash": "f6967ce34eabbf376e63eecee878f41f04d91dbd1632b2acc5d098e446047dbd",
            "appId": "weather",
            "declinedAt": null,
            "declinedReleaseId": null,
            "declinedVersion": null,
            "id": "tag_01KT3RZAM0GRANT00000000001",
            "installedAt": "2026-06-22T15:30:00.000Z",
            "installedById": "usr_01KERQ74K0TEAM000000000001",
            "installedReleaseId": "arl_01KWC2Z5W0AVERSN0000000001",
            "installedVersion": "1.4.2",
            "pendingDeadline": null,
            "pendingManifestHash": null,
            "pendingReasons": [],
            "pendingReleaseId": null,
            "status": "uninstalled",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "uninstalledAt": "2026-07-20T09:12:00.000Z",
            "uninstalledById": "usr_01KERQ74K0TEAM000000000001"
          }
        },
        "properties": {
          "grant": {
            "properties": {
              "acceptedAt": {
                "format": "date-time",
                "type": "string"
              },
              "acceptedById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "acceptedManifestHash": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              },
              "appId": {
                "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                "type": "string"
              },
              "declinedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "declinedReleaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "declinedVersion": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^tag_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "installedAt": {
                "format": "date-time",
                "type": "string"
              },
              "installedById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "installedReleaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "installedVersion": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": "string"
              },
              "pendingDeadline": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingManifestHash": {
                "pattern": "^[a-f0-9]{64}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingReasons": {
                "items": {
                  "enum": [
                    "permissions",
                    "access",
                    "terms",
                    "retirement"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "pendingReleaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "enum": [
                  "active",
                  "pending-reacceptance",
                  "uninstalled"
                ],
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "uninstalledAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "uninstalledById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "tenantId",
              "appId",
              "installedVersion",
              "installedReleaseId",
              "installedAt",
              "installedById",
              "acceptedManifestHash",
              "acceptedAt",
              "acceptedById",
              "status",
              "pendingManifestHash",
              "pendingReleaseId",
              "pendingReasons",
              "pendingDeadline",
              "declinedReleaseId",
              "declinedVersion",
              "declinedAt",
              "uninstalledAt",
              "uninstalledById"
            ],
            "type": "object"
          }
        },
        "required": [
          "grant"
        ],
        "type": "object"
      },
      "UnreadCountResponse": {
        "example": {
          "count": 0
        },
        "properties": {
          "count": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "count"
        ],
        "type": "object"
      },
      "UntagPlayerResponse": {
        "example": {
          "player": {
            "config": {
              "audioMuted": true,
              "brightness": 100,
              "contentFit": "contain",
              "identifyPulseColor": "#1f6f4a",
              "resolutionMode": "auto",
              "rotation": 0
            },
            "connector": "HDMI-A-1",
            "createdAt": "2026-02-16T11:25:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "decommissionedAt": null,
            "description": "Querformat-Bildschirm im Schaufenster, sichtbar von der Straße.",
            "deviceId": "dev_01KHK32T40GERAET0000000001",
            "deviceKind": "pi",
            "geoLocation": {
              "accuracyM": 28,
              "city": "Hamburg",
              "country": "DE",
              "determinedAt": "2026-07-18T06:12:00.000Z",
              "lat": 53.5511,
              "lng": 9.9937,
              "postalCode": "22765",
              "region": "Hamburg",
              "source": "wifi",
              "street": "Bahnhofstraße 12"
            },
            "host": "szenera-os",
            "id": "ply_01KHK34MQ0SCREEN0000000001",
            "lastHeartbeatAt": "2026-07-20T09:14:32.000Z",
            "lastSnapshotHash": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95",
            "lastTelemetry": {
              "agent": {
                "buildSha": "9f41c0e7b2",
                "renderTokenExpiresAt": "2099-12-31T23:59:59.000Z",
                "version": "1.8.3"
              },
              "apps": [
                {
                  "id": "pharmacies-on-duty",
                  "installedAt": "2026-07-14T04:12:51.000Z",
                  "sizeBytes": 1248576,
                  "version": "1.4.0"
                },
                {
                  "id": "weather",
                  "installedAt": "2026-06-28T03:41:09.000Z",
                  "sizeBytes": 486400,
                  "version": "2.1.3"
                },
                {
                  "id": "opening-hours",
                  "installedAt": "2026-05-02T22:07:33.000Z",
                  "sizeBytes": 312320,
                  "version": "1.0.2"
                }
              ],
              "chromium": {
                "cdpConnected": true,
                "lastFrameAt": "2026-07-20T09:14:32.000Z",
                "memoryMb": 612,
                "state": "rendering"
              },
              "cpuTempC": 57.4,
              "disk": {
                "rootTotal": 15032385536,
                "rootUsed": 6442450944,
                "stateTotal": 120259084288,
                "stateUsed": 15032385536
              },
              "display": {
                "connected": true,
                "connector": "HDMI-A-1",
                "diagonalInch": 42.5,
                "heightPx": 2160,
                "manufacturer": "SAM",
                "model": "QM43R",
                "refreshHz": 60,
                "serial": "0BQH3CKN800142",
                "widthPx": 3840
              },
              "hardware": {
                "coreVolts": 0.9,
                "cpuCores": 4,
                "cpuModel": "Cortex-A76",
                "kernel": "6.12.96+rpt-rpi-2712",
                "model": "Raspberry Pi 5 Model B Rev 1.0",
                "serial": "10000000d4e5f6a7",
                "storageHealthPercent": 98,
                "throttledEver": false,
                "throttledNow": false
              },
              "loadAvg": [
                0.07,
                0.09,
                0.08
              ],
              "mediaCache": {
                "entries": [
                  {
                    "ageSeconds": 7412,
                    "assetId": "ast_01KW95DD30MEDEN00000000001",
                    "mediaKey": "9d4f2b8c1e07a5364bd80f9127ce5a3b6408df215c93ea7b0d6154f8a2b3c70e-webp",
                    "present": true,
                    "sizeBytes": 1884160
                  },
                  {
                    "ageSeconds": 7412,
                    "assetId": "ast_01KXJY2V30MEDEN00000000004",
                    "mediaKey": "8b3c07e2f5914da6c0b78e34215fd9c608a7b3e1420d95f6ca87b0e39d152c4f-webp",
                    "present": true,
                    "sizeBytes": 428241
                  },
                  {
                    "assetId": "ast_01KKEQYSM0MEDEN00000000002",
                    "mediaKey": "41a7c0e93b2d58f6041e7cb85d29a3f70c6b1948de52370af8b6c1d094e2537a-playback",
                    "present": false,
                    "sizeBytes": 262227456
                  }
                ],
                "entryCount": 3,
                "limitBytes": 10737418240,
                "overflowBytes": 0,
                "presentCount": 2,
                "requiredBytes": 264539857,
                "usedBytes": 2312401
              },
              "memory": {
                "freeMb": 6656,
                "total": 8192,
                "used": 1536
              },
              "network": {
                "apiLatencyMs": 76,
                "apiReachable": true,
                "gateway": "192.0.2.1",
                "iface": "wlan0",
                "ip": "192.0.2.24",
                "macAddress": "2c:cf:67:92:fb:76",
                "tailscaleConnected": false,
                "wifiChannel": 36,
                "wifiFrequencyMhz": 5180,
                "wifiSignal": -68,
                "wifiSsid": "Apotheke-Backoffice",
                "wifiTxRateMbps": 433.3
              },
              "rauc": {
                "bootedFromTryboot": false,
                "currentSlot": "A",
                "lastSuccessAt": "2026-07-20T09:14:32.000Z"
              },
              "renderer": {
                "activatedAt": "2026-07-20T08:27:00.000Z",
                "build": "c41e09a7f2b3",
                "capabilities": [
                  "adPods"
                ],
                "failures": 0,
                "linkOnline": false,
                "profile": "modern",
                "releaseSeq": 41,
                "resilience": "fresh",
                "source": "bundle",
                "state": "scene",
                "version": "0.4.12"
              },
              "screens": [
                {
                  "chromium": {
                    "cdpConnected": false,
                    "state": "rendering"
                  },
                  "powerIntent": "on",
                  "powerState": "on",
                  "renderer": {
                    "failures": 0,
                    "linkOnline": false,
                    "resilience": "fresh",
                    "state": "scene"
                  },
                  "screenIndex": 0
                }
              ],
              "snapshot": {
                "lastCheckedAt": "2026-07-20T09:12:04.000Z",
                "lastRefreshAt": "2026-07-20T06:00:12.000Z",
                "manifestHash": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95",
                "stale": false
              },
              "time": {
                "ntpSynchronized": true,
                "offsetMs": 12,
                "timezone": "Europe/Berlin"
              },
              "uptime": 431520
            },
            "locationId": "loc_01KHK4B3T0ADRESSE000000001",
            "name": "Schaufenster Eingang",
            "otaState": {
              "bootDurationMs": 41200,
              "installedVersion": "2026.6.1",
              "lastError": null,
              "lastTransitionAt": "2026-07-16T02:14:38.000Z",
              "phase": "completed",
              "rollbackReason": null,
              "targetVersion": "2026.6.1"
            },
            "screenIndex": 0,
            "status": "online",
            "suspendedAt": null,
            "suspendedReason": null,
            "tagIds": [],
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-20T09:15:00.000Z",
            "version": 8
          }
        },
        "properties": {
          "player": {
            "properties": {
              "config": {
                "properties": {
                  "audioMuted": {
                    "type": "boolean"
                  },
                  "brightness": {
                    "maximum": 100,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "contentFit": {
                    "anyOf": [
                      {
                        "enum": [
                          "contain"
                        ],
                        "type": "string"
                      },
                      {
                        "enum": [
                          "cover"
                        ],
                        "type": "string"
                      }
                    ],
                    "default": "contain"
                  },
                  "identifyPulseColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  },
                  "resolutionMode": {
                    "anyOf": [
                      {
                        "enum": [
                          "auto"
                        ],
                        "type": "string"
                      },
                      {
                        "properties": {
                          "height": {
                            "maximum": 4320,
                            "minimum": 1,
                            "type": "integer"
                          },
                          "width": {
                            "maximum": 7680,
                            "minimum": 1,
                            "type": "integer"
                          }
                        },
                        "required": [
                          "width",
                          "height"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "rotation": {
                    "anyOf": [
                      {
                        "enum": [
                          0
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          90
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          180
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          270
                        ],
                        "type": "number"
                      }
                    ]
                  }
                },
                "required": [
                  "audioMuted",
                  "brightness",
                  "rotation",
                  "resolutionMode",
                  "identifyPulseColor"
                ],
                "type": "object"
              },
              "connector": {
                "maxLength": 32,
                "minLength": 1,
                "type": [
                  "string",
                  "null"
                ]
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "createdById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "decommissionedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "description": {
                "maxLength": 500,
                "type": "string"
              },
              "deviceId": {
                "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "deviceKind": {
                "enum": [
                  "pi",
                  "browser"
                ],
                "type": "string"
              },
              "geoLocation": {
                "properties": {
                  "accuracyM": {
                    "minimum": 0,
                    "type": "number"
                  },
                  "city": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "country": {
                    "maxLength": 2,
                    "minLength": 2,
                    "type": "string"
                  },
                  "determinedAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "lat": {
                    "maximum": 90,
                    "minimum": -90,
                    "type": "number"
                  },
                  "lng": {
                    "maximum": 180,
                    "minimum": -180,
                    "type": "number"
                  },
                  "postalCode": {
                    "maxLength": 20,
                    "type": "string"
                  },
                  "region": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "source": {
                    "enum": [
                      "wifi",
                      "ip",
                      "manual"
                    ],
                    "type": "string"
                  },
                  "street": {
                    "maxLength": 200,
                    "type": "string"
                  }
                },
                "required": [
                  "lat",
                  "lng",
                  "accuracyM",
                  "source",
                  "determinedAt"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "host": {
                "enum": [
                  "szenera-os",
                  "fire-tv",
                  "tizen",
                  "webos",
                  "web-display"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "lastHeartbeatAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastSnapshotHash": {
                "maxLength": 128,
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastTelemetry": {
                "properties": {
                  "agent": {
                    "properties": {
                      "buildSha": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "renderTokenExpiresAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "version": {
                        "maxLength": 100,
                        "type": "string"
                      }
                    },
                    "required": [
                      "version"
                    ],
                    "type": "object"
                  },
                  "appFailures": {
                    "items": {
                      "properties": {
                        "id": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "reason": {
                          "enum": [
                            "missing",
                            "rejected",
                            "failed"
                          ],
                          "type": "string"
                        },
                        "since": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "version": {
                          "maxLength": 64,
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "version",
                        "reason",
                        "since"
                      ],
                      "type": "object"
                    },
                    "maxItems": 20,
                    "type": "array"
                  },
                  "apps": {
                    "items": {
                      "properties": {
                        "id": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "installedAt": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "sizeBytes": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "version": {
                          "maxLength": 64,
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "version"
                      ],
                      "type": "object"
                    },
                    "maxItems": 50,
                    "type": "array"
                  },
                  "chromium": {
                    "properties": {
                      "cdpConnected": {
                        "type": "boolean"
                      },
                      "lastFrameAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "memoryMb": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "state": {
                        "enum": [
                          "rendering",
                          "pairing",
                          "hung",
                          "starting",
                          "stopped",
                          "unplugged"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "state"
                    ],
                    "type": "object"
                  },
                  "cpuTempC": {
                    "type": "number"
                  },
                  "disk": {
                    "properties": {
                      "rootTotal": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "rootUsed": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "stateTotal": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "stateUsed": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "rootUsed",
                      "rootTotal",
                      "stateUsed",
                      "stateTotal"
                    ],
                    "type": "object"
                  },
                  "display": {
                    "properties": {
                      "connected": {
                        "type": "boolean"
                      },
                      "connector": {
                        "maxLength": 30,
                        "type": "string"
                      },
                      "diagonalInch": {
                        "type": "number"
                      },
                      "heightPx": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "manufacturer": {
                        "maxLength": 60,
                        "type": "string"
                      },
                      "model": {
                        "maxLength": 60,
                        "type": "string"
                      },
                      "refreshHz": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "serial": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "widthPx": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "hardware": {
                    "properties": {
                      "coreVolts": {
                        "type": "number"
                      },
                      "cpuCores": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "cpuModel": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "kernel": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "model": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "serial": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "storageHealthPercent": {
                        "maximum": 100,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "throttledEver": {
                        "type": "boolean"
                      },
                      "throttledNow": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "loadAvg": {
                    "items": {
                      "minimum": 0,
                      "type": "number"
                    },
                    "maxItems": 3,
                    "type": "array"
                  },
                  "mediaCache": {
                    "properties": {
                      "entries": {
                        "items": {
                          "properties": {
                            "ageSeconds": {
                              "minimum": 0,
                              "type": "integer"
                            },
                            "assetId": {
                              "maxLength": 30,
                              "type": "string"
                            },
                            "mediaKey": {
                              "maxLength": 128,
                              "minLength": 1,
                              "type": "string"
                            },
                            "present": {
                              "type": "boolean"
                            },
                            "sizeBytes": {
                              "minimum": 0,
                              "type": "integer"
                            }
                          },
                          "required": [
                            "mediaKey",
                            "present"
                          ],
                          "type": "object"
                        },
                        "maxItems": 200,
                        "type": "array"
                      },
                      "entryCount": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "limitBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "overflowBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "presentCount": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "requiredBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "usedBytes": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "limitBytes",
                      "usedBytes",
                      "requiredBytes",
                      "overflowBytes",
                      "entryCount",
                      "presentCount"
                    ],
                    "type": "object"
                  },
                  "memory": {
                    "properties": {
                      "freeMb": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "total": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "used": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "total",
                      "used",
                      "freeMb"
                    ],
                    "type": "object"
                  },
                  "network": {
                    "properties": {
                      "apiLatencyMs": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "apiReachable": {
                        "type": "boolean"
                      },
                      "gateway": {
                        "maxLength": 45,
                        "type": "string"
                      },
                      "iface": {
                        "maxLength": 20,
                        "type": "string"
                      },
                      "ip": {
                        "maxLength": 45,
                        "type": "string"
                      },
                      "macAddress": {
                        "maxLength": 17,
                        "type": "string"
                      },
                      "tailscaleConnected": {
                        "type": "boolean"
                      },
                      "wifiChannel": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "wifiFrequencyMhz": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "wifiSignal": {
                        "type": "integer"
                      },
                      "wifiSsid": {
                        "maxLength": 100,
                        "type": "string"
                      },
                      "wifiTxRateMbps": {
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "type": "object"
                  },
                  "rauc": {
                    "properties": {
                      "bootedFromTryboot": {
                        "type": "boolean"
                      },
                      "currentSlot": {
                        "maxLength": 50,
                        "type": "string"
                      },
                      "lastSuccessAt": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "required": [
                      "currentSlot",
                      "bootedFromTryboot"
                    ],
                    "type": "object"
                  },
                  "renderer": {
                    "properties": {
                      "activatedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "build": {
                        "pattern": "^[0-9a-f]{12}$",
                        "type": "string"
                      },
                      "capabilities": {
                        "items": {
                          "maxLength": 32,
                          "minLength": 1,
                          "type": "string"
                        },
                        "maxItems": 32,
                        "type": "array"
                      },
                      "failures": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "linkOnline": {
                        "type": "boolean"
                      },
                      "profile": {
                        "enum": [
                          "modern",
                          "legacy"
                        ],
                        "type": "string"
                      },
                      "releaseSeq": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "resilience": {
                        "enum": [
                          "fresh",
                          "stale-but-served",
                          "last-known-good",
                          "loading",
                          "error"
                        ],
                        "type": "string"
                      },
                      "source": {
                        "enum": [
                          "bundle",
                          "hosted"
                        ],
                        "type": "string"
                      },
                      "state": {
                        "enum": [
                          "scene",
                          "pairing",
                          "unassigned",
                          "loading",
                          "error",
                          "disconnected"
                        ],
                        "type": "string"
                      },
                      "version": {
                        "maxLength": 40,
                        "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "state"
                    ],
                    "type": "object"
                  },
                  "screens": {
                    "items": {
                      "properties": {
                        "chromium": {
                          "properties": {
                            "cdpConnected": {
                              "type": "boolean"
                            },
                            "state": {
                              "enum": [
                                "rendering",
                                "pairing",
                                "hung",
                                "starting",
                                "stopped",
                                "unplugged"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "state"
                          ],
                          "type": "object"
                        },
                        "powerIntent": {
                          "enum": [
                            "on",
                            "standby"
                          ],
                          "type": "string"
                        },
                        "powerState": {
                          "enum": [
                            "on",
                            "standby",
                            "unknown"
                          ],
                          "type": "string"
                        },
                        "renderer": {
                          "properties": {
                            "failures": {
                              "minimum": 0,
                              "type": "integer"
                            },
                            "linkOnline": {
                              "type": "boolean"
                            },
                            "resilience": {
                              "enum": [
                                "fresh",
                                "stale-but-served",
                                "last-known-good",
                                "loading",
                                "error"
                              ],
                              "type": "string"
                            },
                            "state": {
                              "enum": [
                                "scene",
                                "pairing",
                                "unassigned",
                                "loading",
                                "error",
                                "disconnected"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "state"
                          ],
                          "type": "object"
                        },
                        "screenIndex": {
                          "maximum": 7,
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "screenIndex"
                      ],
                      "type": "object"
                    },
                    "maxItems": 8,
                    "type": "array"
                  },
                  "snapshot": {
                    "properties": {
                      "lastCheckedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "lastRefreshAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "manifestHash": {
                        "maxLength": 128,
                        "type": "string"
                      },
                      "stale": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "manifestHash",
                      "stale",
                      "lastRefreshAt"
                    ],
                    "type": "object"
                  },
                  "time": {
                    "properties": {
                      "ntpSynchronized": {
                        "type": "boolean"
                      },
                      "offsetMs": {
                        "type": "integer"
                      },
                      "timezone": {
                        "maxLength": 60,
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uptime": {
                    "minimum": 0,
                    "type": "integer"
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "locationId": {
                "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "otaState": {
                "properties": {
                  "bootDurationMs": {
                    "minimum": 0,
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "installedVersion": {
                    "maxLength": 100,
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "lastError": {
                    "properties": {
                      "at": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "code": {
                        "maxLength": 100,
                        "type": "string"
                      },
                      "message": {
                        "maxLength": 500,
                        "type": "string"
                      }
                    },
                    "required": [
                      "code",
                      "message",
                      "at"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "lastTransitionAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "phase": {
                    "enum": [
                      "idle",
                      "downloading",
                      "installing",
                      "tryboot-waiting",
                      "completed",
                      "rolled-back",
                      "failed"
                    ],
                    "type": "string"
                  },
                  "rollbackReason": {
                    "maxLength": 500,
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "targetVersion": {
                    "maxLength": 100,
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "phase",
                  "targetVersion",
                  "installedVersion",
                  "lastTransitionAt",
                  "lastError",
                  "bootDurationMs",
                  "rollbackReason"
                ],
                "type": "object"
              },
              "screenIndex": {
                "maximum": 7,
                "minimum": 0,
                "type": "integer"
              },
              "status": {
                "enum": [
                  "online",
                  "stale",
                  "offline",
                  "paired-not-claimed",
                  "suspended",
                  "decommissioned"
                ],
                "type": "string"
              },
              "suspendedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "suspendedReason": {
                "enum": [
                  "tenant",
                  "quota"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "tagIds": {
                "items": {
                  "pattern": "^ptg_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "maxItems": 50,
                "type": "array"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "version": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "id",
              "tenantId",
              "deviceId",
              "connector",
              "screenIndex",
              "name",
              "description",
              "tagIds",
              "locationId",
              "config",
              "status",
              "suspendedReason",
              "lastHeartbeatAt",
              "createdById",
              "createdAt",
              "updatedAt",
              "decommissionedAt",
              "version",
              "geoLocation",
              "lastSnapshotHash",
              "lastTelemetry",
              "otaState"
            ],
            "type": "object"
          }
        },
        "required": [
          "player"
        ],
        "type": "object"
      },
      "UpdateAdCampaignRequest": {
        "example": {
          "status": "paused"
        },
        "properties": {
          "endsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "goal": {
            "enum": [
              "plays",
              "airtime",
              "contacts"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "note": {
            "maxLength": 1000,
            "type": "string"
          },
          "pricing": {
            "$ref": "#/components/schemas/CampaignPricing"
          },
          "startsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "status": {
            "enum": [
              "draft",
              "booked",
              "paused",
              "cancelled"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "UpdateAdvertiserRequest": {
        "example": {
          "brands": [
            "Nordwind",
            "Nordwind Sensitiv",
            "Nordwind Kids"
          ]
        },
        "properties": {
          "brands": {
            "items": {
              "maxLength": 60,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 20,
            "type": "array"
          },
          "contacts": {
            "items": {
              "$ref": "#/components/schemas/AdvertiserContact"
            },
            "maxItems": 10,
            "type": "array"
          },
          "industry": {
            "enum": [
              "cosmetics",
              "personal_care",
              "food_supplements",
              "otc_medicine",
              "medical_devices",
              "food_beverage",
              "automotive",
              "household",
              "services",
              "retail",
              "other"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "note": {
            "maxLength": 1000,
            "type": "string"
          }
        },
        "type": "object"
      },
      "UpdateAssetRequest": {
        "example": {
          "folderId": "fld_01KJ7MWKW0MAPPE00000000001",
          "name": "angebot-der-woche.jpg",
          "tags": [
            "angebot",
            "schaufenster"
          ]
        },
        "properties": {
          "folderId": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "tags": {
            "items": {
              "maxLength": 50,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 50,
            "type": "array"
          }
        },
        "type": "object"
      },
      "UpdateAssetResponse": {
        "example": {
          "createdAt": "2026-06-29T07:45:00.000Z",
          "deletedAt": null,
          "dimensions": {
            "height": 1080,
            "width": 1920
          },
          "durationSeconds": null,
          "errorMessage": null,
          "folderId": "fld_01KJ7MWKW0MAPPE00000000001",
          "id": "ast_01KW95DD30MEDEN00000000001",
          "mimeType": "image/jpeg",
          "name": "angebot-der-woche.jpg",
          "originalFileName": "Angebot der Woche KW30.jpg",
          "pageCount": 1,
          "purgeAt": null,
          "sha256": "9d4f2b8c1e07a5364bd80f9127ce5a3b6408df215c93ea7b0d6154f8a2b3c70e",
          "sizeBytes": 1842331,
          "source": null,
          "status": "ready",
          "tags": [
            "angebot",
            "schaufenster"
          ],
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-20T09:15:00.000Z",
          "uploadedById": "usr_01KFB7QPW0TEAM000000000002",
          "variants": [
            {
              "generatedAt": "2026-06-29T07:45:41.000Z",
              "height": 270,
              "id": "asv_01KW95F7P0VARANT0000000001",
              "kind": "thumbnail-md",
              "sizeBytes": 38214,
              "width": 480
            },
            {
              "generatedAt": "2026-06-29T07:46:12.000Z",
              "height": 1080,
              "id": "asv_01KERR4E30VARANT0000000002",
              "kind": "preview-1080",
              "sizeBytes": 612844,
              "width": 1920
            }
          ],
          "videoCodec": null
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "deletedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "dimensions": {
            "properties": {
              "height": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "width": {
                "exclusiveMinimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "width",
              "height"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "durationSeconds": {
            "exclusiveMinimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "errorMessage": {
            "maxLength": 1000,
            "type": [
              "string",
              "null"
            ]
          },
          "folderId": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "mimeType": {
            "enum": [
              "image/jpeg",
              "image/png",
              "image/webp",
              "image/svg+xml",
              "video/mp4",
              "video/webm",
              "application/pdf"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "originalFileName": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "pageCount": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "purgeAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "sha256": {
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "sizeBytes": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "source": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetSource"
              },
              {
                "default": null,
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "status": {
            "enum": [
              "uploading",
              "processing",
              "ready",
              "error"
            ],
            "type": "string"
          },
          "tags": {
            "items": {
              "maxLength": 50,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 50,
            "type": "array"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "uploadedById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "variants": {
            "items": {
              "properties": {
                "blank": {
                  "type": "boolean"
                },
                "codec": {
                  "maxLength": 31,
                  "minLength": 1,
                  "type": "string"
                },
                "generatedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "height": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "id": {
                  "pattern": "^asv_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "kind": {
                  "anyOf": [
                    {
                      "enum": [
                        "thumbnail-sm",
                        "thumbnail-md",
                        "thumbnail-lg",
                        "preview-720",
                        "preview-1080",
                        "webp-original-size",
                        "playback-1080"
                      ],
                      "type": "string"
                    },
                    {
                      "pattern": "^page-([1-9][0-9]{0,2})$",
                      "type": "string"
                    },
                    {
                      "pattern": "^page-([1-9][0-9]{0,2})-sm$",
                      "type": "string"
                    }
                  ]
                },
                "sha256": {
                  "pattern": "^[0-9a-f]{64}$",
                  "type": "string"
                },
                "sizeBytes": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "width": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "kind",
                "width",
                "height",
                "sizeBytes",
                "generatedAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "videoCodec": {
            "default": null,
            "maxLength": 31,
            "minLength": 1,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "tenantId",
          "folderId",
          "name",
          "originalFileName",
          "mimeType",
          "sizeBytes",
          "sha256",
          "tags",
          "dimensions",
          "durationSeconds",
          "uploadedById",
          "status",
          "errorMessage",
          "createdAt",
          "updatedAt",
          "deletedAt",
          "variants",
          "purgeAt"
        ],
        "type": "object"
      },
      "UpdateAudienceProfileRequest": {
        "example": {
          "companionFactorPermille": 1150,
          "dwellSecondsOverride": {
            "checkout": 75,
            "other": null,
            "sales_floor": 240,
            "waiting_area": null,
            "window": null
          },
          "measuredFrom": "2026-03-02",
          "measuredTo": "2026-03-15",
          "note": "Türzähler über zwei Wochen im März.",
          "seasonIndexPermille": [
            1080,
            1120,
            1050,
            980,
            950,
            900,
            880,
            900,
            980,
            1050,
            1080,
            1100
          ],
          "source": "counter",
          "visitorsPerHour": [
            [
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            [
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              18,
              26,
              31,
              34,
              38,
              30,
              27,
              29,
              33,
              36,
              24,
              0,
              0,
              0,
              0,
              0
            ],
            [
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              18,
              26,
              31,
              34,
              38,
              30,
              27,
              29,
              33,
              36,
              24,
              0,
              0,
              0,
              0,
              0
            ],
            [
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              18,
              26,
              31,
              34,
              38,
              30,
              27,
              29,
              33,
              36,
              24,
              0,
              0,
              0,
              0,
              0
            ],
            [
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              18,
              26,
              31,
              34,
              38,
              30,
              27,
              29,
              33,
              36,
              24,
              0,
              0,
              0,
              0,
              0
            ],
            [
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              18,
              26,
              31,
              34,
              38,
              30,
              27,
              29,
              33,
              36,
              24,
              0,
              0,
              0,
              0,
              0
            ],
            [
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              22,
              35,
              41,
              28,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ]
          ]
        },
        "properties": {
          "companionFactorPermille": {
            "default": null,
            "maximum": 4000,
            "minimum": 1000,
            "type": [
              "integer",
              "null"
            ]
          },
          "dwellSecondsOverride": {
            "default": null,
            "properties": {
              "checkout": {
                "maximum": 3600,
                "minimum": 1,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "other": {
                "maximum": 3600,
                "minimum": 1,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "sales_floor": {
                "maximum": 3600,
                "minimum": 1,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "waiting_area": {
                "maximum": 3600,
                "minimum": 1,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "window": {
                "maximum": 3600,
                "minimum": 1,
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "window",
              "sales_floor",
              "checkout",
              "waiting_area",
              "other"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "measuredFrom": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "measuredTo": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "note": {
            "default": "",
            "maxLength": 500,
            "type": "string"
          },
          "seasonIndexPermille": {
            "default": null,
            "items": {
              "maximum": 3000,
              "minimum": 100,
              "type": "integer"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "source": {
            "enum": [
              "counter",
              "survey_kit",
              "pos_receipts",
              "self_reported"
            ],
            "type": "string"
          },
          "visitorsPerHour": {
            "items": {
              "items": {
                "maximum": 100000,
                "minimum": 0,
                "type": "integer"
              },
              "type": "array"
            },
            "type": "array"
          }
        },
        "required": [
          "source",
          "visitorsPerHour",
          "measuredFrom",
          "measuredTo"
        ],
        "type": "object"
      },
      "UpdateBillingProfileRequest": {
        "example": {
          "addressLine1": "Wandsbeker Marktstraße 73",
          "addressLine2": null,
          "city": "Hamburg",
          "companyName": "Adler-Apotheke Inh. Petra Weber e.K.",
          "contactPerson": "Petra Weber",
          "countryCode": "DE",
          "documentLanguage": "de",
          "invoiceEmail": "buchhaltung@adler-apotheke.example",
          "paymentTermsDays": null,
          "postalCode": "22041",
          "vatId": "DE812345678"
        },
        "properties": {
          "addressLine1": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "addressLine2": {
            "maxLength": 200,
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "companyName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "contactPerson": {
            "default": null,
            "maxLength": 200,
            "type": [
              "string",
              "null"
            ]
          },
          "countryCode": {
            "pattern": "^[A-Z]{2}$",
            "type": "string"
          },
          "documentLanguage": {
            "default": "de",
            "enum": [
              "de",
              "en"
            ],
            "type": "string"
          },
          "invoiceEmail": {
            "format": "email",
            "maxLength": 255,
            "type": "string"
          },
          "paymentTermsDays": {
            "exclusiveMinimum": 0,
            "maximum": 90,
            "type": [
              "integer",
              "null"
            ]
          },
          "postalCode": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string"
          },
          "vatId": {
            "maxLength": 30,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "companyName",
          "addressLine1",
          "addressLine2",
          "postalCode",
          "city",
          "countryCode",
          "vatId",
          "invoiceEmail",
          "paymentTermsDays"
        ],
        "type": "object"
      },
      "UpdateBillingProfileResponse": {
        "example": {
          "profile": {
            "addressLine1": "Wandsbeker Marktstraße 73",
            "addressLine2": null,
            "city": "Hamburg",
            "companyName": "Adler-Apotheke Inh. Petra Weber e.K.",
            "contactPerson": "Petra Weber",
            "countryCode": "DE",
            "createdAt": "2026-01-12T09:02:00.000Z",
            "customerNumber": 1000,
            "documentLanguage": "de",
            "id": "bpr_01J5N2A8K3RB6QH9YVW4ZT0AAA",
            "invoiceEmail": "buchhaltung@adler-apotheke.example",
            "paymentTermsDays": null,
            "postalCode": "22041",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-06-02T08:40:00.000Z",
            "vatId": "DE812345678",
            "vatIdCheckAttemptAt": "2026-08-16T09:12:00.000Z",
            "vatIdCheckAttempts": 0,
            "vatIdCheckedAt": "2026-08-16T09:12:00.000Z",
            "vatIdCheckRequestId": "DE-2026-08-16-4471903",
            "vatIdStatus": "confirmed"
          }
        },
        "properties": {
          "profile": {
            "properties": {
              "addressLine1": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "addressLine2": {
                "maxLength": 200,
                "type": [
                  "string",
                  "null"
                ]
              },
              "city": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "companyName": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "contactPerson": {
                "default": null,
                "maxLength": 200,
                "type": [
                  "string",
                  "null"
                ]
              },
              "countryCode": {
                "pattern": "^[A-Z]{2}$",
                "type": "string"
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "customerNumber": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "documentLanguage": {
                "default": "de",
                "enum": [
                  "de",
                  "en"
                ],
                "type": "string"
              },
              "id": {
                "pattern": "^bpr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "invoiceEmail": {
                "format": "email",
                "maxLength": 255,
                "type": "string"
              },
              "paymentTermsDays": {
                "exclusiveMinimum": 0,
                "maximum": 90,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "postalCode": {
                "maxLength": 20,
                "minLength": 1,
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "vatId": {
                "maxLength": 30,
                "type": [
                  "string",
                  "null"
                ]
              },
              "vatIdCheckAttemptAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "vatIdCheckAttempts": {
                "default": 0,
                "minimum": 0,
                "type": "integer"
              },
              "vatIdCheckedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "vatIdCheckRequestId": {
                "default": null,
                "maxLength": 60,
                "type": [
                  "string",
                  "null"
                ]
              },
              "vatIdStatus": {
                "default": "none",
                "enum": [
                  "none",
                  "format-only",
                  "confirmed",
                  "invalid",
                  "unavailable"
                ],
                "type": "string"
              }
            },
            "required": [
              "id",
              "tenantId",
              "customerNumber",
              "companyName",
              "addressLine1",
              "addressLine2",
              "postalCode",
              "city",
              "countryCode",
              "vatId",
              "invoiceEmail",
              "paymentTermsDays",
              "createdAt",
              "updatedAt"
            ],
            "type": "object"
          }
        },
        "required": [
          "profile"
        ],
        "type": "object"
      },
      "UpdateBookingLineRequest": {
        "example": {
          "slotsPerPodTenths": 5
        },
        "properties": {
          "commitment": {
            "$ref": "#/components/schemas/BookingCommitment"
          },
          "creatives": {
            "items": {
              "$ref": "#/components/schemas/BookingCreative"
            },
            "maxItems": 20,
            "type": "array"
          },
          "dayparts": {
            "items": {
              "properties": {
                "daysOfWeek": {
                  "items": {
                    "maximum": 6,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "maxItems": 7,
                  "minItems": 1,
                  "type": "array"
                },
                "timeWindows": {
                  "items": {
                    "properties": {
                      "endTime": {
                        "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                        "type": "string"
                      },
                      "startTime": {
                        "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "startTime",
                      "endTime"
                    ],
                    "type": "object"
                  },
                  "maxItems": 8,
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "daysOfWeek",
                "timeWindows"
              ],
              "type": "object"
            },
            "maxItems": 8,
            "type": "array"
          },
          "endsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "minZoneSharePermille": {
            "maximum": 1000,
            "minimum": 0,
            "type": "integer"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "slotsPerPodTenths": {
            "maximum": 120,
            "minimum": 1,
            "type": "integer"
          },
          "spotDurationMs": {
            "enum": [
              5000,
              10000,
              15000,
              20000,
              30000
            ],
            "type": "integer"
          },
          "startsOn": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "paused"
            ],
            "type": "string"
          },
          "targeting": {
            "$ref": "#/components/schemas/BookingTargetingInput"
          }
        },
        "type": "object"
      },
      "UpdateBrandingRequest": {
        "example": {
          "branding": {
            "accentColor": "#e8b33c",
            "faviconAssetRef": {
              "assetId": "ast_01KERR2KG0MEDEN00000000003",
              "variantSet": [
                "thumbnail"
              ]
            },
            "logoAssetRef": {
              "assetId": "ast_01KERR2KG0MEDEN00000000003",
              "variantSet": [
                "original",
                "webp"
              ]
            },
            "primaryColor": "#1f6f4a"
          }
        },
        "properties": {
          "branding": {
            "properties": {
              "accentColor": {
                "pattern": "^#[0-9a-fA-F]{6}$",
                "type": "string"
              },
              "faviconAssetRef": {
                "default": null,
                "properties": {
                  "assetId": {
                    "description": "Datei-Kennung|Kennung der Datei in der Medienbibliothek.",
                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "variantSet": {
                    "description": "Fassungen|Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                    "items": {
                      "enum": [
                        "original",
                        "thumbnail",
                        "preview",
                        "webp",
                        "playback"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "assetId",
                  "variantSet"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "logoAssetRef": {
                "default": null,
                "properties": {
                  "assetId": {
                    "description": "Datei-Kennung|Kennung der Datei in der Medienbibliothek.",
                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "variantSet": {
                    "description": "Fassungen|Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                    "items": {
                      "enum": [
                        "original",
                        "thumbnail",
                        "preview",
                        "webp",
                        "playback"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "assetId",
                  "variantSet"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "primaryColor": {
                "pattern": "^#[0-9a-fA-F]{6}$",
                "type": "string"
              }
            },
            "required": [
              "primaryColor",
              "accentColor"
            ],
            "type": "object"
          }
        },
        "required": [
          "branding"
        ],
        "type": "object"
      },
      "UpdateBrandingResponse": {
        "example": {
          "tenant": {
            "branding": {
              "accentColor": "#e8b33c",
              "faviconAssetRef": {
                "assetId": "ast_01KERR2KG0MEDEN00000000003",
                "variantSet": [
                  "thumbnail"
                ]
              },
              "logoAssetRef": {
                "assetId": "ast_01KERR2KG0MEDEN00000000003",
                "variantSet": [
                  "original",
                  "webp"
                ]
              },
              "primaryColor": "#1f6f4a"
            },
            "createdAt": "2026-01-12T09:00:00.000Z",
            "customDomain": "anzeige.adler-apotheke.demo.local",
            "defaultLocale": "de-DE",
            "defaultTimezone": "Europe/Berlin",
            "displayName": "Adler-Apotheke",
            "frozenAt": "2026-01-01T00:00:00.000Z",
            "id": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "slug": "adler-apotheke",
            "status": "active",
            "updatedAt": "2026-07-20T09:15:00.000Z",
            "vertical": "pharmacy"
          }
        },
        "properties": {
          "tenant": {
            "properties": {
              "branding": {
                "properties": {
                  "accentColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  },
                  "faviconAssetRef": {
                    "default": null,
                    "properties": {
                      "assetId": {
                        "description": "Datei-Kennung|Kennung der Datei in der Medienbibliothek.",
                        "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "variantSet": {
                        "description": "Fassungen|Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                        "items": {
                          "enum": [
                            "original",
                            "thumbnail",
                            "preview",
                            "webp",
                            "playback"
                          ],
                          "type": "string"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "assetId",
                      "variantSet"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "logoAssetRef": {
                    "default": null,
                    "properties": {
                      "assetId": {
                        "description": "Datei-Kennung|Kennung der Datei in der Medienbibliothek.",
                        "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "variantSet": {
                        "description": "Fassungen|Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                        "items": {
                          "enum": [
                            "original",
                            "thumbnail",
                            "preview",
                            "webp",
                            "playback"
                          ],
                          "type": "string"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "assetId",
                      "variantSet"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "primaryColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  }
                },
                "required": [
                  "primaryColor",
                  "accentColor"
                ],
                "type": "object"
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "customDomain": {
                "maxLength": 253,
                "type": [
                  "string",
                  "null"
                ]
              },
              "defaultLocale": {
                "pattern": "^[a-z]{2}(-[A-Z]{2})?$",
                "type": "string"
              },
              "defaultTimezone": {
                "type": "string"
              },
              "displayName": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "frozenAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "slug": {
                "pattern": "^[a-z][a-z0-9-]{2,32}$",
                "type": "string"
              },
              "status": {
                "enum": [
                  "active",
                  "frozen",
                  "suspended",
                  "deleted"
                ],
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "vertical": {
                "default": null,
                "enum": [
                  "pharmacy"
                ],
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "slug",
              "displayName",
              "defaultLocale",
              "defaultTimezone",
              "branding",
              "customDomain",
              "status",
              "createdAt",
              "updatedAt"
            ],
            "type": "object"
          }
        },
        "required": [
          "tenant"
        ],
        "type": "object"
      },
      "UpdateCheckoutDraftRequest": {
        "example": {
          "draft": {
            "apps": [
              "pharmacies-on-duty"
            ],
            "billingCycle": "monthly",
            "displays": 5,
            "hardware": [],
            "packageCode": "PRO",
            "videoWalls": 1
          },
          "step": "review"
        },
        "properties": {
          "draft": {
            "$ref": "#/components/schemas/BillingDraft"
          },
          "step": {
            "enum": [
              "selection",
              "billing-profile",
              "payment-way",
              "review",
              "done"
            ],
            "type": "string"
          }
        },
        "required": [
          "draft",
          "step"
        ],
        "type": "object"
      },
      "UpdateCreativeRequest": {
        "example": {
          "name": "Herbstpflege Schaufenster quer"
        },
        "properties": {
          "mandatoryText": {
            "maxLength": 300,
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          }
        },
        "type": "object"
      },
      "UpdateDeviceRequest": {
        "example": {
          "name": "Schaufenster links"
        },
        "properties": {
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "UpdateDeviceResponse": {
        "example": {
          "deviceId": "dev_01KHK32T40GERAET0000000001",
          "name": "Schaufenster links"
        },
        "properties": {
          "deviceId": {
            "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "deviceId",
          "name"
        ],
        "type": "object"
      },
      "UpdateDisplayGroupRequest": {
        "example": {
          "canvas": {
            "height": 1080,
            "width": 3840
          },
          "members": [
            {
              "playerId": "ply_01KHK34MQ0SCREEN0000000004",
              "rect": {
                "h": 1080,
                "w": 1920,
                "x": 0,
                "y": 0
              }
            },
            {
              "playerId": "ply_01KHK34MQ0SCREEN0000000005",
              "rect": {
                "h": 1080,
                "w": 1920,
                "x": 1920,
                "y": 0
              }
            }
          ],
          "name": "Schaufenster-Band"
        },
        "properties": {
          "canvas": {
            "properties": {
              "height": {
                "maximum": 8640,
                "minimum": 1,
                "type": "integer"
              },
              "width": {
                "maximum": 15360,
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "width",
              "height"
            ],
            "type": "object"
          },
          "members": {
            "items": {
              "properties": {
                "playerId": {
                  "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "rect": {
                  "properties": {
                    "h": {
                      "maximum": 8640,
                      "minimum": 1,
                      "type": "integer"
                    },
                    "w": {
                      "maximum": 15360,
                      "minimum": 1,
                      "type": "integer"
                    },
                    "x": {
                      "maximum": 15360,
                      "minimum": 0,
                      "type": "integer"
                    },
                    "y": {
                      "maximum": 8640,
                      "minimum": 0,
                      "type": "integer"
                    }
                  },
                  "required": [
                    "x",
                    "y",
                    "w",
                    "h"
                  ],
                  "type": "object"
                }
              },
              "required": [
                "playerId",
                "rect"
              ],
              "type": "object"
            },
            "maxItems": 16,
            "minItems": 1,
            "type": "array"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          }
        },
        "type": "object"
      },
      "UpdateDisplayGroupResponse": {
        "example": {
          "displayGroup": {
            "canvas": {
              "height": 1080,
              "width": 3840
            },
            "createdAt": "2026-03-02T09:15:00.000Z",
            "id": "dgr_01KHK4A2S0WANDBAND00000001",
            "members": [
              {
                "playerId": "ply_01KHK34MQ0SCREEN0000000004",
                "rect": {
                  "h": 1080,
                  "w": 1920,
                  "x": 0,
                  "y": 0
                }
              },
              {
                "playerId": "ply_01KHK34MQ0SCREEN0000000005",
                "rect": {
                  "h": 1080,
                  "w": 1920,
                  "x": 1920,
                  "y": 0
                }
              }
            ],
            "name": "Schaufenster-Band",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-03-02T09:15:00.000Z"
          }
        },
        "properties": {
          "displayGroup": {
            "properties": {
              "canvas": {
                "properties": {
                  "height": {
                    "maximum": 8640,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "width": {
                    "maximum": 15360,
                    "minimum": 1,
                    "type": "integer"
                  }
                },
                "required": [
                  "width",
                  "height"
                ],
                "type": "object"
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "id": {
                "pattern": "^dgr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "members": {
                "items": {
                  "properties": {
                    "playerId": {
                      "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "rect": {
                      "properties": {
                        "h": {
                          "maximum": 8640,
                          "minimum": 1,
                          "type": "integer"
                        },
                        "w": {
                          "maximum": 15360,
                          "minimum": 1,
                          "type": "integer"
                        },
                        "x": {
                          "maximum": 15360,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "y": {
                          "maximum": 8640,
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "x",
                        "y",
                        "w",
                        "h"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "playerId",
                    "rect"
                  ],
                  "type": "object"
                },
                "maxItems": 16,
                "minItems": 1,
                "type": "array"
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "id",
              "tenantId",
              "name",
              "canvas",
              "members",
              "createdAt",
              "updatedAt"
            ],
            "type": "object"
          }
        },
        "required": [
          "displayGroup"
        ],
        "type": "object"
      },
      "UpdateDisplayInventoryRequest": {
        "example": {
          "diagonalInches": 55,
          "networkEnabled": false,
          "orientation": "landscape",
          "placement": "window",
          "placementFactorPermille": null
        },
        "properties": {
          "diagonalInches": {
            "default": null,
            "maximum": 150,
            "minimum": 7,
            "type": [
              "integer",
              "null"
            ]
          },
          "networkEnabled": {
            "default": false,
            "type": "boolean"
          },
          "orientation": {
            "default": "landscape",
            "enum": [
              "landscape",
              "portrait"
            ],
            "type": "string"
          },
          "placement": {
            "enum": [
              "window",
              "sales_floor",
              "checkout",
              "waiting_area",
              "other"
            ],
            "type": "string"
          },
          "placementFactorPermille": {
            "default": null,
            "maximum": 1000,
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "placement"
        ],
        "type": "object"
      },
      "UpdateFolderRequest": {
        "example": {
          "name": "Videos & Schleifen"
        },
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "pattern": "^[^/]+$",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "UpdateFolderResponse": {
        "example": {
          "createdAt": "2026-03-11T15:20:00.000Z",
          "createdById": "usr_01KFB7QPW0TEAM000000000002",
          "depth": 1,
          "id": "fld_01KKEQQF80MAPPE00000000003",
          "kind": "regular",
          "name": "Videos & Schleifen",
          "parentFolderId": "fld_01KJ7MWKW0MAPPE00000000001",
          "path": "/Angebote/Videos & Schleifen",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-20T09:15:00.000Z"
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "createdById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "depth": {
            "maximum": 7,
            "minimum": 0,
            "type": "integer"
          },
          "id": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "kind": {
            "default": "regular",
            "enum": [
              "regular",
              "brand"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "pattern": "^[^/]+$",
            "type": "string"
          },
          "parentFolderId": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "path": {
            "maxLength": 900,
            "minLength": 1,
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "parentFolderId",
          "name",
          "path",
          "depth",
          "createdById",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "UpdateLayoutTemplateRequest": {
        "example": {
          "canvas": {
            "height": 1920,
            "width": 1080
          },
          "description": "Fußzeile auf 320 Pixel erhöht, damit der Notdienst-Hinweis passt.",
          "name": "Schaufenster Hochformat",
          "slots": {
            "fuss": {
              "h": 320,
              "w": 1080,
              "x": 0,
              "y": 1600,
              "zIndex": 1
            },
            "kopf": {
              "h": 320,
              "w": 1080,
              "x": 0,
              "y": 0,
              "zIndex": 0
            },
            "mitte": {
              "h": 1280,
              "w": 1080,
              "x": 0,
              "y": 320,
              "zIndex": 0
            }
          }
        },
        "properties": {
          "canvas": {
            "properties": {
              "height": {
                "maximum": 7680,
                "minimum": 320,
                "type": "integer"
              },
              "width": {
                "maximum": 7680,
                "minimum": 320,
                "type": "integer"
              }
            },
            "required": [
              "width",
              "height"
            ],
            "type": "object"
          },
          "description": {
            "maxLength": 2000,
            "type": "string"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "slots": {
            "additionalProperties": {
              "properties": {
                "h": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "w": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "x": {
                  "minimum": 0,
                  "type": "integer"
                },
                "y": {
                  "minimum": 0,
                  "type": "integer"
                },
                "zIndex": {
                  "maximum": 1000,
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "x",
                "y",
                "w",
                "h",
                "zIndex"
              ],
              "type": "object"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "UpdateLayoutTemplateResponse": {
        "example": {
          "canvas": {
            "height": 1920,
            "width": 1080
          },
          "createdAt": "2026-03-02T09:10:00.000Z",
          "createdById": "usr_01KFB7QPW0TEAM000000000002",
          "description": "Kopfband für die Wortmarke, große Mittelfläche, Fußzeile für Hinweise.",
          "id": "lyt_01KJPWZGJ0RASTER0000000001",
          "isBuiltIn": false,
          "name": "Schaufenster Hochformat",
          "slots": {
            "fuss": {
              "h": 320,
              "w": 1080,
              "x": 0,
              "y": 1600,
              "zIndex": 1
            },
            "kopf": {
              "h": 320,
              "w": 1080,
              "x": 0,
              "y": 0,
              "zIndex": 0
            },
            "mitte": {
              "h": 1280,
              "w": 1080,
              "x": 0,
              "y": 320,
              "zIndex": 0
            }
          },
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-17T09:30:00.000Z"
        },
        "properties": {
          "canvas": {
            "properties": {
              "height": {
                "maximum": 7680,
                "minimum": 320,
                "type": "integer"
              },
              "width": {
                "maximum": 7680,
                "minimum": 320,
                "type": "integer"
              }
            },
            "required": [
              "width",
              "height"
            ],
            "type": "object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "createdById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "description": {
            "maxLength": 2000,
            "type": "string"
          },
          "id": {
            "pattern": "^(?:lyt_[0-9A-HJKMNP-TV-Z]{26}|standard-1x1|split-vertical|split-horizontal|grid-2x2|main-sidebar|main-sidebar-2|main-sidebar-3|thirds-vertical|quarters-vertical|header-main|main-ticker|header-main-ticker|sidebar-left-main|header-split|grid-3x2|main-sidebar-ticker|hero-strip-3|portrait-full|portrait-split|portrait-thirds|portrait-main-footer|portrait-half-grid-4|portrait-main-footer-2|portrait-main-footer-3|portrait-header-main|portrait-header-main-ticker|portrait-quarters|portrait-grid-2x3|portrait-hero-columns|ultra-full|ultra-halves|ultra-thirds|ultra-quarters|ultra-center-stage|ultra-main-sidebar|ultra-header-thirds|ultra-thirds-ticker)$",
            "type": "string"
          },
          "isBuiltIn": {
            "type": "boolean"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "slots": {
            "additionalProperties": {
              "properties": {
                "h": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "w": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "x": {
                  "minimum": 0,
                  "type": "integer"
                },
                "y": {
                  "minimum": 0,
                  "type": "integer"
                },
                "zIndex": {
                  "maximum": 1000,
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "x",
                "y",
                "w",
                "h",
                "zIndex"
              ],
              "type": "object"
            },
            "type": "object"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "name",
          "description",
          "canvas",
          "slots",
          "isBuiltIn",
          "createdById",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "UpdateLicenseCountRequest": {
        "example": {
          "quantity": 5
        },
        "properties": {
          "quantity": {
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "quantity"
        ],
        "type": "object"
      },
      "UpdateLicenseCountResponse": {
        "example": {
          "apps": [
            {
              "appId": "pharmacies-on-duty",
              "booked": true,
              "displayName": "Notdienst-Anzeige",
              "effectiveMonthlyPriceCents": 900,
              "grandfathered": false,
              "installed": true,
              "monthlyPriceCents": 900,
              "pendingFailedAt": null,
              "pendingQuantity": null,
              "skuCode": "APP-pharmacies-on-duty"
            }
          ],
          "billingCycle": "monthly",
          "cancelAtPeriodEnd": false,
          "cancelEffectiveAt": null,
          "cancelScheduledAt": null,
          "currentPeriodEnd": "2026-09-16T09:15:00.000Z",
          "currentPeriodStart": "2026-08-16T09:15:00.000Z",
          "defaultPaymentMethod": null,
          "desiredPackage": null,
          "dunning": null,
          "graceUntil": null,
          "graceWindowEnd": null,
          "invoiceWayApproved": true,
          "legacyItems": [
            {
              "description": "Anmeldung über das Firmen-Login der Organisation (SSO) — jetzt Teil von Enterprise.",
              "displayName": "Enterprise-Anmeldung",
              "effectiveMonthlyPriceCents": 0,
              "grandfathered": true,
              "pendingFailedAt": null,
              "pendingQuantity": null,
              "quantity": 1,
              "skuCode": "ADDON-SSO"
            }
          ],
          "licenses": {
            "booked": 5,
            "conflictUntil": null,
            "free": 1,
            "frozen": 0,
            "pendingFailedAt": null,
            "pendingQuantity": null,
            "used": 4
          },
          "nextInvoice": {
            "blockers": [],
            "credit": null,
            "currency": "EUR",
            "dueToday": {
              "grossCents": 0,
              "netCents": 0,
              "vatCents": 0
            },
            "effectiveAt": "2026-09-16T09:15:00.000Z",
            "endsTrial": false,
            "lines": [
              {
                "displayName": "Paket Starter",
                "kind": "recurring",
                "netAmountCents": 6260,
                "period": null,
                "quantity": 5,
                "skuCode": "PKG-START",
                "specialConditionUntil": null,
                "unitPriceCents": 1252
              },
              {
                "displayName": "Notdienst-Anzeige",
                "kind": "recurring",
                "netAmountCents": 900,
                "period": null,
                "quantity": 1,
                "skuCode": "APP-pharmacies-on-duty",
                "specialConditionUntil": null,
                "unitPriceCents": 900
              },
              {
                "displayName": "Leinwand",
                "kind": "recurring",
                "netAmountCents": 1900,
                "period": null,
                "quantity": 1,
                "skuCode": "LIZ-VIDEOWALL",
                "specialConditionUntil": null,
                "unitPriceCents": 1900
              }
            ],
            "nextInvoiceAt": "2026-09-16T09:15:00.000Z",
            "nextPeriod": {
              "grossCents": 10781,
              "netCents": 9060,
              "vatCents": 1721
            },
            "partialCancellation": null,
            "pendingBillingCycle": null,
            "previewedAt": "2026-08-16T09:15:00.000Z",
            "previewToken": "bpv_01KERPXZM0NACHMENGE0000000",
            "rule": "R2",
            "targetState": [
              {
                "carriesDisplays": true,
                "currentQuantity": 5,
                "outcome": "unchanged",
                "packageCode": "START",
                "quantity": 5,
                "skuCode": "PKG-START"
              },
              {
                "carriesDisplays": false,
                "currentQuantity": 1,
                "outcome": "unchanged",
                "packageCode": null,
                "quantity": 1,
                "skuCode": "APP-pharmacies-on-duty"
              },
              {
                "carriesDisplays": false,
                "currentQuantity": 1,
                "outcome": "unchanged",
                "packageCode": null,
                "quantity": 1,
                "skuCode": "LIZ-VIDEOWALL"
              }
            ],
            "tax": {
              "category": "S",
              "exemptionCode": null,
              "hintKey": null,
              "ratePercent": 19,
              "requiresRecipientVatId": false,
              "ruleId": "de-domestic"
            },
            "tierScale": null,
            "trialCredit": null,
            "unchanged": true,
            "usedDisplays": 4,
            "validUntil": "2026-08-16T09:45:00.000Z"
          },
          "overdueCutoff": null,
          "packageCode": "START",
          "packages": [
            {
              "available": true,
              "code": "START",
              "current": true,
              "displayName": "Starter",
              "effectiveMonthlyPriceCents": 1490,
              "listPriceCents": 1490,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 1490,
              "pending": false,
              "skuCode": "PKG-START"
            },
            {
              "available": true,
              "code": "PRO",
              "current": false,
              "displayName": "Pro",
              "effectiveMonthlyPriceCents": 2290,
              "listPriceCents": 2290,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 2290,
              "pending": false,
              "skuCode": "PKG-PRO"
            },
            {
              "available": true,
              "code": "PREMIUM",
              "current": false,
              "displayName": "Premium",
              "effectiveMonthlyPriceCents": 2790,
              "listPriceCents": 2790,
              "maxDisplays": null,
              "minDisplays": 5,
              "monthlyPriceCents": 2790,
              "pending": false,
              "skuCode": "PKG-PREMIUM"
            },
            {
              "available": false,
              "code": "ENTERPRISE",
              "current": false,
              "displayName": "Enterprise",
              "effectiveMonthlyPriceCents": 0,
              "listPriceCents": 0,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 0,
              "pending": false,
              "skuCode": "PKG-ENTERPRISE"
            }
          ],
          "paymentWay": {
            "kind": "invoice",
            "nextChargeAt": null,
            "paymentTermsDays": 14
          },
          "paymentWaySecured": true,
          "pendingBillingCycle": null,
          "pendingChangeEffectiveAt": null,
          "pendingDisplays": null,
          "pendingFailedAt": null,
          "pendingPackageCode": null,
          "pricing": {
            "billableQuantity": 5,
            "currency": "EUR",
            "currentUnitPriceCents": 1252,
            "tiers": [],
            "vatRatePercent": 19,
            "yearlyDiscountPercent": 15
          },
          "readiness": {
            "blockers": []
          },
          "source": "invoice",
          "specialConditionUntil": null,
          "status": "active",
          "tenantStatus": "active",
          "trialEndsAt": null,
          "videoWalls": {
            "available": true,
            "booked": 1,
            "displayName": "Leinwand",
            "effectiveMonthlyPriceCents": 1900,
            "grandfathered": false,
            "monthlyPriceCents": 1900,
            "pendingFailedAt": null,
            "pendingQuantity": null,
            "skuCode": "LIZ-VIDEOWALL",
            "used": 1
          }
        },
        "properties": {
          "apps": {
            "items": {
              "properties": {
                "appId": {
                  "type": "string"
                },
                "booked": {
                  "type": "boolean"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "grandfathered": {
                  "type": "boolean"
                },
                "installed": {
                  "type": "boolean"
                },
                "monthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "pendingFailedAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "pendingQuantity": {
                  "default": null,
                  "minimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "appId",
                "skuCode",
                "displayName",
                "monthlyPriceCents",
                "effectiveMonthlyPriceCents",
                "booked",
                "installed",
                "grandfathered"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "billingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": "string"
          },
          "cancelAtPeriodEnd": {
            "type": "boolean"
          },
          "cancelEffectiveAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "cancelScheduledAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "currentPeriodEnd": {
            "format": "date-time",
            "type": "string"
          },
          "currentPeriodStart": {
            "format": "date-time",
            "type": "string"
          },
          "defaultPaymentMethod": {
            "properties": {
              "expiresAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "kind": {
                "enum": [
                  "card",
                  "sepa_debit"
                ],
                "type": "string"
              },
              "lastFour": {
                "pattern": "^\\d{4}$",
                "type": "string"
              },
              "stripePaymentMethodId": {
                "type": "string"
              }
            },
            "required": [
              "stripePaymentMethodId",
              "kind",
              "lastFour",
              "expiresAt"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "desiredPackage": {
            "properties": {
              "billingCycle": {
                "enum": [
                  "monthly",
                  "yearly"
                ],
                "type": "string"
              },
              "displays": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "packageCode": {
                "enum": [
                  "START",
                  "PRO",
                  "PREMIUM",
                  "ENTERPRISE"
                ],
                "type": "string"
              }
            },
            "required": [
              "packageCode",
              "displays",
              "billingCycle"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "dunning": {
            "properties": {
              "graceUntil": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "invoiceId": {
                "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "invoiceNumber": {
                "pattern": "^(INV|GS)-\\d{4}-\\d{4,}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastDunnedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "level": {
                "maximum": 2,
                "minimum": 0,
                "type": "integer"
              },
              "reminderSentAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "level",
              "reminderSentAt",
              "lastDunnedAt",
              "graceUntil",
              "invoiceId",
              "invoiceNumber"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "graceUntil": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "graceWindowEnd": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "invoiceWayApproved": {
            "type": "boolean"
          },
          "legacyItems": {
            "items": {
              "properties": {
                "description": {
                  "type": "string"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "grandfathered": {
                  "type": "boolean"
                },
                "pendingFailedAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "pendingQuantity": {
                  "default": null,
                  "minimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "quantity": {
                  "minimum": 0,
                  "type": "integer"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "skuCode",
                "displayName",
                "description",
                "quantity",
                "effectiveMonthlyPriceCents",
                "grandfathered"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "licenses": {
            "properties": {
              "booked": {
                "minimum": 0,
                "type": "integer"
              },
              "conflictUntil": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "free": {
                "minimum": 0,
                "type": "integer"
              },
              "frozen": {
                "default": 0,
                "minimum": 0,
                "type": "integer"
              },
              "pendingFailedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingQuantity": {
                "default": null,
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "used": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "booked",
              "used",
              "free"
            ],
            "type": "object"
          },
          "nextInvoice": {
            "$ref": "#/components/schemas/BillingPreviewResponse"
          },
          "overdueCutoff": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "packageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "packages": {
            "items": {
              "properties": {
                "available": {
                  "type": "boolean"
                },
                "code": {
                  "enum": [
                    "START",
                    "PRO",
                    "PREMIUM",
                    "ENTERPRISE"
                  ],
                  "type": "string"
                },
                "current": {
                  "type": "boolean"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "listPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "maxDisplays": {
                  "exclusiveMinimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "minDisplays": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "monthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "pending": {
                  "type": "boolean"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "code",
                "skuCode",
                "displayName",
                "monthlyPriceCents",
                "listPriceCents",
                "effectiveMonthlyPriceCents",
                "maxDisplays",
                "minDisplays",
                "current",
                "pending",
                "available"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "paymentWay": {
            "properties": {
              "kind": {
                "enum": [
                  "card",
                  "sepa_debit",
                  "invoice",
                  "none"
                ],
                "type": "string"
              },
              "nextChargeAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "paymentTermsDays": {
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "kind",
              "paymentTermsDays",
              "nextChargeAt"
            ],
            "type": "object"
          },
          "paymentWaySecured": {
            "type": "boolean"
          },
          "pendingBillingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pendingChangeEffectiveAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "pendingDisplays": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "pendingFailedAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "pendingPackageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pricing": {
            "properties": {
              "billableQuantity": {
                "minimum": 0,
                "type": "integer"
              },
              "currency": {
                "enum": [
                  "EUR"
                ],
                "type": "string"
              },
              "currentUnitPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "tiers": {
                "items": {
                  "properties": {
                    "unitPriceCents": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "upToQuantity": {
                      "exclusiveMinimum": 0,
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "upToQuantity",
                    "unitPriceCents"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "vatRatePercent": {
                "maximum": 100,
                "minimum": 0,
                "type": "number"
              },
              "yearlyDiscountPercent": {
                "maximum": 100,
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "tiers",
              "currency",
              "yearlyDiscountPercent",
              "vatRatePercent",
              "currentUnitPriceCents",
              "billableQuantity"
            ],
            "type": "object"
          },
          "readiness": {
            "properties": {
              "blockers": {
                "items": {
                  "enum": [
                    "billing-profile-missing",
                    "payment-way-missing",
                    "overdue-invoice",
                    "payment-failed",
                    "tenant-frozen",
                    "contract-suspended",
                    "cancel-pending",
                    "eu-b2b-vat-id-required",
                    "goods-abroad-unsupported",
                    "issuer-exemption-missing"
                  ],
                  "type": "string"
                },
                "type": "array"
              }
            },
            "required": [
              "blockers"
            ],
            "type": "object"
          },
          "source": {
            "enum": [
              "invoice",
              "stripe"
            ],
            "type": "string"
          },
          "specialConditionUntil": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "enum": [
              "trial",
              "active",
              "past_due",
              "canceled",
              "suspended"
            ],
            "type": "string"
          },
          "tenantStatus": {
            "enum": [
              "active",
              "frozen",
              "suspended"
            ],
            "type": "string"
          },
          "trialEndsAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "videoWalls": {
            "properties": {
              "available": {
                "type": "boolean"
              },
              "booked": {
                "minimum": 0,
                "type": "integer"
              },
              "displayName": {
                "type": "string"
              },
              "effectiveMonthlyPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "grandfathered": {
                "type": "boolean"
              },
              "monthlyPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "pendingFailedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingQuantity": {
                "default": null,
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "skuCode": {
                "maxLength": 60,
                "minLength": 3,
                "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                "type": "string"
              },
              "used": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "skuCode",
              "displayName",
              "booked",
              "used",
              "monthlyPriceCents",
              "effectiveMonthlyPriceCents",
              "grandfathered",
              "available"
            ],
            "type": "object"
          }
        },
        "required": [
          "licenses",
          "packageCode",
          "pendingPackageCode",
          "packages",
          "pricing",
          "apps",
          "videoWalls",
          "legacyItems",
          "billingCycle",
          "pendingBillingCycle",
          "status",
          "trialEndsAt",
          "graceUntil",
          "currentPeriodStart",
          "currentPeriodEnd",
          "source",
          "paymentWaySecured",
          "cancelAtPeriodEnd",
          "cancelScheduledAt",
          "cancelEffectiveAt",
          "tenantStatus",
          "graceWindowEnd",
          "overdueCutoff",
          "specialConditionUntil",
          "desiredPackage",
          "invoiceWayApproved",
          "defaultPaymentMethod",
          "paymentWay",
          "dunning",
          "nextInvoice",
          "readiness"
        ],
        "type": "object"
      },
      "UpdateLocationRequest": {
        "example": {
          "address": {
            "city": "Hamburg",
            "country": "DE",
            "postalCode": "22765",
            "street": "Bahnhofstraße 12"
          },
          "coordinates": {
            "lat": -90,
            "lng": -180
          },
          "name": "Hauptstelle",
          "note": "Verkaufsraum und Schaufenster; der Beratungsraum liegt im ersten Stock.",
          "openingHours": {
            "specialDays": [
              {
                "closed": false,
                "endDate": "2026-12-24",
                "label": "Heiligabend",
                "startDate": "2026-12-24",
                "windows": [
                  {
                    "closes": "12:00",
                    "opens": "08:30"
                  }
                ]
              },
              {
                "closed": true,
                "endDate": "2027-01-02",
                "label": "Inventur",
                "startDate": "2027-01-02",
                "windows": []
              }
            ],
            "weekly": {
              "fri": [
                {
                  "closes": "13:00",
                  "opens": "08:30"
                },
                {
                  "closes": "18:30",
                  "opens": "14:00"
                }
              ],
              "mon": [
                {
                  "closes": "13:00",
                  "opens": "08:30"
                },
                {
                  "closes": "18:30",
                  "opens": "14:00"
                }
              ],
              "sat": [
                {
                  "closes": "14:00",
                  "opens": "09:00"
                }
              ],
              "sun": [],
              "thu": [
                {
                  "closes": "13:00",
                  "opens": "08:30"
                },
                {
                  "closes": "18:30",
                  "opens": "14:00"
                }
              ],
              "tue": [
                {
                  "closes": "13:00",
                  "opens": "08:30"
                },
                {
                  "closes": "18:30",
                  "opens": "14:00"
                }
              ],
              "wed": [
                {
                  "closes": "13:00",
                  "opens": "08:30"
                }
              ]
            }
          },
          "region": "DE-HH",
          "timeZone": "Europe/Berlin",
          "venueType": "pharmacy"
        },
        "properties": {
          "address": {
            "properties": {
              "city": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "country": {
                "pattern": "^[A-Z]{2}$",
                "type": "string"
              },
              "postalCode": {
                "maxLength": 20,
                "minLength": 1,
                "type": "string"
              },
              "street": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "street",
              "postalCode",
              "city",
              "country"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "coordinates": {
            "properties": {
              "lat": {
                "maximum": 90,
                "minimum": -90,
                "type": "number"
              },
              "lng": {
                "maximum": 180,
                "minimum": -180,
                "type": "number"
              }
            },
            "required": [
              "lat",
              "lng"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "note": {
            "maxLength": 500,
            "type": "string"
          },
          "openingHours": {
            "$ref": "#/components/schemas/OpeningHours"
          },
          "region": {
            "$ref": "#/components/schemas/LocationRegion"
          },
          "timeZone": {
            "type": "string"
          },
          "venueType": {
            "enum": [
              "pharmacy",
              "workshop",
              "bakery",
              "beverage_store",
              "grocery",
              "kiosk",
              "fitness_studio",
              "medical_practice",
              "retail",
              "other"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "UpdateLocationResponse": {
        "example": {
          "location": {
            "address": {
              "city": "Hamburg",
              "country": "DE",
              "postalCode": "22765",
              "street": "Bahnhofstraße 12"
            },
            "coordinates": {
              "lat": 53.5511,
              "lng": 9.9937
            },
            "createdAt": "2026-02-16T11:20:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "id": "loc_01KHK4B3T0ADRESSE000000001",
            "name": "Hauptstelle",
            "note": "Verkaufsraum und Schaufenster; der Beratungsraum liegt im ersten Stock.",
            "openingHours": {
              "specialDays": [
                {
                  "closed": false,
                  "endDate": "2026-12-24",
                  "label": "Heiligabend",
                  "startDate": "2026-12-24",
                  "windows": [
                    {
                      "closes": "12:00",
                      "opens": "08:30"
                    }
                  ]
                },
                {
                  "closed": true,
                  "endDate": "2027-01-02",
                  "label": "Inventur",
                  "startDate": "2027-01-02",
                  "windows": []
                }
              ],
              "weekly": {
                "fri": [
                  {
                    "closes": "13:00",
                    "opens": "08:30"
                  },
                  {
                    "closes": "18:30",
                    "opens": "14:00"
                  }
                ],
                "mon": [
                  {
                    "closes": "13:00",
                    "opens": "08:30"
                  },
                  {
                    "closes": "18:30",
                    "opens": "14:00"
                  }
                ],
                "sat": [
                  {
                    "closes": "14:00",
                    "opens": "09:00"
                  }
                ],
                "sun": [],
                "thu": [
                  {
                    "closes": "13:00",
                    "opens": "08:30"
                  },
                  {
                    "closes": "18:30",
                    "opens": "14:00"
                  }
                ],
                "tue": [
                  {
                    "closes": "13:00",
                    "opens": "08:30"
                  },
                  {
                    "closes": "18:30",
                    "opens": "14:00"
                  }
                ],
                "wed": [
                  {
                    "closes": "13:00",
                    "opens": "08:30"
                  }
                ]
              }
            },
            "playerCount": 3,
            "region": "DE-HH",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "timeZone": "Europe/Berlin",
            "updatedAt": "2026-02-16T11:20:00.000Z",
            "venueType": "pharmacy",
            "version": 0
          }
        },
        "properties": {
          "location": {
            "properties": {
              "address": {
                "properties": {
                  "city": {
                    "maxLength": 120,
                    "minLength": 1,
                    "type": "string"
                  },
                  "country": {
                    "pattern": "^[A-Z]{2}$",
                    "type": "string"
                  },
                  "postalCode": {
                    "maxLength": 20,
                    "minLength": 1,
                    "type": "string"
                  },
                  "street": {
                    "maxLength": 200,
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "street",
                  "postalCode",
                  "city",
                  "country"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "coordinates": {
                "properties": {
                  "lat": {
                    "maximum": 90,
                    "minimum": -90,
                    "type": "number"
                  },
                  "lng": {
                    "maximum": 180,
                    "minimum": -180,
                    "type": "number"
                  }
                },
                "required": [
                  "lat",
                  "lng"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "createdById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "id": {
                "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "note": {
                "maxLength": 500,
                "type": "string"
              },
              "openingHours": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpeningHours"
                  },
                  {
                    "default": null
                  }
                ]
              },
              "playerCount": {
                "minimum": 0,
                "type": "integer"
              },
              "region": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LocationRegion"
                  },
                  {
                    "default": null
                  }
                ]
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "timeZone": {
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "venueType": {
                "default": null,
                "enum": [
                  "pharmacy",
                  "workshop",
                  "bakery",
                  "beverage_store",
                  "grocery",
                  "kiosk",
                  "fitness_studio",
                  "medical_practice",
                  "retail",
                  "other"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "version": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "id",
              "tenantId",
              "name",
              "address",
              "timeZone",
              "coordinates",
              "note",
              "createdById",
              "version",
              "createdAt",
              "updatedAt",
              "playerCount"
            ],
            "type": "object"
          }
        },
        "required": [
          "location"
        ],
        "type": "object"
      },
      "UpdateMyUiStateRequest": {
        "example": {
          "dismissed": {
            "betrieb.wartung": "2099-01-01T06:00:00.000Z"
          }
        },
        "properties": {
          "dismissed": {
            "additionalProperties": {
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            },
            "type": "object"
          }
        },
        "required": [
          "dismissed"
        ],
        "type": "object"
      },
      "UpdateMyUiStateResponse": {
        "example": {
          "dismissed": {
            "betrieb.wartung": "2099-01-01T06:00:00.000Z"
          }
        },
        "properties": {
          "dismissed": {
            "additionalProperties": {
              "format": "date-time",
              "type": "string"
            },
            "type": "object"
          }
        },
        "required": [
          "dismissed"
        ],
        "type": "object"
      },
      "UpdateNetworkParticipationRequest": {
        "example": {
          "enabled": true,
          "excludedIndustries": [
            "otc_medicine"
          ],
          "selfBillingConsent": true,
          "showNameInReports": true
        },
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "excludedIndustries": {
            "items": {
              "enum": [
                "cosmetics",
                "personal_care",
                "food_supplements",
                "otc_medicine",
                "medical_devices",
                "food_beverage",
                "automotive",
                "household",
                "services",
                "retail",
                "other"
              ],
              "type": "string"
            },
            "maxItems": 20,
            "type": "array"
          },
          "selfBillingConsent": {
            "type": "boolean"
          },
          "showNameInReports": {
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ],
        "type": "object"
      },
      "UpdatePlayerRequest": {
        "example": {
          "config": {
            "audioMuted": true,
            "brightness": 100,
            "contentFit": "contain",
            "identifyPulseColor": "#1f6f4a",
            "resolutionMode": "auto",
            "rotation": 0
          },
          "description": "Querformat-Bildschirm im Schaufenster, sichtbar von der Straße.",
          "locationId": "loc_01KHK4B3T0ADRESSE000000001",
          "name": "Schaufenster Eingang"
        },
        "properties": {
          "config": {
            "properties": {
              "audioMuted": {
                "type": "boolean"
              },
              "brightness": {
                "maximum": 100,
                "minimum": 0,
                "type": "integer"
              },
              "contentFit": {
                "anyOf": [
                  {
                    "enum": [
                      "contain"
                    ],
                    "type": "string"
                  },
                  {
                    "enum": [
                      "cover"
                    ],
                    "type": "string"
                  }
                ],
                "default": "contain"
              },
              "identifyPulseColor": {
                "pattern": "^#[0-9a-fA-F]{6}$",
                "type": "string"
              },
              "resolutionMode": {
                "anyOf": [
                  {
                    "enum": [
                      "auto"
                    ],
                    "type": "string"
                  },
                  {
                    "properties": {
                      "height": {
                        "maximum": 4320,
                        "minimum": 1,
                        "type": "integer"
                      },
                      "width": {
                        "maximum": 7680,
                        "minimum": 1,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "width",
                      "height"
                    ],
                    "type": "object"
                  }
                ]
              },
              "rotation": {
                "anyOf": [
                  {
                    "enum": [
                      0
                    ],
                    "type": "number"
                  },
                  {
                    "enum": [
                      90
                    ],
                    "type": "number"
                  },
                  {
                    "enum": [
                      180
                    ],
                    "type": "number"
                  },
                  {
                    "enum": [
                      270
                    ],
                    "type": "number"
                  }
                ]
              }
            },
            "required": [
              "audioMuted",
              "brightness",
              "rotation",
              "resolutionMode",
              "identifyPulseColor"
            ],
            "type": "object"
          },
          "description": {
            "maxLength": 500,
            "type": "string"
          },
          "locationId": {
            "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          }
        },
        "type": "object"
      },
      "UpdatePlayerResponse": {
        "example": {
          "player": {
            "config": {
              "audioMuted": true,
              "brightness": 100,
              "contentFit": "contain",
              "identifyPulseColor": "#1f6f4a",
              "resolutionMode": "auto",
              "rotation": 0
            },
            "connector": "HDMI-A-1",
            "createdAt": "2026-02-16T11:25:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "decommissionedAt": null,
            "description": "Querformat-Bildschirm im Schaufenster, sichtbar von der Straße.",
            "deviceId": "dev_01KHK32T40GERAET0000000001",
            "deviceKind": "pi",
            "geoLocation": {
              "accuracyM": 28,
              "city": "Hamburg",
              "country": "DE",
              "determinedAt": "2026-07-18T06:12:00.000Z",
              "lat": 53.5511,
              "lng": 9.9937,
              "postalCode": "22765",
              "region": "Hamburg",
              "source": "wifi",
              "street": "Bahnhofstraße 12"
            },
            "host": "szenera-os",
            "id": "ply_01KHK34MQ0SCREEN0000000001",
            "lastHeartbeatAt": "2026-07-20T09:14:32.000Z",
            "lastSnapshotHash": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95",
            "lastTelemetry": {
              "agent": {
                "buildSha": "9f41c0e7b2",
                "renderTokenExpiresAt": "2099-12-31T23:59:59.000Z",
                "version": "1.8.3"
              },
              "apps": [
                {
                  "id": "pharmacies-on-duty",
                  "installedAt": "2026-07-14T04:12:51.000Z",
                  "sizeBytes": 1248576,
                  "version": "1.4.0"
                },
                {
                  "id": "weather",
                  "installedAt": "2026-06-28T03:41:09.000Z",
                  "sizeBytes": 486400,
                  "version": "2.1.3"
                },
                {
                  "id": "opening-hours",
                  "installedAt": "2026-05-02T22:07:33.000Z",
                  "sizeBytes": 312320,
                  "version": "1.0.2"
                }
              ],
              "chromium": {
                "cdpConnected": true,
                "lastFrameAt": "2026-07-20T09:14:32.000Z",
                "memoryMb": 612,
                "state": "rendering"
              },
              "cpuTempC": 57.4,
              "disk": {
                "rootTotal": 15032385536,
                "rootUsed": 6442450944,
                "stateTotal": 120259084288,
                "stateUsed": 15032385536
              },
              "display": {
                "connected": true,
                "connector": "HDMI-A-1",
                "diagonalInch": 42.5,
                "heightPx": 2160,
                "manufacturer": "SAM",
                "model": "QM43R",
                "refreshHz": 60,
                "serial": "0BQH3CKN800142",
                "widthPx": 3840
              },
              "hardware": {
                "coreVolts": 0.9,
                "cpuCores": 4,
                "cpuModel": "Cortex-A76",
                "kernel": "6.12.96+rpt-rpi-2712",
                "model": "Raspberry Pi 5 Model B Rev 1.0",
                "serial": "10000000d4e5f6a7",
                "storageHealthPercent": 98,
                "throttledEver": false,
                "throttledNow": false
              },
              "loadAvg": [
                0.07,
                0.09,
                0.08
              ],
              "mediaCache": {
                "entries": [
                  {
                    "ageSeconds": 7412,
                    "assetId": "ast_01KW95DD30MEDEN00000000001",
                    "mediaKey": "9d4f2b8c1e07a5364bd80f9127ce5a3b6408df215c93ea7b0d6154f8a2b3c70e-webp",
                    "present": true,
                    "sizeBytes": 1884160
                  },
                  {
                    "ageSeconds": 7412,
                    "assetId": "ast_01KXJY2V30MEDEN00000000004",
                    "mediaKey": "8b3c07e2f5914da6c0b78e34215fd9c608a7b3e1420d95f6ca87b0e39d152c4f-webp",
                    "present": true,
                    "sizeBytes": 428241
                  },
                  {
                    "assetId": "ast_01KKEQYSM0MEDEN00000000002",
                    "mediaKey": "41a7c0e93b2d58f6041e7cb85d29a3f70c6b1948de52370af8b6c1d094e2537a-playback",
                    "present": false,
                    "sizeBytes": 262227456
                  }
                ],
                "entryCount": 3,
                "limitBytes": 10737418240,
                "overflowBytes": 0,
                "presentCount": 2,
                "requiredBytes": 264539857,
                "usedBytes": 2312401
              },
              "memory": {
                "freeMb": 6656,
                "total": 8192,
                "used": 1536
              },
              "network": {
                "apiLatencyMs": 76,
                "apiReachable": true,
                "gateway": "192.0.2.1",
                "iface": "wlan0",
                "ip": "192.0.2.24",
                "macAddress": "2c:cf:67:92:fb:76",
                "tailscaleConnected": false,
                "wifiChannel": 36,
                "wifiFrequencyMhz": 5180,
                "wifiSignal": -68,
                "wifiSsid": "Apotheke-Backoffice",
                "wifiTxRateMbps": 433.3
              },
              "rauc": {
                "bootedFromTryboot": false,
                "currentSlot": "A",
                "lastSuccessAt": "2026-07-20T09:14:32.000Z"
              },
              "renderer": {
                "activatedAt": "2026-07-20T08:27:00.000Z",
                "build": "c41e09a7f2b3",
                "capabilities": [
                  "adPods"
                ],
                "failures": 0,
                "linkOnline": false,
                "profile": "modern",
                "releaseSeq": 41,
                "resilience": "fresh",
                "source": "bundle",
                "state": "scene",
                "version": "0.4.12"
              },
              "screens": [
                {
                  "chromium": {
                    "cdpConnected": false,
                    "state": "rendering"
                  },
                  "powerIntent": "on",
                  "powerState": "on",
                  "renderer": {
                    "failures": 0,
                    "linkOnline": false,
                    "resilience": "fresh",
                    "state": "scene"
                  },
                  "screenIndex": 0
                }
              ],
              "snapshot": {
                "lastCheckedAt": "2026-07-20T09:12:04.000Z",
                "lastRefreshAt": "2026-07-20T06:00:12.000Z",
                "manifestHash": "7c1e4b9a0d3f56882ae41d0bb5c9f27340a6e8d1c2b7590f3ea48d61c07b2f95",
                "stale": false
              },
              "time": {
                "ntpSynchronized": true,
                "offsetMs": 12,
                "timezone": "Europe/Berlin"
              },
              "uptime": 431520
            },
            "locationId": "loc_01KHK4B3T0ADRESSE000000001",
            "name": "Schaufenster Eingang",
            "otaState": {
              "bootDurationMs": 41200,
              "installedVersion": "2026.6.1",
              "lastError": null,
              "lastTransitionAt": "2026-07-16T02:14:38.000Z",
              "phase": "completed",
              "rollbackReason": null,
              "targetVersion": "2026.6.1"
            },
            "screenIndex": 0,
            "status": "online",
            "suspendedAt": null,
            "suspendedReason": null,
            "tagIds": [
              "ptg_01KHK403M0TAG0000000000001"
            ],
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-20T09:15:00.000Z",
            "version": 8
          }
        },
        "properties": {
          "player": {
            "properties": {
              "config": {
                "properties": {
                  "audioMuted": {
                    "type": "boolean"
                  },
                  "brightness": {
                    "maximum": 100,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "contentFit": {
                    "anyOf": [
                      {
                        "enum": [
                          "contain"
                        ],
                        "type": "string"
                      },
                      {
                        "enum": [
                          "cover"
                        ],
                        "type": "string"
                      }
                    ],
                    "default": "contain"
                  },
                  "identifyPulseColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  },
                  "resolutionMode": {
                    "anyOf": [
                      {
                        "enum": [
                          "auto"
                        ],
                        "type": "string"
                      },
                      {
                        "properties": {
                          "height": {
                            "maximum": 4320,
                            "minimum": 1,
                            "type": "integer"
                          },
                          "width": {
                            "maximum": 7680,
                            "minimum": 1,
                            "type": "integer"
                          }
                        },
                        "required": [
                          "width",
                          "height"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "rotation": {
                    "anyOf": [
                      {
                        "enum": [
                          0
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          90
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          180
                        ],
                        "type": "number"
                      },
                      {
                        "enum": [
                          270
                        ],
                        "type": "number"
                      }
                    ]
                  }
                },
                "required": [
                  "audioMuted",
                  "brightness",
                  "rotation",
                  "resolutionMode",
                  "identifyPulseColor"
                ],
                "type": "object"
              },
              "connector": {
                "maxLength": 32,
                "minLength": 1,
                "type": [
                  "string",
                  "null"
                ]
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "createdById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "decommissionedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "description": {
                "maxLength": 500,
                "type": "string"
              },
              "deviceId": {
                "pattern": "^dev_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "deviceKind": {
                "enum": [
                  "pi",
                  "browser"
                ],
                "type": "string"
              },
              "geoLocation": {
                "properties": {
                  "accuracyM": {
                    "minimum": 0,
                    "type": "number"
                  },
                  "city": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "country": {
                    "maxLength": 2,
                    "minLength": 2,
                    "type": "string"
                  },
                  "determinedAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "lat": {
                    "maximum": 90,
                    "minimum": -90,
                    "type": "number"
                  },
                  "lng": {
                    "maximum": 180,
                    "minimum": -180,
                    "type": "number"
                  },
                  "postalCode": {
                    "maxLength": 20,
                    "type": "string"
                  },
                  "region": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "source": {
                    "enum": [
                      "wifi",
                      "ip",
                      "manual"
                    ],
                    "type": "string"
                  },
                  "street": {
                    "maxLength": 200,
                    "type": "string"
                  }
                },
                "required": [
                  "lat",
                  "lng",
                  "accuracyM",
                  "source",
                  "determinedAt"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "host": {
                "enum": [
                  "szenera-os",
                  "fire-tv",
                  "tizen",
                  "webos",
                  "web-display"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^ply_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "lastHeartbeatAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastSnapshotHash": {
                "maxLength": 128,
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastTelemetry": {
                "properties": {
                  "agent": {
                    "properties": {
                      "buildSha": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "renderTokenExpiresAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "version": {
                        "maxLength": 100,
                        "type": "string"
                      }
                    },
                    "required": [
                      "version"
                    ],
                    "type": "object"
                  },
                  "appFailures": {
                    "items": {
                      "properties": {
                        "id": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "reason": {
                          "enum": [
                            "missing",
                            "rejected",
                            "failed"
                          ],
                          "type": "string"
                        },
                        "since": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "version": {
                          "maxLength": 64,
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "version",
                        "reason",
                        "since"
                      ],
                      "type": "object"
                    },
                    "maxItems": 20,
                    "type": "array"
                  },
                  "apps": {
                    "items": {
                      "properties": {
                        "id": {
                          "maxLength": 64,
                          "type": "string"
                        },
                        "installedAt": {
                          "format": "date-time",
                          "type": "string"
                        },
                        "sizeBytes": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "version": {
                          "maxLength": 64,
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "version"
                      ],
                      "type": "object"
                    },
                    "maxItems": 50,
                    "type": "array"
                  },
                  "chromium": {
                    "properties": {
                      "cdpConnected": {
                        "type": "boolean"
                      },
                      "lastFrameAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "memoryMb": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "state": {
                        "enum": [
                          "rendering",
                          "pairing",
                          "hung",
                          "starting",
                          "stopped",
                          "unplugged"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "state"
                    ],
                    "type": "object"
                  },
                  "cpuTempC": {
                    "type": "number"
                  },
                  "disk": {
                    "properties": {
                      "rootTotal": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "rootUsed": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "stateTotal": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "stateUsed": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "rootUsed",
                      "rootTotal",
                      "stateUsed",
                      "stateTotal"
                    ],
                    "type": "object"
                  },
                  "display": {
                    "properties": {
                      "connected": {
                        "type": "boolean"
                      },
                      "connector": {
                        "maxLength": 30,
                        "type": "string"
                      },
                      "diagonalInch": {
                        "type": "number"
                      },
                      "heightPx": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "manufacturer": {
                        "maxLength": 60,
                        "type": "string"
                      },
                      "model": {
                        "maxLength": 60,
                        "type": "string"
                      },
                      "refreshHz": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "serial": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "widthPx": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "hardware": {
                    "properties": {
                      "coreVolts": {
                        "type": "number"
                      },
                      "cpuCores": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "cpuModel": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "kernel": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "model": {
                        "maxLength": 120,
                        "type": "string"
                      },
                      "serial": {
                        "maxLength": 64,
                        "type": "string"
                      },
                      "storageHealthPercent": {
                        "maximum": 100,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "throttledEver": {
                        "type": "boolean"
                      },
                      "throttledNow": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "loadAvg": {
                    "items": {
                      "minimum": 0,
                      "type": "number"
                    },
                    "maxItems": 3,
                    "type": "array"
                  },
                  "mediaCache": {
                    "properties": {
                      "entries": {
                        "items": {
                          "properties": {
                            "ageSeconds": {
                              "minimum": 0,
                              "type": "integer"
                            },
                            "assetId": {
                              "maxLength": 30,
                              "type": "string"
                            },
                            "mediaKey": {
                              "maxLength": 128,
                              "minLength": 1,
                              "type": "string"
                            },
                            "present": {
                              "type": "boolean"
                            },
                            "sizeBytes": {
                              "minimum": 0,
                              "type": "integer"
                            }
                          },
                          "required": [
                            "mediaKey",
                            "present"
                          ],
                          "type": "object"
                        },
                        "maxItems": 200,
                        "type": "array"
                      },
                      "entryCount": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "limitBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "overflowBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "presentCount": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "requiredBytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "usedBytes": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "limitBytes",
                      "usedBytes",
                      "requiredBytes",
                      "overflowBytes",
                      "entryCount",
                      "presentCount"
                    ],
                    "type": "object"
                  },
                  "memory": {
                    "properties": {
                      "freeMb": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "total": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "used": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "total",
                      "used",
                      "freeMb"
                    ],
                    "type": "object"
                  },
                  "network": {
                    "properties": {
                      "apiLatencyMs": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "apiReachable": {
                        "type": "boolean"
                      },
                      "gateway": {
                        "maxLength": 45,
                        "type": "string"
                      },
                      "iface": {
                        "maxLength": 20,
                        "type": "string"
                      },
                      "ip": {
                        "maxLength": 45,
                        "type": "string"
                      },
                      "macAddress": {
                        "maxLength": 17,
                        "type": "string"
                      },
                      "tailscaleConnected": {
                        "type": "boolean"
                      },
                      "wifiChannel": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "wifiFrequencyMhz": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "wifiSignal": {
                        "type": "integer"
                      },
                      "wifiSsid": {
                        "maxLength": 100,
                        "type": "string"
                      },
                      "wifiTxRateMbps": {
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "type": "object"
                  },
                  "rauc": {
                    "properties": {
                      "bootedFromTryboot": {
                        "type": "boolean"
                      },
                      "currentSlot": {
                        "maxLength": 50,
                        "type": "string"
                      },
                      "lastSuccessAt": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "required": [
                      "currentSlot",
                      "bootedFromTryboot"
                    ],
                    "type": "object"
                  },
                  "renderer": {
                    "properties": {
                      "activatedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "build": {
                        "pattern": "^[0-9a-f]{12}$",
                        "type": "string"
                      },
                      "capabilities": {
                        "items": {
                          "maxLength": 32,
                          "minLength": 1,
                          "type": "string"
                        },
                        "maxItems": 32,
                        "type": "array"
                      },
                      "failures": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "linkOnline": {
                        "type": "boolean"
                      },
                      "profile": {
                        "enum": [
                          "modern",
                          "legacy"
                        ],
                        "type": "string"
                      },
                      "releaseSeq": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      },
                      "resilience": {
                        "enum": [
                          "fresh",
                          "stale-but-served",
                          "last-known-good",
                          "loading",
                          "error"
                        ],
                        "type": "string"
                      },
                      "source": {
                        "enum": [
                          "bundle",
                          "hosted"
                        ],
                        "type": "string"
                      },
                      "state": {
                        "enum": [
                          "scene",
                          "pairing",
                          "unassigned",
                          "loading",
                          "error",
                          "disconnected"
                        ],
                        "type": "string"
                      },
                      "version": {
                        "maxLength": 40,
                        "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "state"
                    ],
                    "type": "object"
                  },
                  "screens": {
                    "items": {
                      "properties": {
                        "chromium": {
                          "properties": {
                            "cdpConnected": {
                              "type": "boolean"
                            },
                            "state": {
                              "enum": [
                                "rendering",
                                "pairing",
                                "hung",
                                "starting",
                                "stopped",
                                "unplugged"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "state"
                          ],
                          "type": "object"
                        },
                        "powerIntent": {
                          "enum": [
                            "on",
                            "standby"
                          ],
                          "type": "string"
                        },
                        "powerState": {
                          "enum": [
                            "on",
                            "standby",
                            "unknown"
                          ],
                          "type": "string"
                        },
                        "renderer": {
                          "properties": {
                            "failures": {
                              "minimum": 0,
                              "type": "integer"
                            },
                            "linkOnline": {
                              "type": "boolean"
                            },
                            "resilience": {
                              "enum": [
                                "fresh",
                                "stale-but-served",
                                "last-known-good",
                                "loading",
                                "error"
                              ],
                              "type": "string"
                            },
                            "state": {
                              "enum": [
                                "scene",
                                "pairing",
                                "unassigned",
                                "loading",
                                "error",
                                "disconnected"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "state"
                          ],
                          "type": "object"
                        },
                        "screenIndex": {
                          "maximum": 7,
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "screenIndex"
                      ],
                      "type": "object"
                    },
                    "maxItems": 8,
                    "type": "array"
                  },
                  "snapshot": {
                    "properties": {
                      "lastCheckedAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "lastRefreshAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "manifestHash": {
                        "maxLength": 128,
                        "type": "string"
                      },
                      "stale": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "manifestHash",
                      "stale",
                      "lastRefreshAt"
                    ],
                    "type": "object"
                  },
                  "time": {
                    "properties": {
                      "ntpSynchronized": {
                        "type": "boolean"
                      },
                      "offsetMs": {
                        "type": "integer"
                      },
                      "timezone": {
                        "maxLength": 60,
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uptime": {
                    "minimum": 0,
                    "type": "integer"
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "locationId": {
                "pattern": "^loc_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "otaState": {
                "properties": {
                  "bootDurationMs": {
                    "minimum": 0,
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "installedVersion": {
                    "maxLength": 100,
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "lastError": {
                    "properties": {
                      "at": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "code": {
                        "maxLength": 100,
                        "type": "string"
                      },
                      "message": {
                        "maxLength": 500,
                        "type": "string"
                      }
                    },
                    "required": [
                      "code",
                      "message",
                      "at"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "lastTransitionAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "phase": {
                    "enum": [
                      "idle",
                      "downloading",
                      "installing",
                      "tryboot-waiting",
                      "completed",
                      "rolled-back",
                      "failed"
                    ],
                    "type": "string"
                  },
                  "rollbackReason": {
                    "maxLength": 500,
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "targetVersion": {
                    "maxLength": 100,
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "phase",
                  "targetVersion",
                  "installedVersion",
                  "lastTransitionAt",
                  "lastError",
                  "bootDurationMs",
                  "rollbackReason"
                ],
                "type": "object"
              },
              "screenIndex": {
                "maximum": 7,
                "minimum": 0,
                "type": "integer"
              },
              "status": {
                "enum": [
                  "online",
                  "stale",
                  "offline",
                  "paired-not-claimed",
                  "suspended",
                  "decommissioned"
                ],
                "type": "string"
              },
              "suspendedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "suspendedReason": {
                "enum": [
                  "tenant",
                  "quota"
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "tagIds": {
                "items": {
                  "pattern": "^ptg_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "maxItems": 50,
                "type": "array"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "version": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "id",
              "tenantId",
              "deviceId",
              "connector",
              "screenIndex",
              "name",
              "description",
              "tagIds",
              "locationId",
              "config",
              "status",
              "suspendedReason",
              "lastHeartbeatAt",
              "createdById",
              "createdAt",
              "updatedAt",
              "decommissionedAt",
              "version",
              "geoLocation",
              "lastSnapshotHash",
              "lastTelemetry",
              "otaState"
            ],
            "type": "object"
          }
        },
        "required": [
          "player"
        ],
        "type": "object"
      },
      "UpdatePlayerTagRequest": {
        "example": {
          "color": "#2b5c8a",
          "name": "Hochformat"
        },
        "properties": {
          "color": {
            "pattern": "^#[0-9a-fA-F]{6}$",
            "type": "string"
          },
          "name": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string"
          }
        },
        "type": "object"
      },
      "UpdatePlayerTagResponse": {
        "example": {
          "tag": {
            "color": "#2b5c8a",
            "createdAt": "2026-02-16T11:41:00.000Z",
            "id": "ptg_01KHK41Y70TAG0000000000002",
            "name": "Hochformat",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001"
          }
        },
        "properties": {
          "tag": {
            "properties": {
              "color": {
                "pattern": "^#[0-9a-fA-F]{6}$",
                "type": "string"
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "id": {
                "pattern": "^ptg_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "name": {
                "maxLength": 50,
                "minLength": 1,
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              }
            },
            "required": [
              "id",
              "tenantId",
              "name",
              "color",
              "createdAt"
            ],
            "type": "object"
          }
        },
        "required": [
          "tag"
        ],
        "type": "object"
      },
      "UpdatePlaylistRequest": {
        "example": {
          "defaultItemDurationMs": 20000,
          "defaultTransition": {
            "durationMs": 400,
            "kind": "fade"
          },
          "description": "Begrüßung und Wochenangebot im Wechsel — läuft während der Öffnungszeiten.",
          "items": [
            {
              "durationMs": 25000,
              "id": "pli_01KWV921QGENTRY00000000002",
              "kind": "scene",
              "sceneId": "scn_01KJWKGJM0SZENE00000000002",
              "sceneVersionId": "scv_01KXD78M20VERSN00000000002",
              "transition": {
                "durationMs": 400,
                "kind": "fade"
              }
            }
          ],
          "name": "Tagesprogramm",
          "source": {
            "kind": "manual"
          }
        },
        "properties": {
          "defaultItemDurationMs": {
            "maximum": 86400000,
            "minimum": 1000,
            "type": "integer"
          },
          "defaultTransition": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "none"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "durationMs": {
                    "maximum": 60000,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "fade"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "durationMs"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "direction": {
                    "enum": [
                      "left",
                      "right",
                      "up",
                      "down"
                    ],
                    "type": "string"
                  },
                  "durationMs": {
                    "maximum": 60000,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "slide"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "durationMs"
                ],
                "type": "object"
              }
            ]
          },
          "description": {
            "maxLength": 2000,
            "type": "string"
          },
          "items": {
            "items": {
              "oneOf": [
                {
                  "properties": {
                    "durationMs": {
                      "default": null,
                      "maximum": 86400000,
                      "minimum": 1000,
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "id": {
                      "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "kind": {
                      "enum": [
                        "scene"
                      ],
                      "type": "string"
                    },
                    "sceneId": {
                      "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "sceneVersionId": {
                      "default": null,
                      "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "transition": {
                      "default": null,
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "none"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "fade"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "direction": {
                              "enum": [
                                "left",
                                "right",
                                "up",
                                "down"
                              ],
                              "type": "string"
                            },
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "slide"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "sceneId"
                  ],
                  "type": "object"
                },
                {
                  "properties": {
                    "assetId": {
                      "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "durationMs": {
                      "default": null,
                      "maximum": 86400000,
                      "minimum": 1000,
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "fit": {
                      "default": "cover",
                      "enum": [
                        "cover",
                        "contain"
                      ],
                      "type": "string"
                    },
                    "id": {
                      "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "kind": {
                      "enum": [
                        "asset"
                      ],
                      "type": "string"
                    },
                    "transition": {
                      "default": null,
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "none"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "fade"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "direction": {
                              "enum": [
                                "left",
                                "right",
                                "up",
                                "down"
                              ],
                              "type": "string"
                            },
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "slide"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "assetId"
                  ],
                  "type": "object"
                },
                {
                  "properties": {
                    "fallback": {
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "scene"
                              ],
                              "type": "string"
                            },
                            "sceneId": {
                              "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            },
                            "sceneVersionId": {
                              "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "kind",
                            "sceneId",
                            "sceneVersionId"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "assetId": {
                              "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            },
                            "fit": {
                              "default": "cover",
                              "enum": [
                                "cover",
                                "contain"
                              ],
                              "type": "string"
                            },
                            "kind": {
                              "enum": [
                                "asset"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "assetId"
                          ],
                          "type": "object"
                        }
                      ]
                    },
                    "id": {
                      "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "kind": {
                      "enum": [
                        "adPod"
                      ],
                      "type": "string"
                    },
                    "networkPositions": {
                      "default": 0,
                      "maximum": 12,
                      "minimum": 0,
                      "type": "integer"
                    },
                    "positions": {
                      "maximum": 12,
                      "minimum": 1,
                      "type": "integer"
                    },
                    "spotDurationMs": {
                      "enum": [
                        5000,
                        10000,
                        15000,
                        20000,
                        30000
                      ],
                      "type": "integer"
                    },
                    "transition": {
                      "default": null,
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "none"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "fade"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "direction": {
                              "enum": [
                                "left",
                                "right",
                                "up",
                                "down"
                              ],
                              "type": "string"
                            },
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "slide"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "positions",
                    "spotDurationMs",
                    "fallback"
                  ],
                  "type": "object"
                }
              ]
            },
            "maxItems": 100,
            "type": "array"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "source": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "manual"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "folderId": {
                    "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "includeSubfolders": {
                    "default": true,
                    "type": "boolean"
                  },
                  "kind": {
                    "enum": [
                      "folder"
                    ],
                    "type": "string"
                  },
                  "mediaKinds": {
                    "default": [
                      "image",
                      "video"
                    ],
                    "items": {
                      "enum": [
                        "image",
                        "video"
                      ],
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "sortBy": {
                    "default": "name-asc",
                    "enum": [
                      "name-asc",
                      "name-desc",
                      "created-desc",
                      "created-asc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "folderId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "tags"
                    ],
                    "type": "string"
                  },
                  "mediaKinds": {
                    "default": [
                      "image",
                      "video"
                    ],
                    "items": {
                      "enum": [
                        "image",
                        "video"
                      ],
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "sortBy": {
                    "default": "name-asc",
                    "enum": [
                      "name-asc",
                      "name-desc",
                      "created-desc",
                      "created-asc"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "items": {
                      "maxLength": 50,
                      "minLength": 1,
                      "type": "string"
                    },
                    "maxItems": 10,
                    "minItems": 1,
                    "type": "array"
                  }
                },
                "required": [
                  "kind",
                  "tags"
                ],
                "type": "object"
              }
            ]
          }
        },
        "type": "object"
      },
      "UpdatePlaylistResponse": {
        "example": {
          "autoSummary": null,
          "createdAt": "2026-07-06T08:35:00.000Z",
          "createdById": "usr_01KFB7QPW0TEAM000000000002",
          "defaultItemDurationMs": 20000,
          "defaultTransition": {
            "durationMs": 400,
            "kind": "fade"
          },
          "description": "Begrüßung und Wochenangebot im Wechsel — läuft während der Öffnungszeiten.",
          "id": "pll_01KWV91ZS0PRGRAMM000000001",
          "items": [
            {
              "durationMs": 20000,
              "id": "pli_01KWV920R8ENTRY00000000001",
              "kind": "scene",
              "order": 0,
              "sceneId": "scn_01KJPX8NH0SZENE00000000001",
              "sceneVersionId": "scv_01KWV8RTT0VERSN00000000001",
              "transition": {
                "durationMs": 400,
                "kind": "fade"
              }
            },
            {
              "durationMs": 25000,
              "id": "pli_01KWV921QGENTRY00000000002",
              "kind": "scene",
              "order": 1,
              "sceneId": "scn_01KJWKGJM0SZENE00000000002",
              "sceneVersionId": "scv_01KXD78M20VERSN00000000002",
              "transition": {
                "durationMs": 400,
                "kind": "fade"
              }
            }
          ],
          "name": "Tagesprogramm",
          "source": {
            "kind": "manual"
          },
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-20T08:31:00.000Z",
          "version": 7
        },
        "properties": {
          "autoSummary": {
            "properties": {
              "capped": {
                "type": "boolean"
              },
              "count": {
                "minimum": 0,
                "type": "integer"
              },
              "firstItems": {
                "items": {
                  "oneOf": [
                    {
                      "properties": {
                        "durationMs": {
                          "maximum": 86400000,
                          "minimum": 1000,
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "id": {
                          "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "kind": {
                          "enum": [
                            "scene"
                          ],
                          "type": "string"
                        },
                        "order": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "sceneId": {
                          "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "sceneVersionId": {
                          "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "transition": {
                          "oneOf": [
                            {
                              "properties": {
                                "kind": {
                                  "enum": [
                                    "none"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "fade"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "direction": {
                                  "enum": [
                                    "left",
                                    "right",
                                    "up",
                                    "down"
                                  ],
                                  "type": "string"
                                },
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "slide"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "kind",
                        "id",
                        "sceneId",
                        "sceneVersionId",
                        "durationMs",
                        "transition",
                        "order"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "assetId": {
                          "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "durationMs": {
                          "maximum": 86400000,
                          "minimum": 1000,
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "fit": {
                          "default": "cover",
                          "enum": [
                            "cover",
                            "contain"
                          ],
                          "type": "string"
                        },
                        "id": {
                          "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "kind": {
                          "enum": [
                            "asset"
                          ],
                          "type": "string"
                        },
                        "order": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "transition": {
                          "oneOf": [
                            {
                              "properties": {
                                "kind": {
                                  "enum": [
                                    "none"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "fade"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "direction": {
                                  "enum": [
                                    "left",
                                    "right",
                                    "up",
                                    "down"
                                  ],
                                  "type": "string"
                                },
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "slide"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "kind",
                        "id",
                        "assetId",
                        "durationMs",
                        "transition",
                        "order"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "fallback": {
                          "oneOf": [
                            {
                              "properties": {
                                "kind": {
                                  "enum": [
                                    "scene"
                                  ],
                                  "type": "string"
                                },
                                "sceneId": {
                                  "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                                  "type": "string"
                                },
                                "sceneVersionId": {
                                  "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                }
                              },
                              "required": [
                                "kind",
                                "sceneId",
                                "sceneVersionId"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "assetId": {
                                  "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                                  "type": "string"
                                },
                                "fit": {
                                  "default": "cover",
                                  "enum": [
                                    "cover",
                                    "contain"
                                  ],
                                  "type": "string"
                                },
                                "kind": {
                                  "enum": [
                                    "asset"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "assetId"
                              ],
                              "type": "object"
                            }
                          ]
                        },
                        "id": {
                          "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        "kind": {
                          "enum": [
                            "adPod"
                          ],
                          "type": "string"
                        },
                        "networkPositions": {
                          "maximum": 12,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "order": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "positions": {
                          "maximum": 12,
                          "minimum": 1,
                          "type": "integer"
                        },
                        "spotDurationMs": {
                          "enum": [
                            5000,
                            10000,
                            15000,
                            20000,
                            30000
                          ],
                          "type": "integer"
                        },
                        "transition": {
                          "oneOf": [
                            {
                              "properties": {
                                "kind": {
                                  "enum": [
                                    "none"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "fade"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "properties": {
                                "direction": {
                                  "enum": [
                                    "left",
                                    "right",
                                    "up",
                                    "down"
                                  ],
                                  "type": "string"
                                },
                                "durationMs": {
                                  "maximum": 60000,
                                  "minimum": 0,
                                  "type": "integer"
                                },
                                "kind": {
                                  "enum": [
                                    "slide"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "kind",
                                "durationMs"
                              ],
                              "type": "object"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "kind",
                        "id",
                        "positions",
                        "networkPositions",
                        "spotDurationMs",
                        "fallback",
                        "transition",
                        "order"
                      ],
                      "type": "object"
                    }
                  ]
                },
                "maxItems": 3,
                "type": "array"
              }
            },
            "required": [
              "count",
              "capped",
              "firstItems"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "createdById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "defaultItemDurationMs": {
            "maximum": 86400000,
            "minimum": 1000,
            "type": "integer"
          },
          "defaultTransition": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "none"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "durationMs": {
                    "maximum": 60000,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "fade"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "durationMs"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "direction": {
                    "enum": [
                      "left",
                      "right",
                      "up",
                      "down"
                    ],
                    "type": "string"
                  },
                  "durationMs": {
                    "maximum": 60000,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "slide"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "durationMs"
                ],
                "type": "object"
              }
            ]
          },
          "description": {
            "maxLength": 2000,
            "type": "string"
          },
          "id": {
            "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "items": {
            "items": {
              "oneOf": [
                {
                  "properties": {
                    "durationMs": {
                      "maximum": 86400000,
                      "minimum": 1000,
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "id": {
                      "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "kind": {
                      "enum": [
                        "scene"
                      ],
                      "type": "string"
                    },
                    "order": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "sceneId": {
                      "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "sceneVersionId": {
                      "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "transition": {
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "none"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "fade"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "direction": {
                              "enum": [
                                "left",
                                "right",
                                "up",
                                "down"
                              ],
                              "type": "string"
                            },
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "slide"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "id",
                    "sceneId",
                    "sceneVersionId",
                    "durationMs",
                    "transition",
                    "order"
                  ],
                  "type": "object"
                },
                {
                  "properties": {
                    "assetId": {
                      "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "durationMs": {
                      "maximum": 86400000,
                      "minimum": 1000,
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "fit": {
                      "default": "cover",
                      "enum": [
                        "cover",
                        "contain"
                      ],
                      "type": "string"
                    },
                    "id": {
                      "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "kind": {
                      "enum": [
                        "asset"
                      ],
                      "type": "string"
                    },
                    "order": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "transition": {
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "none"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "fade"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "direction": {
                              "enum": [
                                "left",
                                "right",
                                "up",
                                "down"
                              ],
                              "type": "string"
                            },
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "slide"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "id",
                    "assetId",
                    "durationMs",
                    "transition",
                    "order"
                  ],
                  "type": "object"
                },
                {
                  "properties": {
                    "fallback": {
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "scene"
                              ],
                              "type": "string"
                            },
                            "sceneId": {
                              "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            },
                            "sceneVersionId": {
                              "pattern": "^scv_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "kind",
                            "sceneId",
                            "sceneVersionId"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "assetId": {
                              "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            },
                            "fit": {
                              "default": "cover",
                              "enum": [
                                "cover",
                                "contain"
                              ],
                              "type": "string"
                            },
                            "kind": {
                              "enum": [
                                "asset"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "assetId"
                          ],
                          "type": "object"
                        }
                      ]
                    },
                    "id": {
                      "pattern": "^pli_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "kind": {
                      "enum": [
                        "adPod"
                      ],
                      "type": "string"
                    },
                    "networkPositions": {
                      "maximum": 12,
                      "minimum": 0,
                      "type": "integer"
                    },
                    "order": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "positions": {
                      "maximum": 12,
                      "minimum": 1,
                      "type": "integer"
                    },
                    "spotDurationMs": {
                      "enum": [
                        5000,
                        10000,
                        15000,
                        20000,
                        30000
                      ],
                      "type": "integer"
                    },
                    "transition": {
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "none"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "fade"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "direction": {
                              "enum": [
                                "left",
                                "right",
                                "up",
                                "down"
                              ],
                              "type": "string"
                            },
                            "durationMs": {
                              "maximum": 60000,
                              "minimum": 0,
                              "type": "integer"
                            },
                            "kind": {
                              "enum": [
                                "slide"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "durationMs"
                          ],
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "id",
                    "positions",
                    "networkPositions",
                    "spotDurationMs",
                    "fallback",
                    "transition",
                    "order"
                  ],
                  "type": "object"
                }
              ]
            },
            "type": "array"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "source": {
            "default": {
              "kind": "manual"
            },
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "manual"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "folderId": {
                    "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "includeSubfolders": {
                    "default": true,
                    "type": "boolean"
                  },
                  "kind": {
                    "enum": [
                      "folder"
                    ],
                    "type": "string"
                  },
                  "mediaKinds": {
                    "default": [
                      "image",
                      "video"
                    ],
                    "items": {
                      "enum": [
                        "image",
                        "video"
                      ],
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "sortBy": {
                    "default": "name-asc",
                    "enum": [
                      "name-asc",
                      "name-desc",
                      "created-desc",
                      "created-asc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "folderId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "tags"
                    ],
                    "type": "string"
                  },
                  "mediaKinds": {
                    "default": [
                      "image",
                      "video"
                    ],
                    "items": {
                      "enum": [
                        "image",
                        "video"
                      ],
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "sortBy": {
                    "default": "name-asc",
                    "enum": [
                      "name-asc",
                      "name-desc",
                      "created-desc",
                      "created-asc"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "items": {
                      "maxLength": 50,
                      "minLength": 1,
                      "type": "string"
                    },
                    "maxItems": 10,
                    "minItems": 1,
                    "type": "array"
                  }
                },
                "required": [
                  "kind",
                  "tags"
                ],
                "type": "object"
              }
            ]
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "tenantId",
          "name",
          "description",
          "items",
          "defaultItemDurationMs",
          "defaultTransition",
          "createdById",
          "createdAt",
          "updatedAt",
          "version"
        ],
        "type": "object"
      },
      "UpdatePreferencesRequest": {
        "example": {
          "digestCadence": "daily",
          "quietHours": {
            "enabled": true,
            "end": "07:00",
            "includeWeekends": true,
            "start": "20:00"
          },
          "updates": [
            {
              "channels": {
                "email": "immediate",
                "inApp": true
              },
              "kind": "fleet.player-offline"
            },
            {
              "channels": {
                "email": "off",
                "inApp": true
              },
              "kind": "fleet.command-failed"
            }
          ]
        },
        "properties": {
          "digestCadence": {
            "description": "Takt der Zusammenfassung: off, daily (08:00 Uhr) oder weekly (montags 08:00 Uhr), jeweils in der Zeitzone des Kontos.",
            "enum": [
              "off",
              "daily",
              "weekly"
            ],
            "type": "string"
          },
          "quietHours": {
            "$ref": "#/components/schemas/QuietHours"
          },
          "updates": {
            "description": "Liste von { kind, channels }. Die frühere Einzelform { kind, channels } auf oberster Ebene wird nicht mehr angenommen.",
            "items": {
              "properties": {
                "channels": {
                  "properties": {
                    "email": {
                      "enum": [
                        "off",
                        "immediate",
                        "digest"
                      ],
                      "type": "string"
                    },
                    "inApp": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "inApp",
                    "email"
                  ],
                  "type": "object"
                },
                "kind": {
                  "enum": [
                    "invitation.accepted",
                    "invitation.expired",
                    "join-request.received",
                    "security.theft-detected",
                    "security.impersonation-started",
                    "security.password-changed",
                    "security.mfa-disabled",
                    "security.sso-changed",
                    "security.api-key-created",
                    "security.custom-domain-removed",
                    "identity.role-changed",
                    "billing.invoice-paid",
                    "billing.invoice-issued",
                    "billing.payment-failed",
                    "billing.past-due",
                    "billing.trial-ending",
                    "billing.frozen",
                    "billing.unfrozen",
                    "billing.vat-id-invalid",
                    "billing.license-conflict",
                    "billing.override-ending",
                    "billing.change-failed",
                    "billing.cancel-scheduled",
                    "analytics.report-failed",
                    "analytics.report-ready",
                    "audit.export-ready",
                    "media.processing-failed",
                    "composition.integrity-issue",
                    "fleet.player-offline",
                    "fleet.command-failed",
                    "identity.device-reregistration-requested",
                    "integrations.cloud-connection-broken",
                    "integrations.webhook-disabled",
                    "marketplace.pending-reacceptance",
                    "app-catalog.release-retired",
                    "marketplace.release-switched",
                    "marketplace.install-requested",
                    "marketplace.update-decision-requested",
                    "marketplace.app-installed",
                    "marketplace.update-declined",
                    "marketplace.data-deletion-scheduled",
                    "tenancy.suspended",
                    "tenancy.deletion-warning",
                    "tenancy.reactivated",
                    "tenancy.custom-domain-verified",
                    "tenancy.sso-break-glass-used",
                    "ops.maintenance",
                    "ops.maintenance-canceled",
                    "ops.incident",
                    "ops.incident-resolved",
                    "ops.broadcast"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "kind",
                "channels"
              ],
              "type": "object"
            },
            "maxItems": 51,
            "minItems": 1,
            "type": "array"
          }
        },
        "type": "object"
      },
      "UpdatePreferencesResponse": {
        "example": {
          "digestCadence": "daily",
          "effective": {
            "analytics.report-failed": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "initiator",
                "permission": "analytics.report.create"
              }
            },
            "analytics.report-ready": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "initiator",
                "permission": "analytics.report.create"
              }
            },
            "app-catalog.release-retired": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "audit.export-ready": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "initiator",
                "permission": "audit.export.create"
              }
            },
            "billing.cancel-scheduled": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.change-failed": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.frozen": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.invoice-issued": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.invoice-paid": {
              "email": "digest",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.license-conflict": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.override-ending": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.past-due": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.payment-failed": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.trial-ending": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.unfrozen": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "billing.vat-id-invalid": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "composition.integrity-issue": {
              "email": "digest",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "fleet.command-failed": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "initiator",
                "permission": "fleet.player.command.issue"
              }
            },
            "fleet.player-offline": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": true,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "identity.device-reregistration-requested": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": true,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "identity.role-changed": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "own-account",
                "permission": null
              }
            },
            "integrations.cloud-connection-broken": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": true,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "integrations.webhook-disabled": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": true,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "invitation.accepted": {
              "email": "off",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "initiator",
                "permission": "identity.user.invite"
              }
            },
            "invitation.expired": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "initiator",
                "permission": "identity.user.invite"
              }
            },
            "join-request.received": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "marketplace.app-installed": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "initiator",
                "permission": "marketplace.app.request"
              }
            },
            "marketplace.data-deletion-scheduled": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "marketplace.install-requested": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "marketplace.pending-reacceptance": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "marketplace.release-switched": {
              "email": "digest",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "marketplace.update-decision-requested": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "marketplace.update-declined": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "initiator",
                "permission": "marketplace.app.request"
              }
            },
            "media.processing-failed": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "initiator",
                "permission": "asset.upload"
              }
            },
            "ops.broadcast": {
              "email": "off",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "member",
                "permission": null
              }
            },
            "ops.incident": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "member",
                "permission": null
              }
            },
            "ops.incident-resolved": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "member",
                "permission": null
              }
            },
            "ops.maintenance": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "member",
                "permission": null
              }
            },
            "ops.maintenance-canceled": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "member",
                "permission": null
              }
            },
            "security.api-key-created": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "security.custom-domain-removed": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "security.impersonation-started": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "own-account",
                "permission": null
              }
            },
            "security.mfa-disabled": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "own-account",
                "permission": null
              }
            },
            "security.password-changed": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "own-account",
                "permission": null
              }
            },
            "security.sso-changed": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "security.theft-detected": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "own-account",
                "permission": null
              }
            },
            "tenancy.custom-domain-verified": {
              "email": "off",
              "emailAvailable": false,
              "emailDigestAvailable": true,
              "emailForced": false,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "tenancy.deletion-warning": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": false,
              "inAppAvailable": false,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "tenancy.reactivated": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "tenancy.sso-break-glass-used": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": true,
              "inAppAvailable": true,
              "inAppForced": true,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            },
            "tenancy.suspended": {
              "email": "immediate",
              "emailAvailable": true,
              "emailDigestAvailable": false,
              "emailForced": true,
              "inApp": false,
              "inAppAvailable": false,
              "inAppForced": false,
              "quietHoursApply": false,
              "reason": {
                "code": "owner",
                "permission": null
              }
            }
          },
          "preferences": {
            "billing.invoice-paid": {
              "email": "digest",
              "inApp": true
            },
            "composition.integrity-issue": {
              "email": "digest",
              "inApp": true
            },
            "fleet.player-offline": {
              "email": "immediate",
              "inApp": true
            },
            "ops.broadcast": {
              "email": "off",
              "inApp": true
            }
          },
          "quietHours": {
            "enabled": true,
            "end": "07:00",
            "includeWeekends": true,
            "start": "20:00"
          },
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "userId": "usr_01KERQ74K0TEAM000000000001"
        },
        "properties": {
          "digestCadence": {
            "enum": [
              "off",
              "daily",
              "weekly"
            ],
            "type": "string"
          },
          "effective": {
            "properties": {
              "analytics.report-failed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "analytics.report-ready": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "app-catalog.release-retired": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "audit.export-ready": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.cancel-scheduled": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.change-failed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.frozen": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.invoice-issued": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.invoice-paid": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.license-conflict": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.override-ending": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.past-due": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.payment-failed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.trial-ending": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.unfrozen": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "billing.vat-id-invalid": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "composition.integrity-issue": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "fleet.command-failed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "fleet.player-offline": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "identity.device-reregistration-requested": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "identity.role-changed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "integrations.cloud-connection-broken": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "integrations.webhook-disabled": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "invitation.accepted": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "invitation.expired": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "join-request.received": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "marketplace.app-installed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "marketplace.data-deletion-scheduled": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "marketplace.install-requested": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "marketplace.pending-reacceptance": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "marketplace.release-switched": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "marketplace.update-decision-requested": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "marketplace.update-declined": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "media.processing-failed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "ops.broadcast": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "ops.incident": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "ops.incident-resolved": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "ops.maintenance": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "ops.maintenance-canceled": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "security.api-key-created": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "security.custom-domain-removed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "security.impersonation-started": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "security.mfa-disabled": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "security.password-changed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "security.sso-changed": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "security.theft-detected": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "tenancy.custom-domain-verified": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "tenancy.deletion-warning": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "tenancy.reactivated": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "tenancy.sso-break-glass-used": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              },
              "tenancy.suspended": {
                "$ref": "#/components/schemas/EffectiveChannelPreferences"
              }
            },
            "type": "object"
          },
          "preferences": {
            "additionalProperties": {
              "properties": {
                "email": {
                  "enum": [
                    "off",
                    "immediate",
                    "digest"
                  ],
                  "type": "string"
                },
                "inApp": {
                  "type": "boolean"
                }
              },
              "required": [
                "inApp",
                "email"
              ],
              "type": "object"
            },
            "type": "object"
          },
          "quietHours": {
            "$ref": "#/components/schemas/QuietHours"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "userId": {
            "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "userId",
          "tenantId",
          "preferences",
          "digestCadence",
          "quietHours",
          "effective"
        ],
        "type": "object"
      },
      "UpdateReportRequest": {
        "example": {
          "description": "Wie viele Stunden jeder Bildschirm in den letzten zwei Wochen gespielt hat und wie viel seiner Planzeit er sichtbar war.",
          "name": "Spielzeit je Bildschirm",
          "query": {
            "dimensions": [
              "player"
            ],
            "filters": {},
            "granularity": "auto",
            "limit": null,
            "measures": [
              "airtimeSeconds",
              "availability"
            ],
            "perspective": "venue",
            "sort": {
              "direction": "desc",
              "measure": "airtimeSeconds"
            },
            "timezone": "Europe/Berlin",
            "window": {
              "days": 14,
              "kind": "lastDays"
            }
          },
          "scheduleFormat": "pdf",
          "visibility": "tenant-shared"
        },
        "properties": {
          "description": {
            "maxLength": 1000,
            "type": "string"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "query": {
            "$ref": "#/components/schemas/SavedExploreQuery"
          },
          "scheduleFormat": {
            "enum": [
              "csv",
              "pdf"
            ],
            "type": "string"
          },
          "visibility": {
            "enum": [
              "private",
              "tenant-shared"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "UpdateReportResponse": {
        "example": {
          "createdAt": "2026-04-02T08:00:00.000Z",
          "description": "Wie viele Stunden jeder Bildschirm in den letzten zwei Wochen gespielt hat und wie viel seiner Planzeit er sichtbar war.",
          "id": "anr_01KN6K9M00BERCHT0000000001",
          "lastRunAt": "2026-07-20T04:00:00.000Z",
          "lastRunError": null,
          "lastRunStatus": "ok",
          "name": "Spielzeit je Bildschirm",
          "ownerUserId": "usr_01KERQ74K0TEAM000000000001",
          "query": {
            "dimensions": [
              "player"
            ],
            "filters": {},
            "granularity": "auto",
            "limit": null,
            "measures": [
              "airtimeSeconds",
              "availability"
            ],
            "perspective": "venue",
            "sort": {
              "direction": "desc",
              "measure": "airtimeSeconds"
            },
            "timezone": "Europe/Berlin",
            "window": {
              "days": 14,
              "kind": "lastDays"
            }
          },
          "schedule": {
            "dayOfWeek": 1,
            "hour": 6,
            "kind": "weekly"
          },
          "scheduleFormat": "pdf",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-20T09:15:00.000Z",
          "visibility": "tenant-shared"
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "maxLength": 1000,
            "type": "string"
          },
          "id": {
            "pattern": "^anr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "lastRunAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "lastRunError": {
            "maxLength": 200,
            "type": [
              "string",
              "null"
            ]
          },
          "lastRunStatus": {
            "enum": [
              "ok",
              "failed"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "ownerUserId": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "query": {
            "$ref": "#/components/schemas/SavedExploreQuery"
          },
          "schedule": {
            "oneOf": [
              {
                "properties": {
                  "hour": {
                    "maximum": 23,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "daily"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "hour"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "dayOfWeek": {
                    "maximum": 6,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "hour": {
                    "maximum": 23,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "weekly"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "dayOfWeek",
                  "hour"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "dayOfMonth": {
                    "maximum": 28,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "hour": {
                    "maximum": 23,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kind": {
                    "enum": [
                      "monthly"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "dayOfMonth",
                  "hour"
                ],
                "type": "object"
              },
              {
                "type": "null"
              }
            ]
          },
          "scheduleFormat": {
            "enum": [
              "csv",
              "pdf"
            ],
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "visibility": {
            "enum": [
              "private",
              "tenant-shared"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "name",
          "description",
          "query",
          "schedule",
          "ownerUserId",
          "visibility",
          "scheduleFormat",
          "createdAt",
          "updatedAt",
          "lastRunAt",
          "lastRunStatus",
          "lastRunError"
        ],
        "type": "object"
      },
      "UpdateRoleRequest": {
        "example": {
          "description": "Pflegt Szenen, Wiedergabelisten und Medien und veröffentlicht sie.",
          "name": "Redaktion",
          "permissions": [
            "scene.list",
            "scene.read",
            "scene.create",
            "scene.update",
            "scene.publish",
            "playlist.list",
            "playlist.update",
            "schedule.list",
            "schedule.update",
            "asset.list",
            "asset.read",
            "asset.upload",
            "fleet.player.list",
            "fleet.player.read"
          ],
          "scopeRestrictions": [
            {
              "kind": "all"
            }
          ]
        },
        "properties": {
          "description": {
            "maxLength": 500,
            "type": "string"
          },
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "permissions": {
            "items": {
              "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$",
              "type": "string"
            },
            "type": "array"
          },
          "scopeRestrictions": {
            "items": {
              "oneOf": [
                {
                  "properties": {
                    "kind": {
                      "enum": [
                        "all"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "kind"
                  ],
                  "type": "object"
                },
                {
                  "properties": {
                    "kind": {
                      "enum": [
                        "resource-set"
                      ],
                      "type": "string"
                    },
                    "resourceIds": {
                      "items": {
                        "type": "string"
                      },
                      "minItems": 1,
                      "type": "array"
                    },
                    "resourceType": {
                      "enum": [
                        "scene",
                        "playlist",
                        "schedule",
                        "player",
                        "device",
                        "asset",
                        "tenant",
                        "audit-export"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "kind",
                    "resourceType",
                    "resourceIds"
                  ],
                  "type": "object"
                }
              ]
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "UpdateRoleResponse": {
        "example": {
          "role": {
            "createdAt": "2026-01-12T09:30:00.000Z",
            "description": "Pflegt Szenen, Wiedergabelisten und Medien und veröffentlicht sie.",
            "id": "rol_01KERPYXWRRECHT00000000002",
            "isBuiltIn": false,
            "name": "Redaktion",
            "permissions": [
              "scene.list",
              "scene.read",
              "scene.create",
              "scene.update",
              "scene.publish",
              "playlist.list",
              "playlist.update",
              "schedule.list",
              "schedule.update",
              "asset.list",
              "asset.read",
              "asset.upload",
              "fleet.player.list",
              "fleet.player.read"
            ],
            "scopeRestrictions": [
              {
                "kind": "all"
              }
            ],
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-20T09:15:00.000Z",
            "version": 3
          }
        },
        "properties": {
          "role": {
            "properties": {
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "description": {
                "maxLength": 500,
                "type": "string"
              },
              "id": {
                "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "isBuiltIn": {
                "type": "boolean"
              },
              "name": {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              "permissions": {
                "items": {
                  "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$",
                  "type": "string"
                },
                "type": "array"
              },
              "scopeRestrictions": {
                "items": {
                  "oneOf": [
                    {
                      "properties": {
                        "kind": {
                          "enum": [
                            "all"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "kind": {
                          "enum": [
                            "resource-set"
                          ],
                          "type": "string"
                        },
                        "resourceIds": {
                          "items": {
                            "type": "string"
                          },
                          "minItems": 1,
                          "type": "array"
                        },
                        "resourceType": {
                          "enum": [
                            "scene",
                            "playlist",
                            "schedule",
                            "player",
                            "device",
                            "asset",
                            "tenant",
                            "audit-export"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind",
                        "resourceType",
                        "resourceIds"
                      ],
                      "type": "object"
                    }
                  ]
                },
                "type": "array"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "version": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "id",
              "tenantId",
              "name",
              "description",
              "isBuiltIn",
              "permissions",
              "scopeRestrictions",
              "version",
              "createdAt",
              "updatedAt"
            ],
            "type": "object"
          }
        },
        "required": [
          "role"
        ],
        "type": "object"
      },
      "UpdateSceneRequest": {
        "example": {
          "description": "Startbild im Schaufenster: Wortmarke, Öffnungszeiten und Uhrzeit.",
          "draftDocument": {
            "canvas": {
              "backgroundColor": "#f7f5f0",
              "height": 1080,
              "width": 1920
            },
            "layoutTemplateId": "main-sidebar",
            "transitions": {
              "in": {
                "durationMs": 600,
                "kind": "fade"
              },
              "out": {
                "durationMs": 400,
                "kind": "fade"
              }
            },
            "widgets": [
              {
                "appId": "core",
                "appVersionPin": "0.0.0",
                "config": {
                  "assetId": "ast_01KERR2KG0MEDEN00000000003",
                  "fit": "contain",
                  "variant": "original"
                },
                "frame": {
                  "h": 180,
                  "w": 560,
                  "x": 120,
                  "y": 90
                },
                "id": "wgi_01KJPXE5A0WDGET00000000003",
                "slotName": "main",
                "widgetType": "image",
                "zIndex": 1
              },
              {
                "appId": "opening-hours",
                "appVersionPin": "1.1.0",
                "config": {
                  "backgroundImage": null,
                  "corners": "round",
                  "fallbackLocationId": "loc_01KHK4B3T0ADRESSE000000001",
                  "locationId": null,
                  "showSpecialHint": true,
                  "source": "display",
                  "surface": "green"
                },
                "frame": {
                  "h": 660,
                  "w": 1200,
                  "x": 120,
                  "y": 330
                },
                "id": "wgi_01KJPXCAQ0WDGET00000000002",
                "slotName": "main",
                "widgetType": "opening-hours",
                "zIndex": 0
              },
              {
                "appId": "clock",
                "appVersionPin": "1.2.0",
                "config": {
                  "corners": "round",
                  "date": "long",
                  "hourCycle": "auto",
                  "seconds": false,
                  "surface": "dark",
                  "timezone": "",
                  "variant": "digital",
                  "zone": "display"
                },
                "frame": {
                  "h": 1080,
                  "w": 480,
                  "x": 1440,
                  "y": 0
                },
                "id": "wgi_01KJPXAG40WDGET00000000001",
                "slotName": "sidebar",
                "widgetType": "clock",
                "zIndex": 0
              }
            ]
          },
          "name": "Willkommen & Öffnungszeiten"
        },
        "properties": {
          "description": {
            "maxLength": 2000,
            "type": "string"
          },
          "draftDocument": {
            "properties": {
              "canvas": {
                "properties": {
                  "backgroundColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  },
                  "height": {
                    "maximum": 7680,
                    "minimum": 320,
                    "type": "integer"
                  },
                  "width": {
                    "maximum": 7680,
                    "minimum": 320,
                    "type": "integer"
                  }
                },
                "required": [
                  "width",
                  "height",
                  "backgroundColor"
                ],
                "type": "object"
              },
              "layoutTemplateId": {
                "pattern": "^(?:lyt_[0-9A-HJKMNP-TV-Z]{26}|standard-1x1|split-vertical|split-horizontal|grid-2x2|main-sidebar|main-sidebar-2|main-sidebar-3|thirds-vertical|quarters-vertical|header-main|main-ticker|header-main-ticker|sidebar-left-main|header-split|grid-3x2|main-sidebar-ticker|hero-strip-3|portrait-full|portrait-split|portrait-thirds|portrait-main-footer|portrait-half-grid-4|portrait-main-footer-2|portrait-main-footer-3|portrait-header-main|portrait-header-main-ticker|portrait-quarters|portrait-grid-2x3|portrait-hero-columns|ultra-full|ultra-halves|ultra-thirds|ultra-quarters|ultra-center-stage|ultra-main-sidebar|ultra-header-thirds|ultra-thirds-ticker)$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "transitions": {
                "properties": {
                  "in": {
                    "oneOf": [
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "none"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "fade"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "direction": {
                            "enum": [
                              "left",
                              "right",
                              "up",
                              "down"
                            ],
                            "type": "string"
                          },
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "slide"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "out": {
                    "oneOf": [
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "none"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "fade"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "direction": {
                            "enum": [
                              "left",
                              "right",
                              "up",
                              "down"
                            ],
                            "type": "string"
                          },
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "slide"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      }
                    ]
                  }
                },
                "required": [
                  "in",
                  "out"
                ],
                "type": "object"
              },
              "widgets": {
                "items": {
                  "properties": {
                    "appId": {
                      "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "appVersionPin": {
                      "pattern": "^\\d+\\.\\d+\\.\\d+$",
                      "type": "string"
                    },
                    "config": {},
                    "frame": {
                      "properties": {
                        "h": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        },
                        "w": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        },
                        "x": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "y": {
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "x",
                        "y",
                        "w",
                        "h"
                      ],
                      "type": "object"
                    },
                    "id": {
                      "pattern": "^wgi_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "slotName": {
                      "maxLength": 60,
                      "minLength": 1,
                      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "widgetType": {
                      "maxLength": 100,
                      "minLength": 2,
                      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "zIndex": {
                      "maximum": 1000,
                      "minimum": 0,
                      "type": "integer"
                    }
                  },
                  "required": [
                    "id",
                    "appId",
                    "widgetType",
                    "appVersionPin",
                    "frame",
                    "zIndex"
                  ],
                  "type": "object"
                },
                "maxItems": 50,
                "type": "array"
              }
            },
            "required": [
              "canvas",
              "layoutTemplateId",
              "widgets",
              "transitions"
            ],
            "type": "object"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          }
        },
        "type": "object"
      },
      "UpdateScheduleItemRequest": {
        "example": {
          "content": {
            "kind": "scene",
            "sceneId": "scn_01KJWKGJM0SZENE00000000002"
          },
          "label": "Angebote Mittagszeit",
          "paused": false,
          "recurrence": {
            "daysOfWeek": [
              1,
              2,
              3,
              4,
              5
            ],
            "kind": "weekly",
            "timeWindows": [
              {
                "endTime": "14:30:00",
                "startTime": "11:30:00"
              }
            ],
            "timezone": "Europe/Berlin"
          }
        },
        "properties": {
          "content": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "scene"
                    ],
                    "type": "string"
                  },
                  "sceneId": {
                    "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "sceneId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "playlist"
                    ],
                    "type": "string"
                  },
                  "playlistId": {
                    "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "playlistId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "assetId": {
                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "media"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "assetId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "pause"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              }
            ]
          },
          "label": {
            "maxLength": 200,
            "type": [
              "string",
              "null"
            ]
          },
          "paused": {
            "type": "boolean"
          },
          "recurrence": {
            "oneOf": [
              {
                "properties": {
                  "endsAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "once"
                    ],
                    "type": "string"
                  },
                  "startsAt": {
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "startsAt",
                  "endsAt"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "daily"
                    ],
                    "type": "string"
                  },
                  "timeWindows": {
                    "items": {
                      "properties": {
                        "endTime": {
                          "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                          "type": "string"
                        },
                        "startTime": {
                          "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                          "type": "string"
                        }
                      },
                      "required": [
                        "startTime",
                        "endTime"
                      ],
                      "type": "object"
                    },
                    "maxItems": 8,
                    "minItems": 1,
                    "type": "array"
                  },
                  "timezone": {
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "timeWindows",
                  "timezone"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "daysOfWeek": {
                    "items": {
                      "maximum": 6,
                      "minimum": 0,
                      "type": "integer"
                    },
                    "maxItems": 7,
                    "type": "array"
                  },
                  "kind": {
                    "enum": [
                      "weekly"
                    ],
                    "type": "string"
                  },
                  "timeWindows": {
                    "items": {
                      "properties": {
                        "endTime": {
                          "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                          "type": "string"
                        },
                        "startTime": {
                          "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                          "type": "string"
                        }
                      },
                      "required": [
                        "startTime",
                        "endTime"
                      ],
                      "type": "object"
                    },
                    "maxItems": 8,
                    "minItems": 1,
                    "type": "array"
                  },
                  "timezone": {
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "daysOfWeek",
                  "timeWindows",
                  "timezone"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "daysOfMonth": {
                    "items": {
                      "maximum": 31,
                      "minimum": 1,
                      "type": "integer"
                    },
                    "maxItems": 31,
                    "type": "array"
                  },
                  "kind": {
                    "enum": [
                      "monthly"
                    ],
                    "type": "string"
                  },
                  "timeWindows": {
                    "items": {
                      "properties": {
                        "endTime": {
                          "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                          "type": "string"
                        },
                        "startTime": {
                          "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                          "type": "string"
                        }
                      },
                      "required": [
                        "startTime",
                        "endTime"
                      ],
                      "type": "object"
                    },
                    "maxItems": 8,
                    "minItems": 1,
                    "type": "array"
                  },
                  "timezone": {
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "daysOfMonth",
                  "timeWindows",
                  "timezone"
                ],
                "type": "object"
              }
            ]
          }
        },
        "type": "object"
      },
      "UpdateScheduleItemResponse": {
        "example": {
          "item": {
            "content": {
              "kind": "scene",
              "sceneId": "scn_01KJWKGJM0SZENE00000000002"
            },
            "createdAt": "2026-07-06T09:05:00.000Z",
            "id": "sci_01KWVAFRM0PNKT000000000001",
            "label": "Angebote Mittagszeit",
            "paused": false,
            "recurrence": {
              "daysOfWeek": [
                1,
                2,
                3,
                4,
                5
              ],
              "kind": "weekly",
              "timeWindows": [
                {
                  "endTime": "14:00:00",
                  "startTime": "11:30:00"
                }
              ],
              "timezone": "Europe/Berlin"
            },
            "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-20T09:15:00.000Z"
          },
          "scheduleVersion": 8
        },
        "properties": {
          "item": {
            "properties": {
              "content": {
                "oneOf": [
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "scene"
                        ],
                        "type": "string"
                      },
                      "sceneId": {
                        "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "sceneId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "playlist"
                        ],
                        "type": "string"
                      },
                      "playlistId": {
                        "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "playlistId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "assetId": {
                        "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "kind": {
                        "enum": [
                          "media"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "assetId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "pause"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind"
                    ],
                    "type": "object"
                  }
                ]
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "id": {
                "pattern": "^sci_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "label": {
                "maxLength": 200,
                "type": [
                  "string",
                  "null"
                ]
              },
              "paused": {
                "type": "boolean"
              },
              "recurrence": {
                "oneOf": [
                  {
                    "properties": {
                      "endsAt": {
                        "format": "date-time",
                        "type": "string"
                      },
                      "kind": {
                        "enum": [
                          "once"
                        ],
                        "type": "string"
                      },
                      "startsAt": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "startsAt",
                      "endsAt"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "daily"
                        ],
                        "type": "string"
                      },
                      "timeWindows": {
                        "items": {
                          "properties": {
                            "endTime": {
                              "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                              "type": "string"
                            },
                            "startTime": {
                              "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                              "type": "string"
                            }
                          },
                          "required": [
                            "startTime",
                            "endTime"
                          ],
                          "type": "object"
                        },
                        "maxItems": 8,
                        "minItems": 1,
                        "type": "array"
                      },
                      "timezone": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "timeWindows",
                      "timezone"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "daysOfWeek": {
                        "items": {
                          "maximum": 6,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "maxItems": 7,
                        "type": "array"
                      },
                      "kind": {
                        "enum": [
                          "weekly"
                        ],
                        "type": "string"
                      },
                      "timeWindows": {
                        "items": {
                          "properties": {
                            "endTime": {
                              "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                              "type": "string"
                            },
                            "startTime": {
                              "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                              "type": "string"
                            }
                          },
                          "required": [
                            "startTime",
                            "endTime"
                          ],
                          "type": "object"
                        },
                        "maxItems": 8,
                        "minItems": 1,
                        "type": "array"
                      },
                      "timezone": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "daysOfWeek",
                      "timeWindows",
                      "timezone"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "daysOfMonth": {
                        "items": {
                          "maximum": 31,
                          "minimum": 1,
                          "type": "integer"
                        },
                        "maxItems": 31,
                        "type": "array"
                      },
                      "kind": {
                        "enum": [
                          "monthly"
                        ],
                        "type": "string"
                      },
                      "timeWindows": {
                        "items": {
                          "properties": {
                            "endTime": {
                              "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                              "type": "string"
                            },
                            "startTime": {
                              "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                              "type": "string"
                            }
                          },
                          "required": [
                            "startTime",
                            "endTime"
                          ],
                          "type": "object"
                        },
                        "maxItems": 8,
                        "minItems": 1,
                        "type": "array"
                      },
                      "timezone": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "daysOfMonth",
                      "timeWindows",
                      "timezone"
                    ],
                    "type": "object"
                  }
                ]
              },
              "scheduleId": {
                "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "id",
              "scheduleId",
              "tenantId",
              "label",
              "content",
              "recurrence",
              "paused",
              "createdAt",
              "updatedAt"
            ],
            "type": "object"
          },
          "scheduleVersion": {
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "item",
          "scheduleVersion"
        ],
        "type": "object"
      },
      "UpdateScheduleRequest": {
        "example": {
          "basis": {
            "kind": "playlist",
            "playlistId": "pll_01KWV91ZS0PRGRAMM000000001"
          },
          "name": "Ladenprogramm (Sommer)"
        },
        "properties": {
          "basis": {
            "oneOf": [
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "scene"
                    ],
                    "type": "string"
                  },
                  "sceneId": {
                    "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "sceneId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "playlist"
                    ],
                    "type": "string"
                  },
                  "playlistId": {
                    "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "playlistId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "assetId": {
                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "media"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "assetId"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "kind": {
                    "enum": [
                      "pause"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind"
                ],
                "type": "object"
              }
            ]
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          }
        },
        "type": "object"
      },
      "UpdateScheduleResponse": {
        "example": {
          "schedule": {
            "basis": {
              "kind": "playlist",
              "playlistId": "pll_01KWV91ZS0PRGRAMM000000001"
            },
            "createdAt": "2026-07-06T09:00:00.000Z",
            "createdById": "usr_01KERQ74K0TEAM000000000001",
            "id": "sch_01KWVAFRM0ZETPAN0000000001",
            "items": [
              {
                "content": {
                  "kind": "scene",
                  "sceneId": "scn_01KJWKGJM0SZENE00000000002"
                },
                "createdAt": "2026-07-06T09:05:00.000Z",
                "id": "sci_01KWVAFRM0PNKT000000000001",
                "label": "Angebote Mittagszeit",
                "paused": false,
                "recurrence": {
                  "daysOfWeek": [
                    1,
                    2,
                    3,
                    4,
                    5
                  ],
                  "kind": "weekly",
                  "timeWindows": [
                    {
                      "endTime": "14:00:00",
                      "startTime": "11:30:00"
                    }
                  ],
                  "timezone": "Europe/Berlin"
                },
                "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001",
                "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
                "updatedAt": "2026-07-06T09:05:00.000Z"
              },
              {
                "content": {
                  "assetId": "ast_01KW95DD30MEDEN00000000001",
                  "kind": "media"
                },
                "createdAt": "2026-07-06T09:07:00.000Z",
                "id": "sci_01KWVARXK0PNKT000000000002",
                "label": "Samstagsaktion",
                "paused": true,
                "recurrence": {
                  "daysOfWeek": [
                    6
                  ],
                  "kind": "weekly",
                  "timeWindows": [
                    {
                      "endTime": "13:00:00",
                      "startTime": "09:00:00"
                    }
                  ],
                  "timezone": "Europe/Berlin"
                },
                "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001",
                "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
                "updatedAt": "2026-07-20T09:15:00.000Z"
              },
              {
                "content": {
                  "kind": "pause"
                },
                "createdAt": "2026-07-06T09:10:00.000Z",
                "id": "sci_01KWVB22J0PNKT000000000003",
                "label": "Feiertag geschlossen",
                "paused": false,
                "recurrence": {
                  "endsAt": "2026-10-03T21:59:59.000Z",
                  "kind": "once",
                  "startsAt": "2026-10-02T22:00:00.000Z"
                },
                "scheduleId": "sch_01KWVAFRM0ZETPAN0000000001",
                "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
                "updatedAt": "2026-07-06T09:10:00.000Z"
              }
            ],
            "name": "Ladenprogramm (Sommer)",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-20T09:15:00.000Z",
            "version": 8
          }
        },
        "properties": {
          "schedule": {
            "properties": {
              "basis": {
                "oneOf": [
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "scene"
                        ],
                        "type": "string"
                      },
                      "sceneId": {
                        "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "sceneId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "playlist"
                        ],
                        "type": "string"
                      },
                      "playlistId": {
                        "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "playlistId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "assetId": {
                        "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "kind": {
                        "enum": [
                          "media"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "assetId"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "kind": {
                        "enum": [
                          "pause"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind"
                    ],
                    "type": "object"
                  }
                ]
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "createdById": {
                "anyOf": [
                  {
                    "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^[0-9a-f]{64}$",
                    "type": "string"
                  }
                ]
              },
              "id": {
                "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "items": {
                "items": {
                  "properties": {
                    "content": {
                      "oneOf": [
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "scene"
                              ],
                              "type": "string"
                            },
                            "sceneId": {
                              "pattern": "^scn_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "sceneId"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "playlist"
                              ],
                              "type": "string"
                            },
                            "playlistId": {
                              "pattern": "^pll_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "playlistId"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "assetId": {
                              "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                              "type": "string"
                            },
                            "kind": {
                              "enum": [
                                "media"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "assetId"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "pause"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind"
                          ],
                          "type": "object"
                        }
                      ]
                    },
                    "createdAt": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "id": {
                      "pattern": "^sci_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "label": {
                      "maxLength": 200,
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "paused": {
                      "type": "boolean"
                    },
                    "recurrence": {
                      "oneOf": [
                        {
                          "properties": {
                            "endsAt": {
                              "format": "date-time",
                              "type": "string"
                            },
                            "kind": {
                              "enum": [
                                "once"
                              ],
                              "type": "string"
                            },
                            "startsAt": {
                              "format": "date-time",
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "startsAt",
                            "endsAt"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "kind": {
                              "enum": [
                                "daily"
                              ],
                              "type": "string"
                            },
                            "timeWindows": {
                              "items": {
                                "properties": {
                                  "endTime": {
                                    "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                                    "type": "string"
                                  },
                                  "startTime": {
                                    "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "startTime",
                                  "endTime"
                                ],
                                "type": "object"
                              },
                              "maxItems": 8,
                              "minItems": 1,
                              "type": "array"
                            },
                            "timezone": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "timeWindows",
                            "timezone"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "daysOfWeek": {
                              "items": {
                                "maximum": 6,
                                "minimum": 0,
                                "type": "integer"
                              },
                              "maxItems": 7,
                              "type": "array"
                            },
                            "kind": {
                              "enum": [
                                "weekly"
                              ],
                              "type": "string"
                            },
                            "timeWindows": {
                              "items": {
                                "properties": {
                                  "endTime": {
                                    "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                                    "type": "string"
                                  },
                                  "startTime": {
                                    "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "startTime",
                                  "endTime"
                                ],
                                "type": "object"
                              },
                              "maxItems": 8,
                              "minItems": 1,
                              "type": "array"
                            },
                            "timezone": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "daysOfWeek",
                            "timeWindows",
                            "timezone"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "daysOfMonth": {
                              "items": {
                                "maximum": 31,
                                "minimum": 1,
                                "type": "integer"
                              },
                              "maxItems": 31,
                              "type": "array"
                            },
                            "kind": {
                              "enum": [
                                "monthly"
                              ],
                              "type": "string"
                            },
                            "timeWindows": {
                              "items": {
                                "properties": {
                                  "endTime": {
                                    "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                                    "type": "string"
                                  },
                                  "startTime": {
                                    "pattern": "^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "startTime",
                                  "endTime"
                                ],
                                "type": "object"
                              },
                              "maxItems": 8,
                              "minItems": 1,
                              "type": "array"
                            },
                            "timezone": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "kind",
                            "daysOfMonth",
                            "timeWindows",
                            "timezone"
                          ],
                          "type": "object"
                        }
                      ]
                    },
                    "scheduleId": {
                      "pattern": "^sch_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "tenantId": {
                      "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "updatedAt": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "scheduleId",
                    "tenantId",
                    "label",
                    "content",
                    "recurrence",
                    "paused",
                    "createdAt",
                    "updatedAt"
                  ],
                  "type": "object"
                },
                "maxItems": 200,
                "type": "array"
              },
              "name": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "version": {
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "id",
              "tenantId",
              "name",
              "basis",
              "items",
              "createdById",
              "createdAt",
              "updatedAt",
              "version"
            ],
            "type": "object"
          }
        },
        "required": [
          "schedule"
        ],
        "type": "object"
      },
      "UpdateSmartBucketRequest": {
        "example": {
          "filter": {
            "includeDeleted": false,
            "includeSubfolders": true,
            "mimeTypes": [
              "image/jpeg",
              "image/png"
            ],
            "sortBy": "created-desc",
            "status": "ready",
            "tags": [
              "angebot"
            ]
          },
          "isShared": false,
          "name": "Aktuelle Angebote"
        },
        "properties": {
          "filter": {
            "properties": {
              "folderId": {
                "anyOf": [
                  {
                    "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "enum": [
                      "root"
                    ],
                    "type": "string"
                  },
                  {
                    "type": "null"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "includeDeleted": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "enum": [
                      "true",
                      "false"
                    ],
                    "type": "string"
                  }
                ]
              },
              "includeSubfolders": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "enum": [
                      "true",
                      "false"
                    ],
                    "type": "string"
                  }
                ]
              },
              "maxSizeBytes": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "mimeTypes": {
                "anyOf": [
                  {
                    "items": {
                      "enum": [
                        "image/jpeg",
                        "image/png",
                        "image/webp",
                        "image/svg+xml",
                        "video/mp4",
                        "video/webm",
                        "application/pdf"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  {
                    "enum": [
                      "image/jpeg",
                      "image/png",
                      "image/webp",
                      "image/svg+xml",
                      "video/mp4",
                      "video/webm",
                      "application/pdf"
                    ],
                    "type": "string"
                  }
                ]
              },
              "minSizeBytes": {
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "search": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "sortBy": {
                "enum": [
                  "name-asc",
                  "name-desc",
                  "created-desc",
                  "created-asc",
                  "size-asc",
                  "size-desc",
                  "type-asc",
                  "type-desc"
                ],
                "type": "string"
              },
              "status": {
                "enum": [
                  "uploading",
                  "processing",
                  "ready",
                  "error"
                ],
                "type": "string"
              },
              "tags": {
                "anyOf": [
                  {
                    "items": {
                      "maxLength": 50,
                      "minLength": 1,
                      "type": "string"
                    },
                    "maxItems": 10,
                    "type": "array"
                  },
                  {
                    "maxLength": 50,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "uploadedAfter": {
                "format": "date-time",
                "type": "string"
              },
              "uploadedBefore": {
                "format": "date-time",
                "type": "string"
              },
              "usage": {
                "enum": [
                  "used",
                  "unused"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "isShared": {
            "type": "boolean"
          },
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          }
        },
        "type": "object"
      },
      "UpdateSmartBucketResponse": {
        "example": {
          "createdAt": "2026-03-02T09:40:00.000Z",
          "createdById": "usr_01KFB7QPW0TEAM000000000002",
          "filter": {
            "includeDeleted": false,
            "includeSubfolders": true,
            "mimeTypes": [
              "image/jpeg",
              "image/png"
            ],
            "sortBy": "created-desc",
            "status": "ready",
            "tags": [
              "angebot"
            ]
          },
          "id": "smb_01KJPYPEC0SMART00000000001",
          "isShared": false,
          "name": "Aktuelle Angebote",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-20T09:15:00.000Z"
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "createdById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "filter": {
            "properties": {
              "folderId": {
                "anyOf": [
                  {
                    "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  {
                    "enum": [
                      "root"
                    ],
                    "type": "string"
                  },
                  {
                    "type": "null"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "includeDeleted": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "enum": [
                      "true",
                      "false"
                    ],
                    "type": "string"
                  }
                ]
              },
              "includeSubfolders": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "enum": [
                      "true",
                      "false"
                    ],
                    "type": "string"
                  }
                ]
              },
              "maxSizeBytes": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "mimeTypes": {
                "anyOf": [
                  {
                    "items": {
                      "enum": [
                        "image/jpeg",
                        "image/png",
                        "image/webp",
                        "image/svg+xml",
                        "video/mp4",
                        "video/webm",
                        "application/pdf"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  {
                    "enum": [
                      "image/jpeg",
                      "image/png",
                      "image/webp",
                      "image/svg+xml",
                      "video/mp4",
                      "video/webm",
                      "application/pdf"
                    ],
                    "type": "string"
                  }
                ]
              },
              "minSizeBytes": {
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "search": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              "sortBy": {
                "enum": [
                  "name-asc",
                  "name-desc",
                  "created-desc",
                  "created-asc",
                  "size-asc",
                  "size-desc",
                  "type-asc",
                  "type-desc"
                ],
                "type": "string"
              },
              "status": {
                "enum": [
                  "uploading",
                  "processing",
                  "ready",
                  "error"
                ],
                "type": "string"
              },
              "tags": {
                "anyOf": [
                  {
                    "items": {
                      "maxLength": 50,
                      "minLength": 1,
                      "type": "string"
                    },
                    "maxItems": 10,
                    "type": "array"
                  },
                  {
                    "maxLength": 50,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "uploadedAfter": {
                "format": "date-time",
                "type": "string"
              },
              "uploadedBefore": {
                "format": "date-time",
                "type": "string"
              },
              "usage": {
                "enum": [
                  "used",
                  "unused"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "id": {
            "pattern": "^smb_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "isShared": {
            "type": "boolean"
          },
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "name",
          "filter",
          "isShared",
          "createdById",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "UpdateSsoProviderRequest": {
        "example": {
          "clientId": "signage-portal",
          "clientSecret": "aus-dem-passwort-tresor-einsetzen",
          "defaultRoleId": "rol_01KERPYYW0RECHT00000000003",
          "displayName": "Adler-Apotheke Firmenkonto",
          "issuer": "https://anmeldung.adler-apotheke.demo.local",
          "jitProvisioning": true,
          "status": "draft"
        },
        "properties": {
          "clientId": {
            "maxLength": 256,
            "minLength": 1,
            "type": "string"
          },
          "clientSecret": {
            "maxLength": 512,
            "minLength": 1,
            "type": "string"
          },
          "defaultRoleId": {
            "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "displayName": {
            "maxLength": 60,
            "minLength": 1,
            "type": "string"
          },
          "issuer": {
            "format": "uri",
            "type": "string"
          },
          "jitProvisioning": {
            "type": "boolean"
          },
          "status": {
            "enum": [
              "draft",
              "active",
              "disabled"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "UpdateTenantProfileRequest": {
        "example": {
          "address": {
            "city": "Hamburg",
            "country": "DE",
            "postalCode": "22765",
            "region": "Hamburg",
            "street": "Bahnhofstraße 12"
          },
          "defaultLocale": "de-DE",
          "defaultTimezone": "Europe/Berlin",
          "displayName": "Adler-Apotheke",
          "legalName": "Adler-Apotheke Petersen e. K.",
          "vatId": "DE812345679",
          "vertical": "pharmacy"
        },
        "properties": {
          "address": {
            "properties": {
              "city": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "country": {
                "pattern": "^[A-Z]{2}$",
                "type": "string"
              },
              "postalCode": {
                "maxLength": 20,
                "minLength": 1,
                "type": "string"
              },
              "region": {
                "default": null,
                "maxLength": 120,
                "minLength": 1,
                "type": [
                  "string",
                  "null"
                ]
              },
              "street": {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "street",
              "postalCode",
              "city",
              "country"
            ],
            "type": "object"
          },
          "defaultLocale": {
            "pattern": "^[a-z]{2}(-[A-Z]{2})?$",
            "type": "string"
          },
          "defaultTimezone": {
            "type": "string"
          },
          "displayName": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "legalName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "vatId": {
            "maxLength": 20,
            "type": [
              "string",
              "null"
            ]
          },
          "vertical": {
            "enum": [
              "pharmacy"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "UpdateTenantProfileResponse": {
        "example": {
          "tenant": {
            "branding": {
              "accentColor": "#e8b33c",
              "faviconAssetRef": {
                "assetId": "ast_01KERR2KG0MEDEN00000000003",
                "variantSet": [
                  "thumbnail"
                ]
              },
              "logoAssetRef": {
                "assetId": "ast_01KERR2KG0MEDEN00000000003",
                "variantSet": [
                  "original",
                  "webp"
                ]
              },
              "primaryColor": "#1f6f4a"
            },
            "createdAt": "2026-01-12T09:00:00.000Z",
            "customDomain": "anzeige.adler-apotheke.demo.local",
            "defaultLocale": "de-DE",
            "defaultTimezone": "Europe/Berlin",
            "displayName": "Adler-Apotheke",
            "frozenAt": "2026-01-01T00:00:00.000Z",
            "id": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "slug": "adler-apotheke",
            "status": "active",
            "updatedAt": "2026-07-20T09:15:00.000Z",
            "vertical": "pharmacy"
          }
        },
        "properties": {
          "tenant": {
            "properties": {
              "branding": {
                "properties": {
                  "accentColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  },
                  "faviconAssetRef": {
                    "default": null,
                    "properties": {
                      "assetId": {
                        "description": "Datei-Kennung|Kennung der Datei in der Medienbibliothek.",
                        "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "variantSet": {
                        "description": "Fassungen|Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                        "items": {
                          "enum": [
                            "original",
                            "thumbnail",
                            "preview",
                            "webp",
                            "playback"
                          ],
                          "type": "string"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "assetId",
                      "variantSet"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "logoAssetRef": {
                    "default": null,
                    "properties": {
                      "assetId": {
                        "description": "Datei-Kennung|Kennung der Datei in der Medienbibliothek.",
                        "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "variantSet": {
                        "description": "Fassungen|Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                        "items": {
                          "enum": [
                            "original",
                            "thumbnail",
                            "preview",
                            "webp",
                            "playback"
                          ],
                          "type": "string"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "assetId",
                      "variantSet"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "primaryColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  }
                },
                "required": [
                  "primaryColor",
                  "accentColor"
                ],
                "type": "object"
              },
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "customDomain": {
                "maxLength": 253,
                "type": [
                  "string",
                  "null"
                ]
              },
              "defaultLocale": {
                "pattern": "^[a-z]{2}(-[A-Z]{2})?$",
                "type": "string"
              },
              "defaultTimezone": {
                "type": "string"
              },
              "displayName": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "frozenAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "slug": {
                "pattern": "^[a-z][a-z0-9-]{2,32}$",
                "type": "string"
              },
              "status": {
                "enum": [
                  "active",
                  "frozen",
                  "suspended",
                  "deleted"
                ],
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              },
              "vertical": {
                "default": null,
                "enum": [
                  "pharmacy"
                ],
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "slug",
              "displayName",
              "defaultLocale",
              "defaultTimezone",
              "branding",
              "customDomain",
              "status",
              "createdAt",
              "updatedAt"
            ],
            "type": "object"
          }
        },
        "required": [
          "tenant"
        ],
        "type": "object"
      },
      "UpdateUserProfileRequest": {
        "example": {
          "email": "owner@demo.local",
          "profile": {
            "avatarAssetRef": null,
            "displayName": "Julia Petersen",
            "locale": "de-DE",
            "timezone": "Europe/Berlin"
          }
        },
        "properties": {
          "email": {
            "format": "email",
            "maxLength": 254,
            "type": "string"
          },
          "profile": {
            "properties": {
              "avatarAssetRef": {
                "properties": {
                  "assetId": {
                    "description": "Datei-Kennung|Kennung der Datei in der Medienbibliothek.",
                    "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                    "type": "string"
                  },
                  "variantSet": {
                    "description": "Fassungen|Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                    "items": {
                      "enum": [
                        "original",
                        "thumbnail",
                        "preview",
                        "webp",
                        "playback"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "assetId",
                  "variantSet"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "displayName": {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              "locale": {
                "pattern": "^[a-z]{2}(-[A-Z]{2})?$",
                "type": "string"
              },
              "timezone": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "UpdateUserProfileResponse": {
        "example": {
          "requiresEmailVerification": false,
          "user": {
            "createdAt": "2026-01-12T09:05:00.000Z",
            "deletedAt": null,
            "email": "owner@demo.local",
            "emailVerifiedAt": "2026-01-12T09:12:00.000Z",
            "hasPassword": true,
            "id": "usr_01KERQ74K0TEAM000000000001",
            "lastLoginAt": "2026-07-20T07:55:00.000Z",
            "mfaEnabled": false,
            "mfaEnabledAt": null,
            "profile": {
              "avatarAssetRef": null,
              "displayName": "Julia Petersen",
              "locale": "de-DE",
              "timezone": "Europe/Berlin"
            },
            "roleAssignments": [
              {
                "assignedAt": "2026-01-12T09:05:00.000Z",
                "assignedById": "usr_01KERQ74K0TEAM000000000001",
                "expiresAt": null,
                "roleId": "rol_01KERPYWXGRECHT00000000001"
              }
            ],
            "roleVersion": 1,
            "status": "active",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "updatedAt": "2026-07-20T09:15:00.000Z"
          }
        },
        "properties": {
          "requiresEmailVerification": {
            "type": "boolean"
          },
          "user": {
            "properties": {
              "createdAt": {
                "format": "date-time",
                "type": "string"
              },
              "deletedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "email": {
                "format": "email",
                "maxLength": 254,
                "type": "string"
              },
              "emailVerifiedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "hasPassword": {
                "type": "boolean"
              },
              "id": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "lastLoginAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "mfaEnabled": {
                "type": "boolean"
              },
              "mfaEnabledAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "profile": {
                "properties": {
                  "avatarAssetRef": {
                    "properties": {
                      "assetId": {
                        "description": "Datei-Kennung|Kennung der Datei in der Medienbibliothek.",
                        "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
                        "type": "string"
                      },
                      "variantSet": {
                        "description": "Fassungen|Welche Fassungen der Datei die Anzeige braucht, von der Vorschau bis zum Original.",
                        "items": {
                          "enum": [
                            "original",
                            "thumbnail",
                            "preview",
                            "webp",
                            "playback"
                          ],
                          "type": "string"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "assetId",
                      "variantSet"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "displayName": {
                    "maxLength": 100,
                    "minLength": 1,
                    "type": "string"
                  },
                  "locale": {
                    "default": "de-DE",
                    "pattern": "^[a-z]{2}(-[A-Z]{2})?$",
                    "type": "string"
                  },
                  "timezone": {
                    "default": "Europe/Berlin",
                    "type": "string"
                  }
                },
                "required": [
                  "displayName",
                  "avatarAssetRef"
                ],
                "type": "object"
              },
              "roleAssignments": {
                "items": {
                  "properties": {
                    "assignedAt": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "assignedById": {
                      "anyOf": [
                        {
                          "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        {
                          "pattern": "^ops_[0-9A-HJKMNP-TV-Z]{26}$",
                          "type": "string"
                        },
                        {
                          "enum": [
                            "scim-directory"
                          ],
                          "type": "string"
                        },
                        {
                          "enum": [
                            "role-expiry"
                          ],
                          "type": "string"
                        }
                      ]
                    },
                    "expiresAt": {
                      "format": "date-time",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "roleId": {
                      "pattern": "^rol_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    }
                  },
                  "required": [
                    "roleId",
                    "assignedAt",
                    "assignedById",
                    "expiresAt"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "roleVersion": {
                "minimum": 0,
                "type": "integer"
              },
              "status": {
                "enum": [
                  "pending",
                  "active",
                  "suspended",
                  "deleted"
                ],
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "updatedAt": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "id",
              "tenantId",
              "email",
              "emailVerifiedAt",
              "profile",
              "roleAssignments",
              "roleVersion",
              "status",
              "createdAt",
              "updatedAt",
              "deletedAt",
              "lastLoginAt",
              "mfaEnabledAt",
              "mfaEnabled",
              "hasPassword"
            ],
            "type": "object"
          }
        },
        "required": [
          "user",
          "requiresEmailVerification"
        ],
        "type": "object"
      },
      "UpdateVideoWallCountRequest": {
        "example": {
          "quantity": 2
        },
        "properties": {
          "quantity": {
            "maximum": 1000,
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "quantity"
        ],
        "type": "object"
      },
      "UpdateVideoWallCountResponse": {
        "example": {
          "apps": [
            {
              "appId": "pharmacies-on-duty",
              "booked": true,
              "displayName": "Notdienst-Anzeige",
              "effectiveMonthlyPriceCents": 900,
              "grandfathered": false,
              "installed": true,
              "monthlyPriceCents": 900,
              "pendingFailedAt": null,
              "pendingQuantity": null,
              "skuCode": "APP-pharmacies-on-duty"
            }
          ],
          "billingCycle": "monthly",
          "cancelAtPeriodEnd": false,
          "cancelEffectiveAt": null,
          "cancelScheduledAt": null,
          "currentPeriodEnd": "2026-08-31T23:59:59.000Z",
          "currentPeriodStart": "2026-08-01T00:00:00.000Z",
          "defaultPaymentMethod": null,
          "desiredPackage": null,
          "dunning": null,
          "graceUntil": null,
          "graceWindowEnd": null,
          "invoiceWayApproved": true,
          "legacyItems": [
            {
              "description": "Anmeldung über das Firmen-Login der Organisation (SSO) — jetzt Teil von Enterprise.",
              "displayName": "Enterprise-Anmeldung",
              "effectiveMonthlyPriceCents": 0,
              "grandfathered": true,
              "pendingFailedAt": null,
              "pendingQuantity": null,
              "quantity": 1,
              "skuCode": "ADDON-SSO"
            }
          ],
          "licenses": {
            "booked": 3,
            "conflictUntil": null,
            "free": 0,
            "frozen": 1,
            "pendingFailedAt": "2026-08-01T00:05:00.000Z",
            "pendingQuantity": 2,
            "used": 4
          },
          "nextInvoice": {
            "blockers": [],
            "credit": null,
            "currency": "EUR",
            "dueToday": {
              "grossCents": 0,
              "netCents": 0,
              "vatCents": 0
            },
            "effectiveAt": "2026-08-31T23:59:59.000Z",
            "endsTrial": false,
            "lines": [
              {
                "displayName": "Paket Starter",
                "kind": "recurring",
                "netAmountCents": 3756,
                "period": null,
                "quantity": 3,
                "skuCode": "PKG-START",
                "specialConditionUntil": null,
                "unitPriceCents": 1252
              },
              {
                "displayName": "Notdienst-Anzeige",
                "kind": "recurring",
                "netAmountCents": 900,
                "period": null,
                "quantity": 1,
                "skuCode": "APP-pharmacies-on-duty",
                "specialConditionUntil": null,
                "unitPriceCents": 900
              },
              {
                "displayName": "Leinwand",
                "kind": "recurring",
                "netAmountCents": 1900,
                "period": null,
                "quantity": 1,
                "skuCode": "LIZ-VIDEOWALL",
                "specialConditionUntil": null,
                "unitPriceCents": 1900
              }
            ],
            "nextInvoiceAt": "2026-08-31T23:59:59.000Z",
            "nextPeriod": {
              "grossCents": 7802,
              "netCents": 6556,
              "vatCents": 1246
            },
            "partialCancellation": null,
            "pendingBillingCycle": null,
            "previewedAt": "2026-08-16T09:15:00.000Z",
            "previewToken": "bpv_01KERPXZM0NAECHSTE00000000",
            "rule": "R2",
            "targetState": [
              {
                "carriesDisplays": true,
                "currentQuantity": 3,
                "outcome": "unchanged",
                "packageCode": "START",
                "quantity": 3,
                "skuCode": "PKG-START"
              },
              {
                "carriesDisplays": false,
                "currentQuantity": 1,
                "outcome": "unchanged",
                "packageCode": null,
                "quantity": 1,
                "skuCode": "APP-pharmacies-on-duty"
              },
              {
                "carriesDisplays": false,
                "currentQuantity": 1,
                "outcome": "unchanged",
                "packageCode": null,
                "quantity": 1,
                "skuCode": "LIZ-VIDEOWALL"
              }
            ],
            "tax": {
              "category": "S",
              "exemptionCode": null,
              "hintKey": null,
              "ratePercent": 19,
              "requiresRecipientVatId": false,
              "ruleId": "de-domestic"
            },
            "tierScale": null,
            "trialCredit": null,
            "unchanged": true,
            "usedDisplays": 4,
            "validUntil": "2026-08-16T09:45:00.000Z"
          },
          "overdueCutoff": null,
          "packageCode": "START",
          "packages": [
            {
              "available": true,
              "code": "START",
              "current": true,
              "displayName": "Starter",
              "effectiveMonthlyPriceCents": 1490,
              "listPriceCents": 1490,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 1490,
              "pending": false,
              "skuCode": "PKG-START"
            },
            {
              "available": true,
              "code": "PRO",
              "current": false,
              "displayName": "Pro",
              "effectiveMonthlyPriceCents": 2290,
              "listPriceCents": 2290,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 2290,
              "pending": false,
              "skuCode": "PKG-PRO"
            },
            {
              "available": true,
              "code": "PREMIUM",
              "current": false,
              "displayName": "Premium",
              "effectiveMonthlyPriceCents": 2790,
              "listPriceCents": 2790,
              "maxDisplays": null,
              "minDisplays": 5,
              "monthlyPriceCents": 2790,
              "pending": false,
              "skuCode": "PKG-PREMIUM"
            },
            {
              "available": false,
              "code": "ENTERPRISE",
              "current": false,
              "displayName": "Enterprise",
              "effectiveMonthlyPriceCents": 0,
              "listPriceCents": 0,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 0,
              "pending": false,
              "skuCode": "PKG-ENTERPRISE"
            }
          ],
          "paymentWay": {
            "kind": "invoice",
            "nextChargeAt": null,
            "paymentTermsDays": 14
          },
          "paymentWaySecured": true,
          "pendingBillingCycle": null,
          "pendingChangeEffectiveAt": "2026-08-31T23:59:59.000Z",
          "pendingDisplays": null,
          "pendingFailedAt": null,
          "pendingPackageCode": null,
          "pricing": {
            "billableQuantity": 3,
            "currency": "EUR",
            "currentUnitPriceCents": 1252,
            "tiers": [],
            "vatRatePercent": 19,
            "yearlyDiscountPercent": 15
          },
          "readiness": {
            "blockers": []
          },
          "source": "invoice",
          "specialConditionUntil": null,
          "status": "active",
          "tenantStatus": "active",
          "trialEndsAt": null,
          "videoWalls": {
            "available": true,
            "booked": 2,
            "displayName": "Leinwand",
            "effectiveMonthlyPriceCents": 1900,
            "grandfathered": false,
            "monthlyPriceCents": 1900,
            "pendingFailedAt": null,
            "pendingQuantity": null,
            "skuCode": "LIZ-VIDEOWALL",
            "used": 1
          }
        },
        "properties": {
          "apps": {
            "items": {
              "properties": {
                "appId": {
                  "type": "string"
                },
                "booked": {
                  "type": "boolean"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "grandfathered": {
                  "type": "boolean"
                },
                "installed": {
                  "type": "boolean"
                },
                "monthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "pendingFailedAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "pendingQuantity": {
                  "default": null,
                  "minimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "appId",
                "skuCode",
                "displayName",
                "monthlyPriceCents",
                "effectiveMonthlyPriceCents",
                "booked",
                "installed",
                "grandfathered"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "billingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": "string"
          },
          "cancelAtPeriodEnd": {
            "type": "boolean"
          },
          "cancelEffectiveAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "cancelScheduledAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "currentPeriodEnd": {
            "format": "date-time",
            "type": "string"
          },
          "currentPeriodStart": {
            "format": "date-time",
            "type": "string"
          },
          "defaultPaymentMethod": {
            "properties": {
              "expiresAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "kind": {
                "enum": [
                  "card",
                  "sepa_debit"
                ],
                "type": "string"
              },
              "lastFour": {
                "pattern": "^\\d{4}$",
                "type": "string"
              },
              "stripePaymentMethodId": {
                "type": "string"
              }
            },
            "required": [
              "stripePaymentMethodId",
              "kind",
              "lastFour",
              "expiresAt"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "desiredPackage": {
            "properties": {
              "billingCycle": {
                "enum": [
                  "monthly",
                  "yearly"
                ],
                "type": "string"
              },
              "displays": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "packageCode": {
                "enum": [
                  "START",
                  "PRO",
                  "PREMIUM",
                  "ENTERPRISE"
                ],
                "type": "string"
              }
            },
            "required": [
              "packageCode",
              "displays",
              "billingCycle"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "dunning": {
            "properties": {
              "graceUntil": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "invoiceId": {
                "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "invoiceNumber": {
                "pattern": "^(INV|GS)-\\d{4}-\\d{4,}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastDunnedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "level": {
                "maximum": 2,
                "minimum": 0,
                "type": "integer"
              },
              "reminderSentAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "level",
              "reminderSentAt",
              "lastDunnedAt",
              "graceUntil",
              "invoiceId",
              "invoiceNumber"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "graceUntil": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "graceWindowEnd": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "invoiceWayApproved": {
            "type": "boolean"
          },
          "legacyItems": {
            "items": {
              "properties": {
                "description": {
                  "type": "string"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "grandfathered": {
                  "type": "boolean"
                },
                "pendingFailedAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "pendingQuantity": {
                  "default": null,
                  "minimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "quantity": {
                  "minimum": 0,
                  "type": "integer"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "skuCode",
                "displayName",
                "description",
                "quantity",
                "effectiveMonthlyPriceCents",
                "grandfathered"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "licenses": {
            "properties": {
              "booked": {
                "minimum": 0,
                "type": "integer"
              },
              "conflictUntil": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "free": {
                "minimum": 0,
                "type": "integer"
              },
              "frozen": {
                "default": 0,
                "minimum": 0,
                "type": "integer"
              },
              "pendingFailedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingQuantity": {
                "default": null,
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "used": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "booked",
              "used",
              "free"
            ],
            "type": "object"
          },
          "nextInvoice": {
            "$ref": "#/components/schemas/BillingPreviewResponse"
          },
          "overdueCutoff": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "packageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "packages": {
            "items": {
              "properties": {
                "available": {
                  "type": "boolean"
                },
                "code": {
                  "enum": [
                    "START",
                    "PRO",
                    "PREMIUM",
                    "ENTERPRISE"
                  ],
                  "type": "string"
                },
                "current": {
                  "type": "boolean"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "listPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "maxDisplays": {
                  "exclusiveMinimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "minDisplays": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "monthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "pending": {
                  "type": "boolean"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "code",
                "skuCode",
                "displayName",
                "monthlyPriceCents",
                "listPriceCents",
                "effectiveMonthlyPriceCents",
                "maxDisplays",
                "minDisplays",
                "current",
                "pending",
                "available"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "paymentWay": {
            "properties": {
              "kind": {
                "enum": [
                  "card",
                  "sepa_debit",
                  "invoice",
                  "none"
                ],
                "type": "string"
              },
              "nextChargeAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "paymentTermsDays": {
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "kind",
              "paymentTermsDays",
              "nextChargeAt"
            ],
            "type": "object"
          },
          "paymentWaySecured": {
            "type": "boolean"
          },
          "pendingBillingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pendingChangeEffectiveAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "pendingDisplays": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "pendingFailedAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "pendingPackageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pricing": {
            "properties": {
              "billableQuantity": {
                "minimum": 0,
                "type": "integer"
              },
              "currency": {
                "enum": [
                  "EUR"
                ],
                "type": "string"
              },
              "currentUnitPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "tiers": {
                "items": {
                  "properties": {
                    "unitPriceCents": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "upToQuantity": {
                      "exclusiveMinimum": 0,
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "upToQuantity",
                    "unitPriceCents"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "vatRatePercent": {
                "maximum": 100,
                "minimum": 0,
                "type": "number"
              },
              "yearlyDiscountPercent": {
                "maximum": 100,
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "tiers",
              "currency",
              "yearlyDiscountPercent",
              "vatRatePercent",
              "currentUnitPriceCents",
              "billableQuantity"
            ],
            "type": "object"
          },
          "readiness": {
            "properties": {
              "blockers": {
                "items": {
                  "enum": [
                    "billing-profile-missing",
                    "payment-way-missing",
                    "overdue-invoice",
                    "payment-failed",
                    "tenant-frozen",
                    "contract-suspended",
                    "cancel-pending",
                    "eu-b2b-vat-id-required",
                    "goods-abroad-unsupported",
                    "issuer-exemption-missing"
                  ],
                  "type": "string"
                },
                "type": "array"
              }
            },
            "required": [
              "blockers"
            ],
            "type": "object"
          },
          "source": {
            "enum": [
              "invoice",
              "stripe"
            ],
            "type": "string"
          },
          "specialConditionUntil": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "enum": [
              "trial",
              "active",
              "past_due",
              "canceled",
              "suspended"
            ],
            "type": "string"
          },
          "tenantStatus": {
            "enum": [
              "active",
              "frozen",
              "suspended"
            ],
            "type": "string"
          },
          "trialEndsAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "videoWalls": {
            "properties": {
              "available": {
                "type": "boolean"
              },
              "booked": {
                "minimum": 0,
                "type": "integer"
              },
              "displayName": {
                "type": "string"
              },
              "effectiveMonthlyPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "grandfathered": {
                "type": "boolean"
              },
              "monthlyPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "pendingFailedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingQuantity": {
                "default": null,
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "skuCode": {
                "maxLength": 60,
                "minLength": 3,
                "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                "type": "string"
              },
              "used": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "skuCode",
              "displayName",
              "booked",
              "used",
              "monthlyPriceCents",
              "effectiveMonthlyPriceCents",
              "grandfathered",
              "available"
            ],
            "type": "object"
          }
        },
        "required": [
          "licenses",
          "packageCode",
          "pendingPackageCode",
          "packages",
          "pricing",
          "apps",
          "videoWalls",
          "legacyItems",
          "billingCycle",
          "pendingBillingCycle",
          "status",
          "trialEndsAt",
          "graceUntil",
          "currentPeriodStart",
          "currentPeriodEnd",
          "source",
          "paymentWaySecured",
          "cancelAtPeriodEnd",
          "cancelScheduledAt",
          "cancelEffectiveAt",
          "tenantStatus",
          "graceWindowEnd",
          "overdueCutoff",
          "specialConditionUntil",
          "desiredPackage",
          "invoiceWayApproved",
          "defaultPaymentMethod",
          "paymentWay",
          "dunning",
          "nextInvoice",
          "readiness"
        ],
        "type": "object"
      },
      "UpdateWebhookEndpointRequest": {
        "example": {
          "active": true
        },
        "properties": {
          "active": {
            "type": "boolean"
          },
          "events": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "type": "object"
      },
      "UpdateWebhookEndpointResponse": {
        "example": {
          "active": true,
          "consecutiveFailures": 0,
          "createdAt": "2026-06-09T09:30:00.000Z",
          "createdById": "usr_01KERQ74K0TEAM000000000001",
          "events": [
            "fleet.player.status-changed"
          ],
          "id": "whk_01KTNVF9E0WEBHK00000000002",
          "lastDeliveryAt": "2026-06-30T09:15:00.000Z",
          "lastFailureAt": "2026-07-18T06:30:00.000Z",
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "url": "https://werbeplanung.demo.local/hooks/signage"
        },
        "properties": {
          "active": {
            "type": "boolean"
          },
          "consecutiveFailures": {
            "minimum": 0,
            "type": "integer"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "createdById": {
            "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "events": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "pattern": "^whk_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "lastDeliveryAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "lastFailureAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenantId",
          "url",
          "events",
          "active",
          "createdById",
          "createdAt",
          "lastDeliveryAt",
          "lastFailureAt",
          "consecutiveFailures"
        ],
        "type": "object"
      },
      "UpgradeAppRequest": {
        "example": {
          "acceptedManifestHash": "f7109661d73894249520ae9291e790eb1d9629f6c9afb25a1491c5f34d6b7174",
          "toVersion": "1.1.0"
        },
        "properties": {
          "acceptedManifestHash": {
            "pattern": "^[a-f0-9]{64}$",
            "type": "string"
          },
          "toVersion": {
            "pattern": "^\\d+\\.\\d+\\.\\d+$",
            "type": "string"
          }
        },
        "required": [
          "toVersion",
          "acceptedManifestHash"
        ],
        "type": "object"
      },
      "UpgradeAppResponse": {
        "example": {
          "grant": {
            "acceptedAt": "2026-06-11T04:15:00.000Z",
            "acceptedById": "usr_01KERQ74K0TEAM000000000001",
            "acceptedManifestHash": "f7109661d73894249520ae9291e790eb1d9629f6c9afb25a1491c5f34d6b7174",
            "appId": "opening-hours",
            "declinedAt": null,
            "declinedReleaseId": null,
            "declinedVersion": null,
            "id": "tag_01KJ7BEFX0GRANT00000000003",
            "installedAt": "2026-02-09T10:20:00.000Z",
            "installedById": "usr_01KERQ74K0TEAM000000000001",
            "installedReleaseId": "arl_01KRZY8ZW0AVERSN0000000003",
            "installedVersion": "1.1.0",
            "pendingDeadline": null,
            "pendingManifestHash": null,
            "pendingReasons": [],
            "pendingReleaseId": null,
            "status": "active",
            "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
            "uninstalledAt": null,
            "uninstalledById": null
          }
        },
        "properties": {
          "grant": {
            "properties": {
              "acceptedAt": {
                "format": "date-time",
                "type": "string"
              },
              "acceptedById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "acceptedManifestHash": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              },
              "appId": {
                "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                "type": "string"
              },
              "declinedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "declinedReleaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "declinedVersion": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "pattern": "^tag_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "installedAt": {
                "format": "date-time",
                "type": "string"
              },
              "installedById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "installedReleaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "installedVersion": {
                "pattern": "^\\d+\\.\\d+\\.\\d+$",
                "type": "string"
              },
              "pendingDeadline": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingManifestHash": {
                "pattern": "^[a-f0-9]{64}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingReasons": {
                "items": {
                  "enum": [
                    "permissions",
                    "access",
                    "terms",
                    "retirement"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "pendingReleaseId": {
                "pattern": "^arl_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "enum": [
                  "active",
                  "pending-reacceptance",
                  "uninstalled"
                ],
                "type": "string"
              },
              "tenantId": {
                "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              "uninstalledAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "uninstalledById": {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "tenantId",
              "appId",
              "installedVersion",
              "installedReleaseId",
              "installedAt",
              "installedById",
              "acceptedManifestHash",
              "acceptedAt",
              "acceptedById",
              "status",
              "pendingManifestHash",
              "pendingReleaseId",
              "pendingReasons",
              "pendingDeadline",
              "declinedReleaseId",
              "declinedVersion",
              "declinedAt",
              "uninstalledAt",
              "uninstalledById"
            ],
            "type": "object"
          }
        },
        "required": [
          "grant"
        ],
        "type": "object"
      },
      "UploadCompleteRequest": {
        "example": {
          "assetId": "ast_01KXJY2V30MEDEN00000000004",
          "sha256": "8b3c07e2f5914da6c0b78e34215fd9c608a7b3e1420d95f6ca87b0e39d152c4f"
        },
        "properties": {
          "assetId": {
            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "sha256": {
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          }
        },
        "required": [
          "assetId",
          "sha256"
        ],
        "type": "object"
      },
      "UploadCompleteResponse": {
        "example": {
          "createdAt": "2026-07-15T13:05:00.000Z",
          "deletedAt": null,
          "dimensions": {
            "height": 2160,
            "width": 3840
          },
          "durationSeconds": null,
          "errorMessage": null,
          "folderId": "fld_01KJ7MWKW0MAPPE00000000001",
          "id": "ast_01KXJY2V30MEDEN00000000004",
          "mimeType": "image/jpeg",
          "name": "angebot-oktober.jpg",
          "originalFileName": "Angebot Oktober Entwurf.jpg",
          "pageCount": 1,
          "purgeAt": null,
          "sha256": "8b3c07e2f5914da6c0b78e34215fd9c608a7b3e1420d95f6ca87b0e39d152c4f",
          "sizeBytes": 2214880,
          "source": null,
          "status": "processing",
          "tags": [
            "angebot",
            "herbst"
          ],
          "tenantId": "tnt_01KERPXZM0ADERAPTHEKE00001",
          "updatedAt": "2026-07-15T13:05:02.000Z",
          "uploadedById": "usr_01KFB7QPW0TEAM000000000002",
          "variants": [],
          "videoCodec": null
        },
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "deletedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "dimensions": {
            "properties": {
              "height": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "width": {
                "exclusiveMinimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "width",
              "height"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "durationSeconds": {
            "exclusiveMinimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "errorMessage": {
            "maxLength": 1000,
            "type": [
              "string",
              "null"
            ]
          },
          "folderId": {
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "mimeType": {
            "enum": [
              "image/jpeg",
              "image/png",
              "image/webp",
              "image/svg+xml",
              "video/mp4",
              "video/webm",
              "application/pdf"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "originalFileName": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "pageCount": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "purgeAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "sha256": {
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "sizeBytes": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "source": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetSource"
              },
              {
                "default": null,
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "status": {
            "enum": [
              "uploading",
              "processing",
              "ready",
              "error"
            ],
            "type": "string"
          },
          "tags": {
            "items": {
              "maxLength": 50,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 50,
            "type": "array"
          },
          "tenantId": {
            "pattern": "^tnt_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "uploadedById": {
            "anyOf": [
              {
                "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": "string"
              },
              {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            ]
          },
          "variants": {
            "items": {
              "properties": {
                "blank": {
                  "type": "boolean"
                },
                "codec": {
                  "maxLength": 31,
                  "minLength": 1,
                  "type": "string"
                },
                "generatedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "height": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "id": {
                  "pattern": "^asv_[0-9A-HJKMNP-TV-Z]{26}$",
                  "type": "string"
                },
                "kind": {
                  "anyOf": [
                    {
                      "enum": [
                        "thumbnail-sm",
                        "thumbnail-md",
                        "thumbnail-lg",
                        "preview-720",
                        "preview-1080",
                        "webp-original-size",
                        "playback-1080"
                      ],
                      "type": "string"
                    },
                    {
                      "pattern": "^page-([1-9][0-9]{0,2})$",
                      "type": "string"
                    },
                    {
                      "pattern": "^page-([1-9][0-9]{0,2})-sm$",
                      "type": "string"
                    }
                  ]
                },
                "sha256": {
                  "pattern": "^[0-9a-f]{64}$",
                  "type": "string"
                },
                "sizeBytes": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "width": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "kind",
                "width",
                "height",
                "sizeBytes",
                "generatedAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "videoCodec": {
            "default": null,
            "maxLength": 31,
            "minLength": 1,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "tenantId",
          "folderId",
          "name",
          "originalFileName",
          "mimeType",
          "sizeBytes",
          "sha256",
          "tags",
          "dimensions",
          "durationSeconds",
          "uploadedById",
          "status",
          "errorMessage",
          "createdAt",
          "updatedAt",
          "deletedAt",
          "variants",
          "purgeAt"
        ],
        "type": "object"
      },
      "UploadPrecheckRequest": {
        "example": {
          "folderId": "fld_01KJ7MWKW0MAPPE00000000001",
          "mimeType": "image/jpeg",
          "name": "angebot-oktober.jpg",
          "originalFileName": "Angebot Oktober Entwurf.jpg",
          "sha256": "8b3c07e2f5914da6c0b78e34215fd9c608a7b3e1420d95f6ca87b0e39d152c4f",
          "sizeBytes": 2214880,
          "tags": [
            "angebot",
            "herbst"
          ]
        },
        "properties": {
          "folderId": {
            "default": null,
            "pattern": "^fld_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": [
              "string",
              "null"
            ]
          },
          "mimeType": {
            "enum": [
              "image/jpeg",
              "image/png",
              "image/webp",
              "image/svg+xml",
              "video/mp4",
              "video/webm",
              "application/pdf"
            ],
            "type": "string"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "originalFileName": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "sha256": {
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "sizeBytes": {
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "tags": {
            "default": [],
            "items": {
              "maxLength": 50,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 50,
            "type": "array"
          }
        },
        "required": [
          "originalFileName",
          "mimeType",
          "sizeBytes",
          "sha256"
        ],
        "type": "object"
      },
      "UploadPrecheckResponse": {
        "example": {
          "assetId": "ast_01KXJY2V30MEDEN00000000004",
          "exists": false,
          "presignedUrl": {
            "expiresInSeconds": 900,
            "headers": {
              "content-type": "image/jpeg"
            },
            "url": "https://s3.demo.local/signage-medien/uploads/angebot-oktober.jpg"
          }
        },
        "properties": {
          "assetId": {
            "pattern": "^ast_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "exists": {
            "type": "boolean"
          },
          "presignedUrl": {
            "properties": {
              "expiresInSeconds": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "headers": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              "url": {
                "format": "uri",
                "type": "string"
              }
            },
            "required": [
              "url",
              "headers",
              "expiresInSeconds"
            ],
            "type": [
              "object",
              "null"
            ]
          }
        },
        "required": [
          "assetId",
          "exists",
          "presignedUrl"
        ],
        "type": "object"
      },
      "UploadSceneVersionThumbnailRequest": {
        "example": {
          "imageBase64": "iVBORw0KGgoAAAANSUhEUgAAAgAAAAEgCAYAAAD…"
        },
        "properties": {
          "imageBase64": {
            "maxLength": 2000000,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "imageBase64"
        ],
        "type": "object"
      },
      "UploadSceneVersionThumbnailResponse": {
        "example": {
          "ok": true
        },
        "properties": {
          "ok": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "ok"
        ],
        "type": "object"
      },
      "ValidateSceneRequest": {
        "example": {
          "document": {
            "canvas": {
              "backgroundColor": "#f7f5f0",
              "height": 1080,
              "width": 1920
            },
            "layoutTemplateId": "main-sidebar",
            "transitions": {
              "in": {
                "durationMs": 600,
                "kind": "fade"
              },
              "out": {
                "durationMs": 400,
                "kind": "fade"
              }
            },
            "widgets": [
              {
                "appId": "core",
                "appVersionPin": "0.0.0",
                "config": {
                  "assetId": "ast_01KERR2KG0MEDEN00000000003",
                  "fit": "contain",
                  "variant": "original"
                },
                "frame": {
                  "h": 180,
                  "w": 560,
                  "x": 120,
                  "y": 90
                },
                "id": "wgi_01KJPXE5A0WDGET00000000003",
                "slotName": "main",
                "widgetType": "image",
                "zIndex": 1
              },
              {
                "appId": "opening-hours",
                "appVersionPin": "1.1.0",
                "config": {
                  "backgroundImage": null,
                  "corners": "round",
                  "fallbackLocationId": "loc_01KHK4B3T0ADRESSE000000001",
                  "locationId": null,
                  "showSpecialHint": true,
                  "source": "display",
                  "surface": "green"
                },
                "frame": {
                  "h": 660,
                  "w": 1200,
                  "x": 120,
                  "y": 330
                },
                "id": "wgi_01KJPXCAQ0WDGET00000000002",
                "slotName": "main",
                "widgetType": "opening-hours",
                "zIndex": 0
              },
              {
                "appId": "clock",
                "appVersionPin": "1.2.0",
                "config": {
                  "corners": "round",
                  "date": "long",
                  "hourCycle": "auto",
                  "seconds": false,
                  "surface": "dark",
                  "timezone": "",
                  "variant": "digital",
                  "zone": "display"
                },
                "frame": {
                  "h": 1080,
                  "w": 480,
                  "x": 1440,
                  "y": 0
                },
                "id": "wgi_01KJPXAG40WDGET00000000001",
                "slotName": "sidebar",
                "widgetType": "clock",
                "zIndex": 0
              }
            ]
          }
        },
        "properties": {
          "document": {
            "properties": {
              "canvas": {
                "properties": {
                  "backgroundColor": {
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "type": "string"
                  },
                  "height": {
                    "maximum": 7680,
                    "minimum": 320,
                    "type": "integer"
                  },
                  "width": {
                    "maximum": 7680,
                    "minimum": 320,
                    "type": "integer"
                  }
                },
                "required": [
                  "width",
                  "height",
                  "backgroundColor"
                ],
                "type": "object"
              },
              "layoutTemplateId": {
                "pattern": "^(?:lyt_[0-9A-HJKMNP-TV-Z]{26}|standard-1x1|split-vertical|split-horizontal|grid-2x2|main-sidebar|main-sidebar-2|main-sidebar-3|thirds-vertical|quarters-vertical|header-main|main-ticker|header-main-ticker|sidebar-left-main|header-split|grid-3x2|main-sidebar-ticker|hero-strip-3|portrait-full|portrait-split|portrait-thirds|portrait-main-footer|portrait-half-grid-4|portrait-main-footer-2|portrait-main-footer-3|portrait-header-main|portrait-header-main-ticker|portrait-quarters|portrait-grid-2x3|portrait-hero-columns|ultra-full|ultra-halves|ultra-thirds|ultra-quarters|ultra-center-stage|ultra-main-sidebar|ultra-header-thirds|ultra-thirds-ticker)$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "transitions": {
                "properties": {
                  "in": {
                    "oneOf": [
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "none"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "fade"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "direction": {
                            "enum": [
                              "left",
                              "right",
                              "up",
                              "down"
                            ],
                            "type": "string"
                          },
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "slide"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "out": {
                    "oneOf": [
                      {
                        "properties": {
                          "kind": {
                            "enum": [
                              "none"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "fade"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "direction": {
                            "enum": [
                              "left",
                              "right",
                              "up",
                              "down"
                            ],
                            "type": "string"
                          },
                          "durationMs": {
                            "maximum": 60000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "slide"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind",
                          "durationMs"
                        ],
                        "type": "object"
                      }
                    ]
                  }
                },
                "required": [
                  "in",
                  "out"
                ],
                "type": "object"
              },
              "widgets": {
                "items": {
                  "properties": {
                    "appId": {
                      "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "appVersionPin": {
                      "pattern": "^\\d+\\.\\d+\\.\\d+$",
                      "type": "string"
                    },
                    "config": {},
                    "frame": {
                      "properties": {
                        "h": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        },
                        "w": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        },
                        "x": {
                          "minimum": 0,
                          "type": "integer"
                        },
                        "y": {
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "x",
                        "y",
                        "w",
                        "h"
                      ],
                      "type": "object"
                    },
                    "id": {
                      "pattern": "^wgi_[0-9A-HJKMNP-TV-Z]{26}$",
                      "type": "string"
                    },
                    "slotName": {
                      "maxLength": 60,
                      "minLength": 1,
                      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "widgetType": {
                      "maxLength": 100,
                      "minLength": 2,
                      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                      "type": "string"
                    },
                    "zIndex": {
                      "maximum": 1000,
                      "minimum": 0,
                      "type": "integer"
                    }
                  },
                  "required": [
                    "id",
                    "appId",
                    "widgetType",
                    "appVersionPin",
                    "frame",
                    "zIndex"
                  ],
                  "type": "object"
                },
                "maxItems": 50,
                "type": "array"
              }
            },
            "required": [
              "canvas",
              "layoutTemplateId",
              "widgets",
              "transitions"
            ],
            "type": "object"
          }
        },
        "required": [
          "document"
        ],
        "type": "object"
      },
      "ValidateSceneResponse": {
        "example": {
          "findings": [],
          "valid": true
        },
        "properties": {
          "findings": {
            "items": {
              "$ref": "#/components/schemas/SceneValidationFinding"
            },
            "type": "array"
          },
          "valid": {
            "type": "boolean"
          }
        },
        "required": [
          "valid",
          "findings"
        ],
        "type": "object"
      },
      "VerifiedProof": {
        "example": {
          "addenda": [
            {
              "issuedAt": "2026-10-06T01:30:08.000Z",
              "number": "SZN-2026-000412"
            }
          ],
          "addendumOf": null,
          "advertiserName": "Nordwind Naturkosmetik GmbH",
          "bookingLineName": "Schaufenster und Kasse",
          "campaignName": "Herbstpflege 2026",
          "captureCount": 26,
          "chain": {
            "batches": 1416,
            "complete": true,
            "devices": 2,
            "forks": 0,
            "gaps": 0,
            "restarts": 2,
            "unsigned": 0
          },
          "closedAt": "2026-10-05T01:25:00.000Z",
          "commitment": {
            "quantity": 12000,
            "unit": "plays"
          },
          "files": [
            {
              "kind": "pdf",
              "name": "SZN-2026-000398.pdf",
              "sha256": "26d9c86976d75e7e9dc3b2367b5b7ae4140eeeec4c018e84041904080a30f352",
              "sizeBytes": 412386
            },
            {
              "kind": "csv",
              "name": "SZN-2026-000398.csv",
              "sha256": "1d38faf8b62d7fc8a93395228da4ff653476b9b4b34f5898d8454b29f9d35887",
              "sizeBytes": 61904
            },
            {
              "kind": "manifest",
              "name": "SZN-2026-000398.manifest.json",
              "sha256": "53a694909a683177e7ecd597c1eca5b3351aaebdc3f90250b01cc6615040fc7c",
              "sizeBytes": 168215
            }
          ],
          "id": "prf_01KZ4T6M80NCHWS00000000398",
          "integrity": {
            "batchMerkleRoot": "40de5641ea11cc03fbd2f498bcb3d6b96d0ebbefcda54eb1dd83766a5a65b6c7",
            "dataSha256": "3ab4b52195125a116e11a6a6630f8ae8543e2ce511afc4457513ad78eb61048b",
            "manifestMatchesRegister": true,
            "manifestSha256": "53a694909a683177e7ecd597c1eca5b3351aaebdc3f90250b01cc6615040fc7c"
          },
          "issuedAt": "2026-10-05T01:30:12.000Z",
          "kind": "closing",
          "number": "SZN-2026-000398",
          "owner": "tenant",
          "period": {
            "from": "2026-09-01",
            "timezone": "Europe/Berlin",
            "to": "2026-09-30"
          },
          "result": {
            "airtimeSeconds": 56080,
            "commitment": {
              "lineQuantity": 12000,
              "quantity": 5901.639,
              "unit": "plays"
            },
            "contacts": {
              "byGrade": [
                {
                  "contacts": 18742,
                  "grade": "A",
                  "share": 1
                }
              ],
              "contactModelVersion": 1,
              "gradeCExcluded": false,
              "total": 18742
            },
            "deliveredInUnit": 5608,
            "deliveryToPlan": 0.9435,
            "displays": {
              "reached": 2,
              "targeted": 2
            },
            "fulfilment": 0.9502,
            "locations": {
              "reached": 1,
              "targeted": 1
            },
            "plannedPlays": 5944,
            "plays": 5731,
            "validPlays": 5608
          },
          "retainedUntil": "2036-10-05T01:25:00.000Z",
          "signature": {
            "algorithm": "Ed25519",
            "keyId": "szn-proof-2026-02",
            "state": "valid"
          },
          "versions": {
            "contactModel": 1,
            "networkParameters": 2,
            "validityRule": 1
          }
        },
        "properties": {
          "addenda": {
            "items": {
              "properties": {
                "issuedAt": {
                  "format": "date-time",
                  "type": "string"
                },
                "number": {
                  "pattern": "^SZN-\\d{4}-\\d{6}$",
                  "type": "string"
                }
              },
              "required": [
                "number",
                "issuedAt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "addendumOf": {
            "properties": {
              "issuedAt": {
                "format": "date-time",
                "type": "string"
              },
              "number": {
                "pattern": "^SZN-\\d{4}-\\d{6}$",
                "type": "string"
              }
            },
            "required": [
              "number",
              "issuedAt"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "advertiserName": {
            "type": "string"
          },
          "bookingLineName": {
            "type": "string"
          },
          "campaignName": {
            "type": "string"
          },
          "captureCount": {
            "minimum": 0,
            "type": "integer"
          },
          "chain": {
            "properties": {
              "batches": {
                "minimum": 0,
                "type": "integer"
              },
              "complete": {
                "type": "boolean"
              },
              "devices": {
                "minimum": 0,
                "type": "integer"
              },
              "forks": {
                "minimum": 0,
                "type": "integer"
              },
              "gaps": {
                "minimum": 0,
                "type": "integer"
              },
              "restarts": {
                "minimum": 0,
                "type": "integer"
              },
              "unsigned": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "batches",
              "devices",
              "gaps",
              "forks",
              "restarts",
              "unsigned",
              "complete"
            ],
            "type": "object"
          },
          "closedAt": {
            "format": "date-time",
            "type": "string"
          },
          "commitment": {
            "$ref": "#/components/schemas/BookingCommitment"
          },
          "files": {
            "items": {
              "properties": {
                "kind": {
                  "enum": [
                    "pdf",
                    "csv",
                    "manifest",
                    "capture"
                  ],
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "sha256": {
                  "pattern": "^[a-f0-9]{64}$",
                  "type": "string"
                },
                "sizeBytes": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "kind",
                "name",
                "sha256",
                "sizeBytes"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "id": {
            "pattern": "^prf_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          },
          "integrity": {
            "properties": {
              "batchMerkleRoot": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              },
              "dataSha256": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              },
              "manifestMatchesRegister": {
                "type": "boolean"
              },
              "manifestSha256": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              }
            },
            "required": [
              "manifestMatchesRegister",
              "manifestSha256",
              "dataSha256",
              "batchMerkleRoot"
            ],
            "type": "object"
          },
          "issuedAt": {
            "format": "date-time",
            "type": "string"
          },
          "kind": {
            "enum": [
              "closing",
              "addendum",
              "interim"
            ],
            "type": "string"
          },
          "number": {
            "pattern": "^SZN-\\d{4}-\\d{6}$",
            "type": "string"
          },
          "owner": {
            "enum": [
              "tenant",
              "network"
            ],
            "type": "string"
          },
          "period": {
            "$ref": "#/components/schemas/ProofPeriod"
          },
          "result": {
            "$ref": "#/components/schemas/ProofResult"
          },
          "retainedUntil": {
            "format": "date-time",
            "type": "string"
          },
          "signature": {
            "properties": {
              "algorithm": {
                "enum": [
                  "Ed25519"
                ],
                "type": "string"
              },
              "keyId": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "state": {
                "enum": [
                  "valid",
                  "invalid",
                  "unsigned"
                ],
                "type": "string"
              }
            },
            "required": [
              "state",
              "keyId",
              "algorithm"
            ],
            "type": "object"
          },
          "versions": {
            "properties": {
              "contactModel": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "networkParameters": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "validityRule": {
                "exclusiveMinimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "validityRule",
              "contactModel",
              "networkParameters"
            ],
            "type": "object"
          }
        },
        "required": [
          "id",
          "number",
          "kind",
          "owner",
          "advertiserName",
          "campaignName",
          "bookingLineName",
          "commitment",
          "period",
          "closedAt",
          "issuedAt",
          "retainedUntil",
          "result",
          "versions",
          "signature",
          "integrity",
          "chain",
          "addendumOf",
          "addenda",
          "files",
          "captureCount"
        ],
        "type": "object"
      },
      "VerifyMfaRequest": {
        "example": {
          "code": "481902",
          "mfaSessionId": "ses_01KXV0E1W0SESSN00000000002"
        },
        "properties": {
          "code": {
            "pattern": "^\\d{6}$",
            "type": "string"
          },
          "mfaSessionId": {
            "pattern": "^ses_[0-9A-HJKMNP-TV-Z]{26}$",
            "type": "string"
          }
        },
        "required": [
          "mfaSessionId",
          "code"
        ],
        "type": "object"
      },
      "VerifyProofRequest": {
        "example": {
          "checkCode": "4HTC-4PY0-7X1N",
          "number": "SZN-2026-000398"
        },
        "properties": {
          "checkCode": {
            "maxLength": 32,
            "minLength": 1,
            "type": "string"
          },
          "fileSha256": {
            "pattern": "^[a-fA-F0-9]{64}$",
            "type": "string"
          },
          "number": {
            "maxLength": 32,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "number"
        ],
        "type": "object"
      },
      "VerifyProofResponse": {
        "example": {
          "checks": {
            "checkCode": "match",
            "file": "absent",
            "fileKind": null
          },
          "number": "SZN-2026-000398",
          "proof": {
            "addenda": [
              {
                "issuedAt": "2026-10-06T01:30:08.000Z",
                "number": "SZN-2026-000412"
              }
            ],
            "addendumOf": null,
            "advertiserName": "Nordwind Naturkosmetik GmbH",
            "bookingLineName": "Schaufenster und Kasse",
            "campaignName": "Herbstpflege 2026",
            "captureCount": 26,
            "chain": {
              "batches": 1416,
              "complete": true,
              "devices": 2,
              "forks": 0,
              "gaps": 0,
              "restarts": 2,
              "unsigned": 0
            },
            "closedAt": "2026-10-05T01:25:00.000Z",
            "commitment": {
              "quantity": 12000,
              "unit": "plays"
            },
            "files": [
              {
                "kind": "pdf",
                "name": "SZN-2026-000398.pdf",
                "sha256": "26d9c86976d75e7e9dc3b2367b5b7ae4140eeeec4c018e84041904080a30f352",
                "sizeBytes": 412386
              },
              {
                "kind": "csv",
                "name": "SZN-2026-000398.csv",
                "sha256": "1d38faf8b62d7fc8a93395228da4ff653476b9b4b34f5898d8454b29f9d35887",
                "sizeBytes": 61904
              },
              {
                "kind": "manifest",
                "name": "SZN-2026-000398.manifest.json",
                "sha256": "53a694909a683177e7ecd597c1eca5b3351aaebdc3f90250b01cc6615040fc7c",
                "sizeBytes": 168215
              }
            ],
            "id": "prf_01KZ4T6M80NCHWS00000000398",
            "integrity": {
              "batchMerkleRoot": "40de5641ea11cc03fbd2f498bcb3d6b96d0ebbefcda54eb1dd83766a5a65b6c7",
              "dataSha256": "3ab4b52195125a116e11a6a6630f8ae8543e2ce511afc4457513ad78eb61048b",
              "manifestMatchesRegister": true,
              "manifestSha256": "53a694909a683177e7ecd597c1eca5b3351aaebdc3f90250b01cc6615040fc7c"
            },
            "issuedAt": "2026-10-05T01:30:12.000Z",
            "kind": "closing",
            "number": "SZN-2026-000398",
            "owner": "tenant",
            "period": {
              "from": "2026-09-01",
              "timezone": "Europe/Berlin",
              "to": "2026-09-30"
            },
            "result": {
              "airtimeSeconds": 56080,
              "commitment": {
                "lineQuantity": 12000,
                "quantity": 5901.639,
                "unit": "plays"
              },
              "contacts": {
                "byGrade": [
                  {
                    "contacts": 18742,
                    "grade": "A",
                    "share": 1
                  }
                ],
                "contactModelVersion": 1,
                "gradeCExcluded": false,
                "total": 18742
              },
              "deliveredInUnit": 5608,
              "deliveryToPlan": 0.9435,
              "displays": {
                "reached": 2,
                "targeted": 2
              },
              "fulfilment": 0.9502,
              "locations": {
                "reached": 1,
                "targeted": 1
              },
              "plannedPlays": 5944,
              "plays": 5731,
              "validPlays": 5608
            },
            "retainedUntil": "2036-10-05T01:25:00.000Z",
            "signature": {
              "algorithm": "Ed25519",
              "keyId": "szn-proof-2026-02",
              "state": "valid"
            },
            "versions": {
              "contactModel": 1,
              "networkParameters": 2,
              "validityRule": 1
            }
          },
          "status": "valid"
        },
        "properties": {
          "checks": {
            "properties": {
              "checkCode": {
                "enum": [
                  "match",
                  "mismatch",
                  "absent"
                ],
                "type": "string"
              },
              "file": {
                "enum": [
                  "match",
                  "mismatch",
                  "absent"
                ],
                "type": "string"
              },
              "fileKind": {
                "enum": [
                  "pdf",
                  "csv",
                  "manifest",
                  "capture"
                ],
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "checkCode",
              "file",
              "fileKind"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "number": {
            "type": [
              "string",
              "null"
            ]
          },
          "proof": {
            "allOf": [
              {
                "$ref": "#/components/schemas/VerifiedProof"
              },
              {
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "status": {
            "enum": [
              "valid",
              "inconsistent",
              "mismatch",
              "unknown"
            ],
            "type": "string"
          }
        },
        "required": [
          "status",
          "number",
          "checks",
          "proof"
        ],
        "type": "object"
      },
      "VerifyVatIdResponse": {
        "example": {
          "checkedAt": "2026-08-16T09:12:00.000Z",
          "recheckAfter": "2026-11-14T09:12:00.000Z",
          "registeredName": "Adler-Apotheke Inh. Petra Weber e.K.",
          "status": "confirmed"
        },
        "properties": {
          "checkedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "recheckAfter": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "registeredName": {
            "maxLength": 300,
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "enum": [
              "none",
              "format-only",
              "confirmed",
              "invalid",
              "unavailable"
            ],
            "type": "string"
          }
        },
        "required": [
          "status",
          "checkedAt",
          "registeredName",
          "recheckAfter"
        ],
        "type": "object"
      },
      "WebhookEventTypeCatalogEntry": {
        "example": {
          "area": "sample",
          "areaLabel": "sample",
          "description": "sample",
          "exampleBody": {
            "sample": null
          },
          "label": "sample",
          "type": "sample"
        },
        "properties": {
          "area": {
            "type": "string"
          },
          "areaLabel": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "exampleBody": {
            "additionalProperties": {},
            "type": [
              "object",
              "null"
            ]
          },
          "label": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "area",
          "areaLabel",
          "label",
          "description",
          "exampleBody"
        ],
        "type": "object"
      },
      "WithdrawPendingChangeRequest": {
        "example": {
          "kind": "quantity",
          "skuCode": "LIZ-VIDEOWALL"
        },
        "properties": {
          "kind": {
            "enum": [
              "quantity",
              "package",
              "cycle"
            ],
            "type": "string"
          },
          "skuCode": {
            "default": null,
            "maxLength": 60,
            "minLength": 3,
            "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "kind"
        ],
        "type": "object"
      },
      "WithdrawPendingChangeResponse": {
        "example": {
          "apps": [
            {
              "appId": "pharmacies-on-duty",
              "booked": true,
              "displayName": "Notdienst-Anzeige",
              "effectiveMonthlyPriceCents": 900,
              "grandfathered": false,
              "installed": true,
              "monthlyPriceCents": 900,
              "pendingFailedAt": null,
              "pendingQuantity": null,
              "skuCode": "APP-pharmacies-on-duty"
            }
          ],
          "billingCycle": "monthly",
          "cancelAtPeriodEnd": false,
          "cancelEffectiveAt": null,
          "cancelScheduledAt": null,
          "currentPeriodEnd": "2026-08-31T23:59:59.000Z",
          "currentPeriodStart": "2026-08-01T00:00:00.000Z",
          "defaultPaymentMethod": null,
          "desiredPackage": null,
          "dunning": null,
          "graceUntil": null,
          "graceWindowEnd": null,
          "invoiceWayApproved": true,
          "legacyItems": [
            {
              "description": "Anmeldung über das Firmen-Login der Organisation (SSO) — jetzt Teil von Enterprise.",
              "displayName": "Enterprise-Anmeldung",
              "effectiveMonthlyPriceCents": 0,
              "grandfathered": true,
              "pendingFailedAt": null,
              "pendingQuantity": null,
              "quantity": 1,
              "skuCode": "ADDON-SSO"
            }
          ],
          "licenses": {
            "booked": 3,
            "conflictUntil": null,
            "free": 0,
            "frozen": 1,
            "pendingFailedAt": "2026-08-01T00:05:00.000Z",
            "pendingQuantity": 2,
            "used": 4
          },
          "nextInvoice": {
            "blockers": [],
            "credit": null,
            "currency": "EUR",
            "dueToday": {
              "grossCents": 0,
              "netCents": 0,
              "vatCents": 0
            },
            "effectiveAt": "2026-08-31T23:59:59.000Z",
            "endsTrial": false,
            "lines": [
              {
                "displayName": "Paket Starter",
                "kind": "recurring",
                "netAmountCents": 3756,
                "period": null,
                "quantity": 3,
                "skuCode": "PKG-START",
                "specialConditionUntil": null,
                "unitPriceCents": 1252
              },
              {
                "displayName": "Notdienst-Anzeige",
                "kind": "recurring",
                "netAmountCents": 900,
                "period": null,
                "quantity": 1,
                "skuCode": "APP-pharmacies-on-duty",
                "specialConditionUntil": null,
                "unitPriceCents": 900
              },
              {
                "displayName": "Leinwand",
                "kind": "recurring",
                "netAmountCents": 1900,
                "period": null,
                "quantity": 1,
                "skuCode": "LIZ-VIDEOWALL",
                "specialConditionUntil": null,
                "unitPriceCents": 1900
              }
            ],
            "nextInvoiceAt": "2026-08-31T23:59:59.000Z",
            "nextPeriod": {
              "grossCents": 7802,
              "netCents": 6556,
              "vatCents": 1246
            },
            "partialCancellation": null,
            "pendingBillingCycle": null,
            "previewedAt": "2026-08-16T09:15:00.000Z",
            "previewToken": "bpv_01KERPXZM0NAECHSTE00000000",
            "rule": "R2",
            "targetState": [
              {
                "carriesDisplays": true,
                "currentQuantity": 3,
                "outcome": "unchanged",
                "packageCode": "START",
                "quantity": 3,
                "skuCode": "PKG-START"
              },
              {
                "carriesDisplays": false,
                "currentQuantity": 1,
                "outcome": "unchanged",
                "packageCode": null,
                "quantity": 1,
                "skuCode": "APP-pharmacies-on-duty"
              },
              {
                "carriesDisplays": false,
                "currentQuantity": 1,
                "outcome": "unchanged",
                "packageCode": null,
                "quantity": 1,
                "skuCode": "LIZ-VIDEOWALL"
              }
            ],
            "tax": {
              "category": "S",
              "exemptionCode": null,
              "hintKey": null,
              "ratePercent": 19,
              "requiresRecipientVatId": false,
              "ruleId": "de-domestic"
            },
            "tierScale": null,
            "trialCredit": null,
            "unchanged": true,
            "usedDisplays": 4,
            "validUntil": "2026-08-16T09:45:00.000Z"
          },
          "overdueCutoff": null,
          "packageCode": "START",
          "packages": [
            {
              "available": true,
              "code": "START",
              "current": true,
              "displayName": "Starter",
              "effectiveMonthlyPriceCents": 1490,
              "listPriceCents": 1490,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 1490,
              "pending": false,
              "skuCode": "PKG-START"
            },
            {
              "available": true,
              "code": "PRO",
              "current": false,
              "displayName": "Pro",
              "effectiveMonthlyPriceCents": 2290,
              "listPriceCents": 2290,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 2290,
              "pending": false,
              "skuCode": "PKG-PRO"
            },
            {
              "available": true,
              "code": "PREMIUM",
              "current": false,
              "displayName": "Premium",
              "effectiveMonthlyPriceCents": 2790,
              "listPriceCents": 2790,
              "maxDisplays": null,
              "minDisplays": 5,
              "monthlyPriceCents": 2790,
              "pending": false,
              "skuCode": "PKG-PREMIUM"
            },
            {
              "available": false,
              "code": "ENTERPRISE",
              "current": false,
              "displayName": "Enterprise",
              "effectiveMonthlyPriceCents": 0,
              "listPriceCents": 0,
              "maxDisplays": null,
              "minDisplays": 1,
              "monthlyPriceCents": 0,
              "pending": false,
              "skuCode": "PKG-ENTERPRISE"
            }
          ],
          "paymentWay": {
            "kind": "invoice",
            "nextChargeAt": null,
            "paymentTermsDays": 14
          },
          "paymentWaySecured": true,
          "pendingBillingCycle": null,
          "pendingChangeEffectiveAt": "2026-08-31T23:59:59.000Z",
          "pendingDisplays": null,
          "pendingFailedAt": null,
          "pendingPackageCode": null,
          "pricing": {
            "billableQuantity": 3,
            "currency": "EUR",
            "currentUnitPriceCents": 1252,
            "tiers": [],
            "vatRatePercent": 19,
            "yearlyDiscountPercent": 15
          },
          "readiness": {
            "blockers": []
          },
          "source": "invoice",
          "specialConditionUntil": null,
          "status": "active",
          "tenantStatus": "active",
          "trialEndsAt": null,
          "videoWalls": {
            "available": true,
            "booked": 1,
            "displayName": "Leinwand",
            "effectiveMonthlyPriceCents": 1900,
            "grandfathered": false,
            "monthlyPriceCents": 1900,
            "pendingFailedAt": null,
            "pendingQuantity": null,
            "skuCode": "LIZ-VIDEOWALL",
            "used": 1
          }
        },
        "properties": {
          "apps": {
            "items": {
              "properties": {
                "appId": {
                  "type": "string"
                },
                "booked": {
                  "type": "boolean"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "grandfathered": {
                  "type": "boolean"
                },
                "installed": {
                  "type": "boolean"
                },
                "monthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "pendingFailedAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "pendingQuantity": {
                  "default": null,
                  "minimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "appId",
                "skuCode",
                "displayName",
                "monthlyPriceCents",
                "effectiveMonthlyPriceCents",
                "booked",
                "installed",
                "grandfathered"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "billingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": "string"
          },
          "cancelAtPeriodEnd": {
            "type": "boolean"
          },
          "cancelEffectiveAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "cancelScheduledAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "currentPeriodEnd": {
            "format": "date-time",
            "type": "string"
          },
          "currentPeriodStart": {
            "format": "date-time",
            "type": "string"
          },
          "defaultPaymentMethod": {
            "properties": {
              "expiresAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "kind": {
                "enum": [
                  "card",
                  "sepa_debit"
                ],
                "type": "string"
              },
              "lastFour": {
                "pattern": "^\\d{4}$",
                "type": "string"
              },
              "stripePaymentMethodId": {
                "type": "string"
              }
            },
            "required": [
              "stripePaymentMethodId",
              "kind",
              "lastFour",
              "expiresAt"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "desiredPackage": {
            "properties": {
              "billingCycle": {
                "enum": [
                  "monthly",
                  "yearly"
                ],
                "type": "string"
              },
              "displays": {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              "packageCode": {
                "enum": [
                  "START",
                  "PRO",
                  "PREMIUM",
                  "ENTERPRISE"
                ],
                "type": "string"
              }
            },
            "required": [
              "packageCode",
              "displays",
              "billingCycle"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "dunning": {
            "properties": {
              "graceUntil": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "invoiceId": {
                "pattern": "^inv_[0-9A-HJKMNP-TV-Z]{26}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "invoiceNumber": {
                "pattern": "^(INV|GS)-\\d{4}-\\d{4,}$",
                "type": [
                  "string",
                  "null"
                ]
              },
              "lastDunnedAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "level": {
                "maximum": 2,
                "minimum": 0,
                "type": "integer"
              },
              "reminderSentAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "level",
              "reminderSentAt",
              "lastDunnedAt",
              "graceUntil",
              "invoiceId",
              "invoiceNumber"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "graceUntil": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "graceWindowEnd": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "invoiceWayApproved": {
            "type": "boolean"
          },
          "legacyItems": {
            "items": {
              "properties": {
                "description": {
                  "type": "string"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "grandfathered": {
                  "type": "boolean"
                },
                "pendingFailedAt": {
                  "default": null,
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "pendingQuantity": {
                  "default": null,
                  "minimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "quantity": {
                  "minimum": 0,
                  "type": "integer"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "skuCode",
                "displayName",
                "description",
                "quantity",
                "effectiveMonthlyPriceCents",
                "grandfathered"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "licenses": {
            "properties": {
              "booked": {
                "minimum": 0,
                "type": "integer"
              },
              "conflictUntil": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "free": {
                "minimum": 0,
                "type": "integer"
              },
              "frozen": {
                "default": 0,
                "minimum": 0,
                "type": "integer"
              },
              "pendingFailedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingQuantity": {
                "default": null,
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "used": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "booked",
              "used",
              "free"
            ],
            "type": "object"
          },
          "nextInvoice": {
            "$ref": "#/components/schemas/BillingPreviewResponse"
          },
          "overdueCutoff": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "packageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "packages": {
            "items": {
              "properties": {
                "available": {
                  "type": "boolean"
                },
                "code": {
                  "enum": [
                    "START",
                    "PRO",
                    "PREMIUM",
                    "ENTERPRISE"
                  ],
                  "type": "string"
                },
                "current": {
                  "type": "boolean"
                },
                "displayName": {
                  "type": "string"
                },
                "effectiveMonthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "listPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "maxDisplays": {
                  "exclusiveMinimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "minDisplays": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                },
                "monthlyPriceCents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "pending": {
                  "type": "boolean"
                },
                "skuCode": {
                  "maxLength": 60,
                  "minLength": 3,
                  "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "code",
                "skuCode",
                "displayName",
                "monthlyPriceCents",
                "listPriceCents",
                "effectiveMonthlyPriceCents",
                "maxDisplays",
                "minDisplays",
                "current",
                "pending",
                "available"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "paymentWay": {
            "properties": {
              "kind": {
                "enum": [
                  "card",
                  "sepa_debit",
                  "invoice",
                  "none"
                ],
                "type": "string"
              },
              "nextChargeAt": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "paymentTermsDays": {
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "kind",
              "paymentTermsDays",
              "nextChargeAt"
            ],
            "type": "object"
          },
          "paymentWaySecured": {
            "type": "boolean"
          },
          "pendingBillingCycle": {
            "enum": [
              "monthly",
              "yearly"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pendingChangeEffectiveAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "pendingDisplays": {
            "default": null,
            "exclusiveMinimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "pendingFailedAt": {
            "default": null,
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "pendingPackageCode": {
            "enum": [
              "START",
              "PRO",
              "PREMIUM",
              "ENTERPRISE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "pricing": {
            "properties": {
              "billableQuantity": {
                "minimum": 0,
                "type": "integer"
              },
              "currency": {
                "enum": [
                  "EUR"
                ],
                "type": "string"
              },
              "currentUnitPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "tiers": {
                "items": {
                  "properties": {
                    "unitPriceCents": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "upToQuantity": {
                      "exclusiveMinimum": 0,
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "upToQuantity",
                    "unitPriceCents"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "vatRatePercent": {
                "maximum": 100,
                "minimum": 0,
                "type": "number"
              },
              "yearlyDiscountPercent": {
                "maximum": 100,
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "tiers",
              "currency",
              "yearlyDiscountPercent",
              "vatRatePercent",
              "currentUnitPriceCents",
              "billableQuantity"
            ],
            "type": "object"
          },
          "readiness": {
            "properties": {
              "blockers": {
                "items": {
                  "enum": [
                    "billing-profile-missing",
                    "payment-way-missing",
                    "overdue-invoice",
                    "payment-failed",
                    "tenant-frozen",
                    "contract-suspended",
                    "cancel-pending",
                    "eu-b2b-vat-id-required",
                    "goods-abroad-unsupported",
                    "issuer-exemption-missing"
                  ],
                  "type": "string"
                },
                "type": "array"
              }
            },
            "required": [
              "blockers"
            ],
            "type": "object"
          },
          "source": {
            "enum": [
              "invoice",
              "stripe"
            ],
            "type": "string"
          },
          "specialConditionUntil": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "enum": [
              "trial",
              "active",
              "past_due",
              "canceled",
              "suspended"
            ],
            "type": "string"
          },
          "tenantStatus": {
            "enum": [
              "active",
              "frozen",
              "suspended"
            ],
            "type": "string"
          },
          "trialEndsAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "videoWalls": {
            "properties": {
              "available": {
                "type": "boolean"
              },
              "booked": {
                "minimum": 0,
                "type": "integer"
              },
              "displayName": {
                "type": "string"
              },
              "effectiveMonthlyPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "grandfathered": {
                "type": "boolean"
              },
              "monthlyPriceCents": {
                "minimum": 0,
                "type": "integer"
              },
              "pendingFailedAt": {
                "default": null,
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "pendingQuantity": {
                "default": null,
                "minimum": 0,
                "type": [
                  "integer",
                  "null"
                ]
              },
              "skuCode": {
                "maxLength": 60,
                "minLength": 3,
                "pattern": "^[A-Z][A-Z0-9]*(-[A-Za-z0-9_]+)*$",
                "type": "string"
              },
              "used": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "skuCode",
              "displayName",
              "booked",
              "used",
              "monthlyPriceCents",
              "effectiveMonthlyPriceCents",
              "grandfathered",
              "available"
            ],
            "type": "object"
          }
        },
        "required": [
          "licenses",
          "packageCode",
          "pendingPackageCode",
          "packages",
          "pricing",
          "apps",
          "videoWalls",
          "legacyItems",
          "billingCycle",
          "pendingBillingCycle",
          "status",
          "trialEndsAt",
          "graceUntil",
          "currentPeriodStart",
          "currentPeriodEnd",
          "source",
          "paymentWaySecured",
          "cancelAtPeriodEnd",
          "cancelScheduledAt",
          "cancelEffectiveAt",
          "tenantStatus",
          "graceWindowEnd",
          "overdueCutoff",
          "specialConditionUntil",
          "desiredPackage",
          "invoiceWayApproved",
          "defaultPaymentMethod",
          "paymentWay",
          "dunning",
          "nextInvoice",
          "readiness"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "apiKey": {
        "description": "API-Schlüssel einer Organisation (beginnt mit `ak_`). Was er darf, bestimmen die Rechte in seinem `scope`.",
        "scheme": "bearer",
        "type": "http"
      },
      "oauthAccessToken": {
        "description": "Zugriffstoken eines delegierten Zugangs (beginnt mit `oat_`), ausgestellt von `POST /oauth/token`. Es reicht nie weiter als das Konto, das den Zugang erteilt hat.",
        "scheme": "bearer",
        "type": "http"
      },
      "scimToken": {
        "description": "SCIM-Zugang einer Organisation (beginnt mit `sct_`). Er gilt ausschließlich für die Routen unter `/scim/v2`.",
        "scheme": "bearer",
        "type": "http"
      },
      "sessionJwt": {
        "bearerFormat": "JWT",
        "description": "Zugriffstoken einer Sitzung (JWT, beginnt mit `eyJ`), ausgestellt von `POST /v1/auth/login` und den weiteren Anmeldewegen.",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "Die Szenera-API ist die einzige Schnittstelle zur Plattform: Über sie verwalten Sie Medien,\nSzenen, Playlisten, Zeitpläne und Abspielgeräte — dieselben Routen, die auch das Portal bedient.\nAlle Endpunkte sind unter dem Präfix `/v1` versioniert und sprechen JSON.\n\n**Basis-Adresse.** Die Auswahl über dieser Beschreibung nennt die Adressen, gegen die diese\nReferenz Aufrufe schickt; der erste Eintrag ist der Ursprung, von dem Sie sie gerade geladen\nhaben. Ein vollständiger Pfad ist also `<Basis-Adresse>/v1/scenes`.\n\n**Der erste Aufruf.** Sie brauchen einen API-Schlüssel aus dem Portal (Einstellungen →\nSicherheit → API-Schlüssel). Er beginnt mit `ak_` und wird genau einmal angezeigt:\n\n```bash\ncurl -sS \"$SZENERA_API/v1/scenes?limit=20\" \\\n  -H \"Authorization: Bearer $SZENERA_API_KEY\"\n```\n\nEine Einführung mit weiteren Beispielen, den Regeln für Schlüssel und dem Weg zu den Webhooks\nsteht auf der [Entwicklerseite](https://szenera.com/entwickler).\n\n**Was hier steht — und was nicht.** Diese Referenz zeigt die öffentliche Fläche: die Operationen\nder Klassen `stable` und `beta`. Was den Plattformbetrieb, die Brücken zu Gerät und Renderer\noder die Diagnose betrifft, ist als `internal` geführt und in dieser Fassung gar nicht\nenthalten. Die Navigation links gruppiert die übrigen Endpunkte nach Fachbereichen.\n\n## Authentisierung\n\nWelches Verfahren eine Route akzeptiert, steht maschinenlesbar im Abschnitt `security` der\njeweiligen Operation, unter dem Namen aus der zweiten Spalte. Eine leere Liste heißt: anmeldefrei.\n\n| Verfahren | In `security` | Einsatz |\n| --- | --- | --- |\n| **JWT** (`Authorization: Bearer eyJ…`) | `sessionJwt` | Der Regelfall für Benutzer und Oberflächen. Sie erhalten das Token aus `POST /v1/auth/login` und den weiteren Anmeldewegen unter *Anmeldung & Sitzungen*. |\n| **API-Schlüssel** (`Authorization: Bearer ak_…`) | `apiKey` | Server-zu-Server-Zugriff ohne Benutzersitzung. Schlüssel verwalten Sie unter `/v1/me/api-keys`, den Klartext übermittelt die API ausschließlich bei der Ausstellung. |\n| **Delegierter Zugang** (`Authorization: Bearer oat_…`) | `oauthAccessToken` | Eine Anwendung handelt mit den Rechten, die ihr ein Konto über OAuth erteilt hat. Das Token stellt `POST /oauth/token` aus, angenommen wird es überall dort, wo auch ein API-Schlüssel gilt. |\n| **SCIM-Zugang** (`Authorization: Bearer sct_…`) | `scimToken` | Nur für den Abgleich eines Verzeichnisdienstes unter `/scim/v2`. Keine andere Route nimmt ihn an. |\n| **Renderer-Token** (`Authorization: Bearer rdr_…`) | `rendererToken` | Nur für den Abspieler-Prozess eines gekoppelten Geräts. Das Gerät stellt es sich selbst aus, und keine der Routen dieser Referenz nimmt es an. |\n| **Gerätezertifikat** | `deviceCertificate` | Geräte weisen sich mit ihrem X.509-Zertifikat aus. Die TLS-Strecke endet am vorgelagerten Proxy, der das geprüfte Zertifikat an die API weitergibt. |\n| **Auffrisch-Cookie** | – | Die Anmeldewege setzen ein `httpOnly`-Cookie, das ausschließlich die Auffrisch-Route erneuert, für Organisationen über `POST /v1/auth/refresh`, für Betreiber über `POST /v1/auth/operator/refresh`. Fachliche Anfragen werden nicht über Cookies authentisiert, deshalb steht das Cookie in keiner `security`-Liste. |\n\nJede Operation nennt in ihrer Beschreibung die benötigte Berechtigung. Zusätzlich gekennzeichnet sind\nRouten, die nur dem Plattformbetreiber offenstehen, sowie öffentliche Routen ohne Anmeldung.\n\n## Fehlermodell\n\nJeder Fehler antwortet mit demselben Rumpf. Verbindlich gefüllt sind `code`, `message` und\n`traceId`; hinzukommen können `details`, `correlationId`, `retryAfterSeconds` und\n`externalService`. Werten Sie stets `code` aus, nie den Text von `message`.\n\nEin Fehlercode hat die Form `Bereich.Ursache` (etwa `Auth.Required`,\n`Conflict.OptimisticLock`, `Validation.Failed`). Der HTTP-Status folgt dabei dem Bereich:\n`Validation.*` → 422, `Auth.*` → 401, `Permission.*` → 403, `*.NotFound` → 404,\n`Conflict.*` → 409, `RateLimit.*` → 429, `Payload.*` → 413, `Integration.*` → 502.\nWelche Codes eine Route werfen kann, steht bei ihr; der vollständige Katalog liegt beim Betrieb.\n\nDie wiederkehrenden Antworten sind zentral beschrieben und bedeuten überall dasselbe:\n*Unauthorized* (401) — nicht oder ungültig angemeldet; *PermissionDenied* (403) — angemeldet, aber\nohne das nötige Recht; *ValidationFailed* (422) — die Anfrage verletzt das Schema oder eine\nfachliche Regel; *NotFound* (404) — die Ressource existiert nicht oder ist für Sie nicht sichtbar;\n*Conflict* (409) — gleichzeitige Änderung oder Verstoß gegen eine Eindeutigkeit;\n*RateLimit* (429) — zu viele Anfragen; *IntegrationError* (502) — ein nachgelagerter Dienst\nantwortete nicht verwertbar.\n\nWer RFC 9457 bevorzugt, sendet `Accept: application/problem+json` und erhält denselben Fehler als\n`ProblemDetails`-Dokument.\n\n## Konventionen\n\n**Listen** werden über einen Cursor geblättert: `limit` begrenzt die Seite, `cursor` setzt sie\nfort. Die Antwort führt die Datensätze unter `items` und liefert `nextCursor`, solange weitere\nDatensätze folgen. Kleine, nicht blätterbare Bestände antworten mit einer einfachen Liste — die\njeweilige Antwortform steht am Endpunkt.\n\n**Gleichzeitige Änderungen** werden auf den versionierten Ressourcen erkannt: Szenen, Zeitpläne,\nPlaylisten, Rollen und Player führen ein Feld `version`. Genau diese Zahl ist das Kennzeichen der\nFassung — die Lese-Antwort trägt sie zusätzlich als `ETag: \"7\"`. Senden Sie sie bei einer Änderung\nals `If-Match`-Kopfzeile; angenommen werden das Kennzeichen `\"7\"`, seine schwache Form `W/\"7\"`\nund die nackte Zahl `7`. Hat inzwischen jemand anderes geschrieben, antwortet die API mit\n`Conflict.OptimisticLock` (409), und Sie lesen die Ressource neu ein. Welche Routen die Kopfzeile\nverlangen, steht bei ihnen als Pflicht-Parameter.\n\n**Wiederholte Anfragen** können Sie mit einer selbst gewählten `Idempotency-Key`-Kopfzeile\n(mindestens 8 Zeichen) absichern. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung\nmit demselben Schlüssel liefert sie unverändert zurück und kennzeichnet das mit\n`Idempotent-Replay: true`, ohne die Aktion erneut auszuführen.\n\n**Drosselung** greift zweifach. Die missbrauchsnahen Routen — vor allem Anmeldung, Registrierung\nund Passwort-Zurücksetzen — tragen ihre eigene Regel. Und jeder Aufruf mit einem API-Schlüssel\nzählt zusätzlich gegen ein Kontingent, das diesem Schlüssel gehört; Aufrufe aus einer angemeldeten\nSitzung sind davon nicht betroffen. Betroffene Antworten führen `X-RateLimit-Limit`,\n`X-RateLimit-Remaining` und `X-RateLimit-Reset`; bei Überschreitung antwortet die API mit 429 und\nnennt in `Retry-After` die Wartezeit in Sekunden.\n\n**Stabilität** ist je Operation als `x-stability` ausgewiesen. `stable` heißt: Pfad,\nPflichtfelder und Fehlercodes ändern sich nicht ohne neue Version. `beta` heißt: neu, und die\nForm darf sich noch bewegen, bis sie einen Zyklus ohne Bruch überstanden hat.\n\n**Auslauf.** Zwischen der Ankündigung einer Abschaltung und der Abschaltung selbst liegen zwölf\nMonate. Eine auslaufende Operation ist hier als `deprecated` markiert und nennt in `x-sunset`\nden Abschalt-Tag; ihre Antworten tragen zusätzlich die Kopfzeilen `Deprecation`, `Sunset` und\n`Link: <…>; rel=\"deprecation\"`. Wer sie auswertet, erfährt vom Auslauf, ohne diese Seite gelesen\nzu haben.",
    "title": "Szenera API",
    "version": "1.0.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/.well-known/oauth-authorization-server": {
      "get": {
        "description": "Nennt Aussteller und Endpunkte des delegierten Zugangs. Liegt ohne /v1-Präfix, weil der Standard den Pfad vorschreibt.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "authorizationServer.wellKnownOauthAuthorizationServer",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationServerMetadata"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Beschreibt den Autorisierungs-Server",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/.well-known/oauth-protected-resource": {
      "get": {
        "description": "Nennt, welcher Autorisierungs-Server die Token dieser Schnittstelle ausstellt. Ebenfalls ohne /v1-Präfix.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "protectedResource.wellKnownOauthProtectedResource",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProtectedResourceMetadata"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Beschreibt die geschützte Ressource",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/oauth/authorize": {
      "get": {
        "description": "Prüft Client, Rücksprung-Adresse und Nachweisschlüssel und leitet auf die Einwilligungsseite des Mandanten-Portals. Ein unbekannter Client wird NICHT weitergeleitet — sonst wäre dieser Endpunkt eine offene Umleitung.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "authorizeOauth",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Beginnt den Einwilligungs-Rundlauf",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/oauth/register": {
      "post": {
        "description": "Dynamische Registrierung nach dem Standard. Nur öffentliche Clients ohne hinterlegtes Geheimnis; die Rücksprung-Adressen müssen https sein oder auf den eigenen Rechner zeigen.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "registerOauth",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterOAuthClientRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegisterOAuthClientResult"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Meldet einen öffentlichen Client an",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/oauth/revoke": {
      "post": {
        "description": "Antwortet immer mit Erfolg — auch für einen unbekannten Wert. Eine unterscheidbare Antwort machte den Endpunkt zum Prüfstand für geratene Token.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "revokeTokenOauthRevoke",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OAuthRevokeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OAuthRevokeResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Nimmt einen delegierten Zugang zurück",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/oauth/token": {
      "post": {
        "description": "Formular-kodiert nach dem Standard. Der Code wird gegen das Prüfwort geprüft; ein zweites Auftauchen desselben Geheimnisses nimmt den ganzen Zugang zurück.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "tokenOauth",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OAuthTokenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OAuthTokenResult"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Tauscht Code oder Erneuerungs-Token gegen eine Ausgabe",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/scim/v2/Groups": {
      "get": {
        "description": "Unterstützt `displayName eq \"…\"` sowie das Blättern über startIndex und count.",
        "operationId": "listScimGroups",
        "parameters": [
          {
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "startIndex",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "count",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimGroupListResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Listet oder sucht Gruppen der Organisation",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Der displayName muss einer Rolle der Organisation entsprechen; mitgeschickte Mitglieder bekommen diese Rolle. Wiederholbar — derselbe Aufruf liefert dieselbe Gruppe. Rollen selbst entstehen in Szenera, weil ihre Rechte dort entschieden werden.",
        "operationId": "createScimGroups",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScimGroupWrite"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimGroupResource"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Verknüpft eine Gruppe mit einer bestehenden Rolle",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/scim/v2/Groups/{id}": {
      "delete": {
        "description": "Eine Gruppe entspricht einer Rolle. Rollen werden in Szenera verwaltet, weil dort über ihre Rechte entschieden wird; die Besetzung einer Gruppe leert ein PATCH mit remove.",
        "operationId": "removeScimGroups",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Weist das Löschen einer Gruppe ab",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      },
      "get": {
        "operationId": "getScimGroups",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimGroupResource"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Liest eine einzelne Gruppe samt ihrer Mitglieder",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "add und replace weisen die Rolle zu, remove setzt auf die Basis-Rolle zurück — ein Konto trägt bei uns genau eine Rolle und nie keine.",
        "operationId": "patchScimGroups",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScimPatchRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimGroupResource"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Fügt Mitglieder hinzu oder entfernt sie",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      },
      "put": {
        "description": "Die mitgeschickte Liste ist die vollständige Soll-Besetzung: Wer darin fehlt, fällt auf die Basis-Rolle zurück. Der Name der Rolle bleibt unberührt.",
        "operationId": "replaceScimGroups",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScimGroupWrite"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimGroupResource"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Ersetzt die Mitglieder einer Gruppe",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/scim/v2/ResourceTypes": {
      "get": {
        "operationId": "resourceTypesScim",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimResourceTypeListResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Listet die Ressourcen-Arten der Schnittstelle",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/scim/v2/ResourceTypes/{id}": {
      "get": {
        "operationId": "resourceTypeScimResourceTypes",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimResourceType"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Beschreibt eine einzelne Ressourcen-Art",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/scim/v2/Schemas": {
      "get": {
        "operationId": "schemasScim",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimSchemaListResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Listet die Attribut-Beschreibungen der Ressourcen",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/scim/v2/Schemas/{id}": {
      "get": {
        "operationId": "schemaScimSchemas",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimSchemaDescriptor"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Beschreibt die Attribute einer Ressourcen-Art",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/scim/v2/ServiceProviderConfig": {
      "get": {
        "description": "Erster Aufruf jedes Verzeichnisdienstes. Aus dieser Antwort leitet er ab, ob er Änderungs-Anweisungen (PATCH) schicken darf und ob er vor dem Anlegen suchen kann.",
        "operationId": "serviceProviderConfigScim",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimServiceProviderConfig"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Nennt den Funktionsumfang der SCIM-Schnittstelle",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/scim/v2/Users": {
      "get": {
        "description": "Unterstützt `userName eq \"…\"` und `externalId eq \"…\"` sowie das Blättern über startIndex und count. Ein Filter beantwortet die Frage nach genau einer Zeile und liefert null oder einen Eintrag.",
        "operationId": "listScimUsers",
        "parameters": [
          {
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "startIndex",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "count",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimUserListResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Listet oder sucht Konten der Organisation",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Wiederholbar: Gibt es zu dieser Adresse bereits ein Konto, antwortet der Aufruf mit 200 und diesem Konto, statt ein zweites anzulegen. Ein per SCIM angelegtes Konto bekommt kein Kennwort — es meldet sich über den Unternehmens-Anmeldeweg an.",
        "operationId": "createScimUsers",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScimUserWrite"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimUserResource"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Legt ein Konto an oder übernimmt ein bestehendes",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/scim/v2/Users/{id}": {
      "delete": {
        "description": "Das Konto wird gesperrt, nicht gelöscht. An ihm hängen Protokoll-Einträge, Medien und Zeitpläne; das echte Löschen bleibt ein bewusster Schritt in Szenera.",
        "operationId": "removeScimUsers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Sperrt ein Konto (Löschen im Protokoll)",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      },
      "get": {
        "operationId": "getScimUsers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimUserResource"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Liest ein einzelnes Konto",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "Unterstützt replace, add und remove auf `active` und `displayName`. Eine Anweisung, die den Zustand nicht ändert, wird still übergangen — ein Verzeichnisdienst kennt unseren Stand nicht und meldet einfach seinen.",
        "operationId": "patchScimUsers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScimPatchRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimUserResource"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Ändert einzelne Felder eines Kontos",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      },
      "put": {
        "description": "Setzt Anzeigename, Sperr-Zustand und die fremde Kennung auf den mitgeschickten Stand. Felder, die wir nicht führen, werden still verworfen.",
        "operationId": "replaceScimUsers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScimUserWrite"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimUserResource"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Ersetzt ein Konto vollständig",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/advertising/advertisers": {
      "get": {
        "description": "**Benötigte Berechtigung:** `advertising.advertiser.read`",
        "operationId": "listAdvertisingAdvertisers",
        "parameters": [
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "active",
                "archived"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "industry",
            "required": false,
            "schema": {
              "enum": [
                "cosmetics",
                "personal_care",
                "food_supplements",
                "otc_medicine",
                "medical_devices",
                "food_beverage",
                "automotive",
                "household",
                "services",
                "retail",
                "other"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListAdvertisersResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Werbepartner der Organisation",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      },
      "post": {
        "description": "Setzt das Direktgeschäft im Paket der Organisation voraus.\n\n**Benötigte Berechtigung:** `advertising.advertiser.manage`",
        "operationId": "createAdvertisingAdvertisers",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAdvertiserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Advertiser"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt einen Werbepartner an",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/advertisers/{id}": {
      "get": {
        "description": "**Benötigte Berechtigung:** `advertising.advertiser.read`",
        "operationId": "getAdvertisingAdvertisers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Advertiser"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest einen Werbepartner",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      },
      "patch": {
        "description": "Gesandte Felder ersetzen die bisherigen; Marken werden ohne Dubletten geführt.\n\n**Benötigte Berechtigung:** `advertising.advertiser.manage`",
        "operationId": "updateAdvertisingAdvertisers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAdvertiserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Advertiser"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Ändert einen Werbepartner",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/advertisers/{id}/archive": {
      "post": {
        "description": "Ein archivierter Werbepartner bleibt mit Werbekampagnen und Nachweisen lesbar, bekommt aber keine neuen Werbekampagnen, Buchungen und Motive. Was gebucht ist, läuft weiter und lässt sich anhalten, aber nicht mehr ändern oder wieder aufnehmen.\n\n**Benötigte Berechtigung:** `advertising.advertiser.manage`",
        "operationId": "archiveAdvertisingAdvertisers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Advertiser"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Archiviert einen Werbepartner",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/audience-profiles/{locationId}": {
      "get": {
        "description": "**Benötigte Berechtigung:** `advertising.inventory.manage`, `advertising.network.manage` oder `advertising.campaign.read`",
        "operationId": "getAudienceProfileAdvertisingAudienceProfiles",
        "parameters": [
          {
            "in": "path",
            "name": "locationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AudienceProfile"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest das Publikum eines Standorts",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      },
      "put": {
        "description": "Besucher je Wochentag und Stunde mit Quelle und Messzeitraum. Die Güteklasse rechnet der Server: gezählt und höchstens zwölf Monate alt A, ältere Zählung und Kasse B, Selbstauskunft C.\n\n**Benötigte Berechtigung:** `advertising.inventory.manage`",
        "operationId": "updateAudienceProfileAdvertisingAudienceProfiles",
        "parameters": [
          {
            "in": "path",
            "name": "locationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAudienceProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AudienceProfile"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Pflegt das Publikum eines Standorts",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/booking-lines/{id}": {
      "delete": {
        "description": "Nur solange sie nichts geliefert haben kann; eine begonnene Buchung wird angehalten statt entfernt.\n\n**Benötigte Berechtigung:** `advertising.campaign.manage`",
        "operationId": "removeAdvertisingBookingLines",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Entfernt eine Buchung",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      },
      "get": {
        "description": "**Benötigte Berechtigung:** `advertising.campaign.read`",
        "operationId": "getAdvertisingBookingLines",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingLine"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest eine Buchung",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      },
      "patch": {
        "description": "Gesandte Felder ersetzen die bisherigen ganz. Hält die Werbekampagne Plätze, muss die Frequenz danach noch in die freien Plätze passen. Gehört die Buchung einem archivierten Werbepartner, geht nur noch das Anhalten.\n\n**Benötigte Berechtigung:** `advertising.campaign.manage`",
        "operationId": "updateAdvertisingBookingLines",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBookingLineRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingLine"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Ändert eine Buchung",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/booking-lines/{id}/reach": {
      "get": {
        "description": "Welche Displays die Auswahl heute erreicht, warum die übrigen nicht, und was die Buchung als Ganzes am Liefern hindert — die Planungshilfe.\n\n**Benötigte Berechtigung:** `advertising.campaign.read`",
        "operationId": "reachAdvertisingBookingLines",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingLineReach"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Nennt die Displays, die eine Buchung erreicht",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/booking-lines/preview": {
      "post": {
        "description": "Rein lesend: geplante Ausspielungen je Woche und Display, Deckung der Zusage, Kontakte mit Güte, freie Plätze nach der Buchung und Hinweise. Gespeichert wird nichts.\n\n**Benötigte Berechtigung:** `advertising.campaign.read`",
        "operationId": "previewLineAdvertisingBookingLinesPreview",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PreviewBookingLineRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingLinePreview"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Rechnet vor, was eine Buchung liefern würde",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/campaigns": {
      "get": {
        "description": "Mit Phase am heutigen Tag, Werbepartner, Spotlängen, erreichten Displays und offenen Punkten. `owner` trennt Direktgeschäft und Netz.\n\n**Benötigte Berechtigung:** `advertising.campaign.read`",
        "operationId": "listAdvertisingCampaigns",
        "parameters": [
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "draft",
                "booked",
                "paused",
                "cancelled"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "advertiserId",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "owner",
            "required": false,
            "schema": {
              "enum": [
                "tenant",
                "network"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "activeFrom",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "activeTo",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListAdCampaignsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Werbekampagnen der Organisation",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      },
      "post": {
        "description": "Ohne Zeitzone gilt die der Organisation. Eine neue Werbekampagne ist ein Entwurf oder gleich gebucht.\n\n**Benötigte Berechtigung:** `advertising.campaign.manage`",
        "operationId": "createAdvertisingCampaigns",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAdCampaignRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdCampaignView"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt eine Werbekampagne an",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/campaigns/{id}": {
      "get": {
        "description": "**Benötigte Berechtigung:** `advertising.campaign.read`",
        "operationId": "getAdvertisingCampaigns",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdCampaignView"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest eine Werbekampagne",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      },
      "patch": {
        "description": "Auch der Zustand: Entwurf → gebucht, gebucht ⇄ angehalten, alles außer beendet → beendet. Beim Buchen müssen die Buchungen in die freien Plätze passen. Buchen und Wiederaufnehmen setzen einen aktiven Werbepartner voraus.\n\n**Benötigte Berechtigung:** `advertising.campaign.manage`",
        "operationId": "updateAdvertisingCampaigns",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAdCampaignRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdCampaignView"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Ändert eine Werbekampagne",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/campaigns/{id}/booking-lines": {
      "get": {
        "description": "**Benötigte Berechtigung:** `advertising.campaign.read`",
        "operationId": "listLinesAdvertisingCampaignsBookingLines",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "active",
                "paused"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListBookingLinesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Buchungen einer Werbekampagne",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      },
      "post": {
        "description": "Die Buchung liegt im Zeitraum der Werbekampagne und nimmt nur aktive Motive ihres Werbepartners auf. Ist die Werbekampagne gebucht, muss die Frequenz in die freien Plätze passen. Ein archivierter Werbepartner bekommt keine neue Buchung.\n\n**Benötigte Berechtigung:** `advertising.campaign.manage`",
        "operationId": "createLineAdvertisingCampaignsBookingLines",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBookingLineRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingLine"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt eine Buchung in einer Werbekampagne an",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/creatives": {
      "get": {
        "description": "**Benötigte Berechtigung:** `advertising.campaign.read`, `advertising.creative.manage` oder `advertising.creative.approve`",
        "operationId": "listAdvertisingCreatives",
        "parameters": [
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "active",
                "archived"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "approvalStatus",
            "required": false,
            "schema": {
              "enum": [
                "pending",
                "approved",
                "rejected"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "advertiserId",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "mediaType",
            "required": false,
            "schema": {
              "enum": [
                "image",
                "video"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListCreativesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Motive der Organisation",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      },
      "post": {
        "description": "Das Medium muss ein fertiges Bild oder Video der eigenen Medienbibliothek sein; Art, Maße, Länge und Prüfsumme übernimmt das Motiv.\n\n**Benötigte Berechtigung:** `advertising.creative.manage`",
        "operationId": "createAdvertisingCreatives",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCreativeFromAssetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Creative"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt ein Motiv aus einem Medium an",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/creatives/{id}": {
      "get": {
        "description": "**Benötigte Berechtigung:** `advertising.campaign.read`, `advertising.creative.manage` oder `advertising.creative.approve`",
        "operationId": "getAdvertisingCreatives",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Creative"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest ein Motiv",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      },
      "patch": {
        "description": "Ein geänderter Pflichttext setzt eine erteilte Freigabe zurück.\n\n**Benötigte Berechtigung:** `advertising.creative.manage`",
        "operationId": "updateAdvertisingCreatives",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCreativeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Creative"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Ändert Name oder Pflichttext eines Motivs",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/creatives/{id}/approval": {
      "post": {
        "description": "Verlangt die Branche einen Pflichttext, braucht die Freigabe ihn und die Bestätigung, dass er im Motiv steht und lesbar ist. Eine Ablehnung braucht eine Anmerkung.\n\n**Benötigte Berechtigung:** `advertising.creative.approve`",
        "operationId": "decideAdvertisingCreativesApproval",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DecideCreativeApprovalRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Creative"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Entscheidet über die Freigabe eines Motivs",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/creatives/{id}/archive": {
      "post": {
        "description": "Ein archiviertes Motiv erreicht kein Display mehr.\n\n**Benötigte Berechtigung:** `advertising.creative.manage`",
        "operationId": "archiveAdvertisingCreatives",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Creative"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Archiviert ein Motiv",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/creatives/{id}/replace": {
      "post": {
        "description": "Es entsteht ein neues Motiv mit Name und Pflichttext des alten, das auf seine Freigabe wartet; das alte wird archiviert, und die Buchungen zeigen auf das neue.\n\n**Benötigte Berechtigung:** `advertising.creative.manage`",
        "operationId": "replaceAdvertisingCreatives",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReplaceCreativeFromAssetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Creative"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Ersetzt das Medium eines Motivs",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/inventory": {
      "get": {
        "description": "Ein Display ohne gepflegte Werbefläche steht mit `inventory: null` da. `networkEffective` sagt, ob es Netz-Buchungen bekommen darf.\n\n**Benötigte Berechtigung:** `advertising.inventory.manage`, `advertising.network.manage` oder `advertising.campaign.read`",
        "operationId": "listInventoryAdvertisingInventory",
        "parameters": [
          {
            "in": "query",
            "name": "locationId",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "placement",
            "required": false,
            "schema": {
              "enum": [
                "window",
                "sales_floor",
                "checkout",
                "waiting_area",
                "other"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "networkEnabled",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListInventoryResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Displays mit ihrer Werbefläche",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/inventory/{playerId}": {
      "put": {
        "description": "Platzierung, Diagonale, Ausrichtung, Faktor und Freigabe für das Netz, ganz. Die Freigabe wirkt nur, solange die Organisation am Netz teilnimmt.\n\n**Benötigte Berechtigung:** `advertising.inventory.manage`",
        "operationId": "updateInventoryAdvertisingInventory",
        "parameters": [
          {
            "in": "path",
            "name": "playerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDisplayInventoryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisplayInventory"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Pflegt die Werbefläche eines Displays",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/network-parameters": {
      "get": {
        "description": "Platzierungsfaktoren, Verweildauern und Tausenderkontaktpreise je Inventarklasse, mit denen die Kontakte der Organisation gerechnet werden.\n\n**Benötigte Berechtigung:** `advertising.inventory.manage`, `advertising.network.manage` oder `advertising.campaign.read`",
        "operationId": "getParametersAdvertisingNetworkParameters",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NetworkParameters"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest die Stellgrößen des Werbenetzes",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/network-participation": {
      "get": {
        "description": "**Benötigte Berechtigung:** `advertising.inventory.manage`, `advertising.network.manage` oder `advertising.campaign.read`",
        "operationId": "getParticipationAdvertisingNetworkParticipation",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NetworkParticipation"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest die Teilnahme der Organisation am Werbenetz",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      },
      "put": {
        "description": "Wer einschaltet, entscheidet über die Gutschrift (`selfBillingConsent`, ja oder nein). Die Zustimmung zu den Bedingungen wird mit Fassung, Zeitpunkt und Person festgehalten; Ausschalten lässt sie stehen.\n\n**Benötigte Berechtigung:** `advertising.network.manage`",
        "operationId": "updateParticipationAdvertisingNetworkParticipation",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateNetworkParticipationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NetworkParticipation"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Ändert die Teilnahme der Organisation am Werbenetz",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/advertising/revenue": {
      "get": {
        "description": "Je Monat die Erlöse aus Werbekampagnen des Werbenetzes, der Monatsanteil der eigenen Rechnung, die Gutschrift und ein fünf Minuten gültiger Verweis auf ihr Blatt. Ohne Angabe die letzten zwölf Monate, höchstens 24 Monate je Abfrage.\n\n**Benötigte Berechtigung:** `advertising.network.manage`",
        "operationId": "listAdvertisingRevenue",
        "parameters": [
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListOwnRevenueStatementsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die eigenen Erlösaufstellungen",
        "tags": [
          "advertising"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/campaigns/{campaignId}/delivery": {
      "get": {
        "description": "Je Buchung Soll gegen gültige Ausspielungen, Erfüllungsgrad gegen die Zusage, Pacing mit Prognose und Spanne, die Lieferkurve, die Verteilung nach Standort, Gebiet, Art des Ladens, Platzierung und Tagesteil, Ausfälle nach Grund, Kontakte nach Güte, die Abdeckung der Displays und die Abrechnungszeiträume.\n\n**Benötigte Berechtigung:** `advertising.campaign.read`",
        "operationId": "getCampaignDeliveryAnalyticsCampaignsDelivery",
        "parameters": [
          {
            "in": "path",
            "name": "campaignId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCampaignDeliveryResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest die Lieferung einer Werbekampagne",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/catalog": {
      "get": {
        "description": "Jede Kennzahl mit Definition, Klasse, Einheit und Regel der Zusammenfassung, jede Dimension, für jede Kombination erlaubt oder der Grund dagegen, dazu Tagesteile, Grenzen und Fragen zum Start.\n\n**Benötigte Berechtigung:** `analytics.query.run`",
        "operationId": "getCatalogAnalyticsCatalog",
        "parameters": [
          {
            "in": "query",
            "name": "perspective",
            "required": false,
            "schema": {
              "enum": [
                "venue",
                "network",
                "advertiser"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "locale",
            "required": false,
            "schema": {
              "enum": [
                "de",
                "en"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAnalyticsCatalogResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest den Kennzahlen-Katalog der Auswertung",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/content": {
      "get": {
        "description": "Szenen, Playlists oder Medien mit Sendezeit außerhalb der Werbeblöcke, Ausspielungen, Displays und Standorten im Fenster, nach Sendezeit geordnet.\n\n**Benötigte Berechtigung:** `analytics.query.run`",
        "operationId": "getContentRankingAnalyticsContent",
        "parameters": [
          {
            "in": "query",
            "name": "from",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "kind",
            "required": false,
            "schema": {
              "enum": [
                "scene",
                "playlist",
                "asset"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetContentRankingResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die eigenen Inhalte nach Sendezeit",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/content/{kind}/{id}": {
      "get": {
        "description": "Summen, das Profil aus Wochentag und Stunde, wo der Inhalt lief und sein Verlauf je Tag.\n\n**Benötigte Berechtigung:** `analytics.query.run`",
        "operationId": "getContentDetailAnalyticsContent",
        "parameters": [
          {
            "in": "path",
            "name": "kind",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "groupBy",
            "required": false,
            "schema": {
              "enum": [
                "player",
                "location"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetContentDetailResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest einen eigenen Inhalt im Einzelnen",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/engagement-snapshot": {
      "get": {
        "description": "Beruht auf einer regelmäßig fortgeschriebenen Zusammenfassung. Vor der ersten Fortschreibung stehen alle Werte auf null.\n\n**Benötigte Berechtigung:** `analytics.dashboard.read`",
        "operationId": "snapshotAnalyticsEngagementSnapshot",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEngagementSnapshotResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest den Nutzungs-Überblick der Organisation",
        "tags": [
          "analytics"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/analytics/explore": {
      "post": {
        "description": "Kennzahlen aus dem Katalog, bis zu drei Dimensionen, Filter und ein Zeitfenster aus festen Tagen. Die Abfrage wird gegen den Katalog geprüft, das Fenster an das Paket angepasst, und jede Spalte nennt Klasse und Verfahren. Hinweise sagen, was gekürzt, zusammengefasst oder noch offen ist.\n\n**Benötigte Berechtigung:** `analytics.query.run`",
        "operationId": "runAnalyticsExplore",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExploreQuery"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunExploreResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Wertet Kennzahlen nach frei gewählten Dimensionen aus",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/explore/export": {
      "post": {
        "description": "Rechnet die Abfrage, setzt CSV oder PDF sofort und antwortet mit einer befristeten Abrufadresse; die Datei bleibt 7 Tage abrufbar. Pro Organisation sind drei Ausgaben in zehn Minuten möglich.\n\n**Benötigte Berechtigung:** `analytics.query.run`",
        "operationId": "exportAnalyticsExplore",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExportExploreRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExportExploreResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Gibt eine Abfrage der Auswertung als Datei aus",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/generated-reports/{id}/download": {
      "get": {
        "description": "Die Antwort nennt eine befristete Adresse im Objektspeicher. Ausgaben sind 7 Tage abrufbar, danach antwortet der Aufruf, dass sie nicht mehr verfügbar sind.\n\n**Benötigte Berechtigung:** `analytics.report.read`",
        "operationId": "downloadAnalyticsGeneratedReports",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportDownloadUrlResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liefert den Abrufweg zu einer Bericht-Ausgabe",
        "tags": [
          "analytics"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/analytics/hygiene": {
      "get": {
        "description": "Je Befund eine Zahl und der Weg zu den Zeilen dahinter: unbenutzte Medien, veröffentlichte Szenen ohne Zuweisung, Displays ohne Programm oder lange offline, ruhende Konten, abgestorbene Webhook-Ziele. Befunde, deren Liste der Aufrufer nicht öffnen darf, fehlen in der Antwort.\n\n**Benötigte Berechtigung:** `analytics.query.run`",
        "operationId": "readAnalyticsHygiene",
        "parameters": [
          {
            "in": "query",
            "name": "offlineSince",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "dormantSince",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetHygieneResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Zählt, was in der Organisation liegen geblieben ist",
        "tags": [
          "analytics"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/analytics/metrics": {
      "get": {
        "description": "Jede Kennzahl kommt mit ihrem lückenlosen Verlauf, ihrem Kennwert im Zeitraum und dem Kennwert des unmittelbar davorliegenden, gleich langen Zeitraums. Kennzahlen ohne Messung stehen mit einer Nullreihe da und fehlen nicht.\n\n**Benötigte Berechtigung:** `analytics.query.run`",
        "operationId": "listAnalyticsMetrics",
        "parameters": [
          {
            "in": "query",
            "name": "days",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMetricsOverviewResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest alle Kennzahlen der Organisation im gewählten Zeitraum",
        "tags": [
          "analytics"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/analytics/metrics/{metric}": {
      "get": {
        "description": "Verlauf und Kennwerte wie in der Übersicht, dazu die Aufschlüsselung nach einer Achse. Eine Achse, die die Kennzahl nicht trägt, wird abgewiesen — eine stille leere Aufschlüsselung sähe aus wie fehlende Daten.\n\n**Benötigte Berechtigung:** `analytics.query.run`",
        "operationId": "byKeyAnalyticsMetrics",
        "parameters": [
          {
            "in": "path",
            "name": "metric",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "days",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "granularity",
            "required": false,
            "schema": {
              "enum": [
                "1h",
                "1d"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "groupBy",
            "required": false,
            "schema": {
              "enum": [
                "playerId",
                "deviceId",
                "sceneId",
                "appId"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMetricDetailResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest eine einzelne Kennzahl ausführlich",
        "tags": [
          "analytics"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/analytics/metrics/{metric}/export": {
      "post": {
        "description": "Erzeugt CSV, JSON oder PDF sofort und antwortet mit einer befristeten Abrufadresse. Pro Organisation sind drei Ausgaben in zehn Minuten möglich; danach antwortet der Aufruf mit „zu viele Anfragen\" und nennt die Wartezeit.\n\n**Benötigte Berechtigung:** `analytics.query.run`",
        "operationId": "createAnalyticsMetricsExport",
        "parameters": [
          {
            "in": "path",
            "name": "metric",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMetricExportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateMetricExportResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Erzeugt eine einmalige Ausgabe der Kennzahl als Datei",
        "tags": [
          "analytics"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/analytics/overview": {
      "get": {
        "description": "Wohin die Planzeit ging, die Verfügbarkeit als Spanne, solange Lücken nachkommen können, die Vollständigkeit der Messung, was in der sichtbaren Zeit lief, die Werbekampagnen auf den eigenen Displays, jede Planstunde je Display, die eigenen Inhalte mit der meisten Sendezeit und die Auffälligkeiten nach Wirkung. Ohne Verlauf im Paket zeigt der Überblick die letzten sieben Tage zur Ansicht.\n\n**Benötigte Berechtigung:** `analytics.query.run`",
        "operationId": "getOverviewAnalyticsOverview",
        "parameters": [
          {
            "in": "query",
            "name": "from",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "locationIds",
            "required": false,
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAnalyticsOverviewResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest den Überblick der Auswertung",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/players/{playerId}/day": {
      "get": {
        "description": "Je Stunde Plan, Erfassung und Ausspielungen nach Art, dieselben Zustände als Zeiträume, Panel und Erfassung des Renderers, die Abschnitte des Plans mit Namen und Rotation und die Ereignisse des Tages.\n\n**Benötigte Berechtigung:** `analytics.query.run`",
        "operationId": "getPlayerDayAnalyticsPlayersDay",
        "parameters": [
          {
            "in": "path",
            "name": "playerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "date",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPlayerDayResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest einen Tag eines Displays",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/players/{playerId}/plays": {
      "get": {
        "description": "Das Protokoll: eine Zeile je Ausspielung, zeitlich aufsteigend, mit Darstellung, Panel, Sichtbarkeit, Zone, Uhr und dem Urteil der Gültigkeitsregel. Ein Abschnitt ist höchstens einen Tag lang.\n\n**Benötigte Berechtigung:** `analytics.query.run`",
        "operationId": "listPlayerPlaysAnalyticsPlayersPlays",
        "parameters": [
          {
            "in": "path",
            "name": "playerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPlayerPlaysResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Ausspielungen eines Displays",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/proofs": {
      "get": {
        "description": "Abschlüsse, Nachträge und Zwischenstände der eigenen Buchungen, die neuesten zuerst. Filter nach Werbekampagne, Werbepartner, Buchung, Art und Zeitraum; `from` und `to` treffen jeden Nachweis, dessen Zeitraum die Tage schneidet.\n\n**Benötigte Berechtigung:** `analytics.proof.read`",
        "operationId": "listAnalyticsProofs",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "campaignId",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "advertiserId",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "bookingLineId",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "kind",
            "required": false,
            "schema": {
              "enum": [
                "closing",
                "addendum",
                "interim"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListProofsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Nachweise der Organisation",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/proofs/{proofId}": {
      "get": {
        "description": "Die Zahlen des Abschlusses (Ergebnis, Verteilung, Qualität, Methode), Prüfsummen, Prüfcode, Signatur, die Dateien, die Nachträge zu einem Abschluss und der Stand jeder Zustellung an die Ansprechpartner.\n\n**Benötigte Berechtigung:** `analytics.proof.read`",
        "operationId": "getAnalyticsProofs",
        "parameters": [
          {
            "in": "path",
            "name": "proofId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetProofResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest einen Nachweis",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/proofs/{proofId}/files/{kind}": {
      "get": {
        "description": "Eine Download-Adresse für das PDF, das Stundenprotokoll, das Manifest oder eine Bildschirmaufnahme (mit `fileId` aus der Dateiliste), 15 Minuten gültig, samt Prüfsumme und Größe.\n\n**Benötigte Berechtigung:** `analytics.proof.read`",
        "operationId": "fileAnalyticsProofsFiles",
        "parameters": [
          {
            "in": "path",
            "name": "proofId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "kind",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "fileId",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProofFileUrlResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Gibt eine Datei eines Nachweises frei",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/proofs/interim": {
      "post": {
        "description": "Ein Nachweis mit eigener Nummer über eine laufende Buchung: ganze Tage bis höchstens gestern, ohne Angabe der laufende Monat bis gestern. Er ändert nichts am späteren Abschluss. Drei je zehn Minuten und Organisation.\n\n**Benötigte Berechtigung:** `analytics.proof.manage`",
        "operationId": "createInterimAnalyticsProofsInterim",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInterimProofRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateInterimProofResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Erstellt einen Zwischenstand",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/query": {
      "post": {
        "description": "Unbekannte Kennzahlen werden abgewiesen. Gleiche Abfragen werden für kurze Zeit zwischengespeichert, weshalb sehr frische Ereignisse noch fehlen können.\n\n**Benötigte Berechtigung:** `analytics.query.run`",
        "operationId": "queryAnalytics",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExecuteAdHocQueryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExecuteAdHocQueryResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Führt eine Auswertung über die Kennzahlen aus",
        "tags": [
          "analytics"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/analytics/reports": {
      "get": {
        "description": "**Benötigte Berechtigung:** `analytics.report.list`",
        "operationId": "listAnalyticsReports",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListReportsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die gespeicherten Berichte",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      },
      "post": {
        "description": "**Benötigte Berechtigung:** `analytics.report.create`",
        "operationId": "createAnalyticsReports",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateReportResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt einen Bericht an",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/reports/{id}": {
      "delete": {
        "description": "Die bereits erzeugten Ausgaben des Berichts werden mitgelöscht; die Antwort nennt deren Anzahl.\n\n**Benötigte Berechtigung:** `analytics.report.delete`",
        "operationId": "removeAnalyticsReports",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteReportResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löscht einen Bericht",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      },
      "get": {
        "description": "**Benötigte Berechtigung:** `analytics.report.read`",
        "operationId": "getAnalyticsReports",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest einen Bericht",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      },
      "patch": {
        "description": "**Benötigte Berechtigung:** `analytics.report.update`",
        "operationId": "updateAnalyticsReports",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateReportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateReportResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Aktualisiert einen Bericht",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/reports/{id}/generated": {
      "get": {
        "description": "**Benötigte Berechtigung:** `analytics.report.read`",
        "operationId": "generatedAnalyticsReports",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListGeneratedReportsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die erzeugten Ausgaben eines Berichts",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/reports/{id}/run": {
      "post": {
        "description": "Die Datei entsteht im Hintergrund; die Antwort nennt die Kennung der Ausgabe, die zunächst in der Warteschlange steht.\n\n**Benötigte Berechtigung:** `analytics.report.run`",
        "operationId": "runAnalyticsReports",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RunReportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunReportResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Startet die Erzeugung eines Berichts",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/reports/{id}/schedule": {
      "put": {
        "description": "Ein leerer Zeitplan hebt die regelmäßige Erzeugung wieder auf.\n\n**Benötigte Berechtigung:** `analytics.report.update`",
        "operationId": "scheduleAnalyticsReports",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetReportScheduleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetReportScheduleResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Setzt den Zeitplan eines Berichts",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/share-links": {
      "get": {
        "description": "Die Verweise der Organisation, wahlweise eines Werbepartners, mit Ablauf, Widerruf und letzter Nutzung. Ohne Schlüssel.\n\n**Benötigte Berechtigung:** `analytics.proof.manage`",
        "operationId": "listAnalyticsShareLinks",
        "parameters": [
          {
            "in": "query",
            "name": "advertiserId",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListShareLinksResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Verweise für Werbepartner",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      },
      "post": {
        "description": "Ein befristeter Verweis (1 bis 365 Tage) auf den Kampagnenbericht und die Nachweise eines eigenen Werbepartners. Der Schlüssel steht nur in dieser Antwort; gespeichert ist allein sein Hash.\n\n**Benötigte Berechtigung:** `analytics.proof.manage`",
        "operationId": "createAnalyticsShareLinks",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateShareLinkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShareLinkResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Stellt einen Verweis für einen Werbepartner aus",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/analytics/share-links/{shareLinkId}": {
      "delete": {
        "description": "Der Verweis öffnet danach nichts mehr; wer ihn aufruft, erfährt, dass er widerrufen wurde. Ein zweiter Widerruf ändert nichts.\n\n**Benötigte Berechtigung:** `analytics.proof.manage`",
        "operationId": "revokeAnalyticsShareLinks",
        "parameters": [
          {
            "in": "path",
            "name": "shareLinkId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RevokeShareLinkResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Widerruft einen Verweis",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/api-keys": {
      "get": {
        "description": "Umfasst auch Schlüssel fremder Konten und damit die Zugänge ausgeschiedener Mitglieder. Die eigenen Schlüssel liegen unter /v1/me/api-keys.\n\n**Benötigte Berechtigung:** `identity.api-key.list`",
        "operationId": "listApiKeys",
        "parameters": [
          {
            "in": "query",
            "name": "includeRevoked",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "createdById",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "enum": [
                "createdAt",
                "lastUsedAt",
                "name"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListApiKeysResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet alle API-Schlüssel der Organisation",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/apps/{appId}/history": {
      "get": {
        "description": "Je Fassung, die allen Organisationen offensteht, die Nummer, seit wann sie das tut, und was in ihr neu ist, in der erbetenen Sprache oder ersatzweise auf Deutsch, die jüngste zuerst. Fassungen in Erprobungskanälen erscheinen nicht. Eine für die Organisation abgeschaltete App ist nicht auffindbar.",
        "operationId": "historyApps",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "locale",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAppVersionHistoryResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Fassungen einer App mit ihren Neuerungen",
        "tags": [
          "app-catalog"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/assets": {
      "get": {
        "description": "**Benötigte Berechtigung:** `asset.list`",
        "operationId": "listAssets",
        "parameters": [
          {
            "in": "query",
            "name": "folderId",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "includeSubfolders",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "sortBy",
            "required": false,
            "schema": {
              "enum": [
                "name-asc",
                "name-desc",
                "created-desc",
                "created-asc",
                "size-asc",
                "size-desc",
                "type-asc",
                "type-desc"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "uploading",
                "processing",
                "ready",
                "error"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "mimeTypes",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "image/jpeg",
                  "image/png",
                  "image/webp",
                  "image/svg+xml",
                  "video/mp4",
                  "video/webm",
                  "application/pdf"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "in": "query",
            "name": "tags",
            "required": false,
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "uploadedAfter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "uploadedBefore",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "minSizeBytes",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "maxSizeBytes",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "usage",
            "required": false,
            "schema": {
              "enum": [
                "used",
                "unused"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "includeDeleted",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListAssetsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet Medien der Bibliothek gefiltert und seitenweise",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/assets/{id}": {
      "delete": {
        "description": "Soft-Delete: das Medium bleibt wiederherstellbar. Ein noch referenziertes Medium wird nicht gelöscht, die Fehlerantwort nennt die Anzahl der Referenzen.\n\n**Benötigte Berechtigung:** `asset.delete`",
        "operationId": "removeAssets",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Verschiebt ein Medium in den Papierkorb",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      },
      "get": {
        "description": "**Benötigte Berechtigung:** `asset.read`",
        "operationId": "getAssets",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAssetResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest ein einzelnes Medium samt Varianten",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "**Benötigte Berechtigung:** `asset.update`",
        "operationId": "updateAssets",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAssetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateAssetResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Ändert die Metadaten eines Mediums",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/assets/{id}/download-url": {
      "post": {
        "description": "Die URL ist 15 Minuten gültig.\n\n**Benötigte Berechtigung:** `asset.read`",
        "operationId": "downloadUrlAssets",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAssetDownloadUrlResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Stellt eine Presigned-URL auf das Original aus",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/assets/{id}/purge": {
      "post": {
        "description": "Zieht das Ende der Aufbewahrungsfrist vor und entfernt Datensatz und Dateien unumkehrbar. Wirkt nur auf bereits in den Papierkorb verschobene Medien; ein aktives Medium wird abgelehnt.\n\n**Benötigte Berechtigung:** `asset.delete`",
        "operationId": "purgeAssets",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löscht ein Medium endgültig aus dem Papierkorb",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/assets/{id}/reprocess": {
      "post": {
        "description": "Setzt das Medium auf `processing` zurück und reiht denselben Varianten-Job ein wie der Upload-Abschluss. Zulässig für gescheiterte Medien und für fertige ohne Varianten; ein laufender Upload oder eine laufende Verarbeitung wird abgelehnt.\n\n**Benötigte Berechtigung:** `asset.update`",
        "operationId": "reprocessAssets",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReprocessAssetResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Verarbeitet ein Medium erneut",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/assets/{id}/restore": {
      "post": {
        "description": "**Benötigte Berechtigung:** `asset.update`",
        "operationId": "restoreAssets",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestoreAssetResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Holt ein Medium aus dem Papierkorb zurück",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/assets/{id}/usage": {
      "get": {
        "description": "Nennt die Stellen, die das Medium referenzieren. Solange Referenzen bestehen, wird das Löschen abgelehnt.\n\n**Benötigte Berechtigung:** `asset.read`",
        "operationId": "usagesAssetsUsage",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAssetUsagesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Verwendungen eines Mediums",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/assets/{id}/variant-url": {
      "post": {
        "description": "Liefert die Auslieferungs-URL einer bereits erzeugten Variante, etwa das Standbild eines Videos, gültig 15 Minuten. Fehlt die Variante, wird die Anfrage abgelehnt.\n\n**Benötigte Berechtigung:** `asset.read`",
        "operationId": "variantUrlAssets",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetAssetVariantUrlRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAssetVariantUrlResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Stellt eine Presigned-URL auf eine Variante aus",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/assets/bulk-move": {
      "post": {
        "description": "Verarbeitet bis zu 100 Kennungen; ohne Ziel-Ordner wandern die Medien in die Wurzel. Unbekannte, gelöschte und für den Aufrufer nicht zugängliche Medien werden still übersprungen.\n\n**Benötigte Berechtigung:** `asset.update`",
        "operationId": "bulkMoveAssets",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkMoveAssetsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkMoveAssetsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Verschiebt mehrere Medien in einen Ordner",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/assets/bulk-tag": {
      "post": {
        "description": "Verarbeitet bis zu 100 Kennungen. Unbekannte, gelöschte und für den Aufrufer nicht zugängliche Medien werden still übersprungen; gezählt werden nur die tatsächlich geänderten.\n\n**Benötigte Berechtigung:** `asset.update`",
        "operationId": "bulkTagAssets",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkTagAssetsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkTagAssetsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Setzt Tags für mehrere Medien in einem Schritt",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/assets/upload-complete": {
      "post": {
        "description": "Verifiziert das hochgeladene Objekt gegen die angekündigte Größe, schaltet das Medium auf `processing` und reiht die Varianten-Erzeugung ein. Weicht das Objekt ab, wird der Upload verworfen.\n\n**Benötigte Berechtigung:** `asset.upload`",
        "operationId": "completeAssetsUploadComplete",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UploadCompleteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadCompleteResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Schließt einen Direkt-Upload ab",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/assets/upload-multipart/abort": {
      "post": {
        "description": "Verwirft die Multipart-Sitzung und räumt den angelegten Datensatz ab. Idempotent: ein zweiter Abbruch meldet erneut Erfolg, statt einen Fehler zu liefern.\n\n**Benötigte Berechtigung:** `asset.upload`",
        "operationId": "multipartAbortAssetsUploadMultipartAbort",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MultipartAbortRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MultipartAbortResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Bricht einen Multipart-Upload ab",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/assets/upload-multipart/complete": {
      "post": {
        "description": "Fügt die Teile zum finalen Objekt, verifiziert es gegen die angekündigte Größe, schaltet das Medium auf `processing` und reiht die Varianten-Erzeugung ein.\n\n**Benötigte Berechtigung:** `asset.upload`",
        "operationId": "multipartCompleteAssetsUploadMultipartComplete",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MultipartCompleteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MultipartCompleteResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Setzt die Teile eines Multipart-Uploads zusammen",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/assets/upload-multipart/init": {
      "post": {
        "description": "Führt dieselben Vorprüfungen wie der Direkt-Upload durch, eröffnet aber statt einer einzelnen PUT-URL eine Multipart-Sitzung, gegen die der Client Teil für Teil hochlädt.\n\n**Benötigte Berechtigung:** `asset.upload`",
        "operationId": "multipartInitAssetsUploadMultipartInit",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MultipartInitRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MultipartInitResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Eröffnet einen Multipart-Upload für große Dateien",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/assets/upload-multipart/part-url": {
      "post": {
        "description": "Setzt eine offene Multipart-Sitzung voraus; ohne sie ist die Teil-Ressource nicht auffindbar. Ändert nichts am Medium.\n\n**Benötigte Berechtigung:** `asset.upload`",
        "operationId": "multipartPartUrlAssetsUploadMultipartPartUrl",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MultipartPartUrlRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MultipartPartUrlResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Stellt eine Presigned-URL für einen Upload-Teil aus",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/assets/upload-precheck": {
      "post": {
        "description": "Prüft Dateityp und Speicher-Kontingent und legt den Medien-Datensatz an. Ist die Datei laut sha256 bereits vorhanden, entfällt der Upload und die Antwort liefert keine URL; ein fertig verarbeitetes Quell-Medium vererbt dabei seine Varianten.\n\n**Benötigte Berechtigung:** `asset.upload`",
        "operationId": "precheckAssetsUploadPrecheck",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UploadPrecheckRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadPrecheckResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Fordert eine Presigned-URL für einen Direkt-Upload an",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/audit": {
      "get": {
        "description": "Ohne das weitergehende Leserecht schränkt der Server die Sicht auf die eigenen Vorgänge des Aufrufers ein.\n\n**Benötigte Berechtigung:** `audit.read` oder `audit.read.self`",
        "operationId": "listAudit",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "eventType",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "actorRef",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "severity",
            "required": false,
            "schema": {
              "enum": [
                "debug",
                "info",
                "warn",
                "error"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetActivityFeedResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet das Protokoll der Organisation",
        "tags": [
          "audit"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/audit/{id}": {
      "get": {
        "description": "Ohne das weitergehende Leserecht sind nur eigene Einträge erreichbar.\n\n**Benötigte Berechtigung:** `audit.read` oder `audit.read.self`",
        "operationId": "detailByIdAudit",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAuditEntryDetailResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest einen Protokoll-Eintrag",
        "tags": [
          "audit"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/audit/exports": {
      "get": {
        "description": "**Benötigte Berechtigung:** `audit.export.list`",
        "operationId": "listAuditExports",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListExportsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Protokoll-Exporte der Organisation",
        "tags": [
          "audit"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Die Datei wird im Hintergrund erzeugt; der Export ist zunächst nur vorgemerkt und erst nach Fertigstellung abrufbar.\n\n**Benötigte Berechtigung:** `audit.export.create`",
        "operationId": "createAuditExports",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestAuditExportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestAuditExportResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Beauftragt einen Protokoll-Export",
        "tags": [
          "audit"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/audit/exports/{id}": {
      "delete": {
        "description": "Entfernt Datei und Eintrag. Scheitert das Löschen der Datei, verschwindet der Eintrag dennoch und die Datei wird später aufgeräumt.\n\n**Benötigte Berechtigung:** `audit.export.delete`",
        "operationId": "removeAuditExports",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteAuditExportResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löscht einen Protokoll-Export vor seinem Ablauf",
        "tags": [
          "audit"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/audit/exports/{id}/download": {
      "get": {
        "description": "Die Antwort nennt eine befristete Adresse im Objektspeicher. Vor Fertigstellung des Exports antwortet der Aufruf mit einem Konflikt, Exporte fremder Organisationen erscheinen als nicht gefunden.\n\n**Benötigte Berechtigung:** `audit.export.read`\n\nZusätzlich wird geprüft, ob die Ressource Ihnen gehört. Das Recht `audit.export.download.any` hebt diese Prüfung auf.",
        "operationId": "downloadAuditExports",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetExportDownloadUrlResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liefert den Abrufweg zu einem Protokoll-Export",
        "tags": [
          "audit"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/identify": {
      "post": {
        "description": "Erster Schritt jeder Anmeldung. Die Antwort nennt nur die möglichen Wege, nicht Organisation, Name oder Anzahl der Konten; erzwingt eine Organisation SSO, wird kein Konto nachgeschlagen. Sie ist personenbezogen und darf nicht zwischengespeichert werden.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "identifyAuth",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IdentifyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IdentifyResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Ermittelt die Anmeldewege zu einer E-Mail-Adresse",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/login": {
      "post": {
        "description": "Endet je nach Konto in einer Sitzung, in einer offenen MFA-Prüfung oder in der Organisations-Wahl. Nur eine tatsächlich entstandene Sitzung setzt das Refresh-Cookie.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "loginAuth",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordLoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoginOutcome"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Meldet mit E-Mail und Passwort an",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/login/choose-organization": {
      "post": {
        "description": "Zweiter Schritt, wenn die Adresse auf mehrere Organisationen passt. Das dabei vorgelegte Ticket ist einmalig.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "chooseOrganizationAuthLogin",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChooseOrganizationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoginOutcome"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Wählt die Organisation nach mehrdeutiger Anmeldung",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/login/exchange": {
      "post": {
        "description": "Erst hier entsteht die Sitzung, gebunden an den einlösenden Browser. Eine bestehende MFA-Pflicht greift wie bei jedem anderen Anmeldeweg.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "exchangeHandoffAuthLoginExchange",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginExchangeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoginOutcome"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Löst ein Übergabe-Ticket in eine Sitzung ein",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/login/magic-link": {
      "post": {
        "description": "Die Antwort fällt unabhängig davon gleich aus, ob die Adresse ein Konto trifft. Versendet wird nichts, wenn die Organisation SSO erzwingt oder die Adresse zum Plattform-Betrieb gehört.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "requestMagicLinkAuthLoginMagicLink",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendMagicLinkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SendMagicLinkResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Fordert einen Magic-Link zur Anmeldung an",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/login/magic-link/consume": {
      "post": {
        "description": "Der Link ist einmalig und befristet. Eine bestehende MFA-Pflicht greift auch hier.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "consumeMagicLinkAuthLoginMagicLinkConsume",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConsumeMagicLinkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoginOutcome"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Löst einen Magic-Link ein",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/login/social": {
      "get": {
        "description": "Reine Betriebs-Konfiguration ohne Kontobezug, damit die Anmeldeseite nur eingerichtete Wege anbietet. Die Antwort ist kurz zwischenspeicherbar.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "listSocialProvidersAuthLoginSocial",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSocialProvidersResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Listet die verfügbaren Anmelde-Anbieter",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/login/social/{provider}": {
      "get": {
        "description": "Antwortet mit einer Weiterleitung zum Anbieter und ohne Antwort-Körper.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "socialInitAuthLoginSocial",
        "parameters": [
          {
            "in": "path",
            "name": "provider",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Startet die Anmeldung über einen Anbieter",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/login/social/callback": {
      "get": {
        "description": "Endet immer in einer Weiterleitung ins Portal. Existiert zur bestätigten Adresse kein Konto, reist das Ticket als Grund mit und führt in die Registrierung.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "socialCallbackRedirectAuthLoginSocialCallback",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Nimmt den Anbieter-Rücksprung als Weiterleitung an",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Inhaltlich gleichwertig zur Weiterleitungs-Variante; Apple nutzt sie, sobald der Name angefragt ist.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "socialCallbackFormPostAuthLoginSocialCallback",
        "parameters": [],
        "responses": {
          "201": {
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Nimmt den Anbieter-Rücksprung als Formular-POST an",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/login/sso/{providerId}": {
      "get": {
        "description": "Antwortet mit einer Weiterleitung zum Provider und ohne Antwort-Körper.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "ssoInitAuthLoginSso",
        "parameters": [
          {
            "in": "path",
            "name": "providerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Startet die Anmeldung über einen SSO-Provider",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/login/sso/callback": {
      "get": {
        "description": "Endet stets in einer Weiterleitung ins Portal, im Erfolgsfall mit einem Übergabe-Ticket im Adress-Fragment, sonst mit einem benannten Grund. Eine Fehlerantwort im Format der Schnittstelle gibt es hier nicht.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "ssoCallbackRedirectAuthLoginSsoCallback",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Nimmt den SSO-Rücksprung als Weiterleitung an",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Inhaltlich gleichwertig zur Weiterleitungs-Variante; sie besteht für Anbieter, die den Rücksprung als Formular senden.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "ssoCallbackFormPostAuthLoginSsoCallback",
        "parameters": [],
        "responses": {
          "201": {
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Nimmt den SSO-Rücksprung als Formular-POST an",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/logout": {
      "post": {
        "description": "Löscht nur das Cookie der eigenen Anmeldeart, sodass eine parallele Anmeldung im selben Browser bestehen bleibt.",
        "operationId": "logoutAuth",
        "parameters": [],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogoutResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Beendet die eigene Sitzung",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/logout/all": {
      "post": {
        "description": "Die aufrufende Sitzung bleibt bestehen; alle übrigen Anmeldungen des Kontos werden widerrufen.",
        "operationId": "logoutAllAuthLogoutAll",
        "parameters": [],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogoutResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Beendet alle anderen Sitzungen des Kontos",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/mfa/recovery-code": {
      "post": {
        "description": "Rückfallweg auf derselben offenen MFA-Prüfung. Der eingesetzte Code ist danach verbraucht.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "verifyRecoveryCodeAuthMfaRecoveryCode",
        "parameters": [],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoginOutcome"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Bestätigt die Anmeldung mit einem Wiederherstellungscode",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/mfa/verify": {
      "post": {
        "description": "Läuft auf der offenen MFA-Prüfung aus dem vorangegangenen Anmeldeschritt. Nach drei Fehlversuchen ist die Prüfung verbraucht und die Anmeldung beginnt von vorn.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "verifyMfaAuthMfaVerify",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyMfaRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoginOutcome"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Bestätigt die Anmeldung mit einem TOTP-Code",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/password-reset/consume": {
      "post": {
        "description": "Das Token ist einmalig und befristet. Mit dem neuen Passwort werden die bestehenden Sitzungen des Kontos widerrufen.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "consumePasswordResetAuthPasswordResetConsume",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConsumePasswordResetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsumePasswordResetResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Setzt das Passwort per Token neu",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/password-reset/request": {
      "post": {
        "description": "Die Antwort fällt unabhängig davon gleich aus, ob die Adresse ein Konto trifft.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "requestPasswordResetAuthPasswordResetRequest",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendPasswordResetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SendPasswordResetResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Fordert das Zurücksetzen des Passworts an",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/refresh": {
      "post": {
        "description": "Liest das Refresh-Token aus dem httpOnly-Cookie und rotiert es. Scheitert die Rotation, wird das vorgelegte Cookie gelöscht; ohne Cookie endet der Aufruf als fehlende Anmeldung.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "refreshAuth",
        "parameters": [],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefreshResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Erneuert die Sitzung eines Organisations-Kontos",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/signup": {
      "get": {
        "description": "Reine Betriebs-Konfiguration ohne Kontobezug; die Antwort ist kurz zwischenspeicherbar.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "availabilityAuthSignup",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignupAvailabilityResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Nennt, ob die Selbst-Registrierung offen ist",
        "tags": [
          "onboarding"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/signup/complete": {
      "post": {
        "description": "Organisation und erster Verantwortlicher entstehen; die Antwort ist bereits eine Anmeldung samt Cookie. Das Ticket aus dem Nachweis-Schritt wird verbraucht.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "completeAuthSignup",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SignupCompleteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoginOutcome"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Schließt die Registrierung mit einer neuen Organisation ab",
        "tags": [
          "onboarding"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/signup/join": {
      "post": {
        "description": "Statt einer zweiten Organisation entsteht eine Anfrage an deren Verwaltung. Eine bereits offene Anfrage derselben Adresse wird fortgeschrieben statt verdoppelt; das Ticket ist danach verbraucht.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "joinAuthSignup",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SignupJoinRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignupJoinResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Stellt eine Beitrittsanfrage an eine bestehende Organisation",
        "tags": [
          "onboarding"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/signup/social": {
      "post": {
        "description": "Setzt die Übergabe aus dem Anbieter-Rücksprung voraus. Da die Adresse dort bereits bestätigt wurde, entfällt der Nachweis-Schritt.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "socialAuthSignup",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SignupSocialRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignupVerifyResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Startet die Registrierung aus einer Anbieter-Anmeldung",
        "tags": [
          "onboarding"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/signup/start": {
      "post": {
        "description": "Die Antwort fällt stets gleich aus und verrät weder ein bestehendes Konto noch eine abgeschaltete Registrierung. Ein Nachweis-Code entsteht nur, wenn der Vorgang zulässig ist; je Adresse ist die Zahl der Nachweise pro Stunde begrenzt.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "startAuthSignup",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SignupStartRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignupStartResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Startet die Selbst-Registrierung mit einer E-Mail-Adresse",
        "tags": [
          "onboarding"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/signup/verify": {
      "post": {
        "description": "Der Code ist danach verbraucht; weiter geht es mit dem ausgestellten Ticket. Erst ab hier nennt die Antwort, ob zur Domäne der Adresse schon eine Organisation besteht.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "verifyAuthSignup",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SignupVerifyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignupVerifyResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Löst den Nachweis-Code der Registrierung ein",
        "tags": [
          "onboarding"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/auth/sso-recovery/consume": {
      "post": {
        "description": "Vorgesehen für Organisationen mit erzwungenem SSO, deren Provider ausgefallen ist. Ein gewöhnliches Zurücksetz-Token wird hier abgewiesen.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "consumeSsoRecoveryAuthSsoRecoveryConsume",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConsumeSsoRecoveryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsumeSsoRecoveryResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Löst einen SSO-Notfallzugang ein",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/brand-assets": {
      "get": {
        "description": "Der Inhalt des Systemordners „Markenzeichen\" samt seiner Kennung. Ohne hinterlegte Marke ist die Liste leer und die Kennung null — der Ordner entsteht mit dem ersten Bild.\n\n**Benötigte Berechtigung:** `tenant.profile.read`",
        "operationId": "listBrandAssets",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListBrandAssetsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Marken-Bilder der Organisation",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/brand-assets/{id}": {
      "delete": {
        "description": "Wandert in den Papierkorb wie jedes Medium. Ein Bild, das gerade als Logo oder Favicon zugeordnet ist, bleibt stehen — erst die Zuordnung lösen.\n\n**Benötigte Berechtigung:** `tenant.branding.update`",
        "operationId": "removeBrandAssets",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Entfernt ein Marken-Bild",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/brand-assets/upload-precheck": {
      "post": {
        "description": "Wie der gewöhnliche Upload-Precheck, nur mit dem Systemordner „Markenzeichen\" als festem Ziel. Der Abschluss läuft über den gewöhnlichen Weg (POST /v1/assets/upload-complete).\n\n**Benötigte Berechtigung:** `tenant.branding.update`",
        "operationId": "initiateUploadBrandAssetsUploadPrecheck",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BrandAssetUploadRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BrandAssetUploadResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Meldet ein Marken-Bild zum Hochladen an",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/cloud-connections": {
      "get": {
        "description": "Enthält auch getrennte Verbindungen: Übernommene Dateien nennen sie als Herkunft. Weder die Vollmacht noch ein Verweis darauf ist Teil der Antwort.\n\n**Benötigte Berechtigung:** `cloud-connection.list`",
        "operationId": "listConnectionsCloudConnections",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListCloudConnectionsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Cloud-Verbindungen der Organisation",
        "tags": [
          "cloud-connections"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/cloud-connections/{connectionId}/disconnect": {
      "post": {
        "description": "Löscht die hinterlegte Vollmacht, versucht den Widerruf beim Anbieter und setzt die Verbindung auf getrennt. Bereits übernommene Dateien bleiben unberührt — sie gehören der Organisation.\n\n**Benötigte Berechtigung:** `cloud-connection.disconnect`",
        "operationId": "disconnectConnectionCloudConnectionsDisconnect",
        "parameters": [
          {
            "in": "path",
            "name": "connectionId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisconnectCloudConnectionResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Trennt eine Cloud-Verbindung",
        "tags": [
          "cloud-connections"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/cloud-connections/callback": {
      "get": {
        "description": "Endet stets in einer Weiterleitung ins Portal, mit dem Ausgang im Adress-Fragment. Eine Fehlerantwort im Format der Schnittstelle gibt es hier nicht.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "callbackCloudConnections",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Nimmt den Rücksprung des Cloud-Anbieters an",
        "tags": [
          "cloud-connections"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/cloud-connections/init": {
      "post": {
        "description": "Antwortet mit der Adresse der Zustimmungs-Maske des Anbieters, der der Browser folgen muss. Wird eine bestehende Verbindung genannt, repariert der Rundlauf sie — kommt dabei ein anderes Konto zurück, endet er mit einem Hinweis statt mit einer zweiten Verbindung.\n\n**Benötigte Berechtigung:** `cloud-connection.connect`",
        "operationId": "initConnectionCloudConnectionsInit",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InitCloudConnectionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InitCloudConnectionResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Beginnt das Verbinden eines Cloud-Kontos",
        "tags": [
          "cloud-connections"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/devices": {
      "get": {
        "description": "Die Maschinen hinter den Flächen. Jede Zeile trägt neben der Identität mit, was der Betrieb von ihr weiss: Bauart, Systemabbild und Kanal, die Displays daran und der jüngste Herzschlag über alle davon. **Auch Geräte ohne Display** stehen hier — sie sind sonst nirgends im Portal erreichbar.\n\n**Benötigte Berechtigung:** `identity.device.list`",
        "operationId": "listDevices",
        "parameters": [
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "unclaimed",
                "active",
                "blocked"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "certExpiringWithinDays",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "enum": [
                "createdAt",
                "certExpiresAt"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDevicesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Geräte der Organisation",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/devices/{id}": {
      "get": {
        "description": "Die Geräteakte: Identität, gemeldete Fähigkeiten, der zuletzt berichtete Zustand (Hardware, Netz, Standort, Systemabbild) und die Displays, die diese Maschine treibt. Dasselbe Recht wie die Liste — die Einzelsicht zeigt dieselben Angaben, nur vollständig.\n\n**Benötigte Berechtigung:** `identity.device.list`",
        "operationId": "getDevices",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDeviceResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest ein einzelnes Gerät",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "Der Name ab Werk ist „Player\" und die letzten vier Zeichen der Seriennummer. Er gehört der Organisation, solange ihr das Gerät gehört, und fällt bei jeder Freigabe und Sperre auf den Namen ab Werk zurück.\n\n**Benötigte Berechtigung:** `fleet.player.update`",
        "operationId": "updateDevices",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDeviceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateDeviceResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Benennt ein Gerät um",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/devices/{id}/block": {
      "post": {
        "description": "Entfernt das Gerät mit allen seinen Displays aus der Organisation und sperrt es auf der Plattform. Seine Zertifikate werden gesperrt, jede weitere Anmeldung wird mit `Device.Blocked` abgewiesen, und meldet es sich doch, stellt es den Werkszustand her. Aufheben kann die Sperre nur der Betreiber. Der Grund steht danach an der Sperre.\n\n**Benötigte Berechtigung:** `identity.device.lifecycle`",
        "operationId": "blockDevices",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BlockDeviceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlockDeviceResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Meldet ein Gerät als verloren",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/devices/{id}/commands": {
      "get": {
        "description": "Alle Befehle dieser Maschine, neueste zuerst — auch die, die einem ihrer Bildschirme galten. Woran ein einzelner hing, steht an ihm selbst. Geblättert wird über `page`/`limit`; `total` nennt die Gesamtzahl.\n\n**Benötigte Berechtigung:** `fleet.player.read`",
        "operationId": "listDevicesCommands",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDeviceCommandsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Befehle eines Geräts",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Für Befehle, die die Maschine treffen und damit jeden Bildschirm daran: Neustart, Aktualisierungs-Prüfung, Slot-Bestätigung, Protokoll-Abruf, Ortung. Einen Werksreset gibt es hier nicht, er läuft über die Freigabe des Geräts. Bildschirm-Befehle weist die Route ab und nennt die richtige.\n\n**Benötigte Berechtigung:** `fleet.player.command.issue`",
        "operationId": "issueDevicesCommands",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IssueDeviceCommandRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssueDeviceCommandResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Beauftragt einen Fernwartungs-Befehl an ein Gerät",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/devices/{id}/commands/{cid}/output": {
      "get": {
        "description": "Die URL zeigt auf die abgelegte Ausgabe des Befehls, allen voran den Protokoll-Abruf, und ist fünf Minuten gültig. Befehle ohne abgelegte Ausgabe antworten mit 404.\n\n**Benötigte Berechtigung:** `fleet.player.read`",
        "operationId": "outputDevicesCommands",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "cid",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCommandOutputUrlResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Stellt eine Download-URL auf das Befehlsergebnis aus",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/devices/{id}/events": {
      "get": {
        "description": "Die vom Gerät gemeldeten Ereignisse, neueste zuerst. `minSeverity` schliesst alles Schwerere ein; `categories` nimmt mehrere Bereiche zugleich.\n\n**Benötigte Berechtigung:** `fleet.player.read`",
        "operationId": "listDevicesEvents",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "categories",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "playback",
                  "content",
                  "connection",
                  "system",
                  "update",
                  "command",
                  "service"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "in": "query",
            "name": "minSeverity",
            "required": false,
            "schema": {
              "enum": [
                "info",
                "warning",
                "error"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDeviceEventsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet das Betriebsprotokoll eines Geräts",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/devices/{id}/reconnect-link": {
      "post": {
        "description": "Überträgt einen bestehenden Bildschirm auf einen anderen Browser: Wer den Link dort öffnet, übernimmt dieselbe Fläche mit Namen, Programm, Verlauf und gebuchtem Platz — es entsteht kein zweites Display. Der Browser, der bis dahin angeschlossen war, verliert seinen Zugang. Der Link gilt zwei Stunden und genau einmal; ein neuer entwertet alle offenen. Nur an Displays ohne Agent — am Gerät mit Zertifikat gibt es nichts zu übertragen.\n\n**Benötigte Berechtigung:** `fleet.player.pair`",
        "operationId": "createReconnectLinkDevicesReconnectLink",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateDeviceReconnectLinkResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Stellt einen Wiederanschluss-Link für ein WebDisplay aus",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/devices/{id}/release": {
      "post": {
        "description": "Drei Gründe, und sie kosten Verschiedenes. `reconnect` (Neu koppeln) nimmt Zugehörigkeit, Inhalte und Fernkonfiguration. WLAN und Fernzugang bleiben, das Gerät kommt von allein wieder hoch und zeigt einen Kopplungscode. `factory` (Werkszustand herstellen) nimmt zusätzlich WLAN-Profil und Fernzugang, danach ist das Gerät nur noch vor Ort erreichbar. `removed` (Aus der Organisation entfernen) wirkt am Gerät wie `reconnect` und meint den Abschied. Jeder Grund entfernt ALLE Displays dieses Geräts und gibt ihre Plätze frei. Das Gerät behält seine Kennung und meldet sich darunter neu an.\n\n**Benötigte Berechtigung:** `identity.device.lifecycle`",
        "operationId": "releaseDevices",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReleaseDeviceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReleaseDeviceResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Gibt ein Gerät aus der Organisation frei",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/devices/{id}/reregistration": {
      "post": {
        "description": "Ein gekoppeltes Gerät hat sich mit einem neuen Schlüssel angemeldet, meist nach dem Neuflashen. Bis hierher bekommt es `409 Device.ReregistrationPending`. `keep` (Annehmen, Displays behalten) gibt dem Schlüssel, mit dem sich das Gerät gemeldet hat, 24 Stunden lang ein Zertifikat unter derselben Kennung, und Displays, Programm, Platz und Name bleiben. Ein anderer Schlüssel eröffnet einen neuen Fall. `reconnect` (Annehmen und neu koppeln) gibt das Gerät mit dem Grund `reconnect` frei, alle Displays gehen mit. `block` (Sperren) sperrt es mit dem Grund aus `reason`. Ohne offenen Fall antwortet der Endpunkt mit `409 Device.ReregistrationNotPending`.\n\n**Benötigte Berechtigung:** `identity.device.lifecycle`",
        "operationId": "reregistrationDevices",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DecideReregistrationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DecideReregistrationResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Entscheidet über ein Gerät, das sich mit neuer Identität gemeldet hat",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/display-groups": {
      "get": {
        "description": "Eine Leinwand fasst mehrere Displays zu einer gemeinsamen Fläche zusammen; jedes Mitglied zeigt seinen Ausschnitt.\n\n**Benötigte Berechtigung:** `fleet.player.list`",
        "operationId": "listDisplayGroups",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDisplayGroupsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Leinwände des Mandanten",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Braucht die vertragliche Fähigkeit „Leinwände\". Ein Display kann nur zu einer Leinwand gehören; jedes Rechteck muss innerhalb der Fläche liegen.\n\n**Benötigte Berechtigung:** `fleet.display-group.manage`",
        "operationId": "createDisplayGroups",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateDisplayGroupRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateDisplayGroupResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt eine Leinwand an",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/display-groups/{id}": {
      "delete": {
        "description": "Entfernt nur die Gruppierung. Die Displays bleiben bestehen und zeigen danach wieder die ganze Szene.\n\n**Benötigte Berechtigung:** `fleet.display-group.manage`",
        "operationId": "removeDisplayGroups",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteDisplayGroupResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löst eine Leinwand auf",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      },
      "get": {
        "description": "**Benötigte Berechtigung:** `fleet.player.list`",
        "operationId": "byIdDisplayGroups",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDisplayGroupResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest eine Leinwand",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "Fläche und Mitglieder werden zusammen gesetzt. Entfällt die vertragliche Fähigkeit, läuft die bestehende Leinwand weiter — umbauen lässt sie sich dann nicht mehr.\n\n**Benötigte Berechtigung:** `fleet.display-group.manage`",
        "operationId": "updateDisplayGroups",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDisplayGroupRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateDisplayGroupResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Ändert Name oder Aufbau einer Leinwand",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/display-groups/{id}/program": {
      "put": {
        "description": "Programm, Szene, Playlist oder Medium — dieselbe Zuweisung landet auf allen Mitgliedern der Fläche. Eine leere Angabe entfernt sie überall.\n\n**Benötigte Berechtigung:** `schedule.update`",
        "operationId": "setProgramDisplayGroupsProgram",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetDisplayGroupProgramRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetDisplayGroupProgramResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Weist einer Leinwand ein Programm zu",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/folders": {
      "get": {
        "description": "**Benötigte Berechtigung:** `asset.folder.list`",
        "operationId": "listFolders",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListFoldersResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet den Ordnerbaum der Medienbibliothek",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "**Benötigte Berechtigung:** `asset.folder.create`",
        "operationId": "createFolders",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateFolderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateFolderResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt einen Ordner an",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/folders/{id}": {
      "delete": {
        "description": "Enthaltene Medien wandern in den übergeordneten Ordner oder in die Wurzel, Unterordner rücken eine Ebene auf. Gelöscht wird nur der Knoten selbst.\n\n**Benötigte Berechtigung:** `asset.folder.delete`",
        "operationId": "removeFolders",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löscht einen Ordner ohne Inhaltsverlust",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "**Benötigte Berechtigung:** `asset.folder.update`",
        "operationId": "renameFolders",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateFolderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateFolderResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Benennt einen Ordner um",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/folders/{id}/move": {
      "post": {
        "description": "Schreibt Pfad und Tiefe des gesamten Teilbaums nach. Ein Verschieben in den eigenen Teilbaum und ein Überschreiten der Tiefengrenze werden abgelehnt.\n\n**Benötigte Berechtigung:** `asset.folder.update`",
        "operationId": "moveFolders",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MoveFolderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MoveFolderResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Verschiebt einen Ordner samt Teilbaum",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/grants": {
      "get": {
        "description": "Gefiltert wird entweder nach Mitglied oder nach Ressource; genau eine der beiden Achsen ist anzugeben.\n\n**Benötigte Berechtigung:** `access.grant.list`",
        "operationId": "listGrants",
        "parameters": [
          {
            "in": "query",
            "name": "userId",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "resourceType",
            "required": false,
            "schema": {
              "enum": [
                "scene",
                "playlist",
                "schedule",
                "player",
                "device",
                "asset",
                "tenant",
                "audit-export"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "resourceId",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "kind",
            "required": false,
            "schema": {
              "enum": [
                "allow",
                "deny"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListGrantsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet Ressourcen-Grants",
        "tags": [
          "access"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Die Zuständigkeit für die im Body benannte Ressource wird geprüft, bevor der Grant entsteht.\n\n**Benötigte Berechtigung:** `access.grant.create`",
        "operationId": "createGrants",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateGrantRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateGrantResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Erteilt eine Berechtigung auf einer einzelnen Ressource",
        "tags": [
          "access"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/grants/{id}": {
      "delete": {
        "description": "**Benötigte Berechtigung:** `access.grant.revoke`",
        "operationId": "revokeGrants",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RevokeGrantResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Widerruft einen Ressourcen-Grant",
        "tags": [
          "access"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/invitations": {
      "get": {
        "description": "**Benötigte Berechtigung:** `identity.invitation.list`",
        "operationId": "listInvitations",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListInvitationsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Einladungen der Organisation",
        "tags": [
          "onboarding"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Verschickt eine befristete Einladung per Mail; das Konto entsteht erst mit deren Annahme. Eine Rolle, die der Einladende selbst nicht vergeben darf, wird abgewiesen.\n\n**Benötigte Berechtigung:** `identity.user.invite`",
        "operationId": "createInvitations",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InviteUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InviteUserResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Lädt ein neues Mitglied ein",
        "tags": [
          "onboarding"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/invitations/{id}": {
      "delete": {
        "description": "Das versendete Token verliert seine Gültigkeit.\n\n**Benötigte Berechtigung:** `identity.invitation.revoke`",
        "operationId": "revokeInvitations",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RevokeInvitationResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Zieht eine offene Einladung zurück",
        "tags": [
          "onboarding"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/invitations/{id}/resend": {
      "post": {
        "description": "Stellt ein frisches Token mit neuer Frist aus und verschickt es; das bisherige Token wird damit ungültig. Bereits angenommene oder zurückgezogene Einladungen werden abgewiesen.\n\n**Benötigte Berechtigung:** `identity.user.invite`",
        "operationId": "resendInvitations",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResendInvitationResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Sendet eine offene Einladung erneut",
        "tags": [
          "onboarding"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/invitations/public/{token}": {
      "get": {
        "description": "Ohne Anmeldung abrufbar, damit das Annahme-Formular Organisation und einladende Person zeigen kann.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "showInvitationsPublic",
        "parameters": [
          {
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInvitationByTokenResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Liest die öffentlichen Angaben zu einer Einladung",
        "tags": [
          "onboarding"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/invitations/public/{token}/accept": {
      "post": {
        "description": "Legt das Konto an und meldet unmittelbar an: die Sitzung wird als Cookie zurückgegeben. Das Token ist danach verbraucht.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "acceptInvitationsPublic",
        "parameters": [
          {
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AcceptInvitationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptInvitationResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Nimmt eine Einladung an",
        "tags": [
          "onboarding"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/join-requests": {
      "get": {
        "description": "**Benötigte Berechtigung:** `identity.join-request.list`",
        "operationId": "listJoinRequests",
        "parameters": [
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "pending",
                "accepted",
                "rejected",
                "expired"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListJoinRequestsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Beitrittsanfragen an die Organisation",
        "tags": [
          "onboarding"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/join-requests/{id}/accept": {
      "post": {
        "description": "Legt kein Konto an, sondern stellt eine Einladung mit der gewählten Rolle aus; das Passwort setzt die eingeladene Person selbst. Eine Rolle jenseits der eigenen Vergabegrenze wird abgewiesen.\n\n**Benötigte Berechtigung:** `identity.join-request.decide`",
        "operationId": "acceptJoinRequests",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AcceptJoinRequestRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DecideJoinRequestResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Nimmt eine Beitrittsanfrage an",
        "tags": [
          "onboarding"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/join-requests/{id}/reject": {
      "post": {
        "description": "Die anfragende Person wird nicht benachrichtigt.\n\n**Benötigte Berechtigung:** `identity.join-request.decide`",
        "operationId": "rejectJoinRequests",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DecideJoinRequestResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Lehnt eine Beitrittsanfrage ab",
        "tags": [
          "onboarding"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/layout-templates": {
      "get": {
        "description": "Zuerst die mitgelieferten Vorlagen, danach die des Mandanten.\n\n**Benötigte Berechtigung:** `layout-template.list`",
        "operationId": "listLayoutTemplates",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListLayoutTemplatesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die verfügbaren Layout-Vorlagen",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "**Benötigte Berechtigung:** `layout-template.create`",
        "operationId": "createLayoutTemplates",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLayoutTemplateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateLayoutTemplateResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt eine eigene Layout-Vorlage an",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/layout-templates/{id}": {
      "delete": {
        "description": "Mitgelieferte Vorlagen sind nicht löschbar. Solange Szenen-Entwürfe die Vorlage verwenden, wird das Löschen abgelehnt.\n\n**Benötigte Berechtigung:** `layout-template.delete`",
        "operationId": "removeLayoutTemplates",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löscht eine eigene Layout-Vorlage",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      },
      "get": {
        "description": "**Benötigte Berechtigung:** `layout-template.list`",
        "operationId": "getLayoutTemplates",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLayoutTemplateResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest eine Layout-Vorlage",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "Mitgelieferte Vorlagen sind unveränderlich. Die Geometrie wird gegen den Zielstand geprüft.\n\n**Benötigte Berechtigung:** `layout-template.update`",
        "operationId": "updateLayoutTemplates",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLayoutTemplateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateLayoutTemplateResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Ändert eine eigene Layout-Vorlage",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/library/places": {
      "get": {
        "description": "Ein Ort ist ein verbundener fremder Speicher. Getrennte und unterbrochene Verbindungen bleiben in der Liste: Sie benennen die Herkunft übernommener Medien, und eine unterbrochene braucht den Hinweis „neu verbinden\" an genau dieser Stelle.\n\n**Benötigte Berechtigung:** `asset.list`",
        "operationId": "placesLibrary",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListLibraryPlacesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Orte der Organisation",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/library/places/{connectionId}/import": {
      "post": {
        "description": "Der Server holt die Datei selbst und führt sie durch denselben Weg wie einen Upload. Dieselbe Datei im selben Stand ergibt kein zweites Medium, sondern das vorhandene.\n\n**Benötigte Berechtigung:** `asset.upload`",
        "operationId": "importItemLibraryPlacesImport",
        "parameters": [
          {
            "in": "path",
            "name": "connectionId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportPlaceItemRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportPlaceItemResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Übernimmt eine Datei des Ortes in die Mediathek",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/library/places/{connectionId}/items": {
      "get": {
        "description": "Live vom Anbieter durchgereicht, Ordner vor Dateien. Ohne Angabe eines Ordners steht die Wurzel des Speichers. Vorschau-Adressen sind kurzlebig und werden nicht gespeichert.\n\n**Benötigte Berechtigung:** `asset.list`",
        "operationId": "itemsLibraryPlaces",
        "parameters": [
          {
            "in": "path",
            "name": "connectionId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "parentId",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPlaceItemsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet den Inhalt eines Ordners im Ort",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/library/synced-folders": {
      "get": {
        "description": "Mit Zustand, letztem Lauf und letztem Fehler. Ruhende Abgleiche bleiben in der Liste: Sie sind die einzige Stelle, an der ein Stillstand sichtbar wird.\n\n**Benötigte Berechtigung:** `asset.list`",
        "operationId": "listLibrarySyncedFolders",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSyncedFoldersResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die nachgeführten Ordner der Organisation",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Neue Dateien werden übernommen, geänderte erneuern den Inhalt des vorhandenen Mediums, gelöschte kennzeichnen nur die Herkunft. Der erste Durchgang läuft mit dem nächsten Takt.\n\n**Benötigte Berechtigung:** `asset.upload`",
        "operationId": "createLibrarySyncedFolders",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSyncedFolderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateSyncedFolderResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Hält einen Cloud-Ordner von nun an nach",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/library/synced-folders/{id}": {
      "delete": {
        "description": "Beendet allein die Verabredung, weiter nachzusehen. Übernommene Medien bleiben samt ihrer Herkunft — Szenen, die sie zeigen, merken nichts davon.\n\n**Benötigte Berechtigung:** `asset.upload`",
        "operationId": "removeLibrarySyncedFolders",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Beendet den Abgleich eines Ordners",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/library/synced-folders/{id}/run": {
      "post": {
        "description": "Reiht den Durchgang unmittelbar ein, statt auf den Viertelstunden-Takt zu warten — auch für einen ruhenden Abgleich, dem der Lauf als Heilungsversuch dient. Ist für den aktuellen Stand bereits ein Lauf unterwegs, entsteht kein zweiter: Die Antwort meldet dann `queued: false`.\n\n**Benötigte Berechtigung:** `asset.upload`",
        "operationId": "runLibrarySyncedFolders",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunSyncedFolderResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Gleicht einen Ordner sofort ab",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/locations": {
      "get": {
        "description": "Jede Zeile nennt die Zahl der Displays, die an diesem Ort hängen — daran ist ohne zweite Abfrage zu sehen, ob sich der Ort löschen lässt.\n\n**Benötigte Berechtigung:** `location.list`",
        "operationId": "listLocations",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListLocationsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Standorte des Mandanten",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Braucht die Fähigkeit „Standorte\". Der Name ist je Organisation eindeutig; Anschrift und Koordinaten dürfen fehlen, die Zeitzone nicht.\n\n**Benötigte Berechtigung:** `location.create`",
        "operationId": "createLocations",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLocationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateLocationResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt einen Standort an",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/locations/{id}": {
      "delete": {
        "description": "Nur ein leerer Ort lässt sich löschen. Hängt noch ein Display an ihm, antwortet die Route mit 409 und nennt die Zahl — die Displays werden vorher umgehängt oder gelöst, nie kaskadiert.\n\n**Benötigte Berechtigung:** `location.delete`",
        "operationId": "removeLocations",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteLocationResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löscht einen Standort",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      },
      "get": {
        "description": "**Benötigte Berechtigung:** `location.read`",
        "operationId": "byIdLocations",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLocationResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest einen Standort",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "Teiländerung mit If-Match auf die Version. `address: null` und `coordinates: null` entfernen die Angabe; ein ausgelassenes Feld bleibt stehen.\n\n**Benötigte Berechtigung:** `location.update`",
        "operationId": "updateLocations",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Die Fassung der Ressource, gegen die geschrieben wird — als Kennzeichen in Anführungszeichen (`\"7\"`) wie in der `ETag`-Kopfzeile der Lese-Antwort, oder als nackte Zahl (`7`). Weicht sie von der gespeicherten ab, antwortet die Route mit `Conflict.OptimisticLock` (409). Die Route weist eine fehlende Kopfzeile nicht ab, schreibt ohne sie aber auch nicht ungeprüft: Sie rechnet dann mit einer Fassung, die keine bestehende trifft, und antwortet mit demselben Konflikt.",
            "example": "\"7\"",
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLocationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateLocationResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Ändert einen Standort",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/marketplace/apps/{appId}/install": {
      "post": {
        "description": "Löst die Ziel-Fassung auf und prüft Sichtbarkeit, Kontingent und den mitgesandten Manifest-Hash als Zustimmungs-Beweis. Installierbar sind Fassungen aus den Kanälen, die die Organisation sieht, ohne Angabe die angebotene. Eine früher deinstallierte App wird wieder aktiviert statt neu angelegt.\n\n**Benötigte Berechtigung:** `marketplace.app.install`",
        "operationId": "installMarketplaceApps",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InstallAppRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstallAppResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Installiert eine App im Mandanten",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/marketplace/apps/{appId}/uninstall": {
      "post": {
        "description": "Setzt die App-Berechtigung auf deinstalliert; der Datensatz bleibt für eine erneute Installation erhalten. Die Folgearbeiten, blockierende Szenen-Befunde und der Neuaufbau des Rechte-Katalogs, laufen ereignisgesteuert nach.\n\n**Benötigte Berechtigung:** `marketplace.app.uninstall`",
        "operationId": "uninstallMarketplaceApps",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UninstallAppRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UninstallAppResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Deinstalliert eine App im Mandanten",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/marketplace/apps/{appId}/uninstall/preview": {
      "post": {
        "description": "Nennt die Szenen, die Widgets der App tragen und beim Deinstallieren einen blockierenden Befund erhielten. Rein lesend.\n\n**Benötigte Berechtigung:** `marketplace.app.uninstall`",
        "operationId": "previewUninstallMarketplaceAppsUninstallPreview",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewUninstallImpactResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Zeigt vorab die Folgen einer Deinstallation",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/marketplace/apps/{appId}/upgrade": {
      "post": {
        "description": "Verlangt den Manifest-Hash der Ziel-Fassung als Zustimmungs-Beweis und räumt eine offene erneute Zustimmung mit ab. Nur vorwärts und nur auf eine Fassung aus einem Kanal, den die Organisation sieht.\n\n**Benötigte Berechtigung:** `marketplace.app.upgrade`",
        "operationId": "upgradeMarketplaceApps",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpgradeAppRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpgradeAppResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Wechselt eine installierte App auf eine andere Version",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me": {
      "get": {
        "operationId": "getMeMe",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUserByIdResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest das eigene Benutzerprofil",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "operationId": "updateMeMe",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateUserProfileResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Aktualisiert das eigene Benutzerprofil",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/api-keys": {
      "get": {
        "description": "Beschränkt auf selbst erstellte Schlüssel. Die organisationsweite Sicht liegt unter /v1/api-keys.",
        "operationId": "listKeysMeApiKeys",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListApiKeysResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Listet die eigenen API-Schlüssel",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Das Geheimnis wird ausschließlich in dieser Antwort ausgegeben und ist danach nicht mehr abrufbar. Der angeforderte Rechte-Umfang darf die eigenen Berechtigungen nicht übersteigen.\n\n**Benötigte Berechtigung:** `identity.api-key.create`",
        "operationId": "mintKeyMeApiKeys",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MintApiKeyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MintApiKeyResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Erstellt einen API-Schlüssel",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/api-keys/{id}": {
      "delete": {
        "description": "Wirkt sofort und ist nicht umkehrbar. Der Grund steht danach am Schlüssel und im Protokoll: `owner-rotation`, wenn er nicht mehr gebraucht wird oder ersetzt ist, `compromised`, wenn der Geheimwert vermutlich in fremde Hände geraten ist.\n\n**Benötigte Berechtigung:** `identity.api-key.revoke`",
        "operationId": "revokeKeyMeApiKeys",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RevokeApiKeyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RevokeApiKeyResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Widerruft einen API-Schlüssel",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/api-keys/{id}/rotate": {
      "post": {
        "description": "Der Nachfolger übernimmt Name und Rechte-Umfang; der bisherige Schlüssel bleibt für das angeforderte Übergangsfenster gültig und wird danach automatisch widerrufen.\n\n**Benötigte Berechtigung:** `identity.api-key.create`",
        "operationId": "rotateKeyMeApiKeysRotate",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RotateApiKeyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RotateApiKeyResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Erneuert einen API-Schlüssel",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/apps": {
      "get": {
        "description": "Je Installation die Fassung, die Anzeigefelder der installierten Fassung (Name, Einzeiler, Symbol, Titelbild, Kategorie, Klasse, Größe), die Datenbereiche, in wie vielen Szenen die App steckt, den Status der Installation, den Status der App und ihre Wirkung im Paket. Deinstallierte Apps fehlen, abgeschaltete und nicht mehr im Paket enthaltene bleiben stehen. Name, Einzeiler und Datenbereiche kommen in der Sprache aus `locale` oder `Accept-Language`, wo die Fassung sie trägt.",
        "operationId": "listInstalledMeApps",
        "parameters": [
          {
            "in": "query",
            "name": "locale",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListInstalledAppsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Listet die installierten Apps der Organisation",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/apps/{appId}/beta-enrollment": {
      "delete": {
        "description": "Idempotent. Schon angenommene Fassungen bleiben installiert, eine Installation geht nie zurück.\n\n**Benötigte Berechtigung:** `marketplace.app.upgrade`",
        "operationId": "withdrawAppMeAppsBetaEnrollment",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BetaEnrollmentResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Trägt die Organisation für eine App aus dem Kanal beta aus",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Idempotent. Die App muss im Katalog stehen.\n\n**Benötigte Berechtigung:** `marketplace.app.upgrade`",
        "operationId": "enrollAppMeAppsBetaEnrollment",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BetaEnrollmentResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Trägt die Organisation für eine App in den Kanal beta ein",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/apps/{appId}/data": {
      "get": {
        "description": "Je Datenbereich die Zahl der Einträge, was das Manifest beim Deinstallieren verspricht, und eine vorgemerkte Löschung. Rein lesend.",
        "operationId": "getAppDataMeAppsData",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAppDataResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Liest, was eine App an Daten bei der Organisation hält",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/apps/{appId}/data/deletion": {
      "delete": {
        "description": "Die Daten bleiben, wie sie sind. Ohne vorgemerkte Löschung antwortet die Route mit `AppData.DeletionNotFound`.\n\n**Benötigte Berechtigung:** `marketplace.app.uninstall`",
        "operationId": "cancelAppDataDeletionMeAppsDataDeletion",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppDataDeletionResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Bricht das Löschen der Daten einer App ab",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Nach 30 Tagen löscht ein Lauf sie endgültig. Bis dahin lässt sich die Löschung abbrechen, und eine erneute Installation bricht sie von selbst ab. Nur für eine deinstallierte App mit Daten, sonst `AppData.NotDeletable`.\n\n**Benötigte Berechtigung:** `marketplace.app.uninstall`",
        "operationId": "scheduleAppDataDeletionMeAppsDataDeletion",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppDataDeletionResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Merkt die Daten einer deinstallierten App zum Löschen vor",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/apps/{appId}/install-request": {
      "post": {
        "description": "Geht in der Oberfläche und per E-Mail an jeden Inhaber, mit höchstens einem Satz dazu. Sieben Tage lang gilt dieselbe Bitte als offen, eine zweite geht dann nicht hinaus und die Antwort nennt die vorhandene. Wer selbst installieren darf oder eine installierte App meint, bekommt `OwnerRequest.NotApplicable`.\n\n**Benötigte Berechtigung:** `marketplace.app.request`",
        "operationId": "requestInstallMeAppsInstallRequest",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestOwnerDecisionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestOwnerDecisionResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Bittet die Inhaber, eine App zu installieren",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/apps/{appId}/installed": {
      "get": {
        "description": "Der Eintrag der installierten Fassung mit dem echten Stand der Einrichtung, die Installation mit jeder Entscheidung über sie (Zustimmungen, neueste zuerst, und eine Ablehnung) und die Szenen, die die App verwenden. Eine angebotene, noch nicht angenommene Fassung gilt erst, wenn sie angenommen ist.",
        "operationId": "getInstalledAppMeAppsInstalled",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "locale",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInstalledAppResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Liest die App-Seite einer installierten App",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/apps/{appId}/scene-pins": {
      "get": {
        "description": "Je veröffentlichter Szene, deren Pin eine andere Hauptnummer trägt als die Installation, Fassung von und nach und die Fassung, die sie heute spielt. Pins derselben Hauptnummer folgen der Installation von selbst und fehlen. Rein lesend.\n\n**Benötigte Berechtigung:** `scene.list`",
        "operationId": "previewMeAppsScenePins",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppScenePinsPreviewResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Zeigt, welche Szenen eine App nicht auf der installierten Fassung spielen",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/apps/{appId}/scene-pins/lift": {
      "post": {
        "description": "Je Szene aus der Vorschau eine neue veröffentlichte Fassung mit gehobenen Pins über den gewöhnlichen Weg des Veröffentlichens, der Entwurf trägt die Pins mit. Jede Szene läuft für sich, die Antwort nennt den Ausgang je Szene. Die Momentaufnahmen der Displays folgen.\n\n**Benötigte Berechtigung:** `scene.publish`",
        "operationId": "liftMeAppsScenePins",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LiftAppScenePinsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Hebt alle Szenen einer App auf die installierte Fassung",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/apps/{appId}/update": {
      "get": {
        "description": "Was die App-Seite zur Entscheidung zeigt: Fassung von und nach, Gründe, „Neu in dieser Fassung\" in der erbetenen Sprache, Bedingungen, Rechte und Datenzugriffe in Klartext, welche Fassung die Szenen bis dahin spielen, die Frist und ob Ablehnen noch möglich ist. `update` ist `null`, wenn keine Entscheidung ansteht.",
        "operationId": "getUpdateMeAppsUpdate",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "locale",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAppUpdateResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Liest die Entscheidung über das Update einer App",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/apps/{appId}/update/accept": {
      "post": {
        "description": "Der mitgesandte Hash muss dem Manifest der Fassung entsprechen, auf die das Update führt. Danach ist sie die installierte Fassung, und ein Nachweis hält fest, wer wozu zugestimmt hat.\n\n**Benötigte Berechtigung:** `marketplace.app.accept`",
        "operationId": "acceptMeAppsUpdate",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AcceptAppUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptAppUpdateResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Nimmt das Update einer App an",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/apps/{appId}/update/decision-request": {
      "post": {
        "description": "Über genau die Fassung, auf die das Update gerade führt. Geht in der Oberfläche und per E-Mail an jeden Inhaber, mit höchstens einem Satz dazu. Sieben Tage lang gilt dieselbe Bitte als offen. Ohne anstehendes Update oder für ein Konto, das selbst entscheiden darf, antwortet die Route mit `OwnerRequest.NotApplicable`.\n\n**Benötigte Berechtigung:** `marketplace.app.request`",
        "operationId": "requestUpdateDecisionMeAppsUpdateDecisionRequest",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestOwnerDecisionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestOwnerDecisionResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Bittet die Inhaber, über ein App-Update zu entscheiden",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/apps/{appId}/update/reject": {
      "post": {
        "description": "Die App bleibt auf ihrer Fassung und arbeitet weiter. Bis eine höhere als die abgelehnte Fassung erscheint, fragt die Plattform nicht wieder. Mit Frist geht Ablehnen nur bis zu ihr. Der Hash nennt die abgelehnte Fassung.\n\n**Benötigte Berechtigung:** `marketplace.app.accept`",
        "operationId": "rejectMeAppsUpdate",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RejectAppUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RejectAppUpdateResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Lehnt das Update einer App ab",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/apps/beta-enrollment": {
      "get": {
        "description": "Für alle Apps oder für einzelne. Eingetragene Organisationen bekommen Fassungen aus beta als Angebot, von selbst übernommen wird weiter nur, was nach stable kommt.",
        "operationId": "getBetaEnrollmentMeAppsBetaEnrollment",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BetaEnrollmentResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Liest, wofür die Organisation in den Kanal beta eingetragen ist",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      },
      "put": {
        "description": "Idempotent. Einzeln eingetragene Apps bleiben eingetragen.\n\n**Benötigte Berechtigung:** `marketplace.app.upgrade`",
        "operationId": "setBetaEnrollmentMeAppsBetaEnrollment",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetBetaEnrollmentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BetaEnrollmentResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Trägt die Organisation für alle Apps in den Kanal beta ein oder aus",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/apps/collections": {
      "get": {
        "description": "Die Sammlungen in ihrer Reihenfolge, nur die für alle und die der Branche der Organisation, je mit den Apps, die die Organisation im Store sieht. Eine Sammlung ohne sichtbare App fehlt.",
        "operationId": "listCollectionsMeAppsCollections",
        "parameters": [
          {
            "in": "query",
            "name": "locale",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListStoreCollectionsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Listet die Sammlungen des Stores",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/apps/store": {
      "get": {
        "description": "Alle Apps, die die Organisation im Store sieht, in der empfohlenen Reihenfolge, mit Filtern samt Zahlen, der Zählung im Kopf („20 Apps · 13 in Ihrem Paket · 7 ab Pro“), dem Update-Band, der Organisation und den Kernfunktionen, die der Store als eigene Kachel zeigt. Keine Installationszahlen und keine Bewertungen. Die Texte der Karten kommen in der Sprache aus `locale` oder `Accept-Language`, wo eine Fassung sie trägt, sonst auf Deutsch.",
        "operationId": "listStoreMeAppsStore",
        "parameters": [
          {
            "in": "query",
            "name": "locale",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListStoreResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Apps des Stores als Karten",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/apps/store/{appId}": {
      "get": {
        "description": "Kopf, Handlungskarte mit der fertig entschiedenen Lage (genau eine Handlung und ihr Grund mit Zahlen) und die fünf Reiter, für die Fassung, die die Organisation bekäme. Die Sprache kommt aus `locale` oder `Accept-Language`. Eine vom Betreiber abgeschaltete App liefert den Eintrag mit diesem Grund.",
        "operationId": "getStoreEntryMeAppsStore",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "locale",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStoreEntryResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Liest den Store-Eintrag einer App",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/apps/updates": {
      "get": {
        "description": "Je installierter App, die auf Zustimmung wartet oder der eine höhere Fassung angeboten wird, die Entscheidung mit Fassung von und nach, Gründen, Neuerungen, Änderungen, Folgen und Frist. Wartende Zustimmungen stehen zuerst. Speist den Hinweis und die Übersicht der installierten Apps.",
        "operationId": "listUpdatesMeAppsUpdates",
        "parameters": [
          {
            "in": "query",
            "name": "locale",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListAppUpdatesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Listet die offenen Entscheidungen über App-Updates",
        "tags": [
          "marketplace"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/billing-profile": {
      "get": {
        "description": "`profile` ist null, solange keines gepflegt ist — der Rechnungslauf verlangt es.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "profileMeBillingProfile",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetBillingProfileResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Rechnungsprofil der Organisation",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      },
      "put": {
        "description": "Auf wen die Rechnung lautet und wohin sie geht — Anlage und Pflege in einem.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "updateProfileMeBillingProfile",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBillingProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBillingProfileResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Rechnungsprofil anlegen oder ändern",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/billing-profile/vat-id/verify": {
      "post": {
        "description": "Fragt die europäische Auskunft zu der Nummer, die am Rechnungsprofil steht, und wartet auf die Antwort — anders als das Speichern des Profils, das die Prüfung nur anstößt. Der Kunde drückt hier bewusst auf einen Knopf, und erst eine BESTÄTIGTE Nummer trägt die Umkehr der Steuerschuld. Eine abgelehnte Nummer ist eine 422 `Billing.VatIdInvalid` am Feld; antwortet die Auskunft nicht, ist es eine 503 `Billing.VatIdCheckUnavailable` mit `Retry-After` — ein bereits bestätigter Stand bleibt dabei erhalten. Höchstens ein Aufruf je Minute und Organisation (429 `RateLimit.Exceeded`).\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "verifyVatIdMeBillingProfileVatIdVerify",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerifyVatIdResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Lässt die eigene USt-IdNr prüfen",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/billing/drafts": {
      "post": {
        "description": "Legt den Entwurf an — oder fügt seine Position dem bereits offenen hinzu (`merged`). Es gibt genau EINEN offenen Entwurf je Organisation; zwei wären zwei Wahrheiten über dieselbe Vertragsmenge. Die Antwort trägt den Entwurf und die frisch gerechnete Vorschau.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "createDraftMeBillingDrafts",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCheckoutDraftRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutDraftResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Kaufweg betreten",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/billing/drafts/{id}": {
      "delete": {
        "description": "Beendet den Durchlauf; die Auswahl ist damit weg und die Kette geschlossen.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "discardDraftMeBillingDrafts",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DiscardCheckoutDraftResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Entwurf verwerfen",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      },
      "get": {
        "description": "Der Stand beim Neuladen der Adresse, mit frisch gerechneter Vorschau. Ein unbekannter, fremder, abgelaufener oder bereits abgeschlossener Entwurf antwortet 404 `Billing.CheckoutDraftNotFound` — die Kennung reist über die Adresszeile und kann erfunden sein.\n\n**Benötigte Berechtigung:** `billing.usage.read`",
        "operationId": "getDraftMeBillingDrafts",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutDraftResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Entwurf lesen",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "Der Stand des verlassenen Schritts — geschrieben bei JEDEM Wechsel, auch auf dem Rückweg. Der Schritt steht im Entwurf und nicht nur in der Adresse; nur so ergibt „Abbruch je Schritt\" über alle fünf Schritte einen Wert.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "updateDraftMeBillingDrafts",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCheckoutDraftRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutDraftResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Entwurf ändern",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/billing/orders": {
      "post": {
        "description": "Der Entwurf wird verbindlich: Paket, Mengen, Wände, Apps, Zyklus, EIN Perioden-Beleg über alles sofort Fällige und der Beleg der Zustimmung — in einer Transaktion. Ein Aufstieg (R1) wird sofort gebucht und der Vertrag auf heute neu verankert; ein Abstieg (R2) wird zum Periodenende vorgemerkt und kostet heute nichts. Der Server löst den Vorschau-Schlüssel ein und rechnet mit dem festgehaltenen Zeitpunkt nach; ein abgelaufener Schlüssel antwortet 409 `Billing.PreviewExpired`, ein bewegter Vertragsstand 409 `Billing.PreviewStale`, jeweils mit frischer Vorschau im Detail. Ein Entwurf, der den heutigen Stand wiederholt, antwortet 409 `Billing.OrderUnchanged`; ein Riegel 409 `Billing.OrderBlocked`; Einmalartikel im Entwurf 400 `Billing.HardwareNotInCheckout`; eine veraltete Zustimmungsliste 422 `Billing.TermsAcceptanceMissing`.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "placeOrderMeBillingOrders",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlaceBillingOrderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaceBillingOrderResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Bestellung aufgeben",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/billing/orders/{id}": {
      "get": {
        "description": "Die Bestätigung nach dem Neuladen und nach der Rückkehr aus der Freigabe der Bank. Bricht das Netz nach dem Absenden ab, fragt die Fläche hier nach: War die Bestellung durchgelaufen, steht sie hier — sonst 404 `Billing.CheckoutDraftNotFound`.\n\n**Benötigte Berechtigung:** `billing.usage.read`",
        "operationId": "getOrderMeBillingOrders",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetBillingOrderResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Bestellung abfragen",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/billing/payment-way": {
      "put": {
        "description": "Setzt die Absicht UND liefert den Vorgang, mit dem das Zahlungsformular in der Seite ein Zahlungsmittel hinterlegt; der Vertrag wechselt, sobald wirklich eines hinterlegt ist. Zurück auf Kauf auf Rechnung geht hier NICHT — diese Richtung stellt allein der Betreiber (403 `Billing.PaymentWayNotSelfService`).\n\n**Benötigte Berechtigung:** `billing.payment-method.manage`",
        "operationId": "paymentWayMeBilling",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetPaymentWayRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetPaymentWayResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Zahlweg wählen",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/billing/pending-changes/withdraw": {
      "post": {
        "description": "Hebt eine zum Periodenende vorgemerkte Änderung wieder auf — je Art: `quantity` räumt die Zielmenge einer Position (mit `skuCode`), `package` räumt vorgemerktes Paket UND Bildschirmzahl, `cycle` die Zyklus-Vormerkung. Kein Geldfluss, kein Ankerumzug, kein Beleg: Der Vertrag läuft danach auf dem Stand, auf dem er heute schon läuft. Auf dem Weg des Zahlungsdienstleisters wird der Abo-Zeitplan dabei freigegeben oder auf die verbleibende Vormerkung umgeschrieben. Eine Vormerkung, die es nicht gibt, ist kein Fehler — die Antwort ist in jedem Fall die frische Vertragssicht. Eine Mengen-Rücknahme ohne `skuCode` (oder ein `skuCode` zu Paket und Zyklus) antwortet 422 `Validation.Failed`.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "withdrawPendingChangeMeBillingPendingChangesWithdraw",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WithdrawPendingChangeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WithdrawPendingChangeResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Vormerkung zurücknehmen",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/billing/preview": {
      "post": {
        "description": "Positionen, Netto, Steuer, Brutto, heute fällig und nächste Rechnung — vom Server gerechnet. Ein LEERER Entwurf ist die nächste Rechnung des Vertrags, wie er heute steht. Liefert die Steuerregel keine Entscheidung (EU-Ausland ohne bestätigte USt-IdNr, Ware über die Grenze), bleibt `tax` null, die Summen tragen keine Steuer, und der Grund steht in `blockers` — die Antwort bleibt 200.\n\n**Benötigte Berechtigung:** `billing.usage.read`",
        "operationId": "previewDraftMeBillingPreview",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingPreviewRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingPreviewResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Vorschau des ganzen Entwurfs",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/billing/setup-intents/{id}": {
      "get": {
        "description": "Der Rückweg des Kunden aus der Freigabe der Bank ist regelmäßig schneller als die Rückmeldung des Dienstleisters. Diese Frage liefert den Zustand sofort und holt bei einem abgeschlossenen Vorgang den Vollzug nach — dieselbe Wirkung, die auch die Rückmeldung auslöst. `processing` und `requires_action` heißen: bestätigt, wartet noch; die Fläche fragt erneut. Ein abgebrochener Vorgang schließt den Durchlauf. Eine unbekannte oder fremde Kennung antwortet 404 `Billing.SetupIntentNotFound`.\n\n**Benötigte Berechtigung:** `billing.payment-method.manage`",
        "operationId": "setupIntentMeBillingSetupIntents",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSetupIntentResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Zahlungsmittel-Hinterlegung abschließen",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/capabilities": {
      "get": {
        "description": "Mengen, Funktionen und Aufbewahrungsfristen mit ihrer Herkunft — und je Eintrag das kleinste Paket, das ihn mitbringt.",
        "operationId": "getMeCapabilities",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMyCapabilitiesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Fähigkeiten der eigenen Organisation",
        "tags": [
          "tenancy"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/connected-accounts": {
      "get": {
        "description": "Verknüpft wird ausschließlich über die Anmeldeseite; diese Route führt nur auf, was daraus entstanden ist.",
        "operationId": "listConnectedMeConnectedAccounts",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListConnectedAccountsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Listet die verknüpften Anmelde-Anbieter",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/connected-accounts/{id}": {
      "delete": {
        "description": "Verweigert wird der letzte Anmeldeweg: nach dem Trennen muss ein Passwort oder eine weitere Verknüpfung bestehen bleiben.",
        "operationId": "disconnectMeConnectedAccounts",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisconnectAccountResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Löst die Verknüpfung zu einem Anmelde-Anbieter",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/connected-apps": {
      "get": {
        "description": "Je Anwendung eine Zeile mit den erteilten Rechten, dem Zeitpunkt der Einwilligung und der letzten Nutzung — gefaltet über alle laufenden Zugänge.",
        "operationId": "listMeConnectedApps",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListConnectedApplicationsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Listet die verbundenen Anwendungen des eigenen Kontos",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/connected-apps/{clientId}": {
      "delete": {
        "description": "Nimmt ALLES zurück, was dieses Konto der Anwendung gegeben hat — nicht nur den jüngsten Zugang. War nichts mehr da, ist das kein Fehler.",
        "operationId": "revokeMeConnectedApps",
        "parameters": [
          {
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RevokeConnectedApplicationResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Widerruft den Zugriff einer verbundenen Anwendung",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/feature-entitlements": {
      "get": {
        "description": "Auflösungs-Stufe und die Schalter für Displays ohne Agent, mehrere Displays je Gerät, Leinwände, Bildschirm-Steuerung und Orte in der Mediathek.\n\n**Benötigte Berechtigung:** `billing.usage.read`",
        "operationId": "overviewMeFeatureEntitlements",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMyFeatureEntitlementsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Vertragliche Fähigkeiten der Organisation",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/hardware-interests": {
      "get": {
        "description": "Modell, Menge, Zustand und Datum der eigenen Vormerkungen, jüngste zuerst. Auch die unbestätigten stehen darin — sonst suchte jemand eine Zeile, die es gibt, und legte eine zweite an.\n\n**Benötigte Berechtigung:** `billing.usage.read`",
        "operationId": "listMeHardwareInterests",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMeHardwareInterestsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Listet die eigenen Vormerkungen",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Legt eine Vormerkung mit den Stammdaten der angemeldeten Organisation an — Firma und Adresse kommen aus dem Rechnungsprofil und werden nicht eingegeben. Anders als im Schaufenster ist keine Bestätigung per E-Mail nötig: Die Adresse ist nachgewiesen, und der Aufruf kommt aus einer Sitzung.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "createMeHardwareInterests",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMeHardwareInterestRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateMeHardwareInterestResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Merkt einen angekündigten Player für die eigene Organisation vor",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/hardware-orders": {
      "get": {
        "description": "Nummer, Datum, Zustand, Summen und Positionen der eigenen Bestellungen, jüngste zuerst. Kontakt und Lieferanschrift stehen NICHT darin — der Besteller hat sie selbst eingetragen und findet sie in seiner Bestätigung. Gelesen mit dem Rechnungs-Lese-Recht: Es ist dieselbe Preisgabe-Stufe wie eine Belegliste (Nummer, Datum, Betrag).\n\n**Benötigte Berechtigung:** `billing.invoice.read`",
        "operationId": "ordersMeHardwareOrders",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMeHardwareOrdersResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Listet die eigenen Player-Bestellungen",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Nimmt eine Hardware-Bestellung für die angemeldete Organisation auf — derselbe Vorgang wie im Shop, mit eigener Bestellnummer und Bestätigung per E-Mail. Kontakt und Lieferanschrift kommen aus dem Rechnungsprofil; wer woandershin liefern lässt, schickt Empfänger und Anschrift mit. Keine Zahlung online: verkauft wird auf Rechnung, und die Bestellung erzeugt keine Vertragsposition.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "orderMeHardwareOrders",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMeHardwareOrderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateMeHardwareOrderResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Player bestellen",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/invoices": {
      "get": {
        "description": "Ohne `status` kommt alles, jüngste zuerst. Mit `status` genau der Ausschnitt, dessen Zahl `…/counts` unter demselben Namen nennt — der Schnitt liegt am Server, weil ein Filter über die geladene Seite bei geblätterten Listen die falsche Menge zeigt.\n\n**Benötigte Berechtigung:** `billing.invoice.read`",
        "operationId": "listMeInvoices",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "open",
                "overdue",
                "paid",
                "creditNotes",
                "dunned",
                "voided"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListInvoicesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Listet die Rechnungen der eigenen Organisation",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/invoices/{id}": {
      "get": {
        "description": "Das Detail trägt die Einzelpositionen und damit dieselbe Preisgabe-Stufe wie der Beleg — es steht deshalb hinter dem Beleg-Recht, nicht hinter dem Listen-Recht. Fremde Rechnungen sind ein 404.\n\n**Benötigte Berechtigung:** `billing.invoice.download`",
        "operationId": "detailMeInvoices",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInvoiceResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Liest eine Rechnung der eigenen Organisation mit ihren Positionen",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/invoices/{id}/dunning/{level}/pdf": {
      "get": {
        "description": "Das Schreiben wird nicht neu gesetzt, sondern aus der Ablage gereicht — ein Beleg, der sich beim zweiten Abruf ändert, ist keiner. Stufen ohne Schreiben melden sich als 404.\n\n**Benötigte Berechtigung:** `billing.invoice.download`",
        "operationId": "dunningPdfDownloadMeInvoicesDunningPdf",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "level",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDunningNoticePdfResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Liefert den Abrufweg zu einem Mahnschreiben",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/invoices/{id}/pdf": {
      "get": {
        "description": "Die Antwort nennt eine kurzlebige Abrufadresse; der Beleg selbst wird nicht über diese Schnittstelle ausgeliefert. Wer die Adresse hat, erreicht den Beleg ohne weitere Anmeldung.\n\n**Benötigte Berechtigung:** `billing.invoice.download`",
        "operationId": "pdfMeInvoices",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInvoicePdfResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Liefert den Abrufweg zum Rechnungsbeleg",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/invoices/{id}/xml": {
      "get": {
        "description": "Die maschinell auswertbare Fassung derselben Rechnung (EN 16931, CII-Syntax). Rechnungen ohne erzeugte E-Rechnung melden sich als 404. Dieselbe Preisgabe-Stufe wie der Beleg — sie trägt dieselben Angaben.\n\n**Benötigte Berechtigung:** `billing.invoice.download`",
        "operationId": "xmlMeInvoices",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInvoiceXmlResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Liefert den Abrufweg zur E-Rechnung",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/invoices/counts": {
      "get": {
        "description": "Serverseitig gerechnet und nicht aus der geladenen Seite gezählt: Die Liste ist geblättert, und eine Zahl aus der ersten Seite wäre die Zahl der ersten Seite. Gutschriften zählen getrennt — sie sind keine Forderung.\n\n**Benötigte Berechtigung:** `billing.invoice.read`",
        "operationId": "invoiceCountsMeInvoicesCounts",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInvoiceCountsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Zählt die Belege je Anzeigestatus",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/licensing": {
      "get": {
        "description": "Gebucht/belegt/frei, die Preisstaffel für die Live-Vorschau, Zusatzbausteine und der Vertragsrahmen.\n\n**Benötigte Berechtigung:** `billing.usage.read`",
        "operationId": "overviewMeLicensing",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLicensingOverviewResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Lizenzlage der Organisation",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/licensing/apps/{appId}": {
      "delete": {
        "description": "Eine Vormerkung zum Periodenende (R2): Die App bleibt bis zum Ende der bezahlten Periode nutzbar, heute fließt kein Geld, und der Periodenbeginn räumt die Position ab. Ohne gebuchte Position geschieht nichts.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "cancelAppMeLicensingApps",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CancelAppResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Gebuchte App kündigen",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Eine Bestellung über den Kaufweg-Planer: Die Position entsteht sofort (R1) — der Install lässt im nächsten Klick durch. Eine abbestellte App wieder zu buchen räumt ihre Vormerkung ab; eine App, die schon gebucht ist, ändert nichts und wird mit 409 (Billing.OrderUnchanged) abgewiesen.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "bookAppMeLicensingApps",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookAppResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Bepreiste App buchen",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/licensing/apps/{appId}/preview": {
      "get": {
        "description": "Die vier Fakten des Bestätigungsdialogs, vom Server gerechnet: Monatspreis, anteiliger Betrag bis zum Periodenende, Periodenende als Beginn des vollen Betrags.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "appBookingPreviewMeLicensingAppsPreview",
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAppBookingPreviewResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Vorschau der App-Buchung",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/licensing/billing-cycle": {
      "put": {
        "description": "Auf jährlich wirkt sofort: Der Vertrag verankert heute neu, das Restguthaben der laufenden Periode steht als Gutschriftzeile auf dem Perioden-Beleg, und stehende haltbare Vormerkungen werden damit wirksam. Zurück auf monatlich wird zum Ende der laufenden Periode vorgemerkt — kein Geldfluss, kein Ankerumzug, keine anteilige Rückerstattung. Denselben Zyklus erneut zu wählen nimmt eine stehende Vormerkung zurück; steht keine, ist die Wahl die Wiederholung des geltenden Zyklus und wird mit 409 (Billing.OrderUnchanged) abgewiesen. In der Testphase ist der Weg zu: Jeder Wunsch wird mit einem Konflikt (409, Billing.OrderBlocked mit dem Grund `trial`) abgewiesen — in der Testphase über den Kaufweg bestellen, der beendet die Testphase.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "changeBillingCycleMeLicensingBillingCycle",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeBillingCycleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChangeBillingCycleResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Abrechnungszyklus wechseln",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/licensing/billing-cycle/preview": {
      "get": {
        "description": "Regel, Wirktag und Zahlen des Wechsels, gerechnet vom Entwurfs-Planer des Kaufwegs: der Periodenpreis des Zielstands, das Restguthaben der laufenden Periode, der heute fällige Betrag und ein etwaiger Guthaben-Überhang. Dazu der Zielstand — der Wechsel auf jährliche Zahlung wirkt sofort und macht jede stehende haltbare Vormerkung mit wirksam.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "billingCyclePreviewMeLicensingBillingCyclePreview",
        "parameters": [
          {
            "in": "query",
            "name": "target",
            "required": true,
            "schema": {
              "enum": [
                "monthly",
                "yearly"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetBillingCyclePreviewResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Vorschau des Zykluswechsels",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/licensing/displays/preview": {
      "get": {
        "description": "Regel, Wirktag, Zielstand und Beträge der Mengenänderung, gerechnet vom Entwurfs-Planer des Kaufwegs — dieselbe Rechnung, die die Buchung danach schreibt. `dueToday` ist unter R1 der Periodenpreis des Zielstands abzüglich Restguthaben, unter R2 null; `nextPeriodTotalCents` der volle wiederkehrende Betrag mit der neuen Menge. `minDisplays` ist das Minimum des Zielstand-Pakets: Eine Buchung unter dieser Zahl antwortet mit Billing.BelowPackageMinimum (die Vorschau selbst weist nicht ab, sie zeigt den auf das Minimum gehobenen Stand).\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "displaysPreviewMeLicensingDisplaysPreview",
        "parameters": [
          {
            "in": "query",
            "name": "count",
            "required": true,
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLicenseQuantityPreviewResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Vorschau einer Bildschirm-Mengenänderung",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/licensing/hardware": {
      "get": {
        "description": "Modelle, Preis je Stück (netto und brutto) und ob sie bestellbar sind. Ein Modell, das noch nicht lieferbar ist, steht mit `available: false` dabei — dieselbe Aussage wie auf der Preisseite.\n\n**Benötigte Berechtigung:** `billing.usage.read`",
        "operationId": "offersMeLicensingHardware",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListHardwareOffersResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Bestellbare Player",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/licensing/licenses": {
      "put": {
        "description": "Eine Bestellung über den Kaufweg-Planer: Erhöhen wirkt sofort (R1) — der Vertrag verankert heute neu, die neue Periode wird voll berechnet und der unverbrauchte Rest der alten gutgeschrieben. Reduzieren wirkt zum Periodenende (R2) und steht bis dahin als Vormerkung; heute fließt kein Geld. Eine Menge unter dem Minimum des Pakets, unter dem die Bildschirme nach dieser Bestellung stehen, wird mit Billing.BelowPackageMinimum abgewiesen (Premium: 5); der Weg dorthin ist der Paketwechsel. Gemessen wird am Paket des Zielstands: am bestellten, sonst — die Bestellung fasst die Paket-Position an — am geltenden, sonst am vorgemerkten. Eine stehende Paket-Vormerkung überlebt eine Mengenänderung also NICHT: Paket und Bildschirmzahl sind ein Paar, und wer die Zahl ändert, ersetzt es. Dieselbe Menge erneut zu senden ändert nichts und wird mit 409 (Billing.OrderUnchanged) abgewiesen.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "updateLicensesMeLicensingLicenses",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLicenseCountRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateLicenseCountResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Lizenzzahl ändern",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/licensing/package": {
      "put": {
        "description": "Eine Bestellung über den Kaufweg-Planer: Ein Aufstieg (R1) wirkt sofort — die neue Periode wird voll berechnet und der Rest der alten gutgeschrieben; ein Abstieg (R2) steht als Vormerkung am Vertrag und wirkt zum Periodenende. Das laufende Paket erneut zu wählen ändert nichts und wird mit 409 (Billing.OrderUnchanged) abgewiesen — eine Vormerkung nimmt der eigene Rücknahme-Weg zurück.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "changePackageToMeLicensingPackage",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangePackageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChangePackageResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Paket wechseln",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/licensing/packages/{code}/impact": {
      "get": {
        "description": "Was der Wechsel bewirkt: Apps, die nicht mehr wirken, Szenen, die dadurch ausfallen, Plätze über dem Deckel und Funktionen, die das Zielpaket schlechter zusagt. Ein Aufstieg antwortet leer.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "packageImpactMeLicensingPackagesImpact",
        "parameters": [
          {
            "in": "path",
            "name": "code",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPackageChangeImpactResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Folgen eines Paketwechsels",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/licensing/packages/{code}/preview": {
      "get": {
        "description": "Was der Wechsel kostet und wann er wirkt — Aufstieg sofort mit anteiligem Betrag, Abstieg zum Periodenende. Nennt auch, was ihn verhindert.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "packagePreviewMeLicensingPackagesPreview",
        "parameters": [
          {
            "in": "path",
            "name": "code",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPackageChangePreviewResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Vorschau eines Paketwechsels",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/licensing/video-walls": {
      "put": {
        "description": "Eine Bestellung über den Kaufweg-Planer: Erhöhen wirkt sofort (R1), die nächste Leinwand lässt sich im nächsten Klick bauen. Kürzen wirkt zum Periodenende (R2) und nie unter die STEHENDEN Leinwände. 0 merkt die Kündigung der Position zum Periodenende vor.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "updateVideoWallsMeLicensingVideoWalls",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateVideoWallCountRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateVideoWallCountResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Wand-Lizenzen ändern",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/licensing/video-walls/preview": {
      "get": {
        "description": "Dieselbe Rechnung wie bei den Bildschirmen, nur an der Wand-Position: heute anteilig, ab nächster Periode voll. Eine Wand ist eine Mengenänderung wie jede andere. `minDisplays` trägt auch hier das BILDSCHIRM-Minimum des Zielstand-Pakets und ist keine Untergrenze der Wandzahl — Wände haben kein Minimum.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "videoWallsPreviewMeLicensingVideoWallsPreview",
        "parameters": [
          {
            "in": "query",
            "name": "count",
            "required": true,
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLicenseQuantityPreviewResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Vorschau einer Wand-Mengenänderung",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/mfa/disable": {
      "post": {
        "description": "Als Nachweis genügt ein TOTP-Code oder ein noch unbenutzter Wiederherstellungscode.",
        "operationId": "disableMfaMeMfaDisable",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DisableUserMfaRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisableUserMfaResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Deaktiviert MFA für das eigene Konto",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/mfa/enable": {
      "post": {
        "description": "Erzeugt das Geheimnis samt QR-Code. Aktiv wird MFA erst mit der anschließenden Bestätigung durch einen gültigen Code.",
        "operationId": "enableMfaMeMfaEnable",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EnableUserMfaRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnableUserMfaResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Startet die Einrichtung von MFA",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/mfa/recovery-codes": {
      "post": {
        "description": "Die bisherigen Codes verfallen dabei sämtlich; die neuen werden nur in dieser Antwort im Klartext ausgegeben.",
        "operationId": "regenerateRecoveryCodesMeMfaRecoveryCodes",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegenerateUserRecoveryCodesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegenerateUserRecoveryCodesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Erneuert die eigenen Wiederherstellungscodes",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/mfa/verify": {
      "post": {
        "description": "Der erste gültige TOTP-Code schaltet MFA scharf; im Gegenzug entstehen die einmalig sichtbaren Wiederherstellungscodes.",
        "operationId": "confirmMfaMeMfaVerify",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfirmUserMfaRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfirmUserMfaResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Bestätigt die MFA-Einrichtung",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/notification-preferences": {
      "get": {
        "description": "Nur die Arten, die dieses Konto nach den Empfänger-Regeln erreichen können, jede mit dem Grund (`reason`). Dazu der geltende Takt der Zusammenfassung und die geltenden Ruhezeiten.",
        "operationId": "getMeNotificationPreferences",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMyPreferencesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Liest die eigenen Benachrichtigungs-Einstellungen",
        "tags": [
          "notifications"
        ],
        "x-stability": "stable"
      },
      "put": {
        "description": "Betrifft nur die genannten Arten, den Takt (`digestCadence`) und die Ruhezeiten (`quietHours`), soweit angegeben; alles Übrige bleibt unverändert. Gesperrte und nicht verfügbare Kanäle setzt der Server auf ihren geltenden Wert zurück — die Antwort zeigt, was gilt. „Diese Art stummschalten“ ist `{ updates: [{ kind, channels: { inApp: false, email } }] }`. Bei der ersten Änderung entstehen die Einstellungen automatisch.",
        "operationId": "updateMeNotificationPreferences",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePreferencesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatePreferencesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Setzt Kanäle, Takt der Zusammenfassung und Ruhezeiten",
        "tags": [
          "notifications"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/notifications": {
      "get": {
        "operationId": "listMeNotifications",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "state",
            "required": false,
            "schema": {
              "enum": [
                "inbox",
                "done"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "unread",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "kinds",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "invitation.accepted",
                  "invitation.expired",
                  "join-request.received",
                  "security.theft-detected",
                  "security.impersonation-started",
                  "security.password-changed",
                  "security.mfa-disabled",
                  "security.sso-changed",
                  "security.api-key-created",
                  "security.custom-domain-removed",
                  "identity.role-changed",
                  "billing.invoice-paid",
                  "billing.invoice-issued",
                  "billing.payment-failed",
                  "billing.past-due",
                  "billing.trial-ending",
                  "billing.frozen",
                  "billing.unfrozen",
                  "billing.vat-id-invalid",
                  "billing.license-conflict",
                  "billing.override-ending",
                  "billing.change-failed",
                  "billing.cancel-scheduled",
                  "analytics.report-failed",
                  "analytics.report-ready",
                  "audit.export-ready",
                  "media.processing-failed",
                  "composition.integrity-issue",
                  "fleet.player-offline",
                  "fleet.command-failed",
                  "identity.device-reregistration-requested",
                  "integrations.cloud-connection-broken",
                  "integrations.webhook-disabled",
                  "marketplace.pending-reacceptance",
                  "app-catalog.release-retired",
                  "marketplace.release-switched",
                  "marketplace.install-requested",
                  "marketplace.update-decision-requested",
                  "marketplace.app-installed",
                  "marketplace.update-declined",
                  "marketplace.data-deletion-scheduled",
                  "tenancy.suspended",
                  "tenancy.deletion-warning",
                  "tenancy.reactivated",
                  "tenancy.custom-domain-verified",
                  "tenancy.sso-break-glass-used",
                  "ops.maintenance",
                  "ops.maintenance-canceled",
                  "ops.incident",
                  "ops.incident-resolved",
                  "ops.broadcast"
                ],
                "type": "string"
              },
              "type": "array"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMyNotificationsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Listet die eigenen Benachrichtigungen",
        "tags": [
          "notifications"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/notifications/{id}/dismiss": {
      "post": {
        "description": "Gilt zugleich als gelesen und verschiebt die Benachrichtigung aus dem Eingang nach „Erledigt“ (`GET …?state=done`). Rückgängig über `POST …/:id/restore`.",
        "operationId": "dismissOneMeNotificationsDismiss",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DismissNotificationResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Erledigt eine Benachrichtigung",
        "tags": [
          "notifications"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/notifications/{id}/read": {
      "post": {
        "operationId": "readMeNotifications",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarkAsReadResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Markiert eine Benachrichtigung als gelesen",
        "tags": [
          "notifications"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/notifications/{id}/restore": {
      "post": {
        "description": "Die Benachrichtigung steht wieder im Eingang, gelesen. Das Rückgängig nach dem Erledigen.",
        "operationId": "restoreOneMeNotificationsRestore",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestoreNotificationResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Holt eine erledigte Benachrichtigung zurück",
        "tags": [
          "notifications"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/notifications/bulk": {
      "post": {
        "description": "Als gelesen markieren (read), erledigen (dismiss) oder zurückholen (restore). Fremde oder unbekannte Kennungen fallen still heraus; die Antwort nennt, wie viele Zeilen sich geändert haben.",
        "operationId": "bulkMeNotifications",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkUpdateNotificationsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkUpdateNotificationsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Ändert mehrere eigene Benachrichtigungen in einem Zug",
        "tags": [
          "notifications"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/notifications/read-all": {
      "post": {
        "description": "Die Antwort nennt die Anzahl der betroffenen Benachrichtigungen.",
        "operationId": "readAllMeNotifications",
        "parameters": [],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarkAllReadResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Markiert alle eigenen Benachrichtigungen als gelesen",
        "tags": [
          "notifications"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/notifications/summary": {
      "get": {
        "description": "Eingang (nicht erledigt) und Erledigt, jeweils gesamt und ungelesen, dazu je Bereich die Zeilen im Eingang. Gerechnet aus einer gruppierten Abfrage, nicht aus einer geladenen Seite.",
        "operationId": "summaryMeNotifications",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationSummaryResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Zählt die eigenen Benachrichtigungen je Ordner und Bereich",
        "tags": [
          "notifications"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/notifications/unread-count": {
      "get": {
        "description": "Gezählt wird, was im Eingang sichtbar ist: weder gelesen noch verworfen. Die Zahl trägt die Glocke und den Navigations-Eintrag.",
        "operationId": "unreadCountMeNotifications",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnreadCountResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Zählt die eigenen ungelesenen Benachrichtigungen",
        "tags": [
          "notifications"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/password": {
      "post": {
        "description": "Das aktuelle Passwort dient als Zweitnachweis und ist mitzusenden.",
        "operationId": "changePasswordMePassword",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeUserPasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChangeUserPasswordResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Ändert das eigene Passwort",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/payment-methods": {
      "get": {
        "description": "Ausgegeben werden nur Art, letzte Stellen und Ablauf; vollständige Kartendaten liegen ausschließlich beim Zahlungsdienstleister.\n\n**Benötigte Berechtigung:** `billing.payment-method.read`",
        "operationId": "listMePaymentMethods",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPaymentMethodsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Listet die Zahlungsmittel der eigenen Organisation",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Erwartet die beim Zahlungsdienstleister erzeugte Kennung, nicht die Kartendaten selbst. Ohne abweichende Angabe wird das Zahlungsmittel zum Standard.\n\n**Benötigte Berechtigung:** `billing.payment-method.manage`",
        "operationId": "attachMePaymentMethods",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttachPaymentMethodRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttachPaymentMethodResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Hinterlegt ein Zahlungsmittel",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/payment-methods/{stripePaymentMethodId}": {
      "delete": {
        "description": "Das LETZTE Zahlungsmittel eines laufenden Vertrags, der eingezogen wird, bleibt (409 `Billing.PaymentMethodRemovalBlocked`): Erst ein neues hinterlegen, dann das alte entfernen. Im Probezeitraum ist das Entfernen erlaubt.\n\n**Benötigte Berechtigung:** `billing.payment-method.manage`",
        "operationId": "removeMePaymentMethods",
        "parameters": [
          {
            "in": "path",
            "name": "stripePaymentMethodId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Entfernt ein hinterlegtes Zahlungsmittel",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/payment-methods/{stripePaymentMethodId}/default": {
      "put": {
        "description": "Getrennt vom Hinterlegen, weil es ein eigener Vorgang ist: Wer eine zweite Karte hinzufügt, will sie nicht zwangsläufig zur Standardkarte machen — und wer die Standardkarte wechselt, legt dafür keine neue an. Eine Kennung, die dieser Organisation nicht gehört, antwortet 404.\n\n**Benötigte Berechtigung:** `billing.payment-method.manage`",
        "operationId": "setDefaultMePaymentMethodsDefault",
        "parameters": [
          {
            "in": "path",
            "name": "stripePaymentMethodId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetDefaultPaymentMethodResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Bestimmt das Zahlungsmittel des Einzugs",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/permissions": {
      "get": {
        "description": "Liefert das rohe Berechtigungs-Set aus Rollen und Grants, wie es der Server für seine eigenen Prüfungen auswertet.",
        "operationId": "getMyPermissionsMePermissions",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEffectivePermissionsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest die effektiven Berechtigungen des Aufrufers",
        "tags": [
          "access"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/permissions/profile": {
      "get": {
        "description": "Gibt die ungefalteten Bestandteile aus Aktor, Rollen, Grants und Katalog zurück, damit die Oberfläche ressourcenbezogene Prüfungen serverkonform nachrechnen kann.",
        "operationId": "getMyAccessProfileMePermissionsProfile",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMyAccessProfileResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Liest das Zugriffsprofil des Aufrufers",
        "tags": [
          "access"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/sessions": {
      "get": {
        "description": "Die Zeile der aufrufenden Sitzung ist markiert. Maschinen-Zugänge haben keine solche Zeile.",
        "operationId": "listMeSessions",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMySessionsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Listet die eigenen Sitzungen",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/sessions/{id}": {
      "delete": {
        "description": "Fremde Sitzungen sind nicht erreichbar: unbekannte Kennungen antworten mit einem Nicht-gefunden.",
        "operationId": "revokeMeSessions",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogoutResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Beendet eine eigene Sitzung",
        "tags": [
          "sessions"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/set-password": {
      "post": {
        "description": "Gedacht für Konten, die bisher ohne Passwort auskamen, etwa nach Anmeldung per Magic-Link oder über einen fremden Anbieter. Bestehende Passwörter werden hier nicht überschrieben.",
        "operationId": "setPasswordMe",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetUserPasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetUserPasswordResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Setzt erstmals ein eigenes Passwort",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/setup-wizard": {
      "get": {
        "description": "Die Schritte werden im Regelfall selbsttätig als erledigt vermerkt, sobald die zugehörige Arbeit getan ist.",
        "operationId": "getMeSetupWizard",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSetupWizardResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Liest den Stand der Einrichtungs-Schritte",
        "tags": [
          "onboarding"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/setup-wizard/skip": {
      "post": {
        "description": "Der einzige Schritt, der sich von Hand fortschreiben lässt.\n\n**Benötigte Berechtigung:** `tenant.setup-wizard.skip`",
        "operationId": "skipMeSetupWizard",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SkipSetupStepRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkipSetupStepResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Überspringt einen Einrichtungs-Schritt",
        "tags": [
          "onboarding"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/subscription": {
      "get": {
        "description": "**Benötigte Berechtigung:** `billing.subscription.read`",
        "operationId": "getMeSubscription",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSubscriptionResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Liest das Abonnement der eigenen Organisation",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/subscription/cancel": {
      "post": {
        "description": "Standardmäßig zum Ende der laufenden Periode und damit rücknehmbar; auf Wunsch sofort und dann endgültig.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "cancelMeSubscription",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelSubscriptionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CancelSubscriptionResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Kündigt das Abonnement",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/subscription/reactivate": {
      "post": {
        "description": "Greift nur bei einer noch nicht wirksamen Kündigung zum Periodenende.\n\n**Benötigte Berechtigung:** `billing.subscription.update`",
        "operationId": "reactivateMeSubscription",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReactivateSubscriptionResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Nimmt eine Kündigung zurück",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/me/ui-state": {
      "get": {
        "description": "Welche Hinweise dieses Konto vorerst nicht mehr sehen möchte. Abgelaufene Merker fehlen bereits.",
        "operationId": "getUiStateMeUiState",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMyUiStateResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Liest die eigenen Oberflächen-Merker",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "Nur die genannten Schlüssel ändern sich; ein null-Wert holt den Hinweis zurück.",
        "operationId": "updateUiStateMeUiState",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMyUiStateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateMyUiStateResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Setzt oder löscht eigene Oberflächen-Merker",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/oauth/authorizations/{id}": {
      "get": {
        "description": "Was die Einwilligungsseite zeigt: Anwendung, Rücksprung-Ziel, Organisation und die erbetenen Rechte samt Beurteilung, ob sie erteilbar sind.",
        "operationId": "getOauthAuthorizations",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAuthorizationRequestResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Liest eine offene Autorisierungs-Anfrage",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/oauth/authorizations/{id}/approve": {
      "post": {
        "description": "Erteilt der Anwendung die bestätigten Rechte im Namen der Organisation, in der das Konto gerade angemeldet ist. Ein Recht außerhalb der eigenen wird abgewiesen und nicht stillschweigend gekürzt.",
        "operationId": "approveRequestOauthAuthorizationsApprove",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApproveAuthorizationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApproveAuthorizationResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Willigt in eine Autorisierungs-Anfrage ein",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/oauth/authorizations/{id}/deny": {
      "post": {
        "description": "Beendet den Rundlauf ohne Zugang. Der Client erfährt die Ablehnung an seiner eigenen Adresse, damit der Mensch in seiner Anwendung landet.",
        "operationId": "denyRequestOauthAuthorizationsDeny",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DenyAuthorizationResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          }
        ],
        "summary": "Lehnt eine Autorisierungs-Anfrage ab",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/pairings/claim": {
      "post": {
        "description": "Akzeptiert auch einen Code, der innerhalb der letzten fünf Minuten rotiert ist, und prüft das Player-Kontingent. Lösen zwei Aufrufe denselben Code gleichzeitig ein, gewinnt genau einer.\n\n**Benötigte Berechtigung:** `fleet.player.pair`",
        "operationId": "claimPairings",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClaimPairingCodeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClaimPairingCodeResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löst einen Kopplungscode ein und legt den Player an",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/permission-catalog": {
      "get": {
        "description": "Betreiber erhalten den globalen Katalog, Mitglieder einer Organisation deren Sicht darauf.",
        "operationId": "getCatalogPermissionCatalog",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPermissionCatalogResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest den Katalog aller Berechtigungen",
        "tags": [
          "access"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/player-tags": {
      "get": {
        "description": "**Benötigte Berechtigung:** `fleet.player.list`",
        "operationId": "listPlayerTags",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPlayerTagsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Player-Tags des Mandanten",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "**Benötigte Berechtigung:** `fleet.player.tag.manage`",
        "operationId": "createPlayerTags",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePlayerTagRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatePlayerTagResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt einen Player-Tag an",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/player-tags/{id}": {
      "delete": {
        "description": "Entfernt den Tag zugleich von allen Playern. Zeitplan-Bindungen auf diesen Tag räumt die Terminplanung nachgelagert auf.\n\n**Benötigte Berechtigung:** `fleet.player.tag.manage`",
        "operationId": "removePlayerTags",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeletePlayerTagResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löscht einen Player-Tag",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "**Benötigte Berechtigung:** `fleet.player.tag.manage`",
        "operationId": "updatePlayerTags",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePlayerTagRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatePlayerTagResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Ändert Name oder Farbe eines Player-Tags",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/players": {
      "get": {
        "description": "**Benötigte Berechtigung:** `fleet.player.list`",
        "operationId": "listPlayers",
        "parameters": [
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "online",
                "stale",
                "offline",
                "paired-not-claimed",
                "suspended",
                "decommissioned"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "tagIds",
            "required": false,
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "in": "query",
            "name": "locationId",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "program",
            "required": false,
            "schema": {
              "enum": [
                "assigned",
                "none"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "offlineSince",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPlayersResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Player der Flotte gefiltert und seitenweise",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Der Nachzügler-Weg für den zweiten Bildschirm: Ein Gerät meldet seine Anschlüsse erst, wenn es gekoppelt ist und läuft — der zweite wird also erst danach sichtbar. Angelegt wird nichts von selbst, denn jedes Display belegt eine weitere Lizenz. Setzt die vertragliche Fähigkeit für mehrere Displays je Gerät voraus und verlangt, dass das Gerät an der angegebenen Stelle einen belegten Ausgang gemeldet hat.\n\n**Benötigte Berechtigung:** `fleet.player.pair`",
        "operationId": "addPlayers",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddDeviceDisplayRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddDeviceDisplayResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt ein weiteres Display an einem bereits gekoppelten Gerät an",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/players/{id}": {
      "delete": {
        "description": "Der Platz wird frei, und alles, was diesem Display gehört, wird aufgelöst: Programm und Übersteuerung, Leinwand-Platz, Rechte-Zuschnitte, Wiedergabe-Stand und Bildschirmfoto. Hängt am Gerät noch ein weiteres Display, bleibt das Gerät unangetastet. War es das letzte, entscheidet `device`, was mit dem Gerät geschieht: `reconnect` (Vorgabe) koppelt es neu, `remove` entfernt es aus der Organisation, `keep` lässt es ohne Display gekoppelt — nur mit der Fähigkeit mehrerer Displays je Gerät, sonst `422 Player.KeepDeviceNotAllowed`. `deviceReleased` sagt, ob das Gerät die Organisation verlassen hat.\n\n**Benötigte Berechtigung:** `fleet.player.delete`",
        "operationId": "removePlayers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "device",
            "required": false,
            "schema": {
              "enum": [
                "reconnect",
                "remove",
                "keep"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeletePlayerResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Entfernt ein Display",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      },
      "get": {
        "description": "**Benötigte Berechtigung:** `fleet.player.read`",
        "operationId": "getPlayers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPlayerResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "ETag": {
                "description": "Die Fassung der Ressource in Anführungszeichen. Genau dieser Wert gehört bei der nächsten Änderung in die `If-Match`-Kopfzeile.",
                "example": "\"7\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest einen einzelnen Player samt Konfiguration",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "Der If-Match-Header trägt die erwartete Version. Die Prüfung wiederholt sich beim Schreiben, damit gleichzeitige Änderungen nicht verloren gehen.\n\n**Benötigte Berechtigung:** `fleet.player.update`",
        "operationId": "updatePlayers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Die Fassung der Ressource, gegen die geschrieben wird — als Kennzeichen in Anführungszeichen (`\"7\"`) wie in der `ETag`-Kopfzeile der Lese-Antwort, oder als nackte Zahl (`7`). Weicht sie von der gespeicherten ab, antwortet die Route mit `Conflict.OptimisticLock` (409). Die Route weist eine fehlende Kopfzeile nicht ab, schreibt ohne sie aber auch nicht ungeprüft: Sie rechnet dann mit einer Fassung, die keine bestehende trifft, und antwortet mit demselben Konflikt.",
            "example": "\"7\"",
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePlayerRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatePlayerResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "ETag": {
                "description": "Die Fassung der Ressource in Anführungszeichen. Genau dieser Wert gehört bei der nächsten Änderung in die `If-Match`-Kopfzeile.",
                "example": "\"7\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Ändert Stammdaten und Konfiguration eines Players",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/players/{id}/commands": {
      "delete": {
        "description": "Entfernt abgeschlossene Befehle (erledigt, fehlgeschlagen, Zeitüberschreitung). Ein noch laufender Befehl bleibt stehen, damit sein Ergebnis nicht ins Leere läuft; die Antwort nennt deren Zahl.\n\n**Benötigte Berechtigung:** `fleet.player.command.issue`",
        "operationId": "clearPlayersCommands",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClearCommandHistoryResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Leert die Befehlsliste eines Players",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      },
      "get": {
        "description": "**Benötigte Berechtigung:** `fleet.player.read`",
        "operationId": "listPlayersCommands",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "pending",
                "dispatched",
                "ack-received",
                "completed",
                "failed",
                "timeout"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListCommandsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Befehle eines Players",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Prüft die Nutzlast, legt den Befehl als wartend ab und stößt den Push an das Gerät an. Ausgeführt wird der Befehl vom Gerät; das Ergebnis erscheint später am Befehl.\n\n**Benötigte Berechtigung:** `fleet.player.command.issue`",
        "operationId": "issuePlayersCommands",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IssueCommandRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssueCommandResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Beauftragt einen Diagnose-Befehl an einen Player",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/players/{id}/commands/{cid}": {
      "get": {
        "description": "**Benötigte Berechtigung:** `fleet.player.read`",
        "operationId": "getPlayersCommands",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "cid",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCommandResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest einen einzelnen Befehl samt Ergebnis",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/players/{id}/commands/{cid}/output": {
      "get": {
        "description": "Die URL zeigt auf die abgelegte Ausgabe des Befehls, allen voran das Bildschirmfoto, und ist fünf Minuten gültig. Befehle ohne abgelegte Ausgabe antworten mit 404.\n\n**Benötigte Berechtigung:** `fleet.player.read`",
        "operationId": "outputPlayersCommands",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "cid",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCommandOutputUrlResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Stellt eine Download-URL auf das Befehlsergebnis aus",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/players/{id}/events": {
      "get": {
        "description": "Die vom Gerät gemeldeten Ereignisse, neueste zuerst. `minSeverity` schliesst alles Schwerere ein — die Frage im Betrieb lautet „was ist mindestens schiefgegangen\".\n\n**Benötigte Berechtigung:** `fleet.player.read`",
        "operationId": "listPlayersEvents",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "categories",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "playback",
                  "content",
                  "connection",
                  "system",
                  "update",
                  "command",
                  "service"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "in": "query",
            "name": "minSeverity",
            "required": false,
            "schema": {
              "enum": [
                "info",
                "warning",
                "error"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPlayerEventsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet das Betriebsprotokoll eines Players",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/players/{id}/geo-location": {
      "delete": {
        "description": "Ab der nächsten Meldung des Geräts bestimmt sich die Lage wieder selbst.\n\n**Benötigte Berechtigung:** `fleet.player.update`",
        "operationId": "deleteGeoLocationPlayersGeoLocation",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClearPlayerGeoLocationResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Nimmt die von Hand gesetzte Lage zurück",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      },
      "put": {
        "description": "Die Ortung über die Funkumgebung trifft auf einige Dutzend Meter; in einer Ladenzeile oder einem Gebäude mit mehreren Eingängen reicht das nicht immer. Eine hier gesetzte Lage gilt als richtig — die automatische Bestimmung lässt diesen Player danach in Ruhe, bis die Korrektur zurückgenommen wird.\n\n**Benötigte Berechtigung:** `fleet.player.update`",
        "operationId": "putGeoLocationPlayersGeoLocation",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetPlayerGeoLocationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetPlayerGeoLocationResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Setzt die Lage eines Players von Hand",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/players/{id}/override": {
      "delete": {
        "description": "Das Gerät fällt sofort auf sein reguläres Programm zurück; die Antwort nennt es, damit die Oberfläche nicht nachladen muss.\n\n**Benötigte Berechtigung:** `schedule.update`",
        "operationId": "clearOverridePlayersOverride",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClearPlayerOverrideResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Beendet die Übersteuerung eines Geräts",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      },
      "put": {
        "description": "Die Übersteuerung liegt über allem und endet zum genannten Zeitpunkt oder auf Widerruf. Ein Ende in der Vergangenheit wird abgelehnt.\n\n**Benötigte Berechtigung:** `schedule.update`",
        "operationId": "setOverridePlayersOverride",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetPlayerOverrideRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetPlayerOverrideResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Zeigt auf einem Gerät jetzt etwas anderes",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/players/{id}/playback-history": {
      "get": {
        "description": "Gibt zurück, was an einem vergangenen Kalendertag eingeplant war — festgeschrieben beim Tagesübergang, samt der damals gültigen Namen und Stufen. Ein Tag ohne Aufzeichnung antwortet mit einer leeren Liste und \"recorded\": false; ein Tag außerhalb der Aufbewahrung oder in der Zukunft mit 422.\n\n**Benötigte Berechtigung:** `fleet.playback-history.read`",
        "operationId": "playbackHistoryOfDayPlayersPlaybackHistory",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "date",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPlayerPlaybackHistoryResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liefert den aufgezeichneten Tagesverlauf eines Players",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/players/{id}/program": {
      "get": {
        "description": "Was normal läuft und ob gerade etwas anderes gezeigt wird. Ohne Zuweisung ist die Antwort leer — das Gerät zeigt dann den Leerlauf-Bildschirm.\n\n**Benötigte Berechtigung:** `fleet.player.read`",
        "operationId": "getProgramPlayersProgram",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPlayerProgramResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest die Zuweisung eines Geräts",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      },
      "put": {
        "description": "Programm, Szene, Playlist oder Medium. Eine leere Angabe entfernt die Zuweisung; eine laufende Übersteuerung bleibt davon unberührt.\n\n**Benötigte Berechtigung:** `schedule.update`",
        "operationId": "setProgramPlayersProgram",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetPlayerProgramRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetPlayerProgramResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Weist einem Gerät ein Programm zu",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/players/{id}/screenshot": {
      "get": {
        "description": "Ein kurzlebiger Verweis auf die zuletzt vom Gerät gemeldete Aufnahme. Liegt noch keine vor, tragen die Felder `null` — ein frisch gekoppeltes Gerät hat schlicht noch keine geschickt.\n\n**Benötigte Berechtigung:** `fleet.player.read`",
        "operationId": "screenshotPlayers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPlayerScreenshotResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest das letzte Bildschirmfoto eines Players",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/players/{id}/screenshot/image": {
      "get": {
        "description": "Liefert die Aufnahme als base64 in JSON. Der Abruf daneben nennt zwar eine signierte Leseadresse, doch die trägt den öffentlichen Namen des Speichers — aus dem Verbund der Dienste heraus ist der nicht erreichbar, und ein Assistent kann eine Adresse ohnehin nicht öffnen. Wer das Bild selbst braucht, holt es hier; Browser nehmen weiter die Adresse. Liegt keine Aufnahme vor, antwortet die Route mit einem Nicht-gefunden statt mit leeren Feldern — Bytes gibt es, oder es gibt sie nicht.\n\n**Benötigte Berechtigung:** `fleet.player.read`",
        "operationId": "screenshotImagePlayersScreenshotImage",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPlayerScreenshotImageResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest das letzte Bildschirmfoto eines Players als Bild",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/players/{id}/snapshot/refresh": {
      "post": {
        "description": "Erzwingt den Neubau unabhängig von der Frische des Standes, hält aber das Entprellungs-Fenster ein: läuft bereits ein Bau, meldet die Antwort den Aufruf als angehängt. Ein unbekannter oder stillgelegter Player ist nicht auffindbar.\n\n**Benötigte Berechtigung:** `fleet.player.update`",
        "operationId": "refreshPlayersSnapshot",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefreshPlayerSnapshotResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Berechnet die Momentaufnahme eines Players neu",
        "tags": [
          "playback"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/players/{id}/tags/{tagId}": {
      "delete": {
        "description": "**Benötigte Berechtigung:** `fleet.player.update`",
        "operationId": "untagPlayersTags",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "tagId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UntagPlayerResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Entfernt einen Tag von einem Player",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Idempotent.\n\n**Benötigte Berechtigung:** `fleet.player.update`",
        "operationId": "tagPlayersTags",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "tagId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagPlayerResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Hängt einen Tag an einen Player",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/players/{id}/telemetry": {
      "get": {
        "description": "Gibt die Heartbeat-Werte des angefragten Fensters in der gewählten Auflösung zurück. Zeiträume ohne Meldung fehlen in der Reihe, statt als Null zu erscheinen.\n\n**Benötigte Berechtigung:** `fleet.player.read`",
        "operationId": "telemetryPlayers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "resolution",
            "required": true,
            "schema": {
              "enum": [
                "1m",
                "5m",
                "1h"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPlayerTelemetryResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liefert die Messreihen eines Players",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/players/{id}/timeline": {
      "get": {
        "description": "Löst Zeitpläne, Stufen und Wiedergabelisten für das angefragte Fenster auf und liefert die Abschnitte, die tatsächlich laufen. Ohne Angabe beginnt das Fenster jetzt; mit \"from\" lässt sich ein Tag im Voraus auflösen.\n\n**Benötigte Berechtigung:** `fleet.player.read`",
        "operationId": "timelinePlayers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "windowHours",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPlayerTimelineResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liefert die aufgelöste Abspiel-Timeline eines Players",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/players/{playerId}/screenshots": {
      "get": {
        "description": "Neueste zuerst, seitenweise. Das Fenster reicht höchstens so weit zurück, wie das Paket der Organisation Aufnahmen aufbewahrt; ein weiter zurückreichendes wird gekürzt, die Antwort nennt das tatsächlich gelesene. Zwei gleiche Bilder hintereinander sind eine Aufnahme mit „zuletzt gesehen“ und Zähler. Verweise auf Bild und Vorschau gelten mindestens fünfzig Minuten und bleiben innerhalb von zehn Minuten gleich.\n\n**Benötigte Berechtigung:** `fleet.player.read`",
        "operationId": "listPlayersScreenshots",
        "parameters": [
          {
            "in": "path",
            "name": "playerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "screenIndex",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPlayerScreenshotsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Bildschirmaufnahmen eines Displays",
        "tags": [
          "fleet"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/players/{playerId}/screenshots/{screenshotId}": {
      "get": {
        "description": "Eine Aufnahme mit Verweisen auf Bild und Vorschau. Eine Aufnahme, die älter ist als die Aufbewahrung des Pakets, gibt es nicht mehr.\n\n**Benötigte Berechtigung:** `fleet.player.read`",
        "operationId": "getPlayersScreenshots",
        "parameters": [
          {
            "in": "path",
            "name": "playerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "screenshotId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPlayerScreenshotEntryResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest eine Bildschirmaufnahme eines Displays",
        "tags": [
          "fleet"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/players/day-matrix": {
      "get": {
        "description": "Löst einen Kalendertag je Gerät auf und liefert die Abschnitte als beschriftbare Balken — dieselbe Rechnung wie am Gerät, nur auf das Nötige der Übersicht verdichtet.\n\n**Benötigte Berechtigung:** `fleet.player.list`",
        "operationId": "dayMatrixPlayers",
        "parameters": [
          {
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "playerIds",
            "required": false,
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPlayersTimelineResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liefert die Tages-Matrix der Flotte",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/players/now-playing": {
      "get": {
        "description": "Flotten-Sicht über dasselbe Zeitfenster wie die Timeline eines einzelnen Players, damit beide Ansichten dieselben vorberechneten Auflösungen nutzen.\n\n**Benötigte Berechtigung:** `fleet.player.list`",
        "operationId": "nowPlayingPlayers",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPlayersNowPlayingResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liefert für alle Player, was gerade läuft",
        "tags": [
          "fleet"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/playlists": {
      "get": {
        "description": "**Benötigte Berechtigung:** `playlist.list`",
        "operationId": "listPlaylists",
        "parameters": [
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "sceneId",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "assetId",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "sourceKind",
            "required": false,
            "schema": {
              "enum": [
                "manual",
                "folder",
                "tags"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPlaylistsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet Wiedergabelisten gefiltert und seitenweise",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "**Benötigte Berechtigung:** `playlist.create`",
        "operationId": "createPlaylists",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePlaylistRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatePlaylistResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt eine Wiedergabeliste an",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/playlists/{id}": {
      "delete": {
        "description": "Solange nicht archivierte Zeitpläne die Wiedergabeliste referenzieren, wird das Löschen abgelehnt.\n\n**Benötigte Berechtigung:** `playlist.delete`",
        "operationId": "removePlaylists",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löscht eine Wiedergabeliste",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      },
      "get": {
        "description": "**Benötigte Berechtigung:** `playlist.read`",
        "operationId": "getPlaylists",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPlaylistResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "ETag": {
                "description": "Die Fassung der Ressource in Anführungszeichen. Genau dieser Wert gehört bei der nächsten Änderung in die `If-Match`-Kopfzeile.",
                "example": "\"7\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest eine einzelne Wiedergabeliste",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "Erfordert den If-Match-Header. Mitgesandte Elemente ersetzen die bisherige Liste in der übergebenen Reihenfolge; mitgeschickte Element-Kennungen bleiben erhalten.\n\n**Benötigte Berechtigung:** `playlist.update`",
        "operationId": "updatePlaylists",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Die Fassung der Ressource, gegen die geschrieben wird — als Kennzeichen in Anführungszeichen (`\"7\"`) wie in der `ETag`-Kopfzeile der Lese-Antwort, oder als nackte Zahl (`7`). Weicht sie von der gespeicherten ab, antwortet die Route mit `Conflict.OptimisticLock` (409).",
            "example": "\"7\"",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePlaylistRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatePlaylistResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "ETag": {
                "description": "Die Fassung der Ressource in Anführungszeichen. Genau dieser Wert gehört bei der nächsten Änderung in die `If-Match`-Kopfzeile.",
                "example": "\"7\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Ändert eine Wiedergabeliste",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/playlists/source-preview": {
      "post": {
        "description": "Beantwortet für den Konfigurator, wie viele Medien die Quelle trifft, ob der Deckel greift und welche zuerst laufen. Rein lesend und ohne Cache; eine Wiedergabeliste muss dafür nicht existieren.\n\n**Benötigte Berechtigungen:** `playlist.read` und `asset.read` (alle erforderlich)",
        "operationId": "previewSourcePlaylistsSourcePreview",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PreviewPlaylistSourceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewPlaylistSourceResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löst eine Wiedergabelisten-Quelle probeweise auf",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/public/campaign-reports/open": {
      "post": {
        "description": "Der Bericht über die Werbekampagnen des Werbepartners im Eigentum des Verweises — Lieferung je Werbekampagne und Buchung, Verteilung, Standortliste in den Regeln seiner Sicht — und seine Nachweise mit ihren Dateien. Vermerkt die Nutzung des Verweises.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "openPublicCampaignReports",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenCampaignReportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenCampaignReportResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Öffnet den Kampagnenbericht eines Werbepartners",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/public/campaign-reports/proof-file": {
      "post": {
        "description": "Eine Download-Adresse für PDF, Stundenprotokoll, Manifest oder eine Bildschirmaufnahme eines Nachweises dieses Werbepartners, 15 Minuten gültig.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "proofFilePublicCampaignReports",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetSharedProofFileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProofFileUrlResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Gibt eine Datei eines Nachweises hinter einem Verweis frei",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/public/hardware-interests": {
      "post": {
        "description": "Ohne Anmeldung abrufbar. Der Aufrufer nennt Modell, Wunschmenge und seine Kontaktdaten und stimmt der einmaligen Benachrichtigung zu. Angelegt wird zunächst eine unbestätigte Absicht; erst der Klick im Bestätigungs-Link macht daraus eine Vormerkung. Die Antwort ist immer dieselbe — sie sagt, dass eine E-Mail unterwegs ist, nicht ob die Adresse schon vorgemerkt war.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "createPublicHardwareInterests",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateHardwareInterestRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateHardwareInterestResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Merkt einen angekündigten Player vor",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/public/hardware-interests/confirmations": {
      "post": {
        "description": "Löst den Bestätigungs-Link aus der E-Mail ein. Der Token steht im Rumpf und nicht in der Adresse — eine Bestätigungs-Adresse landet sonst in Verlaufsspeichern, Verweis-Kopfzeilen und Serverprotokollen. Der zweite Klick antwortet mit `alreadyConfirmed`; ein unbekannter Token mit 404, ein abgelaufener mit 410.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "confirmInterestPublicHardwareInterestsConfirmations",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfirmHardwareInterestRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfirmHardwareInterestResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Bestätigt eine Vormerkung",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/public/hardware-orders": {
      "post": {
        "description": "Ohne Anmeldung abrufbar. Der Aufrufer nennt Artikel, Mengen, Kontakt und Lieferanschrift; Preise, Steuer und Summen rechnet der Server aus dem Artikelkatalog. Keine Zahlung online — verkauft wird auf Rechnung, die Rechnung folgt per E-Mail. Antwort ist die Bestellnummer mit den gebundenen Preisen.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "createPublicHardwareOrders",
        "parameters": [
          {
            "description": "Ein selbst gewählter Schlüssel von mindestens acht Zeichen. Die erste Antwort wird 24 Stunden vorgehalten; eine Wiederholung mit demselben Schlüssel und demselben Rumpf liefert sie unverändert zurück und kennzeichnet das mit `Idempotent-Replay: true`, ohne die Wirkung erneut auszulösen.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "minLength": 8,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateHardwareOrderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateHardwareOrderResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Nimmt eine Hardware-Bestellung auf",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/public/maintenance-status": {
      "get": {
        "description": "Ohne Anmeldung abrufbar, damit die Portale den Wartungshinweis auch ohne Sitzung anzeigen können.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "statusPublicMaintenanceStatus",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetActiveMaintenanceWindowResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Nennt das aktuell laufende Wartungsfenster",
        "tags": [
          "status"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/public/pricing": {
      "get": {
        "description": "Ohne Anmeldung abrufbar. Liefert den Artikelkatalog als Schaufenster-Sicht — die drei Pakete mit Monats- und Jahrespreis (netto und brutto), die Player als Einmalkauf und die Länge der Testphase. Enterprise fehlt: Es hat keinen öffentlichen Preis. Kennungen, Zustände und Zeitstempel bleiben draußen.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "pricingTablePublicPricing",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicPricingResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Nennt Pakete, Hardware und Testphase",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/public/pricing/quote": {
      "get": {
        "description": "Ohne Anmeldung abrufbar. Preis je Bildschirm, Jahresnachlass und Steuersatz stehen auf dem Server, damit kein Frontend sie ein zweites Mal umsetzt.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "quotePublicPricing",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicPricingQuoteResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Rechnet, was eine Flotte dieser Größe in diesem Paket kostet",
        "tags": [
          "billing"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/public/proof-keys": {
      "get": {
        "description": "Jeder Schlüssel, mit dem Szenera Nachweise signiert hat oder signiert, mit Kennung, Fingerabdruck, öffentlicher Hälfte (PEM) und Gültigkeit. Abgelöste Schlüssel bleiben in der Liste, damit ältere Nachweise prüfbar bleiben.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "keysPublicProofKeys",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListProofKeysResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Listet die öffentlichen Schlüssel der Nachweise",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/public/proofs/verify": {
      "post": {
        "description": "Nimmt die Nummer und den Prüfcode oder die Prüfsumme einer Datei des Nachweises. Die Angaben des Nachweises stehen nur in der Antwort, wenn einer der beiden Belege passt; die Nummer allein öffnet nichts. `valid`: alle Belege passen; `mismatch`: die Nummer steht im Verzeichnis, ein Beleg passt nicht; `unknown`: die Nummer steht nicht im Verzeichnis.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "verifyPublicProofs",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyProofRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerifyProofResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Prüft einen Nachweis",
        "tags": [
          "analytics"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/public/status": {
      "get": {
        "description": "Zustand je Baustein, das laufende Wartungsfenster und die zuletzt öffentlich gemachten Störungen. Ohne Anmeldung, ohne interne Kennzahlen. `checkedAt` ist der Zeitpunkt der Messung, nicht des Abrufs.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "readPublicStatus",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPublicStatusResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Nennt den öffentlichen Zustand der Plattform",
        "tags": [
          "status"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/resource-type-catalog": {
      "get": {
        "description": "Enthält die Ressourcen-Typen der jüngsten stabilen Releases, aus denen das Backoffice seine Daten-Editoren baut.",
        "operationId": "listResourceTypeCatalog",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetResourceTypeCatalogResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liefert den Katalog der App-Datentypen",
        "tags": [
          "app-catalog"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/roles": {
      "get": {
        "description": "**Benötigte Berechtigung:** `access.role.list`",
        "operationId": "listRoles",
        "parameters": [
          {
            "in": "query",
            "name": "includeBuiltIns",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "enum": [
                "name",
                "createdAt"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListRolesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Rollen der Organisation",
        "tags": [
          "access"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "**Benötigte Berechtigung:** `access.role.create`",
        "operationId": "createRoles",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRoleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateRoleResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt eine neue Rolle an",
        "tags": [
          "access"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/roles/{id}": {
      "delete": {
        "description": "Schlägt fehl, solange die Rolle noch Mitgliedern zugewiesen ist oder von einem SSO-Provider als Standardrolle referenziert wird.\n\n**Benötigte Berechtigung:** `access.role.delete`",
        "operationId": "removeRoles",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteRoleResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löscht eine Rolle",
        "tags": [
          "access"
        ],
        "x-stability": "stable"
      },
      "get": {
        "description": "**Benötigte Berechtigung:** `access.role.read`",
        "operationId": "getByIdRoles",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetRoleResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "ETag": {
                "description": "Die Fassung der Ressource in Anführungszeichen. Genau dieser Wert gehört bei der nächsten Änderung in die `If-Match`-Kopfzeile.",
                "example": "\"7\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest eine Rolle",
        "tags": [
          "access"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "Erwartet die aktuelle Version der Rolle im If-Match-Header; bei abweichender Version bricht der Aufruf mit einem Konflikt ab.\n\n**Benötigte Berechtigung:** `access.role.update`",
        "operationId": "updateRoles",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Die Fassung der Ressource, gegen die geschrieben wird — als Kennzeichen in Anführungszeichen (`\"7\"`) wie in der `ETag`-Kopfzeile der Lese-Antwort, oder als nackte Zahl (`7`). Weicht sie von der gespeicherten ab, antwortet die Route mit `Conflict.OptimisticLock` (409).",
            "example": "\"7\"",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRoleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateRoleResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "ETag": {
                "description": "Die Fassung der Ressource in Anführungszeichen. Genau dieser Wert gehört bei der nächsten Änderung in die `If-Match`-Kopfzeile.",
                "example": "\"7\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Aktualisiert eine Rolle",
        "tags": [
          "access"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/scene-templates": {
      "get": {
        "description": "Plattformweiter, für alle Mandanten identischer Bestand. Vorlagen entstehen nicht über die API, deshalb ist die Route rein lesend.\n\n**Benötigte Berechtigung:** `scene.read`",
        "operationId": "listSceneTemplates",
        "parameters": [
          {
            "in": "query",
            "name": "orientation",
            "required": false,
            "schema": {
              "enum": [
                "landscape",
                "portrait"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSceneTemplatesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die kuratierten Szenen-Vorlagen",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/scenes": {
      "get": {
        "description": "**Benötigte Berechtigung:** `scene.list`",
        "operationId": "listScenes",
        "parameters": [
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "draft",
                "published",
                "archived"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "layoutTemplateId",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "assignment",
            "required": false,
            "schema": {
              "enum": [
                "assigned",
                "none"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListScenesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet Szenen gefiltert und seitenweise",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "**Benötigte Berechtigung:** `scene.create`",
        "operationId": "createScenes",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSceneRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScenePublic"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt eine neue Szene an",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/scenes/{id}": {
      "delete": {
        "description": "Soft-Delete. Eine Szene, die über Wiedergabelisten nicht archivierter Zeitpläne referenziert wird, wird nicht gelöscht; die Fehlerantwort nennt die Anzahl der Referenzen.\n\n**Benötigte Berechtigung:** `scene.delete`",
        "operationId": "removeScenes",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Verschiebt eine Szene in den Papierkorb",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      },
      "get": {
        "description": "Liefert die Szene samt ihrer offenen Integritäts-Befunde.\n\n**Benötigte Berechtigung:** `scene.read`",
        "operationId": "getScenes",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSceneResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "ETag": {
                "description": "Die Fassung der Ressource in Anführungszeichen. Genau dieser Wert gehört bei der nächsten Änderung in die `If-Match`-Kopfzeile.",
                "example": "\"7\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest eine Szene für den Editor",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "Erfordert den If-Match-Header mit der erwarteten Entwurfs-Version; bei Abweichung antwortet die Route mit einem Konflikt. Geprüft wird nur die Struktur des Dokuments, semantische Befunde bleiben dem Veröffentlichen vorbehalten. Ein inhaltsgleicher Patch lässt die Version stehen.\n\n**Benötigte Berechtigung:** `scene.update`",
        "operationId": "updateScenes",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Die Fassung der Ressource, gegen die geschrieben wird — als Kennzeichen in Anführungszeichen (`\"7\"`) wie in der `ETag`-Kopfzeile der Lese-Antwort, oder als nackte Zahl (`7`). Weicht sie von der gespeicherten ab, antwortet die Route mit `Conflict.OptimisticLock` (409).",
            "example": "\"7\"",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSceneRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScenePublic"
                }
              }
            },
            "description": "Success",
            "headers": {
              "ETag": {
                "description": "Die Fassung der Ressource in Anführungszeichen. Genau dieser Wert gehört bei der nächsten Änderung in die `If-Match`-Kopfzeile.",
                "example": "\"7\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Speichert Änderungen am Szenen-Entwurf",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/scenes/{id}/archive": {
      "post": {
        "description": "Umkehrbar; archivierte Szenen zählen nicht gegen das Szenen-Kontingent.\n\n**Benötigte Berechtigung:** `scene.archive`",
        "operationId": "archiveScenes",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScenePublic"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Archiviert eine Szene",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/scenes/{id}/integrity-issues": {
      "get": {
        "description": "**Benötigte Berechtigung:** `scene.read`",
        "operationId": "listScenesIntegrityIssues",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "type",
            "required": false,
            "schema": {
              "enum": [
                "WidgetVersionRetired",
                "AppUninstalled",
                "AssetDeleted",
                "LayoutTemplateDeleted",
                "ConfigSchemaIncompatible",
                "AppVersionHeld",
                "DocumentPagesChanged"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "severity",
            "required": false,
            "schema": {
              "enum": [
                "BLOCKING",
                "WARNING",
                "INFO"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "resolved",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListIntegrityIssuesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Integritäts-Befunde einer Szene",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/scenes/{id}/integrity-issues/{iid}/resolve": {
      "post": {
        "description": "Markiert den Befund als behoben oder als bewusst ignoriert; idempotent. Der Befund muss zur Szene im Pfad gehören.\n\n**Benötigte Berechtigung:** `scene.update`",
        "operationId": "resolveScenesIntegrityIssues",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "iid",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResolveIntegrityIssueRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResolveIntegrityIssueResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Schließt einen Integritäts-Befund einer Szene",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/scenes/{id}/integrity-issues/recheck": {
      "post": {
        "description": "Schließt verschwundene Befunde automatisch und legt neue an. Mehrfaches Auslösen erzeugt keine Duplikate.\n\n**Benötigte Berechtigung:** `scene.read`",
        "operationId": "recheckScenesIntegrityIssues",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecheckIntegrityResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Prüft eine Szene erneut auf Integritäts-Befunde",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/scenes/{id}/publish": {
      "post": {
        "description": "Prüft die Szene und schreibt eine Momentaufnahme, die Player abrufen können. Blockierende Validierungs-Befunde und offene Integritäts-Befunde verhindern die Veröffentlichung. Bei unverändertem Inhalt entsteht keine neue Version, die Antwort liefert die bestehende.\n\n**Benötigte Berechtigung:** `scene.publish`",
        "operationId": "publishScenes",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Die Fassung der Ressource, gegen die geschrieben wird — als Kennzeichen in Anführungszeichen (`\"7\"`) wie in der `ETag`-Kopfzeile der Lese-Antwort, oder als nackte Zahl (`7`). Weicht sie von der gespeicherten ab, antwortet die Route mit `Conflict.OptimisticLock` (409). Freiwillig, weil der Rumpf mit `expectedVersion` denselben Wert tragen darf; die Kopfzeile geht vor. Fehlen beide, antwortet die Route mit `Validation.Failed`.",
            "example": "\"7\"",
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublishSceneRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublishSceneResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Veröffentlicht eine Szenen-Version",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/scenes/{id}/restore": {
      "post": {
        "description": "Setzt die Szene auf Entwurf und prüft dabei das Szenen-Kontingent wie beim Anlegen.\n\n**Benötigte Berechtigung:** `scene.update`",
        "operationId": "restoreScenes",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScenePublic"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Holt eine Szene aus dem Archiv zurück",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/scenes/{id}/versions": {
      "get": {
        "description": "**Benötigte Berechtigung:** `scene.read`",
        "operationId": "listScenesVersions",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSceneVersionsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Versionen einer Szene",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/scenes/{id}/versions/{vid}": {
      "get": {
        "description": "**Benötigte Berechtigung:** `scene.read`",
        "operationId": "getScenesVersions",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "vid",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSceneVersionResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest eine Szenen-Version samt Momentaufnahme",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/scenes/{id}/versions/{vid}/diff/{vid2}": {
      "get": {
        "description": "**Benötigte Berechtigung:** `scene.read`",
        "operationId": "diffScenesVersions",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "vid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "vid2",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DiffSceneVersionsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Vergleicht zwei Versionen derselben Szene",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/scenes/{id}/versions/{vid}/render": {
      "post": {
        "description": "Rendert die Version kopflos und legt das Bild in denselben Vorschaubild-Platz, den der Editor nach dem Veröffentlichen füllt. Der Auftrag wird eingereiht und sofort mit seiner Kennung beantwortet; den Zustand liefert der Abruf. Läuft für dieselbe Version bereits ein Auftrag, nennt die Antwort dessen Kennung — eine Version ist unveränderlich, zwei Renders erzeugten dasselbe Bild.\n\n**Benötigte Berechtigung:** `scene.update`",
        "operationId": "renderScenesVersions",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "vid",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenderSceneVersionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RenderSceneVersionResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Beauftragt das Vorschaubild einer Version",
        "tags": [
          "composition"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/scenes/{id}/versions/{vid}/render/{jobId}": {
      "get": {
        "description": "Zustand des Auftrags und, sobald er fertig ist, eine kurzlebige Leseadresse des Vorschaubilds. Ist der Auftrag aus der Warteschlange gefallen, die Version trägt aber ein Bild, gilt er als fertig — das Ergebnis lebt am Vorschaubild, nicht in der Warteschlange.\n\n**Benötigte Berechtigung:** `scene.read`",
        "operationId": "renderJobScenesVersionsRender",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "vid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "jobId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSceneRenderJobResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest den Zustand eines Render-Auftrags",
        "tags": [
          "composition"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/scenes/{id}/versions/{vid}/render/{jobId}/image": {
      "get": {
        "description": "Liefert das erzeugte Vorschaubild als base64 in JSON. Der Abruf des Auftrags nennt zwar eine signierte Leseadresse, doch die trägt den öffentlichen Namen des Speichers — aus dem Verbund der Dienste heraus ist der nicht erreichbar. Wer dort steht, holt das Bild hier; Browser nehmen weiter die Adresse. Solange der Auftrag nicht fertig ist, antwortet die Route mit einem Konflikt und nennt den Zustand.\n\n**Benötigte Berechtigung:** `scene.read`",
        "operationId": "renderImageScenesVersionsRenderImage",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "vid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "jobId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSceneRenderImageResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest das Bild eines fertigen Render-Auftrags",
        "tags": [
          "composition"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/scenes/{id}/versions/{vid}/revert": {
      "post": {
        "description": "Kopiert das Dokument der Momentaufnahme in den Entwurf und erfordert den If-Match-Header. Live wird der alte Stand erst mit dem nächsten Veröffentlichen.\n\n**Benötigte Berechtigung:** `scene.publish`",
        "operationId": "revertScenesVersions",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "vid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Die Fassung der Ressource, gegen die geschrieben wird — als Kennzeichen in Anführungszeichen (`\"7\"`) wie in der `ETag`-Kopfzeile der Lese-Antwort, oder als nackte Zahl (`7`). Weicht sie von der gespeicherten ab, antwortet die Route mit `Conflict.OptimisticLock` (409).",
            "example": "\"7\"",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RevertToVersionResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "ETag": {
                "description": "Die Fassung der Ressource in Anführungszeichen. Genau dieser Wert gehört bei der nächsten Änderung in die `If-Match`-Kopfzeile.",
                "example": "\"7\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Setzt den Entwurf auf eine frühere Version zurück",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/scenes/{id}/versions/{vid}/thumbnail": {
      "post": {
        "description": "Der Editor nimmt die Bühne unmittelbar nach dem Veröffentlichen auf und lädt sie hier als PNG hoch. Je Version gibt es genau ein Bild; ein erneuter Aufruf ersetzt es.\n\n**Benötigte Berechtigung:** `scene.update`",
        "operationId": "uploadThumbnailScenesVersionsThumbnail",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "vid",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UploadSceneVersionThumbnailRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadSceneVersionThumbnailResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Hinterlegt das Vorschaubild einer Version",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/scenes/{id}/versions/{vid}/thumbnail-url": {
      "post": {
        "description": "Kurzlebige signierte Adresse. Trägt die Version kein Bild, antwortet die Route mit einem Nicht-gefunden — der Aufrufer zeigt dann seine eigene Vorschau.\n\n**Benötigte Berechtigung:** `scene.read`",
        "operationId": "thumbnailUrlScenesVersions",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "vid",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSceneVersionThumbnailUrlResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liefert eine Leseadresse für das Vorschaubild einer Version",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/scenes/bulk-update": {
      "post": {
        "description": "Jeder Eintrag läuft in seiner eigenen Transaktion, ein Konflikt stoppt die übrigen nicht. Die Antwort nennt den Ausgang je Szene und liefert bei Erfolg die neue Entwurfs-Version als ETag für den nächsten Patch.\n\n**Benötigte Berechtigung:** `scene.update`",
        "operationId": "bulkUpdateScenes",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkUpdateScenesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkUpdateScenesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Ändert mehrere Szenen in einem Aufruf",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/scenes/from-template": {
      "post": {
        "description": "Übernimmt das Dokument der Vorlage mit frischen Widget-Kennungen; danach besteht keine Verbindung zur Vorlage mehr. Die Szene entsteht als Entwurf und zählt gegen das Szenen-Kontingent.\n\n**Benötigte Berechtigung:** `scene.create`",
        "operationId": "fromTemplateScenes",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSceneFromTemplateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScenePublic"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt eine Szene aus einer kuratierten Vorlage an",
        "tags": [
          "composition"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/scenes/validate": {
      "post": {
        "description": "Der Trockenlauf: Dieselben Regeln, die beim Veröffentlichen gelten, angewandt auf ein Dokument, das es als Szene noch gar nicht gibt. Die Antwort nennt je Befund die Widget-Instanz und den Feldpfad; blockierende Befunde verhindern später das Veröffentlichen, Warnungen nicht. Es entsteht keine Szene und kein Entwurf.\n\n**Benötigte Berechtigung:** `scene.read`",
        "operationId": "validateScenes",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ValidateSceneRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidateSceneResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Prüft ein Szenen-Dokument, ohne es zu speichern",
        "tags": [
          "composition"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/schedules": {
      "get": {
        "description": "Je Zeile Name, Basis-Vorschau, Anzahl der Programmpunkte und die Zahl der Geräte, auf denen das Programm läuft. Die Programmpunkte selbst liefert erst das Detail.\n\n**Benötigte Berechtigung:** `schedule.list`",
        "operationId": "listSchedules",
        "parameters": [
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSchedulesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet Programme seitenweise",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Prüft den als Basis gewählten Inhalt. Ohne Angabe startet das Programm mit einer Sendepause; die Programmpunkte kommen über ihre eigene Route dazu.\n\n**Benötigte Berechtigung:** `schedule.create`",
        "operationId": "createSchedules",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateScheduleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateScheduleResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt ein Programm an",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/schedules/{id}": {
      "delete": {
        "description": "Abgelehnt, solange das Programm mindestens einem Gerät zugewiesen ist — als reguläres Programm oder als Übersteuerung.\n\n**Benötigte Berechtigung:** `schedule.delete`",
        "operationId": "removeSchedules",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löscht ein Programm",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      },
      "get": {
        "description": "Liefert Kopf und Programmpunkte in einem Abruf.\n\n**Benötigte Berechtigung:** `schedule.read`",
        "operationId": "getSchedules",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetScheduleResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "ETag": {
                "description": "Die Fassung der Ressource in Anführungszeichen. Genau dieser Wert gehört bei der nächsten Änderung in die `If-Match`-Kopfzeile.",
                "example": "\"7\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest ein einzelnes Programm",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "Erfordert den If-Match-Header. Eine geänderte Basis verwirft die vorberechneten Zeitachsen der Geräte, die das Programm spielen.\n\n**Benötigte Berechtigung:** `schedule.update`",
        "operationId": "updateSchedules",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Die Fassung der Ressource, gegen die geschrieben wird — als Kennzeichen in Anführungszeichen (`\"7\"`) wie in der `ETag`-Kopfzeile der Lese-Antwort, oder als nackte Zahl (`7`). Weicht sie von der gespeicherten ab, antwortet die Route mit `Conflict.OptimisticLock` (409).",
            "example": "\"7\"",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateScheduleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateScheduleResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "ETag": {
                "description": "Die Fassung der Ressource in Anführungszeichen. Genau dieser Wert gehört bei der nächsten Änderung in die `If-Match`-Kopfzeile.",
                "example": "\"7\"",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Ändert Name oder Basis eines Programms",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/schedules/{id}/items": {
      "post": {
        "description": "Prüft den gewählten Inhalt und die Wiederholungsregel. Die Antwort trägt die neue Programm-Version für das nächste If-Match.\n\n**Benötigte Berechtigung:** `schedule.update`",
        "operationId": "createItemSchedulesItems",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateScheduleItemRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateScheduleItemResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt einen Programmpunkt an",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/schedules/{id}/items/{itemId}": {
      "delete": {
        "description": "Antwortet mit der neuen Programm-Version statt mit einem leeren Rumpf.\n\n**Benötigte Berechtigung:** `schedule.update`",
        "operationId": "deleteItemSchedulesItems",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "itemId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteScheduleItemResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löscht einen Programmpunkt",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "Inhalt tauschen, Zeitfenster verschieben oder still schalten. Eine leere Beschriftung setzt auf den Inhaltsnamen zurück.\n\n**Benötigte Berechtigung:** `schedule.update`",
        "operationId": "updateItemSchedulesItems",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "itemId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateScheduleItemRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateScheduleItemResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Ändert einen Programmpunkt",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/schedules/{id}/players": {
      "get": {
        "description": "Kennung und Name je Gerät — dieselbe Menge, die das Löschen blockiert.\n\n**Benötigte Berechtigung:** `schedule.read`",
        "operationId": "playersSchedules",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSchedulePlayersResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Geräte, auf denen ein Programm läuft",
        "tags": [
          "scheduling"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/smart-buckets": {
      "get": {
        "description": "SmartBuckets sind gespeicherte Medien-Filter, je Person privat oder mandantenweit geteilt.\n\n**Benötigte Berechtigung:** `asset.smart-bucket.list`",
        "operationId": "listSmartBuckets",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSmartBucketsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die SmartBuckets des Mandanten",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "**Benötigte Berechtigung:** `asset.smart-bucket.create`",
        "operationId": "createSmartBuckets",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSmartBucketRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateSmartBucketResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt einen SmartBucket an",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/smart-buckets/{id}": {
      "delete": {
        "description": "**Benötigte Berechtigung:** `asset.smart-bucket.delete`",
        "operationId": "removeSmartBuckets",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löscht einen SmartBucket",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "**Benötigte Berechtigung:** `asset.smart-bucket.update`",
        "operationId": "updateSmartBuckets",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSmartBucketRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateSmartBucketResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Ändert Name, Filter oder Freigabe eines SmartBuckets",
        "tags": [
          "media-library"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/sso/scim-token": {
      "delete": {
        "description": "Wirkt sofort und ist nicht umkehrbar. Ein noch laufender Vorgänger aus einer Rotation fällt mit zu.\n\n**Benötigte Berechtigung:** `tenant.scim.manage`",
        "operationId": "revokeSsoScimToken",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RevokeScimTokenResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Widerruft den SCIM-Zugang",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      },
      "get": {
        "description": "Nennt den laufenden Zugang, einen Vorgänger in Rotation, die im Verzeichnisdienst einzutragende Adresse und ob der Unternehmens-Anmeldeweg steht.\n\n**Benötigte Berechtigung:** `tenant.scim.manage`",
        "operationId": "getSsoScimToken",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetScimTokenResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest den Zustand der SCIM-Provisionierung",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Das Geheimnis erscheint ausschließlich in dieser Antwort und ist danach nicht mehr abrufbar. Ohne aktiven Unternehmens-Anmeldeweg wird der Aufruf abgewiesen — ein provisioniertes Konto hätte sonst kein Anmeldeverfahren.\n\n**Benötigte Berechtigung:** `tenant.scim.manage`",
        "operationId": "mintSsoScimToken",
        "parameters": [],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MintScimTokenResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Stellt den SCIM-Zugang aus",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/sso/scim-token/rotate": {
      "post": {
        "description": "Der bisherige Zugang bleibt für das angeforderte Übergangsfenster gültig und fällt danach automatisch zu. So kann der neue Wert im Verzeichnisdienst eingetragen werden, ohne dass die Provisionierung dazwischen stillsteht.\n\n**Benötigte Berechtigung:** `tenant.scim.manage`",
        "operationId": "rotateSsoScimToken",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RotateScimTokenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RotateScimTokenResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Erneuert den SCIM-Zugang",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/tenants/me": {
      "delete": {
        "description": "Erwartet den genauen Kurznamen der Organisation als Bestätigung. Der Schritt ist endgültig: die Organisation wird stillgelegt und alle Bereiche räumen ihre Daten auf, ein Eintrag für Nachweiszwecke bleibt bestehen.\n\n**Benötigte Berechtigung:** `tenant.delete`",
        "operationId": "deleteMineTenantsMe",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteTenantRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteTenantResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löscht die eigene Organisation",
        "tags": [
          "tenancy"
        ],
        "x-stability": "stable"
      },
      "get": {
        "description": "**Benötigte Berechtigung:** `tenant.profile.read`",
        "operationId": "getMineTenantsMe",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTenantResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest die Stammdaten der eigenen Organisation",
        "tags": [
          "tenancy"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "**Benötigte Berechtigung:** `tenant.profile.update`",
        "operationId": "updateProfileTenantsMe",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTenantProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateTenantProfileResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Aktualisiert die Stammdaten der eigenen Organisation",
        "tags": [
          "tenancy"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/tenants/me/branding": {
      "put": {
        "description": "Vollständiges Ersetzen: nicht mitgesendete Angaben verlieren ihren bisherigen Wert. Wiederholte Aufrufe mit gleichem Inhalt ändern nichts.\n\n**Benötigte Berechtigung:** `tenant.branding.update`",
        "operationId": "updateTenantsMeBranding",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBrandingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBrandingResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Setzt das Branding der eigenen Organisation",
        "tags": [
          "tenancy"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/tenants/me/business-profile": {
      "get": {
        "description": "Anschrift und Steuerangaben liegen auf einer eigenen Route, damit sie nicht in jeder Antwort mitreisen.\n\n**Benötigte Berechtigung:** `tenant.profile.read`",
        "operationId": "getBusinessProfileMineTenantsMeBusinessProfile",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTenantBusinessProfileResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest die rechtlichen Angaben der eigenen Organisation",
        "tags": [
          "tenancy"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/tenants/me/custom-domain": {
      "delete": {
        "description": "**Benötigte Berechtigung:** `tenant.custom-domain.manage`",
        "operationId": "removeTenantsMeCustomDomain",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RemoveCustomDomainResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Entfernt die eigene Domain der Organisation",
        "tags": [
          "tenancy"
        ],
        "x-stability": "stable"
      },
      "get": {
        "description": "Ohne Verwaltungsrecht beantwortbar, dann jedoch ohne Nachweiswert und ohne Einrichtungshinweise.\n\n**Benötigte Berechtigung:** `tenant.custom-domain.manage` oder `tenant.profile.read`",
        "operationId": "statusTenantsMeCustomDomain",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCustomDomainStatusResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest den Stand der eigenen Domain",
        "tags": [
          "tenancy"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Die Antwort nennt den einzurichtenden DNS-Eintrag. Die Prüfung der Einrichtung läuft danach im Hintergrund, die Domain ist also nicht sofort aktiv.\n\n**Benötigte Berechtigung:** `tenant.custom-domain.manage`",
        "operationId": "requestTenantsMeCustomDomain",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestCustomDomainRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestCustomDomainResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Beantragt eine eigene Domain für die Organisation",
        "tags": [
          "tenancy"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/tenants/me/sso": {
      "get": {
        "description": "**Benötigte Berechtigung:** `tenant.sso.configure`",
        "operationId": "listTenantsMeSso",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSsoSettingsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die SSO-Provider der Organisation",
        "tags": [
          "tenancy"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "**Benötigte Berechtigung:** `tenant.sso.configure`",
        "operationId": "createTenantsMeSso",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSsoProviderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SsoProviderResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt einen SSO-Provider an",
        "tags": [
          "tenancy"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/tenants/me/sso/{providerId}": {
      "delete": {
        "description": "**Benötigte Berechtigung:** `tenant.sso.configure`",
        "operationId": "removeTenantsMeSso",
        "parameters": [
          {
            "in": "path",
            "name": "providerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteSsoProviderResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löscht einen SSO-Provider",
        "tags": [
          "tenancy"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "**Benötigte Berechtigung:** `tenant.sso.configure`",
        "operationId": "updateTenantsMeSso",
        "parameters": [
          {
            "in": "path",
            "name": "providerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSsoProviderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SsoProviderResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Aktualisiert einen SSO-Provider",
        "tags": [
          "tenancy"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/tenants/me/sso/{providerId}/domains": {
      "post": {
        "description": "Die Antwort trägt den Nachweiswert für den DNS-Eintrag; wirksam wird die Domäne erst mit dem geführten Nachweis. Eine bereits von einer anderen Organisation beanspruchte Domäne wird abgewiesen.\n\n**Benötigte Berechtigung:** `tenant.sso.configure`",
        "operationId": "addDomainTenantsMeSsoDomains",
        "parameters": [
          {
            "in": "path",
            "name": "providerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddSsoDomainRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SsoDomainResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Beansprucht eine Domäne für einen SSO-Provider",
        "tags": [
          "tenancy"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/tenants/me/sso/{providerId}/domains/{domain}": {
      "delete": {
        "description": "**Benötigte Berechtigung:** `tenant.sso.configure`",
        "operationId": "removeDomainTenantsMeSsoDomains",
        "parameters": [
          {
            "in": "path",
            "name": "providerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RemoveSsoDomainResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Entfernt eine Domäne von einem SSO-Provider",
        "tags": [
          "tenancy"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/tenants/me/sso/{providerId}/domains/{domain}/verify": {
      "post": {
        "description": "Prüft den hinterlegten DNS-Eintrag. Jeder Aufruf löst eine Abfrage nach außen aus und ist daher in der Häufigkeit begrenzt.\n\n**Benötigte Berechtigung:** `tenant.sso.configure`",
        "operationId": "verifyDomainTenantsMeSsoDomainsVerify",
        "parameters": [
          {
            "in": "path",
            "name": "providerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SsoDomainResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Weist die Inhaberschaft einer Domäne nach",
        "tags": [
          "tenancy"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/tenants/me/sso/{providerId}/enforcement": {
      "put": {
        "description": "Bei erzwungenem SSO entfallen Passwort und Magic-Link für Adressen der bestätigten Domänen. Als Rückweg bleibt allein der Notfallzugang des Plattform-Betriebs.\n\n**Benötigte Berechtigung:** `tenant.sso.configure`",
        "operationId": "setEnforcementTenantsMeSsoEnforcement",
        "parameters": [
          {
            "in": "path",
            "name": "providerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetSsoEnforcementRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SsoProviderResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Setzt den Anmeldezwang eines SSO-Providers",
        "tags": [
          "tenancy"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/tenants/public/by-slug/{slug}": {
      "get": {
        "description": "Ohne Anmeldung abrufbar, damit die Anmeldeseite Branding und Sprache schon vor dem Anmelden zeigen kann. Personenbezogene Angaben enthält die Antwort nicht.\n\nÖffentlich — keine Anmeldung erforderlich.",
        "operationId": "bySlugTenantsPublic",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTenantBySlugResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [],
        "summary": "Liest die öffentlichen Daten einer Organisation zum Kurznamen",
        "tags": [
          "tenancy"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/users": {
      "get": {
        "description": "**Benötigte Berechtigung:** `identity.user.list`",
        "operationId": "listUsers",
        "parameters": [
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "pending",
                "active",
                "suspended",
                "deleted"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "includeDeleted",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "roleId",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "lastLoginBefore",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "enum": [
                "createdAt",
                "email",
                "lastLoginAt"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListUsersResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Mitglieder der Organisation",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Der Weg der direkten Anlage durch die Verwaltung; die Einladung mit Selbstannahme liegt unter /v1/invitations.\n\n**Benötigte Berechtigung:** `identity.user.create`",
        "operationId": "createUsers",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateUserResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt ein Mitglied an",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/users/{id}": {
      "delete": {
        "description": "Der Aufruf wird angenommen und quittiert; die Pseudonymisierung der personenbezogenen Daten läuft danach im Hintergrund weiter.\n\n**Benötigte Berechtigung:** `identity.user.delete`",
        "operationId": "removeUsers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteUserResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löscht ein Mitglied",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      },
      "get": {
        "description": "**Benötigte Berechtigung:** `identity.user.read`",
        "operationId": "getByIdUsers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUserByIdResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liest ein Mitglied",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "Eine neue Anmelde-Adresse verlangt zusätzlich `identity.user.email.change`. Die Adresse ist der Wiederherstellungsweg des Kontos, wer sie ändert, kann es übernehmen.\n\n**Benötigte Berechtigung:** `identity.user.update`",
        "operationId": "updateUsers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateUserProfileResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Aktualisiert das Profil eines Mitglieds",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/users/{id}/reactivate": {
      "post": {
        "description": "**Benötigte Berechtigung:** `identity.user.reactivate`",
        "operationId": "reactivateUsers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReactivateUserResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Hebt die Sperre eines Mitglieds auf",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/users/{id}/roles": {
      "patch": {
        "description": "Die übergebene Liste ersetzt die bisherige Rollenzuordnung vollständig.\n\n**Benötigte Berechtigung:** `identity.user.assign-roles`",
        "operationId": "assignRolesUsersRoles",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignRolesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssignRolesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Setzt die Rollen eines Mitglieds",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/users/{id}/suspend": {
      "post": {
        "description": "Bestehende Sitzungen werden beendet und die Anmeldung unterbunden; die Daten des Kontos bleiben unangetastet.\n\n**Benötigte Berechtigung:** `identity.user.suspend`",
        "operationId": "suspendUsers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SuspendUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuspendUserResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Sperrt ein Mitglied",
        "tags": [
          "identity"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/web-displays": {
      "post": {
        "description": "Das Display entsteht SOFORT und steht im Zustand „nicht verbunden\" in der Flotte — mit Namen, optionalem Standort und einer belegten Lizenz. Die zurückgegebene Adresse bindet den ersten Browser, der sie öffnet, an genau dieses Display; ein zweites entsteht dabei nie. Setzt die vertragliche Fähigkeit für Displays ohne Agent voraus.\n\n**Benötigte Berechtigung:** `fleet.web-display.manage` oder `fleet.player.pair`",
        "operationId": "createWebDisplays",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebDisplayRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateWebDisplayResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt ein Web-Display an und gibt seine Anschluss-Adresse aus",
        "tags": [
          "fleet"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/web-displays/{id}": {
      "delete": {
        "description": "Nimmt das Display und das Gerät dahinter aus dem Bestand und gibt die Lizenz frei. Ausschliesslich für Displays ohne Gerät: Steht hinter der Kennung ein physischer Player, antwortet die Route mit `WebDisplay.NotABrowserDisplay` (409) — dafür gibt es `DELETE /v1/players/:id`.\n\n**Benötigte Berechtigung:** `fleet.web-display.manage`",
        "operationId": "removeWebDisplays",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteWebDisplayResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löscht ein Web-Display",
        "tags": [
          "fleet"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/web-displays/{id}/link": {
      "post": {
        "description": "Für den Fall, dass die Ablage des Browsers weg ist — geleerter Speicher, frisches Profil, anderer Rechner — oder die erste Adresse abgelaufen ist. Der Browser, der das Display bis dahin zeigte, verliert es samt seiner Renderer-Sitzungen; alle offenen Adressen desselben Displays verfallen. Ein Display mit Gerät wird abgewiesen.\n\n**Benötigte Berechtigung:** `fleet.web-display.manage` oder `fleet.player.pair`",
        "operationId": "issueLinkWebDisplaysLink",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssueWebDisplayLinkResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Stellt eine neue Anschluss-Adresse für ein Web-Display aus",
        "tags": [
          "fleet"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/web-displays/address": {
      "get": {
        "description": "Die Adresse, die man auf dem Zielgerät im Browser öffnet. Dort zeigt die Anzeige dann einen Kopplungscode, der im Portal eingetippt wird. Der Weg für Bildschirme, auf die sich kein Link bringen lässt.\n\n**Benötigte Berechtigung:** `fleet.web-display.manage` oder `fleet.player.pair`",
        "operationId": "addressWebDisplays",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDisplayAddressResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Nennt die Adresse, unter der die Anzeige-Anwendung läuft",
        "tags": [
          "fleet"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/web-displays/batch": {
      "post": {
        "description": "Der Weg für einen Rollout: Statt zwanzigmal einen Code abzulesen oder zwanzig Links einzeln zu erzeugen, entstehen alle Displays auf einmal — mit durchnummerierten Namen und je einer Anschluss-Adresse. Die Antwort ist zugleich die Form der Provisionierungs-Datei, die ein Gerät lesen kann. ALLES ODER NICHTS: Reichen die gebuchten Plätze nicht für die ganze Menge, entsteht kein einziges Display. Die Datei ist eine Zugangsberechtigung — jede Adresse gilt einmal und alle verfallen nach 24 Stunden. Setzt die vertragliche Fähigkeit für Displays ohne Agent voraus.\n\n**Benötigte Berechtigung:** `fleet.web-display.manage` oder `fleet.player.pair`",
        "operationId": "provisionWebDisplaysBatch",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProvisionWebDisplaysRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProvisionWebDisplaysResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt mehrere Web-Displays in einem Zug an",
        "tags": [
          "fleet"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/webhooks": {
      "get": {
        "description": "**Benötigte Berechtigung:** `webhook.list`",
        "operationId": "listWebhooks",
        "parameters": [
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "active",
                "disabled",
                "dead"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListWebhookEndpointsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Webhook-Ziele der Organisation",
        "tags": [
          "notifications"
        ],
        "x-stability": "stable"
      },
      "post": {
        "description": "Das Signaturgeheimnis wird nur in dieser Antwort im Klartext ausgegeben und ist danach nicht mehr abrufbar.\n\n**Benötigte Berechtigung:** `webhook.create`",
        "operationId": "createWebhooks",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebhookEndpointRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateWebhookEndpointResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Legt ein Webhook-Ziel an",
        "tags": [
          "notifications"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/webhooks/{id}": {
      "delete": {
        "description": "**Benötigte Berechtigung:** `webhook.delete`",
        "operationId": "removeWebhooks",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteWebhookEndpointResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löscht ein Webhook-Ziel",
        "tags": [
          "notifications"
        ],
        "x-stability": "stable"
      },
      "patch": {
        "description": "**Benötigte Berechtigung:** `webhook.update`",
        "operationId": "updateWebhooks",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWebhookEndpointRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateWebhookEndpointResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Aktualisiert ein Webhook-Ziel",
        "tags": [
          "notifications"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/webhooks/{id}/deliveries": {
      "get": {
        "description": "**Benötigte Berechtigung:** `webhook.delivery.list`",
        "operationId": "listWebhooksDeliveries",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListWebhookDeliveriesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die Zustellversuche eines Webhook-Ziels",
        "tags": [
          "notifications"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/webhooks/{id}/deliveries/{deliveryId}/retry": {
      "post": {
        "description": "Sendet erneut und signiert dabei mit dem aktuell gültigen Geheimnis des Ziels. Der Ausgang wird am Zustellversuch festgehalten.\n\n**Benötigte Berechtigung:** `webhook.delivery.retry`",
        "operationId": "retryWebhooksDeliveries",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "deliveryId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RetryWebhookDeliveryResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Wiederholt einen fehlgeschlagenen Zustellversuch",
        "tags": [
          "notifications"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/webhooks/{id}/rotate-secret": {
      "post": {
        "description": "Das neue Geheimnis erscheint einmalig in der Antwort; ab dem nächsten Versand wird ausschließlich damit signiert.\n\n**Benötigte Berechtigung:** `webhook.update`",
        "operationId": "rotateWebhooksRotateSecret",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RotateSecretResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Erneuert das Signaturgeheimnis eines Webhook-Ziels",
        "tags": [
          "notifications"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/webhooks/event-types": {
      "get": {
        "description": "Nennt je Ereignis den Klartext-Namen und einen vollständigen Beispiel-Rumpf. Der Rumpf einer Zustellung ist die Nutzlast des Ereignisses selbst; Ereignisart und Zustell-Kennung stehen in den Kopfzeilen. Abonniert werden kann eine genaue Art, ein Bereich als \"<bereich>.*\" oder mit \"*\" alles.\n\n**Benötigte Berechtigung:** `webhook.list`",
        "operationId": "eventTypesWebhooks",
        "parameters": [
          {
            "in": "query",
            "name": "locale",
            "required": false,
            "schema": {
              "enum": [
                "de",
                "en"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListWebhookEventTypesResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Listet die abonnierbaren Ereignisse",
        "tags": [
          "notifications"
        ],
        "x-stability": "beta"
      }
    },
    "/v1/widget-catalog": {
      "get": {
        "description": "Enthält die Widget-Definitionen der jüngsten stabilen Releases.",
        "operationId": "listWidgetCatalog",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWidgetCatalogResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liefert die Widget-Palette für den Editor",
        "tags": [
          "app-catalog"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/widget-catalog/graphics": {
      "get": {
        "description": "Alle Motive der eingebauten Bibliothek mit Name, Kategorie und Suchbegriffen — die Auswahl, aus der `graphicId` stammt. Ohne diese Liste wäre das Feld eine freie Zeichenkette: Das Konfigurations-Schema prüft einen Wert, kann aber nicht nennen, welche es gibt.",
        "operationId": "graphicsWidgetCatalog",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListGraphicsResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Liefert die Motive des Grafik-Widgets",
        "tags": [
          "app-catalog"
        ],
        "x-stability": "stable"
      }
    },
    "/v1/widget-data/preview": {
      "post": {
        "description": "Dieselbe Auflösungs-Phase wie beim Bau einer Momentaufnahme, aber ohne Speicherung und ohne Ereignis. Die Widget-Instanzen stehen in der Anfrage und müssen nirgends gespeichert sein. Ohne `playerId` gehört die Vorschau keinem Display. Mit `playerId` löst sie für dieses Display auf, und Widgets, deren App den Standort des Displays lesen darf, sehen ihn wie beim Bau seiner Momentaufnahme. Ein Display, das nicht zur Organisation gehört, stillgelegt ist oder das der Aufrufer nicht sehen darf, ist nicht auffindbar. Scheitert ein einzelnes Widget, bleibt die Antwort erfolgreich und nennt den Grund je Instanz.\n\n**Benötigte Berechtigung:** `scene.read`",
        "operationId": "previewWidgetData",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PreviewWidgetDataRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewWidgetDataResponse"
                }
              }
            },
            "description": "Success"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PermissionDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/ValidationFailed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimit"
          },
          "502": {
            "$ref": "#/components/responses/IntegrationError"
          }
        },
        "security": [
          {
            "sessionJwt": []
          },
          {
            "apiKey": []
          },
          {
            "oauthAccessToken": []
          }
        ],
        "summary": "Löst Widget-Daten für eine Vorschau auf",
        "tags": [
          "playback"
        ],
        "x-stability": "stable"
      }
    }
  },
  "servers": [
    {
      "url": "https://api.szenera.com",
      "description": "Die Schnittstelle Ihrer Umgebung"
    },
    {
      "url": "http://localhost:41000",
      "description": "Lokale Entwicklungsumgebung"
    }
  ],
  "tags": [
    {
      "description": "Regelt, wer was darf. Sie verwalten Rollen und einzelne Berechtigungszuweisungen, lesen den Katalog aller vergebbaren Rechte und rufen die effektiven Berechtigungen des angemeldeten Kontos ab.",
      "name": "access",
      "x-displayName": "Rollen & Berechtigungen"
    },
    {
      "description": "Vermarktung: Werbepartner, Werbekampagnen, Buchungen, Motive und Werbefläche. Eine Organisation pflegt ihr Direktgeschäft mit eigenen Werbepartnern, gibt Motive frei und entscheidet über die Teilnahme am Werbenetz. Betreiber führen die Buchungen des Netzes über viele Standorte.",
      "name": "advertising",
      "x-displayName": "Vermarktung"
    },
    {
      "description": "Beantwortet Fragen zur Nutzung: Kennzahlen abfragen, Berichte definieren, planmäßig ausführen lassen und die erzeugten Auswertungen herunterladen. Auf Betreiberebene stehen plattformweite Kennzahlen und ein Mandantenvergleich bereit.",
      "name": "analytics",
      "x-displayName": "Auswertungen"
    },
    {
      "description": "Die Herkunftsseite der Apps: Betreiber laden Releases hoch, geben sie frei, stufen sie zurück und steuern deren Auslauffristen; verwaltete Apps lassen sich mandantenspezifisch übersteuern. Öffentlich ausgeliefert werden hier Manifest, Bundle und Autorenmodul einer App-Version sowie die Kataloge der verfügbaren Widgets und Ressourcentypen.",
      "name": "app-catalog",
      "x-displayName": "App-Katalog"
    },
    {
      "description": "Das revisionssichere Protokoll aller relevanten Vorgänge: Einträge durchsuchen, zusammenhängende Vorgänge über ihre Korrelation bündeln und Auszüge zum Herunterladen exportieren. Betreiber lösen zusätzlich die Pseudonymisierung personenbezogener Einträge aus und lösen Pseudonyme wieder auf.",
      "name": "audit",
      "x-displayName": "Audit-Protokoll"
    },
    {
      "description": "Bündelt Tarifwahl und Zahlungsabwicklung: Abonnement buchen, wechseln, kündigen oder reaktivieren, Zahlungsmittel und Rechnungen einsehen sowie die verbrauchten Kontingente prüfen. Betreiber pflegen den Tarifkatalog und bearbeiten Rechnungen und Rückerstattungen.",
      "name": "billing",
      "x-displayName": "Abrechnung & Tarife"
    },
    {
      "description": "Die Vollmachten eines Mandanten auf fremde Speicher-Konten, aus denen die Mediathek ihre „Orte\" speist. Sie beginnen einen Rundlauf zur Zustimmungs-Maske des Anbieters, sehen den Zustand aller Verbindungen und trennen eine davon wieder. Zugriffs- und Auffrischungs-Worte verlassen den Server nie — weder in einer Antwort noch in einem Verweis.",
      "name": "cloud-connections",
      "x-displayName": "Cloud-Verbindungen"
    },
    {
      "description": "Die gestalterische Ebene: Szenen anlegen, aus Vorlagen erzeugen, veröffentlichen, archivieren und wiederherstellen. Jede Änderung wird versioniert, sodass Sie Fassungen vergleichen und zurückrollen können; gemeldete Integritätsprobleme einer Szene lassen sich hier prüfen und ausräumen.",
      "name": "composition",
      "x-displayName": "Szenen & Layouts"
    },
    {
      "description": "Verwaltet die Abspielgeräte: Inbetriebnahme über Kopplungscode, Standorte und Etiketten zur Gliederung, Fernbefehle mit Rückmeldung sowie die Stilllegung eines Geräts. Geräte selbst melden hier Lebenszeichen, Fähigkeiten und den Verlauf ihrer Systemaktualisierungen.",
      "name": "fleet",
      "x-displayName": "Geräte & Flotte"
    },
    {
      "description": "Verwaltet Benutzerkonten, das eigene Profil und die Zugangsmittel eines Mandanten. Dazu gehören Anlegen, Sperren und Reaktivieren von Benutzern, die Zwei-Faktor-Authentisierung samt Wiederherstellungscodes, API-Schlüssel sowie verknüpfte Social-Konten. Auf Betreiberseite umfasst der Bereich die Operator-Konten der Plattform.",
      "name": "identity",
      "x-displayName": "Identitäten & Konten"
    },
    {
      "description": "Die Mandantensicht auf das App-Angebot: Apps entdecken, installieren, aktualisieren und deinstallieren — mit Vorschau der Folgen einer Deinstallation. Erweitert eine neue Version ihre Rechte, bestätigen oder verweigern Sie diese hier erneut.",
      "name": "marketplace",
      "x-displayName": "Marketplace"
    },
    {
      "description": "Der Medienbestand eines Mandanten: Hochladen einschließlich mehrteiliger Uploads großer Dateien, Ordner und dynamische Sammlungen, Umbenennen und Verschieben in großen Mengen. Zu jedem Medium erhalten Sie Download-Verweise, abgeleitete Varianten, die Verwendungsnachweise sowie Papierkorb, Wiederherstellung und endgültiges Löschen.",
      "name": "media-library",
      "x-displayName": "Medienbibliothek"
    },
    {
      "description": "Steuert die Zustellung von Meldungen: Postfach im Portal mit Lesen und Ausblenden, persönliche Zustellwege und Webhooks für die Anbindung eigener Systeme samt Zustellprotokoll, erneuter Zustellung und Schlüsselwechsel. Betreiber pflegen die E-Mail-Vorlagen und sehen den Versandverlauf.",
      "name": "notifications",
      "x-displayName": "Benachrichtigungen"
    },
    {
      "description": "Führt neue Organisationen und Mitglieder in die Plattform: Selbstregistrierung mit E-Mail-Bestätigung, Einladungen samt öffentlicher Annahmeseite, Beitrittsanfragen zu bestehenden Organisationen und der Einrichtungsassistent für die ersten Schritte.",
      "name": "onboarding",
      "x-displayName": "Registrierung & Einladungen"
    },
    {
      "description": "Die Schnittstelle zum Abspieler: Er lädt sein Wiedergabepaket — Zeitplan, Szenen, Daten und Medienverzeichnis —, meldet einen erfolgreichen Start zurück und liefert Diagnoseprotokolle. Zusätzlich finden Sie hier die Vorschau von Widget-Daten und die Auslieferung des Abspieler-Bundles.",
      "name": "playback",
      "x-displayName": "Wiedergabe"
    },
    {
      "description": "Legt fest, was wann läuft: Playlists zusammenstellen, Zeitpläne anlegen, anhalten und fortsetzen sowie eine Standardszene bestimmen. Kalenderansicht und Konfliktvorschau zeigen Überschneidungen, bevor ein Zeitplan aktiv wird.",
      "name": "scheduling",
      "x-displayName": "Zeitpläne & Playlists"
    },
    {
      "description": "Deckt alle Wege in eine Sitzung ab: Passwort-Anmeldung, Magic-Link, Social-Login, unternehmensweites SSO, Zwei-Faktor-Bestätigung und die Wahl der Organisation bei mehreren Zugehörigkeiten. Ergänzend finden Sie hier das Erneuern und Beenden von Sitzungen, den Passwort-Zurücksetzen-Fluss und die Übernahme einer Mandantensitzung durch den Betreiber.",
      "name": "sessions",
      "x-displayName": "Anmeldung & Sitzungen"
    },
    {
      "description": "Der Status der Plattform, wie ihn die Statusseite zeigt: Status je Baustein, öffentlich gemachte Störungen und das laufende Wartungsfenster. Beide Routen sind ohne Anmeldung abrufbar, auch während einer Störung.",
      "name": "status",
      "x-displayName": "Plattformstatus"
    },
    {
      "description": "Verwaltet die Organisation selbst: Stammdaten, Geschäftsprofil, Erscheinungsbild, eigene Domain und die SSO-Anbindung mit ihren verifizierten E-Mail-Domänen. Betreiber führen hier zusätzlich die Mandantenliste und können Mandanten sperren oder wieder freigeben.",
      "name": "tenancy",
      "x-displayName": "Mandanten"
    }
  ],
  "x-tagGroups": [
    {
      "name": "Identität & Zugang",
      "tags": [
        "identity",
        "sessions",
        "access",
        "onboarding"
      ]
    },
    {
      "name": "Organisation & Abrechnung",
      "tags": [
        "tenancy",
        "billing"
      ]
    },
    {
      "name": "Inhalte & Planung",
      "tags": [
        "cloud-connections",
        "media-library",
        "composition",
        "scheduling",
        "advertising"
      ]
    },
    {
      "name": "Apps & Marketplace",
      "tags": [
        "app-catalog",
        "marketplace"
      ]
    },
    {
      "name": "Flotte & Wiedergabe",
      "tags": [
        "fleet",
        "playback"
      ]
    },
    {
      "name": "Überwachung & Meldungen",
      "tags": [
        "audit",
        "notifications",
        "analytics"
      ]
    },
    {
      "name": "Plattform-Betrieb",
      "tags": [
        "status"
      ]
    }
  ]
}
