{
  "openapi": "3.0.1",
  "info": {
    "title": "Fortuna Compliance API",
    "description": "API for Know Your Customer (KYC) services including identity verification, CPR lookup, PEP checks, ROFUS validation, and SAFE reporting.\n\n👉 **Looking for guides and integration help?**  \nVisit our Help pages: [Help Documentation](/help)\n\nSDK downloads:\n- [C# SDK](/sdk/Fortuna.Compliance.Sdk.cs)\n- [TypeScript SDK](/sdk/fortuna-compliance-sdk.ts)",
    "contact": {
      "name": "Fortuna Compliance Support",
      "email": "support@fortunacompliance.com"
    },
    "version": "v1"
  },
  "paths": {
    "/api/audit/records": {
      "get": {
        "tags": [
          "Audit"
        ],
        "summary": "Lists audit records (headers only).",
        "description": "Use this endpoint when you need to:\r\n- Document that you performed a compliance check at a specific time  \r\n- Validate historical lookups for a given customer (via ExternalReference)  \r\n- Provide evidence to regulators demonstrating responsible gambling processes  \r\n            \r\nThe response contains **only audit headers**.  \r\nFull decrypted payloads are **never** returned here and are only available\r\nthrough internal administration tools.",
        "parameters": [
          {
            "name": "externalReference",
            "in": "query",
            "description": "Optional filter: only records for this external reference.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "description": "Optional filter: only records >= this UTC timestamp.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "description": "Optional filter: only records <= this UTC timestamp.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "category",
            "in": "query",
            "description": "Optional filter: category name (e.g. \"Rofus\", \"Pep\", \"Cpr\", \"Safe\").\r\nCase-insensitive.",
            "schema": {
              "$ref": "#/components/schemas/AuditCategory"
            }
          },
          {
            "name": "operation",
            "in": "query",
            "description": "Optional filter: operation name (e.g. \"gambler_check\", \"csrp_check\").\r\nCase-insensitive.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number (1-based).",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Page size (max e.g. 200).",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AuditRecordSummaryPagedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuditRecordSummaryPagedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuditRecordSummaryPagedResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/brokers": {
      "get": {
        "tags": [
          "Broker"
        ],
        "summary": "Returns a list of available brokers for identity verification and CPR operations.\r\nEach broker indicates which capabilities it supports (Identity, CPR, or both).",
        "responses": {
          "200": {
            "description": "Brokers were retrieved successfully.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdentityBrokerDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdentityBrokerDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdentityBrokerDto"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Client is not authorized to access this resource.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "An internal server error occurred.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/cpr/{brokerId}/lookup": {
      "post": {
        "tags": [
          "Cpr"
        ],
        "summary": "Looks up a person in the official CPR register using a CPR number.\r\nReturns a structured snapshot of the person as registered in CPR.",
        "parameters": [
          {
            "name": "brokerId",
            "in": "path",
            "description": "The ID of the CPR broker to use (e.g. 'mitid', 'test').",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains audit info and a valid CPR number.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CprLookupRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CprLookupRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CprLookupRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Person was found and returned successfully.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CprLookupResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CprLookupResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CprLookupResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "No person found for the provided CPR number."
          }
        }
      }
    },
    "/api/cpr/{brokerId}/validate": {
      "post": {
        "tags": [
          "Cpr"
        ],
        "summary": "Validates customer-provided personal information by comparing it\r\nagainst official CPR data using fuzzy matching.",
        "parameters": [
          {
            "name": "brokerId",
            "in": "path",
            "description": "The ID of the CPR broker to use (e.g. 'mitid', 'test').",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains audit info, CPR number, and the customer's own personal and address details.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CprValidationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CprValidationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CprValidationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Validation completed successfully.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CprValidationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CprValidationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CprValidationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/auth/{brokerId}/start": {
      "post": {
        "tags": [
          "Identity"
        ],
        "summary": "Starts an identification flow for the given broker (e.g. MitID).",
        "parameters": [
          {
            "name": "brokerId",
            "in": "path",
            "description": "The ID of the identity broker to use (e.g. 'mitid', 'test').",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains audit info, return URL and optional requirements such as CPR and level of assurance.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartIdentificationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/StartIdentificationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/StartIdentificationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Identification flow started successfully.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/StartIdentificationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartIdentificationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartIdentificationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Client is not authorized to access this resource.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "An internal server error occurred.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/auth/{brokerId}/result": {
      "post": {
        "tags": [
          "Identity"
        ],
        "summary": "Returns the normalized identity result for a completed identification session.\r\nCalled by clients (e.g. casinos), not by brokers.",
        "parameters": [
          {
            "name": "brokerId",
            "in": "path",
            "description": "The ID of the identity broker used for authentication.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains audit info and session ID to retrieve the identity result.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IdentityResultRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/IdentityResultRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/IdentityResultRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Identity result retrieved successfully.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/IdentityValidationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IdentityValidationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/IdentityValidationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Client is not authorized to access this resource.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Session not found or not completed.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "An internal server error occurred.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/pep/check": {
      "post": {
        "tags": [
          "Pep"
        ],
        "summary": "Checks if a person is registered as a Politically Exposed Person (PEP).",
        "requestBody": {
          "description": "Contains the person's name and date of birth to check.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PepCheckRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PepCheckRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PepCheckRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "PEP check completed successfully.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PepCheckResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PepCheckResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PepCheckResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Client is not authorized to access this resource.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "An internal server error occurred.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/pep/check-bulk": {
      "post": {
        "tags": [
          "Pep"
        ],
        "summary": "Performs a bulk PEP check for multiple persons.",
        "requestBody": {
          "description": "Contains a list of persons to check for PEP status.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PepBulkCheckRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PepBulkCheckRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PepBulkCheckRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bulk PEP check completed successfully.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PepBulkCheckResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PepBulkCheckResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PepBulkCheckResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Client is not authorized to access this resource.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "An internal server error occurred.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/rofus/gambler/check": {
      "post": {
        "tags": [
          "Rofus"
        ],
        "summary": "Checks ROFUS gambler/self-exclusion status for a single person.",
        "requestBody": {
          "description": "Contains audit metadata and CPR to check.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RofusSingleCheckRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RofusSingleCheckRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RofusSingleCheckRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Check completed successfully.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RofusGamblerCheckResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RofusGamblerCheckResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RofusGamblerCheckResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Client is not authorized to access this resource.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "An internal server error occurred.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/rofus/csrp/check": {
      "post": {
        "tags": [
          "Rofus"
        ],
        "summary": "Checks ROFUS CSRP status (and minor flag) for a single person.",
        "requestBody": {
          "description": "Contains audit metadata and CPR to check.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RofusSingleCheckRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RofusSingleCheckRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RofusSingleCheckRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Check completed successfully.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RofusCsrpCheckResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RofusCsrpCheckResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RofusCsrpCheckResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Client is not authorized to access this resource.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "An internal server error occurred.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/rofus/commercial/check-bulk": {
      "post": {
        "tags": [
          "Rofus"
        ],
        "summary": "Performs a bulk commercial/marketing check in ROFUS for a list of persons.",
        "requestBody": {
          "description": "Contains list of persons (CPR) to check.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RofusCommercialBulkRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RofusCommercialBulkRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RofusCommercialBulkRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bulk check completed successfully.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RofusCommercialBulkResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RofusCommercialBulkResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RofusCommercialBulkResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Client is not authorized to access this resource.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "An internal server error occurred.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/rofus/evaluation": {
      "post": {
        "tags": [
          "Rofus"
        ],
        "summary": "Runs all three ROFUS checks (gambler, CSRP, commercial) for a single person\r\nand returns a combined evaluation.",
        "requestBody": {
          "description": "Contains audit metadata and CPR to evaluate.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RofusEvaluationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RofusEvaluationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RofusEvaluationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Evaluation completed successfully.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RofusEvaluationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RofusEvaluationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RofusEvaluationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Client is not authorized to access this resource.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "An internal server error occurred.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/safe/sessions": {
      "post": {
        "tags": [
          "Safe"
        ],
        "summary": "Register a new game session.",
        "requestBody": {
          "description": "Contains session details including casino ID, player reference, and game information.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSessionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSessionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSessionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Session created successfully.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CreateSessionResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateSessionResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateSessionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Client is not authorized to access this resource.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SafeSessionSafeConflict"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SafeSessionSafeConflict"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SafeSessionSafeConflict"
                }
              }
            }
          },
          "500": {
            "description": "An internal server error occurred.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/safe/sessions/{casinoSessionId}": {
      "put": {
        "tags": [
          "Safe"
        ],
        "summary": "Cancel a game session.",
        "parameters": [
          {
            "name": "casinoSessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the session ID and optional reason for cancellation.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelSessionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelSessionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CancelSessionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Session cancelled successfully.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CancelSessionResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CancelSessionResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CancelSessionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Client is not authorized to access this resource.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Session not found.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "An internal server error occurred.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/safe/jackpots": {
      "post": {
        "tags": [
          "Safe"
        ],
        "summary": "Register a jackpot win.",
        "requestBody": {
          "description": "Contains jackpot details including amount, currency, and occurrence time.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterJackpotRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterJackpotRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterJackpotRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Jackpot registered successfully.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RegisterJackpotResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegisterJackpotResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegisterJackpotResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Client is not authorized to access this resource.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SafeJackpotSafeConflict"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SafeJackpotSafeConflict"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SafeJackpotSafeConflict"
                }
              }
            }
          },
          "500": {
            "description": "An internal server error occurred.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/safe/jackpots/{casinoJackpotId}": {
      "put": {
        "tags": [
          "Safe"
        ],
        "summary": "Adjust a previously registered jackpot.",
        "parameters": [
          {
            "name": "casinoJackpotId",
            "in": "path",
            "description": "The unique identifier of the jackpot to adjust.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the new amount and optional reason for adjustment.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdjustJackpotRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AdjustJackpotRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AdjustJackpotRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Jackpot adjusted successfully.",
            "content": {
              "text/plain": {
                "schema": { }
              },
              "application/json": {
                "schema": { }
              },
              "text/json": {
                "schema": { }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Client is not authorized to access this resource.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Jackpot not found.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "An internal server error occurred.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/safe/endofday": {
      "post": {
        "tags": [
          "Safe"
        ],
        "summary": "Create End Of Day for a given date and casino.",
        "requestBody": {
          "description": "Contains casino ID, date, and client-provided totals for validation.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEndOfDayRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEndOfDayRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEndOfDayRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "End Of Day created successfully.",
            "content": {
              "text/plain": {
                "schema": { }
              },
              "application/json": {
                "schema": { }
              },
              "text/json": {
                "schema": { }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters or totals mismatch.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/EndOfDayTotalsMismatchException"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EndOfDayTotalsMismatchException"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EndOfDayTotalsMismatchException"
                }
              }
            }
          },
          "403": {
            "description": "Client is not authorized to access this resource.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "An internal server error occurred.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/safe/endofday/{endOfDayId}": {
      "put": {
        "tags": [
          "Safe"
        ],
        "summary": "Adjust an existing End Of Day run and regenerate SAFE file.",
        "parameters": [
          {
            "name": "endOfDayId",
            "in": "path",
            "description": "The unique identifier of the End Of Day to adjust.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains casino ID and updated client totals.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdjustEndOfDayRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AdjustEndOfDayRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AdjustEndOfDayRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "End Of Day adjusted successfully.",
            "content": {
              "text/plain": {
                "schema": { }
              },
              "application/json": {
                "schema": { }
              },
              "text/json": {
                "schema": { }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters or totals mismatch.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Client is not authorized to access this resource.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "End Of Day not found.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "An internal server error occurred.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ActivateAccountRequest": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "newPassword": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "AddressInfo": {
        "type": "object",
        "properties": {
          "streetName": {
            "type": "string",
            "description": "Street name.",
            "nullable": true
          },
          "streetNumber": {
            "type": "string",
            "description": "Street number.",
            "nullable": true
          },
          "floor": {
            "type": "string",
            "description": "Floor number, if present.",
            "nullable": true
          },
          "unit": {
            "type": "string",
            "description": "Unit or apartment number, if present.",
            "nullable": true
          },
          "careOfName": {
            "type": "string",
            "description": "Care-of name, if present.",
            "nullable": true
          },
          "zipCode": {
            "type": "string",
            "description": "Postal/ZIP code.",
            "nullable": true
          },
          "zipName": {
            "type": "string",
            "description": "ZIP name (postal district name).",
            "nullable": true
          },
          "cityName": {
            "type": "string",
            "description": "City name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AdjustEndOfDayRequest": {
        "type": "object",
        "properties": {
          "clientTotals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndOfDayTotalsDto"
            },
            "description": "Updated aggregated totals per product category and currency."
          }
        },
        "additionalProperties": false,
        "example": {
          "clientTotals": [
            {
              "productCategory": "CasinoSinglePlayer",
              "currency": "DKK",
              "totalStake": 102.5,
              "totalWin": 50,
              "totalJackpotContribution": 3,
              "totalCommissionRake": 10.5,
              "totalNumberOfGames": 300
            }
          ]
        }
      },
      "AdjustJackpotRequest": {
        "type": "object",
        "properties": {
          "casinoId": {
            "type": "string",
            "description": "Casino/platform identifier (must match the original jackpot registration)."
          },
          "totalAmount": {
            "type": "number",
            "description": "New total jackpot amount after adjustment.",
            "format": "double"
          },
          "commission": {
            "type": "number",
            "description": "New commission / rake value after adjustment. Null if unchanged or none.",
            "format": "double",
            "nullable": true
          },
          "winners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JackpotWinnerDto"
            },
            "description": "Updated list of jackpot winners and their shares."
          },
          "reason": {
            "type": "string",
            "description": "Human-readable reason for the adjustment (for audit/debugging).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "casinoId": "casino-001",
          "totalAmount": 2550,
          "commission": 0,
          "winners": [
            {
              "playerId": "player-67890",
              "amount": 2550
            }
          ],
          "reason": "Updated due to correction in payout calculation"
        }
      },
      "AdminForceCreateEndOfDayRequest": {
        "type": "object",
        "properties": {
          "productCategory": {
            "$ref": "#/components/schemas/SafeProductCategory"
          },
          "currency": {
            "type": "string"
          },
          "numberOfGames": {
            "type": "integer",
            "format": "int64"
          },
          "stakeGames": {
            "type": "number",
            "format": "double"
          },
          "winnings": {
            "type": "number",
            "format": "double"
          },
          "jackpotContribution": {
            "type": "number",
            "format": "double"
          },
          "commissionRake": {
            "type": "number",
            "format": "double"
          },
          "reason": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "AdminReplaceEndOfDayRequest": {
        "type": "object",
        "properties": {
          "numberOfGames": {
            "type": "integer",
            "format": "int64"
          },
          "stakeGames": {
            "type": "number",
            "format": "double"
          },
          "winnings": {
            "type": "number",
            "format": "double"
          },
          "jackpotContribution": {
            "type": "number",
            "format": "double"
          },
          "commissionRake": {
            "type": "number",
            "format": "double"
          },
          "reason": {
            "type": "string"
          },
          "dgaAgreementConfirmed": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Assembly": {
        "type": "object",
        "properties": {
          "definedTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TypeInfo"
            },
            "readOnly": true
          },
          "exportedTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Type"
            },
            "readOnly": true
          },
          "codeBase": {
            "type": "string",
            "nullable": true,
            "readOnly": true,
            "deprecated": true
          },
          "entryPoint": {
            "$ref": "#/components/schemas/MethodInfo"
          },
          "fullName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "imageRuntimeVersion": {
            "type": "string",
            "readOnly": true
          },
          "isDynamic": {
            "type": "boolean",
            "readOnly": true
          },
          "location": {
            "type": "string",
            "readOnly": true
          },
          "reflectionOnly": {
            "type": "boolean",
            "readOnly": true
          },
          "isCollectible": {
            "type": "boolean",
            "readOnly": true
          },
          "isFullyTrusted": {
            "type": "boolean",
            "readOnly": true
          },
          "customAttributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomAttributeData"
            },
            "readOnly": true
          },
          "escapedCodeBase": {
            "type": "string",
            "readOnly": true,
            "deprecated": true
          },
          "manifestModule": {
            "$ref": "#/components/schemas/Module"
          },
          "modules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Module"
            },
            "readOnly": true
          },
          "globalAssemblyCache": {
            "type": "boolean",
            "readOnly": true,
            "deprecated": true
          },
          "hostContext": {
            "type": "integer",
            "format": "int64",
            "readOnly": true
          },
          "securityRuleSet": {
            "$ref": "#/components/schemas/SecurityRuleSet"
          }
        },
        "additionalProperties": false
      },
      "AssignSafeConfigurationRequest": {
        "type": "object",
        "properties": {
          "safeConfigurationId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AuditCategory": {
        "enum": [
          "Rofus",
          "Cpr",
          "Pep",
          "Safe",
          "Identity",
          "Other"
        ],
        "type": "string"
      },
      "AuditInfo": {
        "type": "object",
        "properties": {
          "externalReference": {
            "type": "string",
            "description": "Client-provided opaque identifier used to correlate requests and audit entries (e.g. session id, broker transaction id, or operator reference). This value appears in audit logs and can be used to search for related activity."
          },
          "context": {
            "type": "string",
            "description": "Optional context string to further categorize the operation (for example: 'user-login', 'identity-verification', 'pep-check', or 'safe-report'). Useful for filtering and producing human-readable audit summaries.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "externalReference": "customer-123",
          "context": "user-login"
        }
      },
      "AuditRecordAdminDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "clientName": {
            "type": "string"
          },
          "externalReference": {
            "type": "string"
          },
          "context": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "$ref": "#/components/schemas/AuditCategory"
          },
          "operation": {
            "type": "string"
          },
          "performedAt": {
            "type": "string",
            "format": "date-time"
          },
          "resultSummary": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AuditRecordSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "clientName": {
            "type": "string",
            "nullable": true
          },
          "externalReference": {
            "type": "string"
          },
          "context": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "$ref": "#/components/schemas/AuditCategory"
          },
          "operation": {
            "type": "string"
          },
          "performedAt": {
            "type": "string",
            "format": "date-time"
          },
          "resultSummary": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AuditRecordSummaryPagedResult": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AuditRecordSummary"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "AuthLevel": {
        "enum": [
          "Normal",
          "Fresh"
        ],
        "type": "string",
        "description": "Authentication freshness level.\n\nPossible values:\n- Normal: Allows reuse of an existing SSO session if available.\n- Fresh: Forces the user to actively re-authenticate, even if an SSO session exists.\n\nDefault: Fresh."
      },
      "BrokerCapability": {
        "enum": [
          "None",
          "Identity",
          "Cpr",
          "All"
        ],
        "type": "string"
      },
      "BrokerProfile": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "companyId": {
            "type": "string",
            "format": "uuid"
          },
          "company": {
            "$ref": "#/components/schemas/Company"
          },
          "brokerType": {
            "$ref": "#/components/schemas/BrokerType"
          },
          "oidcClientId": {
            "type": "string"
          },
          "oidcClientSecret": {
            "type": "string"
          },
          "apiClientId": {
            "type": "string",
            "nullable": true
          },
          "apiClientSecret": {
            "type": "string",
            "nullable": true
          },
          "clients": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientBrokerProfile"
            }
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "BrokerType": {
        "enum": [
          "MitId",
          "BankIdNo",
          "BankIdSe",
          "Eidas"
        ],
        "type": "string"
      },
      "CallingConventions": {
        "enum": [
          "Standard",
          "VarArgs",
          "Any",
          "HasThis",
          "ExplicitThis"
        ],
        "type": "string"
      },
      "CancelSessionRequest": {
        "type": "object",
        "properties": {
          "casinoSessionId": {
            "type": "string",
            "description": "External session identifier from the casino/platform."
          },
          "reason": {
            "type": "string",
            "description": "Optional human-readable reason for cancelling the session.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "casinoSessionId": "session-12345",
          "reason": "User requested cancellation"
        }
      },
      "CancelSessionResponse": {
        "type": "object",
        "properties": {
          "casinoSessionId": {
            "type": "string",
            "description": "External session identifier from the casino/platform."
          },
          "cancelled": {
            "type": "boolean",
            "description": "Indicates whether the session is now cancelled (idempotent)."
          }
        },
        "additionalProperties": false,
        "example": {
          "casinoSessionId": "session-12345",
          "cancelled": true
        }
      },
      "CategoryUsageDto": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string"
          },
          "count": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Client": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "clientApiKey": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "auditRetentionYears": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "companyId": {
            "type": "string",
            "format": "uuid"
          },
          "company": {
            "$ref": "#/components/schemas/Company"
          },
          "safeConfigurationId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "safeConfiguration": {
            "$ref": "#/components/schemas/SafeConfiguration"
          },
          "supplierName": {
            "type": "string",
            "nullable": true
          },
          "brokerProfiles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientBrokerProfile"
            }
          },
          "usages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Usage"
            }
          },
          "safeSessions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SafeSession"
            }
          },
          "safeEndOfDayReports": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SafeEndOfDayReport"
            }
          },
          "safeJackpots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SafeJackpot"
            }
          }
        },
        "additionalProperties": false
      },
      "ClientBrokerProfile": {
        "type": "object",
        "properties": {
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "client": {
            "$ref": "#/components/schemas/Client"
          },
          "brokerProfileId": {
            "type": "string",
            "format": "uuid"
          },
          "brokerProfile": {
            "$ref": "#/components/schemas/BrokerProfile"
          },
          "assignedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "ClientUsageDto": {
        "type": "object",
        "properties": {
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "clientName": {
            "type": "string"
          },
          "count": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Company": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "billingEmail": {
            "type": "string",
            "nullable": true
          },
          "opsEmail": {
            "type": "string",
            "nullable": true
          },
          "addressLine1": {
            "type": "string",
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "isActive": {
            "type": "boolean"
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CompanyUser"
            }
          },
          "clients": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Client"
            }
          }
        },
        "additionalProperties": false
      },
      "CompanyRole": {
        "enum": [
          "ReadOnly",
          "Admin",
          "Billing"
        ],
        "type": "string"
      },
      "CompanyUser": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "companyId": {
            "type": "string",
            "format": "uuid"
          },
          "company": {
            "$ref": "#/components/schemas/Company"
          },
          "email": {
            "type": "string"
          },
          "passwordHash": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "deletedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CompanyUserRole"
            }
          }
        },
        "additionalProperties": false
      },
      "CompanyUserRole": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "companyUserId": {
            "type": "string",
            "format": "uuid"
          },
          "companyUser": {
            "$ref": "#/components/schemas/CompanyUser"
          },
          "role": {
            "$ref": "#/components/schemas/CompanyRole"
          }
        },
        "additionalProperties": false
      },
      "ComputedEodTotalsDto": {
        "type": "object",
        "properties": {
          "productCategory": {
            "$ref": "#/components/schemas/SafeProductCategory"
          },
          "currencyCode": {
            "type": "string"
          },
          "numberOfGames": {
            "type": "integer",
            "format": "int64"
          },
          "stakeGames": {
            "type": "number",
            "format": "double"
          },
          "winnings": {
            "type": "number",
            "format": "double"
          },
          "jackpotContribution": {
            "type": "number",
            "format": "double"
          },
          "commissionRake": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "ConfirmPasswordResetRequest": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "newPassword": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "ConstructorInfo": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "readOnly": true
          },
          "declaringType": {
            "$ref": "#/components/schemas/Type"
          },
          "reflectedType": {
            "$ref": "#/components/schemas/Type"
          },
          "module": {
            "$ref": "#/components/schemas/Module"
          },
          "customAttributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomAttributeData"
            },
            "readOnly": true
          },
          "isCollectible": {
            "type": "boolean",
            "readOnly": true
          },
          "metadataToken": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "attributes": {
            "$ref": "#/components/schemas/MethodAttributes"
          },
          "methodImplementationFlags": {
            "$ref": "#/components/schemas/MethodImplAttributes"
          },
          "callingConvention": {
            "$ref": "#/components/schemas/CallingConventions"
          },
          "isAbstract": {
            "type": "boolean",
            "readOnly": true
          },
          "isConstructor": {
            "type": "boolean",
            "readOnly": true
          },
          "isFinal": {
            "type": "boolean",
            "readOnly": true
          },
          "isHideBySig": {
            "type": "boolean",
            "readOnly": true
          },
          "isSpecialName": {
            "type": "boolean",
            "readOnly": true
          },
          "isStatic": {
            "type": "boolean",
            "readOnly": true
          },
          "isVirtual": {
            "type": "boolean",
            "readOnly": true
          },
          "isAssembly": {
            "type": "boolean",
            "readOnly": true
          },
          "isFamily": {
            "type": "boolean",
            "readOnly": true
          },
          "isFamilyAndAssembly": {
            "type": "boolean",
            "readOnly": true
          },
          "isFamilyOrAssembly": {
            "type": "boolean",
            "readOnly": true
          },
          "isPrivate": {
            "type": "boolean",
            "readOnly": true
          },
          "isPublic": {
            "type": "boolean",
            "readOnly": true
          },
          "isConstructedGenericMethod": {
            "type": "boolean",
            "readOnly": true
          },
          "isGenericMethod": {
            "type": "boolean",
            "readOnly": true
          },
          "isGenericMethodDefinition": {
            "type": "boolean",
            "readOnly": true
          },
          "containsGenericParameters": {
            "type": "boolean",
            "readOnly": true
          },
          "methodHandle": {
            "$ref": "#/components/schemas/RuntimeMethodHandle"
          },
          "isSecurityCritical": {
            "type": "boolean",
            "readOnly": true
          },
          "isSecuritySafeCritical": {
            "type": "boolean",
            "readOnly": true
          },
          "isSecurityTransparent": {
            "type": "boolean",
            "readOnly": true
          },
          "memberType": {
            "$ref": "#/components/schemas/MemberTypes"
          }
        },
        "additionalProperties": false
      },
      "CprLookupRequest": {
        "type": "object",
        "properties": {
          "audit": {
            "$ref": "#/components/schemas/AuditInfo"
          },
          "cpr": {
            "type": "string",
            "description": "A valid 10-digit Danish CPR number."
          }
        },
        "additionalProperties": false,
        "example": {
          "audit": {
            "externalReference": "customer-123",
            "context": "user-login"
          },
          "cpr": "0102031234"
        }
      },
      "CprLookupResponse": {
        "type": "object",
        "properties": {
          "person": {
            "$ref": "#/components/schemas/CprPersonSnapshot"
          }
        },
        "additionalProperties": false,
        "example": {
          "person": {
            "cprNumber": "0102031234",
            "name": {
              "givenName": "NICKLAS",
              "middleName": "PETER",
              "surname": "HANSEN"
            },
            "address": {
              "streetName": "Testvej",
              "streetNumber": "42",
              "floor": "2",
              "unit": "th",
              "careOfName": null,
              "zipCode": "2100",
              "zipName": "København Ø",
              "cityName": "København"
            },
            "personStatus": "Active",
            "isNameAddressProtected": false,
            "retrievedAtUtc": "2026-04-18T12:21:50.2866265Z"
          }
        }
      },
      "CprMatchVerdict": {
        "enum": [
          "Match",
          "PartialMatch",
          "NoMatch",
          "NotFound",
          "Error"
        ],
        "type": "string"
      },
      "CprPersonSnapshot": {
        "type": "object",
        "properties": {
          "cprNumber": {
            "type": "string",
            "description": "The CPR number that was looked up."
          },
          "name": {
            "$ref": "#/components/schemas/PersonName"
          },
          "address": {
            "$ref": "#/components/schemas/AddressInfo"
          },
          "personStatus": {
            "$ref": "#/components/schemas/PersonStatus"
          },
          "isNameAddressProtected": {
            "type": "boolean",
            "description": "Indicates if the person's name and address are protected in CPR."
          },
          "retrievedAtUtc": {
            "type": "string",
            "description": "Timestamp (UTC) for when this CPR snapshot was retrieved.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "example": {
          "cprNumber": "0102031234",
          "name": {
            "givenName": "NICKLAS",
            "middleName": "PETER",
            "surname": "HANSEN"
          },
          "address": {
            "streetName": "Testvej",
            "streetNumber": "42",
            "floor": "2",
            "unit": "th",
            "careOfName": null,
            "zipCode": "2100",
            "zipName": "København Ø",
            "cityName": "København"
          },
          "personStatus": "Active",
          "isNameAddressProtected": false,
          "retrievedAtUtc": "2026-04-18T12:21:50.2866265Z"
        }
      },
      "CprValidationEvidence": {
        "type": "object",
        "properties": {
          "normalizedCprName": {
            "type": "string",
            "description": "Normalized full name as obtained from CPR."
          },
          "normalizedCustomerName": {
            "type": "string",
            "description": "Normalized full name as provided by the customer."
          },
          "normalizedCprAddress": {
            "type": "string",
            "description": "Normalized full address as obtained from CPR."
          },
          "normalizedCustomerAddress": {
            "type": "string",
            "description": "Normalized full address as provided by the customer."
          },
          "cprDateOfBirth": {
            "type": "string",
            "description": "Date of birth as obtained from CPR.",
            "format": "date"
          }
        },
        "additionalProperties": false
      },
      "CprValidationRequest": {
        "type": "object",
        "properties": {
          "audit": {
            "$ref": "#/components/schemas/AuditInfo"
          },
          "cpr": {
            "type": "string",
            "description": "The customer's CPR number."
          },
          "firstNames": {
            "type": "string",
            "description": "Customer's provided first and middle names."
          },
          "lastName": {
            "type": "string",
            "description": "Customer's provided last name."
          },
          "street": {
            "type": "string",
            "description": "Customer's provided street name."
          },
          "houseNumber": {
            "type": "string",
            "description": "Customer's provided house number."
          },
          "floor": {
            "type": "string",
            "description": "Customer's provided floor (if any).",
            "nullable": true
          },
          "door": {
            "type": "string",
            "description": "Customer's provided door or side (if any).",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "description": "Customer's provided postal code."
          },
          "city": {
            "type": "string",
            "description": "Customer's provided city."
          },
          "dateOfBirth": {
            "type": "string",
            "description": "Customer's provided date of birth.",
            "format": "date"
          }
        },
        "additionalProperties": false,
        "example": {
          "audit": {
            "externalReference": "customer-123",
            "context": "user-login"
          },
          "cpr": "0102031234",
          "firstNames": "Nicklas",
          "lastName": "Hansen",
          "street": "Testvej",
          "houseNumber": "12",
          "floor": "2",
          "door": "tv",
          "postalCode": "2100",
          "city": "København Ø",
          "dateOfBirth": "1990-01-01"
        }
      },
      "CprValidationResponse": {
        "type": "object",
        "properties": {
          "verdict": {
            "$ref": "#/components/schemas/CprMatchVerdict"
          },
          "overallScore": {
            "type": "integer",
            "description": "0–100 score indicating the overall quality of the match.",
            "format": "int32"
          },
          "name": {
            "$ref": "#/components/schemas/FieldComparison"
          },
          "address": {
            "$ref": "#/components/schemas/FieldComparison"
          },
          "dateOfBirth": {
            "$ref": "#/components/schemas/FieldComparison"
          },
          "risk": {
            "$ref": "#/components/schemas/RiskAssessment"
          },
          "evidence": {
            "$ref": "#/components/schemas/CprValidationEvidence"
          }
        },
        "additionalProperties": false,
        "example": {
          "verdict": "PartialMatch",
          "overallScore": 82,
          "name": {
            "score": 95,
            "match": true,
            "comment": "Minor spelling difference in first name."
          },
          "address": {
            "score": 78,
            "match": true,
            "comment": "Street name slightly different."
          },
          "dateOfBirth": {
            "score": 100,
            "match": true,
            "comment": null
          },
          "risk": {
            "level": "Medium",
            "reasons": [
              "Address mismatch on street name."
            ]
          },
          "evidence": {
            "normalizedCprName": "NICKLAS HANSEN",
            "normalizedCustomerName": "NICKLAS HANSEN",
            "normalizedCprAddress": "TESTVEJ 12 2 TV 2100 KOBENHAVN O",
            "normalizedCustomerAddress": "TESTVJ 12 2 TV 2100 KOBENHAVN O",
            "cprDateOfBirth": "1990-01-01"
          }
        }
      },
      "CreateBrokerProfileRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "brokerType": {
            "$ref": "#/components/schemas/BrokerType"
          },
          "oidcClientId": {
            "type": "string"
          },
          "oidcClientSecret": {
            "type": "string"
          },
          "apiClientId": {
            "type": "string",
            "nullable": true
          },
          "apiClientSecret": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CreateClientRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "auditRetentionYears": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CreateCompanyUserRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "CreateEndOfDayRequest": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "The reporting (business) date the EOD report covers.",
            "format": "date"
          },
          "clientTotals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndOfDayTotalsDto"
            },
            "description": "Aggregated totals per product category and currency for the given date."
          }
        },
        "additionalProperties": false,
        "example": {
          "date": "2026-04-17",
          "clientTotals": [
            {
              "productCategory": "CasinoSinglePlayer",
              "currency": "DKK",
              "totalStake": 100,
              "totalWin": 50,
              "totalJackpotContribution": 2,
              "totalCommissionRake": 10.5,
              "totalNumberOfGames": 300
            }
          ]
        }
      },
      "CreateSafeConfigurationRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "safeWebsiteUrl": {
            "type": "string"
          },
          "licenseCertificateId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CreateSessionJackpotContribution": {
        "type": "object",
        "properties": {
          "jackpotId": {
            "type": "string",
            "description": "External jackpot identifier to which this contribution belongs."
          },
          "amount": {
            "type": "number",
            "description": "Amount contributed from this session to the specified jackpot.",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "example": {
          "jackpotId": "jackpot-1234",
          "amount": 0.25
        }
      },
      "CreateSessionRequest": {
        "type": "object",
        "properties": {
          "casinoSessionId": {
            "type": "string",
            "description": "External session identifier from the casino/platform (SAFE: SpilTransaktionIdentifikation)."
          },
          "playerRef": {
            "type": "string",
            "description": "Player reference / identifier from the casino/platform (SAFE: SpillerInformationIdentifikation)."
          },
          "gameName": {
            "type": "string",
            "description": "Human-readable game name (SAFE: SpilProduktNavn)."
          },
          "gameCategory": {
            "$ref": "#/components/schemas/SafeGameCategory"
          },
          "channel": {
            "$ref": "#/components/schemas/SafeGameChannel"
          },
          "productCategory": {
            "$ref": "#/components/schemas/SafeProductCategory"
          },
          "currency": {
            "type": "string",
            "description": "Currency code (ISO 4217), e.g. DKK (SAFE: ValutaOplysningKode)."
          },
          "startedAt": {
            "type": "string",
            "description": "Session start timestamp (SAFE: SpilKoebDatoTid). UTC.",
            "format": "date-time"
          },
          "endedAt": {
            "type": "string",
            "description": "Session end timestamp (SAFE: SpilFaktiskSlutDatoTid). UTC.",
            "format": "date-time"
          },
          "numberOfGames": {
            "type": "integer",
            "description": "Number of games played in this session (aggregated to SAFE AntalSpil/AntalTræk).",
            "format": "int64"
          },
          "openNetwork": {
            "type": "boolean",
            "description": "Indicates whether the product runs on an open network (Internet) or closed network (SAFE: SpilProduktAabentNetvaerk)."
          },
          "stakeGames": {
            "type": "number",
            "description": "Total stake amount placed on games in this session (SAFE: KasinospilIndskudSpil).",
            "format": "double"
          },
          "winningsGames": {
            "type": "number",
            "description": "Total winnings paid out in this session (SAFE: KasinospilGevinstSpil).",
            "format": "double"
          },
          "commissionRake": {
            "type": "number",
            "description": "Total commission/rake taken in this session (SAFE: KasinospilKommission).",
            "format": "double"
          },
          "jackpotContributions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateSessionJackpotContribution"
            },
            "description": "Optional breakdown of jackpot contributions from this session, grouped per jackpot pool. Summed to SAFE: KasinospilIndskudJackpot.",
            "nullable": true
          },
          "rngId": {
            "type": "string",
            "description": "Identifier of the random number generator used for this session (TilfældighedGeneratorIdentifikation)."
          },
          "rngSoftwareId": {
            "type": "string",
            "description": "Software identifier / version of the RNG (TilfældighedGeneratorSoftwareId)."
          }
        },
        "additionalProperties": false,
        "example": {
          "casinoSessionId": "session-12345",
          "playerRef": "player-67890",
          "gameName": "Cleopatra's Fortune",
          "gameCategory": "Slots",
          "channel": "Internet",
          "productCategory": "CasinoSinglePlayer",
          "currency": "DKK",
          "startedAt": "2026-04-18T11:21:50.4875617+00:00",
          "endedAt": "2026-04-18T12:21:50.487567+00:00",
          "numberOfGames": 100,
          "openNetwork": false,
          "stakeGames": 50,
          "winningsGames": 45,
          "commissionRake": 0,
          "jackpotContributions": [
            {
              "jackpotId": "jackpot-1234",
              "amount": 0.25
            }
          ],
          "rngId": "RNG-001",
          "rngSoftwareId": "GameServer-v1.2.3"
        }
      },
      "CreateSessionResponse": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "description": "Internal SAFE session identifier.",
            "format": "uuid"
          },
          "casinoSessionId": {
            "type": "string",
            "description": "External session identifier from the casino/platform."
          }
        },
        "additionalProperties": false,
        "example": {
          "sessionId": "9a7707ae-1005-49a3-a2f4-f6ce98799f83",
          "casinoSessionId": "session-12345"
        }
      },
      "CustomAttributeData": {
        "type": "object",
        "properties": {
          "attributeType": {
            "$ref": "#/components/schemas/Type"
          },
          "constructor": {
            "$ref": "#/components/schemas/ConstructorInfo"
          },
          "constructorArguments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomAttributeTypedArgument"
            },
            "readOnly": true
          },
          "namedArguments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomAttributeNamedArgument"
            },
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "CustomAttributeNamedArgument": {
        "type": "object",
        "properties": {
          "memberInfo": {
            "$ref": "#/components/schemas/MemberInfo"
          },
          "typedValue": {
            "$ref": "#/components/schemas/CustomAttributeTypedArgument"
          },
          "memberName": {
            "type": "string",
            "readOnly": true
          },
          "isField": {
            "type": "boolean",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "CustomAttributeTypedArgument": {
        "type": "object",
        "properties": {
          "argumentType": {
            "$ref": "#/components/schemas/Type"
          },
          "value": {
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DailyUsageDto": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "identityCount": {
            "type": "integer",
            "format": "int32"
          },
          "pepCount": {
            "type": "integer",
            "format": "int32"
          },
          "rofusCount": {
            "type": "integer",
            "format": "int32"
          },
          "safeCount": {
            "type": "integer",
            "format": "int32"
          },
          "cprCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "EndOfDayTotalsDiff": {
        "type": "object",
        "properties": {
          "productCategory": {
            "$ref": "#/components/schemas/SafeProductCategory"
          },
          "currency": {
            "type": "string"
          },
          "expectedStake": {
            "type": "number",
            "format": "double"
          },
          "actualStake": {
            "type": "number",
            "format": "double"
          },
          "expectedWin": {
            "type": "number",
            "format": "double"
          },
          "actualWin": {
            "type": "number",
            "format": "double"
          },
          "expectedJackpotContribution": {
            "type": "number",
            "format": "double"
          },
          "actualJackpotContribution": {
            "type": "number",
            "format": "double"
          },
          "expectedComissionRake": {
            "type": "number",
            "format": "double"
          },
          "actualComissionRake": {
            "type": "number",
            "format": "double"
          },
          "expectedNumberOfGames": {
            "type": "integer",
            "format": "int64"
          },
          "actualNumberOfGames": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "EndOfDayTotalsDto": {
        "type": "object",
        "properties": {
          "productCategory": {
            "$ref": "#/components/schemas/SafeProductCategory"
          },
          "currency": {
            "type": "string",
            "description": "Currency code (ISO 4217), e.g. DKK."
          },
          "totalStake": {
            "type": "number",
            "description": "Total stake amount for the day (SAFE: EndOfDayRapportIndskudSpil).",
            "format": "double"
          },
          "totalWin": {
            "type": "number",
            "description": "Total winnings paid out for the day (SAFE: EndOfDayRapportGevinster).",
            "format": "double"
          },
          "totalJackpotContribution": {
            "type": "number",
            "description": "Total amount contributed to jackpots for the day (SAFE: EndOfDayRapportIndskudJackpot).",
            "format": "double"
          },
          "totalCommissionRake": {
            "type": "number",
            "description": "Total commission / rake for the day (SAFE: EndOfDayRapportKommissionRake).",
            "format": "double"
          },
          "totalNumberOfGames": {
            "type": "integer",
            "description": "Total number of games played for the day (SAFE: EndOfDayRapportAntalSpil).",
            "format": "int64"
          }
        },
        "additionalProperties": false,
        "example": {
          "productCategory": "CasinoSinglePlayer",
          "currency": "DKK",
          "totalStake": 100,
          "totalWin": 50,
          "totalJackpotContribution": 2,
          "totalCommissionRake": 10.5,
          "totalNumberOfGames": 300
        }
      },
      "EndOfDayTotalsMismatchException": {
        "type": "object",
        "properties": {
          "targetSite": {
            "$ref": "#/components/schemas/MethodBase"
          },
          "message": {
            "type": "string",
            "readOnly": true
          },
          "data": {
            "type": "object",
            "additionalProperties": { },
            "readOnly": true
          },
          "innerException": {
            "$ref": "#/components/schemas/Exception"
          },
          "helpLink": {
            "type": "string",
            "nullable": true
          },
          "source": {
            "type": "string",
            "nullable": true
          },
          "hResult": {
            "type": "integer",
            "format": "int32"
          },
          "stackTrace": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "diffs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndOfDayTotalsDiff"
            }
          }
        },
        "additionalProperties": false
      },
      "EventAttributes": {
        "enum": [
          "None",
          "SpecialName",
          "RTSpecialName"
        ],
        "type": "string"
      },
      "EventInfo": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "readOnly": true
          },
          "declaringType": {
            "$ref": "#/components/schemas/Type"
          },
          "reflectedType": {
            "$ref": "#/components/schemas/Type"
          },
          "module": {
            "$ref": "#/components/schemas/Module"
          },
          "customAttributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomAttributeData"
            },
            "readOnly": true
          },
          "isCollectible": {
            "type": "boolean",
            "readOnly": true
          },
          "metadataToken": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "memberType": {
            "$ref": "#/components/schemas/MemberTypes"
          },
          "attributes": {
            "$ref": "#/components/schemas/EventAttributes"
          },
          "isSpecialName": {
            "type": "boolean",
            "readOnly": true
          },
          "addMethod": {
            "$ref": "#/components/schemas/MethodInfo"
          },
          "removeMethod": {
            "$ref": "#/components/schemas/MethodInfo"
          },
          "raiseMethod": {
            "$ref": "#/components/schemas/MethodInfo"
          },
          "isMulticast": {
            "type": "boolean",
            "readOnly": true
          },
          "eventHandlerType": {
            "$ref": "#/components/schemas/Type"
          }
        },
        "additionalProperties": false
      },
      "Exception": {
        "type": "object",
        "properties": {
          "targetSite": {
            "$ref": "#/components/schemas/MethodBase"
          },
          "message": {
            "type": "string",
            "readOnly": true
          },
          "data": {
            "type": "object",
            "additionalProperties": { },
            "readOnly": true
          },
          "innerException": {
            "$ref": "#/components/schemas/Exception"
          },
          "helpLink": {
            "type": "string",
            "nullable": true
          },
          "source": {
            "type": "string",
            "nullable": true
          },
          "hResult": {
            "type": "integer",
            "format": "int32"
          },
          "stackTrace": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "FieldAttributes": {
        "enum": [
          "PrivateScope",
          "Private",
          "FamANDAssem",
          "Assembly",
          "Family",
          "FamORAssem",
          "Public",
          "FieldAccessMask",
          "Static",
          "InitOnly",
          "Literal",
          "NotSerialized",
          "HasFieldRVA",
          "SpecialName",
          "RTSpecialName",
          "HasFieldMarshal",
          "PinvokeImpl",
          "HasDefault",
          "ReservedMask"
        ],
        "type": "string"
      },
      "FieldComparison": {
        "type": "object",
        "properties": {
          "score": {
            "type": "integer",
            "description": "0–100 score for this specific field.",
            "format": "int32"
          },
          "match": {
            "type": "boolean",
            "description": "Indicates if the field is considered a match according to internal thresholds."
          },
          "comment": {
            "type": "string",
            "description": "Optional human-readable explanation of the comparison.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FieldInfo": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "readOnly": true
          },
          "declaringType": {
            "$ref": "#/components/schemas/Type"
          },
          "reflectedType": {
            "$ref": "#/components/schemas/Type"
          },
          "module": {
            "$ref": "#/components/schemas/Module"
          },
          "customAttributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomAttributeData"
            },
            "readOnly": true
          },
          "isCollectible": {
            "type": "boolean",
            "readOnly": true
          },
          "metadataToken": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "memberType": {
            "$ref": "#/components/schemas/MemberTypes"
          },
          "attributes": {
            "$ref": "#/components/schemas/FieldAttributes"
          },
          "fieldType": {
            "$ref": "#/components/schemas/Type"
          },
          "isInitOnly": {
            "type": "boolean",
            "readOnly": true
          },
          "isLiteral": {
            "type": "boolean",
            "readOnly": true
          },
          "isNotSerialized": {
            "type": "boolean",
            "readOnly": true,
            "deprecated": true
          },
          "isPinvokeImpl": {
            "type": "boolean",
            "readOnly": true
          },
          "isSpecialName": {
            "type": "boolean",
            "readOnly": true
          },
          "isStatic": {
            "type": "boolean",
            "readOnly": true
          },
          "isAssembly": {
            "type": "boolean",
            "readOnly": true
          },
          "isFamily": {
            "type": "boolean",
            "readOnly": true
          },
          "isFamilyAndAssembly": {
            "type": "boolean",
            "readOnly": true
          },
          "isFamilyOrAssembly": {
            "type": "boolean",
            "readOnly": true
          },
          "isPrivate": {
            "type": "boolean",
            "readOnly": true
          },
          "isPublic": {
            "type": "boolean",
            "readOnly": true
          },
          "isSecurityCritical": {
            "type": "boolean",
            "readOnly": true
          },
          "isSecuritySafeCritical": {
            "type": "boolean",
            "readOnly": true
          },
          "isSecurityTransparent": {
            "type": "boolean",
            "readOnly": true
          },
          "fieldHandle": {
            "$ref": "#/components/schemas/RuntimeFieldHandle"
          }
        },
        "additionalProperties": false
      },
      "GenericParameterAttributes": {
        "enum": [
          "None",
          "Covariant",
          "Contravariant",
          "VarianceMask",
          "ReferenceTypeConstraint",
          "NotNullableValueTypeConstraint",
          "DefaultConstructorConstraint",
          "SpecialConstraintMask",
          "AllowByRefLike"
        ],
        "type": "string"
      },
      "ICustomAttributeProvider": {
        "type": "object",
        "additionalProperties": false
      },
      "IdentityBrokerDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Internal broker ID, used in API routes (e.g. 'mitid')."
          },
          "displayName": {
            "type": "string",
            "description": "Display name of the broker (e.g. 'MitID')."
          },
          "enabled": {
            "type": "boolean",
            "description": "Indicates whether this broker is enabled for the client."
          },
          "requiresSeparateAgreement": {
            "type": "boolean",
            "description": "Indicates whether this broker requires a separate client-specific agreement and configuration."
          },
          "capabilities": {
            "$ref": "#/components/schemas/BrokerCapability"
          }
        },
        "additionalProperties": false
      },
      "IdentityResultRequest": {
        "type": "object",
        "properties": {
          "audit": {
            "$ref": "#/components/schemas/AuditInfo"
          },
          "sessionId": {
            "type": "string",
            "description": "The identification session ID as returned from the start endpoint."
          }
        },
        "additionalProperties": false,
        "example": {
          "audit": {
            "externalReference": "customer-123",
            "context": "user-login"
          },
          "sessionId": "3f4b3b7d3a8d4a21913d0a29b6e78d9f"
        }
      },
      "IdentityValidationResponse": {
        "type": "object",
        "properties": {
          "providerId": {
            "type": "string",
            "description": "Identity provider ID, e.g. 'mitid', 'bankid_no', 'bankid_se', 'eidas'."
          },
          "identityScheme": {
            "type": "string",
            "description": "Logical identity scheme, e.g. 'mitid', 'bankid', 'eidas'."
          },
          "levelOfAssurance": {
            "type": "string",
            "description": "Level of assurance, typically 'low', 'substantial' or 'high'."
          },
          "subject": {
            "type": "string",
            "description": "Stable unique subject identifier from the provider, used as key for the person."
          },
          "name": {
            "type": "string",
            "description": "Full display name of the person, as reported by the provider."
          },
          "givenName": {
            "type": "string",
            "description": "Given name(s), if available.",
            "nullable": true
          },
          "familyName": {
            "type": "string",
            "description": "Family name / surname, if available.",
            "nullable": true
          },
          "dateOfBirth": {
            "type": "string",
            "description": "Date of birth in ISO format (YYYY-MM-DD), if available.",
            "nullable": true
          },
          "country": {
            "type": "string",
            "description": "Country code of the identity (ISO 3166-1 alpha-2, e.g. 'DK').",
            "nullable": true
          },
          "nationalIdentifier": {
            "type": "string",
            "description": "National identifier such as CPR/personnummer, if requested and contractually allowed.",
            "nullable": true
          },
          "age": {
            "type": "integer",
            "description": "Computed age at issuance time, if derivable from date of birth.",
            "format": "int32",
            "nullable": true
          },
          "hasNameAndAddressProtection": {
            "type": "boolean",
            "description": "Indicates if the person's name and address are protected (e.g. in Denmark)."
          },
          "issuedAt": {
            "type": "string",
            "description": "Timestamp (UTC) when the identity assertion was issued by the provider.",
            "format": "date-time"
          },
          "expiresAt": {
            "type": "string",
            "description": "Timestamp (UTC) when the identity assertion expires.",
            "format": "date-time"
          },
          "rawClaims": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional raw claims as key/value pairs, for diagnostics and advanced use-cases.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "providerId": "mitid",
          "identityScheme": "mitid",
          "levelOfAssurance": "substantial",
          "subject": "b516a6fe-8b6c-4d9b-9f3b-213f49c4b3c1",
          "name": "Test Person",
          "givenName": "Test",
          "familyName": "Person",
          "dateOfBirth": "1990-01-01",
          "country": "DK",
          "nationalIdentifier": "0101901234",
          "age": 35,
          "hasNameAndAddressProtection": false,
          "issuedAt": "2026-04-18T12:20:50.3874316+00:00",
          "expiresAt": "2026-04-18T12:26:50.3874334+00:00",
          "rawClaims": {
            "mitid.uuid": "b516a6fe-8b6c-4d9b-9f3b-213f49c4b3c1",
            "mitid.loa": "substantial"
          }
        }
      },
      "IntPtr": {
        "type": "object",
        "additionalProperties": false
      },
      "JackpotWinnerDto": {
        "type": "object",
        "properties": {
          "playerId": {
            "type": "string",
            "description": "Player identifier from the casino/platform."
          },
          "amount": {
            "type": "number",
            "description": "Amount paid to this specific player from the jackpot.",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "example": {
          "playerId": "player-12345",
          "amount": 2500
        }
      },
      "LayoutKind": {
        "enum": [
          "Sequential",
          "Explicit",
          "Auto"
        ],
        "type": "string"
      },
      "LevelOfAssurance": {
        "enum": [
          "Low",
          "Substantial",
          "High"
        ],
        "type": "string",
        "description": "Level of Assurance (LoA) as defined by the eIDAS regulation.\n\nPossible values:\n- Low: Minimal identity verification.\n- Substantial: Moderate identity verification (typical for MitID).\n- High: Strong identity verification, typically requiring enhanced verification steps.\n\nDefault: Substantial."
      },
      "LoginRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "password": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "MemberInfo": {
        "type": "object",
        "properties": {
          "memberType": {
            "$ref": "#/components/schemas/MemberTypes"
          },
          "name": {
            "type": "string",
            "readOnly": true
          },
          "declaringType": {
            "$ref": "#/components/schemas/Type"
          },
          "reflectedType": {
            "$ref": "#/components/schemas/Type"
          },
          "module": {
            "$ref": "#/components/schemas/Module"
          },
          "customAttributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomAttributeData"
            },
            "readOnly": true
          },
          "isCollectible": {
            "type": "boolean",
            "readOnly": true
          },
          "metadataToken": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "MemberTypes": {
        "enum": [
          "Constructor",
          "Event",
          "Field",
          "Method",
          "Property",
          "TypeInfo",
          "Custom",
          "NestedType",
          "All"
        ],
        "type": "string"
      },
      "MethodAttributes": {
        "enum": [
          "PrivateScope",
          "Private",
          "FamANDAssem",
          "Assembly",
          "Family",
          "FamORAssem",
          "Public",
          "MemberAccessMask",
          "UnmanagedExport",
          "Static",
          "Final",
          "Virtual",
          "HideBySig",
          "NewSlot",
          "CheckAccessOnOverride",
          "Abstract",
          "SpecialName",
          "RTSpecialName",
          "PinvokeImpl",
          "HasSecurity",
          "RequireSecObject",
          "ReservedMask"
        ],
        "type": "string"
      },
      "MethodBase": {
        "type": "object",
        "properties": {
          "memberType": {
            "$ref": "#/components/schemas/MemberTypes"
          },
          "name": {
            "type": "string",
            "readOnly": true
          },
          "declaringType": {
            "$ref": "#/components/schemas/Type"
          },
          "reflectedType": {
            "$ref": "#/components/schemas/Type"
          },
          "module": {
            "$ref": "#/components/schemas/Module"
          },
          "customAttributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomAttributeData"
            },
            "readOnly": true
          },
          "isCollectible": {
            "type": "boolean",
            "readOnly": true
          },
          "metadataToken": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "attributes": {
            "$ref": "#/components/schemas/MethodAttributes"
          },
          "methodImplementationFlags": {
            "$ref": "#/components/schemas/MethodImplAttributes"
          },
          "callingConvention": {
            "$ref": "#/components/schemas/CallingConventions"
          },
          "isAbstract": {
            "type": "boolean",
            "readOnly": true
          },
          "isConstructor": {
            "type": "boolean",
            "readOnly": true
          },
          "isFinal": {
            "type": "boolean",
            "readOnly": true
          },
          "isHideBySig": {
            "type": "boolean",
            "readOnly": true
          },
          "isSpecialName": {
            "type": "boolean",
            "readOnly": true
          },
          "isStatic": {
            "type": "boolean",
            "readOnly": true
          },
          "isVirtual": {
            "type": "boolean",
            "readOnly": true
          },
          "isAssembly": {
            "type": "boolean",
            "readOnly": true
          },
          "isFamily": {
            "type": "boolean",
            "readOnly": true
          },
          "isFamilyAndAssembly": {
            "type": "boolean",
            "readOnly": true
          },
          "isFamilyOrAssembly": {
            "type": "boolean",
            "readOnly": true
          },
          "isPrivate": {
            "type": "boolean",
            "readOnly": true
          },
          "isPublic": {
            "type": "boolean",
            "readOnly": true
          },
          "isConstructedGenericMethod": {
            "type": "boolean",
            "readOnly": true
          },
          "isGenericMethod": {
            "type": "boolean",
            "readOnly": true
          },
          "isGenericMethodDefinition": {
            "type": "boolean",
            "readOnly": true
          },
          "containsGenericParameters": {
            "type": "boolean",
            "readOnly": true
          },
          "methodHandle": {
            "$ref": "#/components/schemas/RuntimeMethodHandle"
          },
          "isSecurityCritical": {
            "type": "boolean",
            "readOnly": true
          },
          "isSecuritySafeCritical": {
            "type": "boolean",
            "readOnly": true
          },
          "isSecurityTransparent": {
            "type": "boolean",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "MethodImplAttributes": {
        "enum": [
          "IL",
          "Native",
          "OPTIL",
          "CodeTypeMask",
          "ManagedMask",
          "NoInlining",
          "ForwardRef",
          "Synchronized",
          "NoOptimization",
          "PreserveSig",
          "AggressiveInlining",
          "AggressiveOptimization",
          "InternalCall",
          "Async",
          "MaxMethodImplVal"
        ],
        "type": "string"
      },
      "MethodInfo": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "readOnly": true
          },
          "declaringType": {
            "$ref": "#/components/schemas/Type"
          },
          "reflectedType": {
            "$ref": "#/components/schemas/Type"
          },
          "module": {
            "$ref": "#/components/schemas/Module"
          },
          "customAttributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomAttributeData"
            },
            "readOnly": true
          },
          "isCollectible": {
            "type": "boolean",
            "readOnly": true
          },
          "metadataToken": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "attributes": {
            "$ref": "#/components/schemas/MethodAttributes"
          },
          "methodImplementationFlags": {
            "$ref": "#/components/schemas/MethodImplAttributes"
          },
          "callingConvention": {
            "$ref": "#/components/schemas/CallingConventions"
          },
          "isAbstract": {
            "type": "boolean",
            "readOnly": true
          },
          "isConstructor": {
            "type": "boolean",
            "readOnly": true
          },
          "isFinal": {
            "type": "boolean",
            "readOnly": true
          },
          "isHideBySig": {
            "type": "boolean",
            "readOnly": true
          },
          "isSpecialName": {
            "type": "boolean",
            "readOnly": true
          },
          "isStatic": {
            "type": "boolean",
            "readOnly": true
          },
          "isVirtual": {
            "type": "boolean",
            "readOnly": true
          },
          "isAssembly": {
            "type": "boolean",
            "readOnly": true
          },
          "isFamily": {
            "type": "boolean",
            "readOnly": true
          },
          "isFamilyAndAssembly": {
            "type": "boolean",
            "readOnly": true
          },
          "isFamilyOrAssembly": {
            "type": "boolean",
            "readOnly": true
          },
          "isPrivate": {
            "type": "boolean",
            "readOnly": true
          },
          "isPublic": {
            "type": "boolean",
            "readOnly": true
          },
          "isConstructedGenericMethod": {
            "type": "boolean",
            "readOnly": true
          },
          "isGenericMethod": {
            "type": "boolean",
            "readOnly": true
          },
          "isGenericMethodDefinition": {
            "type": "boolean",
            "readOnly": true
          },
          "containsGenericParameters": {
            "type": "boolean",
            "readOnly": true
          },
          "methodHandle": {
            "$ref": "#/components/schemas/RuntimeMethodHandle"
          },
          "isSecurityCritical": {
            "type": "boolean",
            "readOnly": true
          },
          "isSecuritySafeCritical": {
            "type": "boolean",
            "readOnly": true
          },
          "isSecurityTransparent": {
            "type": "boolean",
            "readOnly": true
          },
          "memberType": {
            "$ref": "#/components/schemas/MemberTypes"
          },
          "returnParameter": {
            "$ref": "#/components/schemas/ParameterInfo"
          },
          "returnType": {
            "$ref": "#/components/schemas/Type"
          },
          "returnTypeCustomAttributes": {
            "$ref": "#/components/schemas/ICustomAttributeProvider"
          }
        },
        "additionalProperties": false
      },
      "Module": {
        "type": "object",
        "properties": {
          "assembly": {
            "$ref": "#/components/schemas/Assembly"
          },
          "fullyQualifiedName": {
            "type": "string",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "readOnly": true
          },
          "mdStreamVersion": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "moduleVersionId": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "scopeName": {
            "type": "string",
            "readOnly": true
          },
          "moduleHandle": {
            "$ref": "#/components/schemas/ModuleHandle"
          },
          "customAttributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomAttributeData"
            },
            "readOnly": true
          },
          "metadataToken": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "ModuleHandle": {
        "type": "object",
        "properties": {
          "mdStreamVersion": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "OperationUsageDto": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string"
          },
          "operation": {
            "type": "string"
          },
          "count": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "PagedAuditAdminResult": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AuditRecordAdminDto"
            }
          }
        },
        "additionalProperties": false
      },
      "PagedSafeEndOfDayResult": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SafeEndOfDayAdminDto"
            }
          }
        },
        "additionalProperties": false
      },
      "PagedSafeFilesResult": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SafeFileAdminDto"
            }
          }
        },
        "additionalProperties": false
      },
      "PagedSafeJackpotsResult": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SafeJackpotAdminDto"
            }
          }
        },
        "additionalProperties": false
      },
      "PagedSafeSessionsResult": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SafeSessionAdminDto"
            }
          }
        },
        "additionalProperties": false
      },
      "ParameterAttributes": {
        "enum": [
          "None",
          "In",
          "Out",
          "Lcid",
          "Retval",
          "Optional",
          "HasDefault",
          "HasFieldMarshal",
          "Reserved3",
          "Reserved4",
          "ReservedMask"
        ],
        "type": "string"
      },
      "ParameterInfo": {
        "type": "object",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ParameterAttributes"
          },
          "member": {
            "$ref": "#/components/schemas/MemberInfo"
          },
          "name": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "parameterType": {
            "$ref": "#/components/schemas/Type"
          },
          "position": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "isIn": {
            "type": "boolean",
            "readOnly": true
          },
          "isLcid": {
            "type": "boolean",
            "readOnly": true
          },
          "isOptional": {
            "type": "boolean",
            "readOnly": true
          },
          "isOut": {
            "type": "boolean",
            "readOnly": true
          },
          "isRetval": {
            "type": "boolean",
            "readOnly": true
          },
          "defaultValue": {
            "nullable": true,
            "readOnly": true
          },
          "rawDefaultValue": {
            "nullable": true,
            "readOnly": true
          },
          "hasDefaultValue": {
            "type": "boolean",
            "readOnly": true
          },
          "customAttributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomAttributeData"
            },
            "readOnly": true
          },
          "metadataToken": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PepBulkCheckRequest": {
        "type": "object",
        "properties": {
          "persons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PepPersonRequest"
            },
            "description": "List of persons to check for PEP status in bulk."
          }
        },
        "additionalProperties": false,
        "example": {
          "persons": [
            {
              "audit": {
                "externalReference": "customer-123",
                "context": "user-login"
              },
              "firstName": "Troels",
              "lastName": "Poulsen",
              "dateOfBirth": "1976-03-30"
            },
            {
              "audit": {
                "externalReference": "customer-123",
                "context": "user-login"
              },
              "firstName": "Mette",
              "lastName": "Frederiksen",
              "dateOfBirth": "1977-11-19"
            },
            {
              "audit": {
                "externalReference": "customer-123",
                "context": "user-login"
              },
              "firstName": "Jørgen",
              "lastName": "Jørgensen",
              "dateOfBirth": "1988-11-19"
            }
          ]
        }
      },
      "PepBulkCheckResponse": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PepCheckResult"
            },
            "description": "Results for each person in the bulk PEP check."
          }
        },
        "additionalProperties": false,
        "example": {
          "results": [
            {
              "audit": {
                "externalReference": "customer-123",
                "context": "user-login"
              },
              "firstName": "Troels",
              "lastName": "Poulsen",
              "dateOfBirth": "1976-03-30",
              "isPep": true,
              "matchScore": 0.82,
              "matchExplanation": "Date of birth match confirmed (1976-03-30).\nBest name match: Troels Lund Poulsen (1976-03-30)\nName similarity score: 0.82\nSource: Finanstilsynet"
            },
            {
              "audit": {
                "externalReference": "customer-123",
                "context": "user-login"
              },
              "firstName": "Mette",
              "lastName": "Frederiksen",
              "dateOfBirth": "1977-11-19",
              "isPep": true,
              "matchScore": 1,
              "matchExplanation": "Date of birth match confirmed (1977-11-19).\nBest name match: Mette Frederiksen (1977-11-19)\nName similarity score: 1.00\nSource: Finanstilsynet"
            },
            {
              "audit": {
                "externalReference": "customer-123",
                "context": "user-login"
              },
              "firstName": "Jørgen",
              "lastName": "Jørgensen",
              "dateOfBirth": "1988-11-19",
              "isPep": false,
              "matchScore": 0,
              "matchExplanation": "No PEP entries found with matching date of birth."
            }
          ]
        }
      },
      "PepCheckRequest": {
        "type": "object",
        "properties": {
          "audit": {
            "$ref": "#/components/schemas/AuditInfo"
          },
          "firstName": {
            "type": "string",
            "description": "Person's given and middle names as provided by the client."
          },
          "lastName": {
            "type": "string",
            "description": "Person's family name / surname as provided by the client."
          },
          "dateOfBirth": {
            "type": "string",
            "description": "Person's date of birth (YYYY-MM-DD).",
            "format": "date"
          }
        },
        "additionalProperties": false,
        "example": {
          "audit": {
            "externalReference": "customer-123",
            "context": "user-login"
          },
          "firstName": "Mette",
          "lastName": "Frederiksen",
          "dateOfBirth": "1977-11-19"
        }
      },
      "PepCheckResult": {
        "type": "object",
        "properties": {
          "audit": {
            "$ref": "#/components/schemas/AuditInfo"
          },
          "firstName": {
            "type": "string",
            "description": "Person's given and middle names as returned/used in the check."
          },
          "lastName": {
            "type": "string",
            "description": "Person's family name / surname as returned/used in the check."
          },
          "dateOfBirth": {
            "type": "string",
            "description": "Person's date of birth (YYYY-MM-DD) as used in the check.",
            "format": "date"
          },
          "isPep": {
            "type": "boolean",
            "description": "Indicates whether the person is considered a Politically Exposed Person (PEP) based on matching sources."
          },
          "matchScore": {
            "type": "number",
            "description": "Match score between 0 and 1 indicating name/date similarity used internally to derive the verdict.",
            "format": "double"
          },
          "matchExplanation": {
            "type": "string",
            "description": "Optional explanatory text providing human-readable details about the match or reasons for the verdict.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "audit": {
            "externalReference": "customer-123",
            "context": "user-login"
          },
          "firstName": "Mette",
          "lastName": "Frederiksen",
          "dateOfBirth": "1977-11-19",
          "isPep": true,
          "matchScore": 1,
          "matchExplanation": "Date of birth match confirmed (1977-11-19).\nBest name match: Mette Frederiksen (1977-11-19)\nName similarity score: 1.00\nSource: Finanstilsynet"
        }
      },
      "PepPersonRequest": {
        "type": "object",
        "properties": {
          "audit": {
            "$ref": "#/components/schemas/AuditInfo"
          },
          "firstName": {
            "type": "string",
            "description": "Person's given and middle names as provided by the client."
          },
          "lastName": {
            "type": "string",
            "description": "Person's family name / surname as provided by the client."
          },
          "dateOfBirth": {
            "type": "string",
            "description": "Person's date of birth (YYYY-MM-DD).",
            "format": "date"
          }
        },
        "additionalProperties": false
      },
      "PersonName": {
        "type": "object",
        "properties": {
          "givenName": {
            "type": "string",
            "description": "Given name(s) as registered in CPR.",
            "nullable": true
          },
          "middleName": {
            "type": "string",
            "description": "Middle name(s) as registered in CPR, if present.",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "description": "Surname as registered in CPR.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PersonStatus": {
        "enum": [
          "Active",
          "ActiveWithHighRoadCode",
          "ActiveRegisteredResidenceInGreenlandicCpr",
          "ActiveRegisteredResidenceInGreenlandicCprWithHighRoadCode",
          "ActiveAdministrativeSocialSecurityNumber",
          "CancelledSocialSecurityNumber",
          "DeletedSocialSecurityNumber",
          "ChangedSocialSecurityNumber",
          "Missing",
          "Emigrated",
          "Deceased"
        ],
        "type": "string"
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "PropertyAttributes": {
        "enum": [
          "None",
          "SpecialName",
          "RTSpecialName",
          "HasDefault",
          "Reserved2",
          "Reserved3",
          "Reserved4",
          "ReservedMask"
        ],
        "type": "string"
      },
      "PropertyInfo": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "readOnly": true
          },
          "declaringType": {
            "$ref": "#/components/schemas/Type"
          },
          "reflectedType": {
            "$ref": "#/components/schemas/Type"
          },
          "module": {
            "$ref": "#/components/schemas/Module"
          },
          "customAttributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomAttributeData"
            },
            "readOnly": true
          },
          "isCollectible": {
            "type": "boolean",
            "readOnly": true
          },
          "metadataToken": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "memberType": {
            "$ref": "#/components/schemas/MemberTypes"
          },
          "propertyType": {
            "$ref": "#/components/schemas/Type"
          },
          "attributes": {
            "$ref": "#/components/schemas/PropertyAttributes"
          },
          "isSpecialName": {
            "type": "boolean",
            "readOnly": true
          },
          "canRead": {
            "type": "boolean",
            "readOnly": true
          },
          "canWrite": {
            "type": "boolean",
            "readOnly": true
          },
          "getMethod": {
            "$ref": "#/components/schemas/MethodInfo"
          },
          "setMethod": {
            "$ref": "#/components/schemas/MethodInfo"
          }
        },
        "additionalProperties": false
      },
      "RefreshRequest": {
        "type": "object",
        "properties": {
          "refreshToken": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "RegisterCompanyRequest": {
        "type": "object",
        "properties": {
          "companyName": {
            "type": "string"
          },
          "billingEmail": {
            "type": "string",
            "nullable": true
          },
          "adminEmail": {
            "type": "string"
          },
          "adminPassword": {
            "type": "string"
          },
          "adminName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RegisterJackpotRequest": {
        "type": "object",
        "properties": {
          "casinoJackpotId": {
            "type": "string",
            "description": "External jackpot identifier from the casino/platform (SAFE: JackpotIdentifikation)."
          },
          "currency": {
            "type": "string",
            "description": "Currency code (ISO 4217), e.g. DKK."
          },
          "productCategory": {
            "$ref": "#/components/schemas/SafeProductCategory"
          },
          "occurredAt": {
            "type": "string",
            "description": "Timestamp when the jackpot occurred (UTC).",
            "format": "date-time"
          },
          "totalAmount": {
            "type": "number",
            "description": "Total jackpot amount paid to players (SAFE: JackpotTotalGevinst).",
            "format": "double"
          },
          "commission": {
            "type": "number",
            "description": "Commission / rake on the jackpot, if applicable (SAFE: JackpotKommissionRake). Null if none.",
            "format": "double",
            "nullable": true
          },
          "winners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JackpotWinnerDto"
            },
            "description": "List of winners and their individual jackpot payouts."
          }
        },
        "additionalProperties": false,
        "example": {
          "casinoJackpotId": "jackpot-2025-0001",
          "currency": "DKK",
          "productCategory": "CasinoSinglePlayer",
          "occurredAt": "2026-04-18T11:51:50.6016264+00:00",
          "totalAmount": 2500,
          "commission": 0,
          "winners": [
            {
              "playerId": "player-12345",
              "amount": 2500
            }
          ]
        }
      },
      "RegisterJackpotResponse": {
        "type": "object",
        "properties": {
          "jackpotId": {
            "type": "string",
            "description": "Internal SAFE jackpot identifier.",
            "format": "uuid"
          },
          "casinoJackpotId": {
            "type": "string",
            "description": "External jackpot identifier from the casino/platform."
          }
        },
        "additionalProperties": false,
        "example": {
          "jackpotId": "9068b07b-2484-4ef4-8f3d-b2ddf3e2ecff",
          "casinoJackpotId": "jackpot-2025-0001"
        }
      },
      "RequestPasswordResetRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "RiskAssessment": {
        "type": "object",
        "properties": {
          "level": {
            "$ref": "#/components/schemas/RiskLevel"
          },
          "reasons": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of reasons contributing to the assessed risk level."
          }
        },
        "additionalProperties": false
      },
      "RiskLevel": {
        "enum": [
          "Low",
          "Medium",
          "High"
        ],
        "type": "string"
      },
      "RofusCommercialBulkRequest": {
        "type": "object",
        "properties": {
          "persons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RofusCommercialPersonRequest"
            },
            "description": "List of persons to check (CPR + external reference)."
          }
        },
        "additionalProperties": false,
        "example": {
          "persons": [
            {
              "audit": {
                "externalReference": "customer-123",
                "context": "user-login"
              },
              "cpr": "2506123456"
            }
          ]
        }
      },
      "RofusCommercialBulkResponse": {
        "type": "object",
        "properties": {
          "persons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RofusCommercialResultResponse"
            },
            "description": "List of commercial/marketing check results."
          }
        },
        "additionalProperties": false,
        "example": {
          "persons": [
            {
              "externalReference": "customer-123",
              "cpr": "2506123456",
              "marketingAllowed": true
            }
          ]
        }
      },
      "RofusCommercialPersonRequest": {
        "type": "object",
        "properties": {
          "audit": {
            "$ref": "#/components/schemas/AuditInfo"
          },
          "cpr": {
            "type": "string",
            "description": "A valid Danish CPR number."
          }
        },
        "additionalProperties": false,
        "example": {
          "audit": {
            "externalReference": "customer-123",
            "context": "user-login"
          },
          "cpr": "2506123456"
        }
      },
      "RofusCommercialResultResponse": {
        "type": "object",
        "properties": {
          "externalReference": {
            "type": "string",
            "description": "The same external reference supplied in the request. Included solely for convenience to help clients match results back to their own internal records."
          },
          "cpr": {
            "type": "string",
            "description": "The CPR associated with the result."
          },
          "marketingAllowed": {
            "type": "boolean",
            "description": "True if marketing communication is allowed."
          }
        },
        "additionalProperties": false,
        "example": {
          "externalReference": "customer-123",
          "cpr": "2506123456",
          "marketingAllowed": true
        }
      },
      "RofusCsrpCheckResponse": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/RofusCsrpStatus"
          },
          "isMinor": {
            "type": "boolean",
            "description": "True if the person is under 18 years old."
          }
        },
        "additionalProperties": false,
        "example": {
          "status": "NotRegistered",
          "isMinor": false
        }
      },
      "RofusCsrpStatus": {
        "enum": [
          "NotRegistered",
          "Registered"
        ],
        "type": "string"
      },
      "RofusEvaluationRequest": {
        "type": "object",
        "properties": {
          "audit": {
            "$ref": "#/components/schemas/AuditInfo"
          },
          "cpr": {
            "type": "string",
            "description": "The CPR to evaluate across all ROFUS checks."
          }
        },
        "additionalProperties": false,
        "example": {
          "audit": {
            "externalReference": "customer-123",
            "context": "user-login"
          },
          "cpr": "0102031234"
        }
      },
      "RofusEvaluationResponse": {
        "type": "object",
        "properties": {
          "cpr": {
            "type": "string",
            "description": "The evaluated CPR number."
          },
          "gamblerStatus": {
            "$ref": "#/components/schemas/RofusRegistrationStatus"
          },
          "isRegisteredInCsrp": {
            "type": "boolean",
            "description": "True if the person is registered in CSRP."
          },
          "isMinor": {
            "type": "boolean",
            "description": "True if the person is under 18 years old."
          },
          "marketingAllowed": {
            "type": "boolean",
            "description": "True if marketing communication is allowed."
          },
          "isBlockedForPlay": {
            "type": "boolean",
            "description": "True if the person is blocked from gambling based on ROFUS."
          },
          "isBlockedForMarketing": {
            "type": "boolean",
            "description": "True if marketing communication to the person is blocked."
          }
        },
        "additionalProperties": false,
        "example": {
          "cpr": "0102031234",
          "gamblerStatus": "NotRegistered",
          "isRegisteredInCsrp": false,
          "isMinor": false,
          "marketingAllowed": true,
          "isBlockedForPlay": false,
          "isBlockedForMarketing": false
        }
      },
      "RofusGamblerCheckResponse": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/RofusRegistrationStatus"
          }
        },
        "additionalProperties": false,
        "example": {
          "status": "NotRegistered"
        }
      },
      "RofusRegistrationStatus": {
        "enum": [
          "NotRegistered",
          "RegisteredTemporarily",
          "RegisteredIndefinitely"
        ],
        "type": "string"
      },
      "RofusSingleCheckRequest": {
        "type": "object",
        "properties": {
          "audit": {
            "$ref": "#/components/schemas/AuditInfo"
          },
          "cpr": {
            "type": "string",
            "description": "A valid Danish CPR number."
          }
        },
        "additionalProperties": false,
        "example": {
          "audit": {
            "externalReference": "customer-123",
            "context": "user-login"
          },
          "cpr": "0102031234"
        }
      },
      "RuntimeFieldHandle": {
        "type": "object",
        "properties": {
          "value": {
            "$ref": "#/components/schemas/IntPtr"
          }
        },
        "additionalProperties": false
      },
      "RuntimeMethodHandle": {
        "type": "object",
        "properties": {
          "value": {
            "$ref": "#/components/schemas/IntPtr"
          }
        },
        "additionalProperties": false
      },
      "RuntimeTypeHandle": {
        "type": "object",
        "properties": {
          "value": {
            "$ref": "#/components/schemas/IntPtr"
          }
        },
        "additionalProperties": false
      },
      "SafeConfiguration": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "companyId": {
            "type": "string",
            "format": "uuid"
          },
          "company": {
            "$ref": "#/components/schemas/Company"
          },
          "clients": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Client"
            }
          },
          "licenseCertificateId": {
            "type": "string",
            "nullable": true
          },
          "safeWebsiteUrl": {
            "type": "string"
          },
          "sftpUsername": {
            "type": "string",
            "nullable": true
          },
          "sftpPassword": {
            "type": "string",
            "nullable": true
          },
          "safeBucketPrefix": {
            "type": "string",
            "nullable": true
          },
          "dgaUsername": {
            "type": "string",
            "nullable": true
          },
          "dgaPassword": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "isTestConfiguration": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "SafeEndOfDayAdminDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "clientName": {
            "type": "string"
          },
          "reportDate": {
            "type": "string",
            "format": "date"
          },
          "productCategory": {
            "$ref": "#/components/schemas/SafeProductCategory"
          },
          "currencyCode": {
            "type": "string"
          },
          "numberOfGames": {
            "type": "integer",
            "format": "int64"
          },
          "stakeGames": {
            "type": "number",
            "format": "double"
          },
          "jackpotContribution": {
            "type": "number",
            "format": "double"
          },
          "winnings": {
            "type": "number",
            "format": "double"
          },
          "commissionRake": {
            "type": "number",
            "format": "double"
          },
          "isReplacement": {
            "type": "boolean"
          },
          "replacesReportId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "safeFileIdentifier": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "reportedToSafeAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "replacementReason": {
            "type": "string",
            "nullable": true
          },
          "dgaAgreementConfirmed": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SafeEndOfDayReport": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "client": {
            "$ref": "#/components/schemas/Client"
          },
          "reportDate": {
            "type": "string",
            "format": "date"
          },
          "productCategory": {
            "$ref": "#/components/schemas/SafeProductCategory"
          },
          "numberOfGames": {
            "type": "integer",
            "format": "int64"
          },
          "stakeGames": {
            "type": "number",
            "format": "double"
          },
          "jackpotContribution": {
            "type": "number",
            "format": "double"
          },
          "winnings": {
            "type": "number",
            "format": "double"
          },
          "commissionRake": {
            "type": "number",
            "format": "double"
          },
          "currencyCode": {
            "type": "string"
          },
          "licenseCertificateId": {
            "type": "string"
          },
          "safeFileIdentifier": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "reportedToSafeAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "isReplacement": {
            "type": "boolean"
          },
          "replacesReportId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "replacesReport": {
            "$ref": "#/components/schemas/SafeEndOfDayReport"
          },
          "replacementReason": {
            "type": "string",
            "nullable": true
          },
          "dgaAgreementConfirmed": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SafeFileAdminDto": {
        "type": "object",
        "properties": {
          "fileIdentification": {
            "type": "string",
            "format": "uuid"
          },
          "clientId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "clientName": {
            "type": "string"
          },
          "recordType": {
            "$ref": "#/components/schemas/SafeRecordType"
          },
          "productCategory": {
            "$ref": "#/components/schemas/SafeProductCategory"
          },
          "currencyCode": {
            "type": "string"
          },
          "businessDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "reportDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "storageKey": {
            "type": "string"
          },
          "sizeBytes": {
            "type": "integer",
            "format": "int64"
          },
          "sha256Hex": {
            "type": "string"
          },
          "uploadStatus": {
            "$ref": "#/components/schemas/SafeUploadStatus"
          },
          "includedInTamperTokenId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "sequenceInToken": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdAtUtc": {
            "type": "string",
            "format": "date-time"
          },
          "packagedAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sentToSafeAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "canDownload": {
            "type": "boolean"
          },
          "includedEntityIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "additionalProperties": false
      },
      "SafeGameCategory": {
        "enum": [
          "Slots",
          "Bingo",
          "Roulette",
          "Baccarat",
          "PuntoBanco",
          "Blackjack",
          "Poker",
          "Other",
          "Combination"
        ],
        "type": "string"
      },
      "SafeGameChannel": {
        "enum": [
          "Retailer",
          "Internet",
          "Mobile",
          "SelfService",
          "Other"
        ],
        "type": "string"
      },
      "SafeJackpot": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "client": {
            "$ref": "#/components/schemas/Client"
          },
          "externalJackpotId": {
            "type": "string"
          },
          "productCategory": {
            "$ref": "#/components/schemas/SafeProductCategory"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time"
          },
          "safeFileIdentifier": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "reportedToSafeAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "totalJackpotAmount": {
            "type": "number",
            "format": "double"
          },
          "commissionRake": {
            "type": "number",
            "format": "double"
          },
          "currencyCode": {
            "type": "string"
          },
          "isReplacement": {
            "type": "boolean"
          },
          "replacesJackpotId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "replacesJackpot": {
            "$ref": "#/components/schemas/SafeJackpot"
          },
          "winners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SafeJackpotWinner"
            }
          }
        },
        "additionalProperties": false
      },
      "SafeJackpotAdminDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "clientName": {
            "type": "string"
          },
          "casinoJackpotId": {
            "type": "string"
          },
          "productCategory": {
            "$ref": "#/components/schemas/SafeProductCategory"
          },
          "currencyCode": {
            "type": "string"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time"
          },
          "totalAmount": {
            "type": "number",
            "format": "double"
          },
          "commission": {
            "type": "number",
            "format": "double"
          },
          "isReplacement": {
            "type": "boolean"
          },
          "replacesJackpotId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "safeFileIdentifier": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "reportedToSafeAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "winners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SafeJackpotWinnerDto"
            }
          }
        },
        "additionalProperties": false
      },
      "SafeJackpotSafeConflict": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Short title describing the nature of the conflict."
          },
          "externalId": {
            "type": "string",
            "description": "External identifier used by the caller (e.g. CasinoSessionId, CasinoJackpotId)."
          },
          "existing": {
            "$ref": "#/components/schemas/SafeJackpot"
          }
        },
        "additionalProperties": false
      },
      "SafeJackpotWinner": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "safeJackpotId": {
            "type": "string",
            "format": "uuid"
          },
          "jackpot": {
            "$ref": "#/components/schemas/SafeJackpot"
          },
          "playerId": {
            "type": "string"
          },
          "amount": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "SafeJackpotWinnerDto": {
        "type": "object",
        "properties": {
          "playerId": {
            "type": "string"
          },
          "amount": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "SafeOverviewDto": {
        "type": "object",
        "properties": {
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "clientName": {
            "type": "string"
          },
          "pendingSessions": {
            "type": "integer",
            "format": "int32"
          },
          "pendingJackpots": {
            "type": "integer",
            "format": "int32"
          },
          "pendingEndOfDay": {
            "type": "integer",
            "format": "int32"
          },
          "filesPending": {
            "type": "integer",
            "format": "int32"
          },
          "filesPackaged": {
            "type": "integer",
            "format": "int32"
          },
          "filesUploaded": {
            "type": "integer",
            "format": "int32"
          },
          "filesFailed": {
            "type": "integer",
            "format": "int32"
          },
          "filesSuperseded": {
            "type": "integer",
            "format": "int32"
          },
          "filesDownloadable": {
            "type": "integer",
            "format": "int32"
          },
          "filesArchived": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "SafeProductCategory": {
        "enum": [
          "BingoGame",
          "ManagerGame",
          "FixedOddsBetting",
          "FixedOddsBetExchange",
          "FixedOddsBeXDkHorse",
          "FixedOddsDanskHorse",
          "VirtualFixedOdds",
          "HorseLikeGame",
          "HorseDK",
          "PoolGame",
          "PokerTournament",
          "PokerCashGame",
          "CasinoSinglePlayer",
          "CasinoMultiPlayer",
          "PoolGameDanskHorse",
          "SpreadBetting",
          "PoolRNG",
          "ContinuousCombinationGame"
        ],
        "type": "string"
      },
      "SafeRecordType": {
        "enum": [
          "Session",
          "Jackpot",
          "EndOfDay"
        ],
        "type": "string"
      },
      "SafeSession": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "client": {
            "$ref": "#/components/schemas/Client"
          },
          "playerId": {
            "type": "string"
          },
          "externalSessionId": {
            "type": "string"
          },
          "startedAt": {
            "type": "string",
            "format": "date-time"
          },
          "endedAt": {
            "type": "string",
            "format": "date-time"
          },
          "reportedToSafeAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "safeFileIdentifier": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "gameCategory": {
            "$ref": "#/components/schemas/SafeGameCategory"
          },
          "productCategory": {
            "$ref": "#/components/schemas/SafeProductCategory"
          },
          "channel": {
            "$ref": "#/components/schemas/SafeGameChannel"
          },
          "gameName": {
            "type": "string"
          },
          "numberOfGames": {
            "type": "integer",
            "format": "int64"
          },
          "stakeGames": {
            "type": "number",
            "format": "double"
          },
          "winningsGames": {
            "type": "number",
            "format": "double"
          },
          "commissionRake": {
            "type": "number",
            "format": "double"
          },
          "openNetwork": {
            "type": "boolean"
          },
          "currencyCode": {
            "type": "string"
          },
          "isCancelled": {
            "type": "boolean"
          },
          "cancelledAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "cancellationReason": {
            "type": "string",
            "nullable": true
          },
          "rngId": {
            "type": "string"
          },
          "rngSoftwareId": {
            "type": "string"
          },
          "jackpotContributions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SafeSessionJackpotContribution"
            }
          },
          "computedJackpotContribution": {
            "type": "number",
            "format": "double",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "SafeSessionAdminDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "clientName": {
            "type": "string"
          },
          "externalSessionId": {
            "type": "string"
          },
          "playerId": {
            "type": "string"
          },
          "gameName": {
            "type": "string"
          },
          "productCategory": {
            "$ref": "#/components/schemas/SafeProductCategory"
          },
          "gameCategory": {
            "$ref": "#/components/schemas/SafeGameCategory"
          },
          "channel": {
            "$ref": "#/components/schemas/SafeGameChannel"
          },
          "currencyCode": {
            "type": "string"
          },
          "startedAt": {
            "type": "string",
            "format": "date-time"
          },
          "endedAt": {
            "type": "string",
            "format": "date-time"
          },
          "numberOfGames": {
            "type": "integer",
            "format": "int64"
          },
          "stake": {
            "type": "number",
            "format": "double"
          },
          "win": {
            "type": "number",
            "format": "double"
          },
          "commission": {
            "type": "number",
            "format": "double"
          },
          "jackpotContribution": {
            "type": "number",
            "format": "double"
          },
          "isCancelled": {
            "type": "boolean"
          },
          "safeFileIdentifier": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "reportedToSafeAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SafeSessionJackpotContribution": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "safeSessionId": {
            "type": "string",
            "format": "uuid"
          },
          "session": {
            "$ref": "#/components/schemas/SafeSession"
          },
          "jackpotId": {
            "type": "string"
          },
          "amount": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "SafeSessionSafeConflict": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Short title describing the nature of the conflict."
          },
          "externalId": {
            "type": "string",
            "description": "External identifier used by the caller (e.g. CasinoSessionId, CasinoJackpotId)."
          },
          "existing": {
            "$ref": "#/components/schemas/SafeSession"
          }
        },
        "additionalProperties": false
      },
      "SafeUploadStatus": {
        "enum": [
          "Pending",
          "Packaged",
          "Uploaded",
          "Failed",
          "Superseded"
        ],
        "type": "string"
      },
      "SecurityRuleSet": {
        "enum": [
          "None",
          "Level1",
          "Level2"
        ],
        "type": "string"
      },
      "SetSupplierNameRequest": {
        "type": "object",
        "properties": {
          "supplierName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "StartIdentificationRequest": {
        "type": "object",
        "properties": {
          "audit": {
            "$ref": "#/components/schemas/AuditInfo"
          },
          "returnUrl": {
            "type": "string",
            "description": "Absolute URL where the end-user should be redirected after the broker completes the flow. The following query parameters will be appended: status (success|failed|cancelled), sessionId (identification session id), state (your original ClientState if provided), and reason (error description on failures). Example successful redirect: https://app.example.com/auth/callback?status=success&sessionId=abc123&state=casino-session-xyz. Example failed redirect (no errorRedirectUrl specified): https://app.example.com/auth/callback?status=failed&sessionId=abc123&reason=access_denied."
          },
          "clientState": {
            "type": "string",
            "description": "Opaque state value provided by the client. It will be echoed back after completion.",
            "nullable": true
          },
          "requestedLoa": {
            "$ref": "#/components/schemas/LevelOfAssurance"
          },
          "authLevel": {
            "$ref": "#/components/schemas/AuthLevel"
          },
          "needNationalIdentifier": {
            "type": "boolean",
            "description": "If true, national identifier (CPR, personnummer, etc.) will be requested as part of the identification, subject to contractual and legal permissions."
          },
          "errorRedirectUrl": {
            "type": "string",
            "description": "Optional URL where the user should be redirected if an error occurs during the broker callback. If not provided, the end-user will be redirected to the ReturnUrl with status=failed or status=cancelled.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "audit": {
            "externalReference": "customer-123",
            "context": "user-login"
          },
          "returnUrl": "https://casino.example.com/auth/callback",
          "clientState": "casino-session-xyz",
          "requestedLoa": "Substantial",
          "authLevel": "Fresh",
          "needNationalIdentifier": true,
          "errorRedirectUrl": "https://casino.example.com/auth/error"
        }
      },
      "StartIdentificationResponse": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "description": "Identifier of the created identification session. Used to retrieve the final result."
          },
          "brokerId": {
            "type": "string",
            "description": "ID of the broker that will perform the identification (e.g. 'mitid')."
          },
          "redirectUrl": {
            "type": "string",
            "description": "Absolute URL the end-user must be redirected to in order to start identification."
          },
          "expiresAtUtc": {
            "type": "string",
            "description": "Timestamp (UTC) when this identification session will expire if not completed.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "example": {
          "sessionId": "3f4b3b7d3a8d4a21913d0a29b6e78d9f",
          "brokerId": "mitid",
          "redirectUrl": "https://pp.netseidbroker.dk/op/connect/authorize?client_id=...",
          "expiresAtUtc": "2026-04-18T12:31:50.3761463+00:00"
        }
      },
      "StructLayoutAttribute": {
        "type": "object",
        "properties": {
          "typeId": {
            "readOnly": true
          },
          "value": {
            "$ref": "#/components/schemas/LayoutKind"
          }
        },
        "additionalProperties": false
      },
      "Type": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "readOnly": true
          },
          "customAttributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomAttributeData"
            },
            "readOnly": true
          },
          "isCollectible": {
            "type": "boolean",
            "readOnly": true
          },
          "metadataToken": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "memberType": {
            "$ref": "#/components/schemas/MemberTypes"
          },
          "namespace": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "assemblyQualifiedName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "fullName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "assembly": {
            "$ref": "#/components/schemas/Assembly"
          },
          "module": {
            "$ref": "#/components/schemas/Module"
          },
          "isInterface": {
            "type": "boolean",
            "readOnly": true
          },
          "isNested": {
            "type": "boolean",
            "readOnly": true
          },
          "declaringType": {
            "$ref": "#/components/schemas/Type"
          },
          "declaringMethod": {
            "$ref": "#/components/schemas/MethodBase"
          },
          "reflectedType": {
            "$ref": "#/components/schemas/Type"
          },
          "underlyingSystemType": {
            "$ref": "#/components/schemas/Type"
          },
          "isTypeDefinition": {
            "type": "boolean",
            "readOnly": true
          },
          "isArray": {
            "type": "boolean",
            "readOnly": true
          },
          "isByRef": {
            "type": "boolean",
            "readOnly": true
          },
          "isPointer": {
            "type": "boolean",
            "readOnly": true
          },
          "isConstructedGenericType": {
            "type": "boolean",
            "readOnly": true
          },
          "isGenericParameter": {
            "type": "boolean",
            "readOnly": true
          },
          "isGenericTypeParameter": {
            "type": "boolean",
            "readOnly": true
          },
          "isGenericMethodParameter": {
            "type": "boolean",
            "readOnly": true
          },
          "isGenericType": {
            "type": "boolean",
            "readOnly": true
          },
          "isGenericTypeDefinition": {
            "type": "boolean",
            "readOnly": true
          },
          "isSZArray": {
            "type": "boolean",
            "readOnly": true
          },
          "isVariableBoundArray": {
            "type": "boolean",
            "readOnly": true
          },
          "isByRefLike": {
            "type": "boolean",
            "readOnly": true
          },
          "isFunctionPointer": {
            "type": "boolean",
            "readOnly": true
          },
          "isUnmanagedFunctionPointer": {
            "type": "boolean",
            "readOnly": true
          },
          "hasElementType": {
            "type": "boolean",
            "readOnly": true
          },
          "genericTypeArguments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Type"
            },
            "readOnly": true
          },
          "genericParameterPosition": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "genericParameterAttributes": {
            "$ref": "#/components/schemas/GenericParameterAttributes"
          },
          "attributes": {
            "$ref": "#/components/schemas/TypeAttributes"
          },
          "isAbstract": {
            "type": "boolean",
            "readOnly": true
          },
          "isImport": {
            "type": "boolean",
            "readOnly": true
          },
          "isSealed": {
            "type": "boolean",
            "readOnly": true
          },
          "isSpecialName": {
            "type": "boolean",
            "readOnly": true
          },
          "isClass": {
            "type": "boolean",
            "readOnly": true
          },
          "isNestedAssembly": {
            "type": "boolean",
            "readOnly": true
          },
          "isNestedFamANDAssem": {
            "type": "boolean",
            "readOnly": true
          },
          "isNestedFamily": {
            "type": "boolean",
            "readOnly": true
          },
          "isNestedFamORAssem": {
            "type": "boolean",
            "readOnly": true
          },
          "isNestedPrivate": {
            "type": "boolean",
            "readOnly": true
          },
          "isNestedPublic": {
            "type": "boolean",
            "readOnly": true
          },
          "isNotPublic": {
            "type": "boolean",
            "readOnly": true
          },
          "isPublic": {
            "type": "boolean",
            "readOnly": true
          },
          "isAutoLayout": {
            "type": "boolean",
            "readOnly": true
          },
          "isExplicitLayout": {
            "type": "boolean",
            "readOnly": true
          },
          "isLayoutSequential": {
            "type": "boolean",
            "readOnly": true
          },
          "isAnsiClass": {
            "type": "boolean",
            "readOnly": true
          },
          "isAutoClass": {
            "type": "boolean",
            "readOnly": true
          },
          "isUnicodeClass": {
            "type": "boolean",
            "readOnly": true
          },
          "isCOMObject": {
            "type": "boolean",
            "readOnly": true
          },
          "isContextful": {
            "type": "boolean",
            "readOnly": true
          },
          "isEnum": {
            "type": "boolean",
            "readOnly": true
          },
          "isMarshalByRef": {
            "type": "boolean",
            "readOnly": true
          },
          "isPrimitive": {
            "type": "boolean",
            "readOnly": true
          },
          "isValueType": {
            "type": "boolean",
            "readOnly": true
          },
          "isSignatureType": {
            "type": "boolean",
            "readOnly": true
          },
          "isSecurityCritical": {
            "type": "boolean",
            "readOnly": true
          },
          "isSecuritySafeCritical": {
            "type": "boolean",
            "readOnly": true
          },
          "isSecurityTransparent": {
            "type": "boolean",
            "readOnly": true
          },
          "structLayoutAttribute": {
            "$ref": "#/components/schemas/StructLayoutAttribute"
          },
          "typeInitializer": {
            "$ref": "#/components/schemas/ConstructorInfo"
          },
          "typeHandle": {
            "$ref": "#/components/schemas/RuntimeTypeHandle"
          },
          "guid": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "baseType": {
            "$ref": "#/components/schemas/Type"
          },
          "isSerializable": {
            "type": "boolean",
            "readOnly": true,
            "deprecated": true
          },
          "containsGenericParameters": {
            "type": "boolean",
            "readOnly": true
          },
          "isVisible": {
            "type": "boolean",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "TypeAttributes": {
        "enum": [
          "NotPublic",
          "Public",
          "NestedPublic",
          "NestedPrivate",
          "NestedFamily",
          "NestedAssembly",
          "NestedFamANDAssem",
          "VisibilityMask",
          "SequentialLayout",
          "ExplicitLayout",
          "LayoutMask",
          "Interface",
          "Abstract",
          "Sealed",
          "SpecialName",
          "RTSpecialName",
          "Import",
          "Serializable",
          "WindowsRuntime",
          "UnicodeClass",
          "AutoClass",
          "StringFormatMask",
          "HasSecurity",
          "ReservedMask",
          "BeforeFieldInit",
          "CustomFormatMask"
        ],
        "type": "string"
      },
      "TypeInfo": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "readOnly": true
          },
          "customAttributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomAttributeData"
            },
            "readOnly": true
          },
          "isCollectible": {
            "type": "boolean",
            "readOnly": true
          },
          "metadataToken": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "memberType": {
            "$ref": "#/components/schemas/MemberTypes"
          },
          "namespace": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "assemblyQualifiedName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "fullName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "assembly": {
            "$ref": "#/components/schemas/Assembly"
          },
          "module": {
            "$ref": "#/components/schemas/Module"
          },
          "isInterface": {
            "type": "boolean",
            "readOnly": true
          },
          "isNested": {
            "type": "boolean",
            "readOnly": true
          },
          "declaringType": {
            "$ref": "#/components/schemas/Type"
          },
          "declaringMethod": {
            "$ref": "#/components/schemas/MethodBase"
          },
          "reflectedType": {
            "$ref": "#/components/schemas/Type"
          },
          "underlyingSystemType": {
            "$ref": "#/components/schemas/Type"
          },
          "isTypeDefinition": {
            "type": "boolean",
            "readOnly": true
          },
          "isArray": {
            "type": "boolean",
            "readOnly": true
          },
          "isByRef": {
            "type": "boolean",
            "readOnly": true
          },
          "isPointer": {
            "type": "boolean",
            "readOnly": true
          },
          "isConstructedGenericType": {
            "type": "boolean",
            "readOnly": true
          },
          "isGenericParameter": {
            "type": "boolean",
            "readOnly": true
          },
          "isGenericTypeParameter": {
            "type": "boolean",
            "readOnly": true
          },
          "isGenericMethodParameter": {
            "type": "boolean",
            "readOnly": true
          },
          "isGenericType": {
            "type": "boolean",
            "readOnly": true
          },
          "isGenericTypeDefinition": {
            "type": "boolean",
            "readOnly": true
          },
          "isSZArray": {
            "type": "boolean",
            "readOnly": true
          },
          "isVariableBoundArray": {
            "type": "boolean",
            "readOnly": true
          },
          "isByRefLike": {
            "type": "boolean",
            "readOnly": true
          },
          "isFunctionPointer": {
            "type": "boolean",
            "readOnly": true
          },
          "isUnmanagedFunctionPointer": {
            "type": "boolean",
            "readOnly": true
          },
          "hasElementType": {
            "type": "boolean",
            "readOnly": true
          },
          "genericTypeArguments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Type"
            },
            "readOnly": true
          },
          "genericParameterPosition": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "genericParameterAttributes": {
            "$ref": "#/components/schemas/GenericParameterAttributes"
          },
          "attributes": {
            "$ref": "#/components/schemas/TypeAttributes"
          },
          "isAbstract": {
            "type": "boolean",
            "readOnly": true
          },
          "isImport": {
            "type": "boolean",
            "readOnly": true
          },
          "isSealed": {
            "type": "boolean",
            "readOnly": true
          },
          "isSpecialName": {
            "type": "boolean",
            "readOnly": true
          },
          "isClass": {
            "type": "boolean",
            "readOnly": true
          },
          "isNestedAssembly": {
            "type": "boolean",
            "readOnly": true
          },
          "isNestedFamANDAssem": {
            "type": "boolean",
            "readOnly": true
          },
          "isNestedFamily": {
            "type": "boolean",
            "readOnly": true
          },
          "isNestedFamORAssem": {
            "type": "boolean",
            "readOnly": true
          },
          "isNestedPrivate": {
            "type": "boolean",
            "readOnly": true
          },
          "isNestedPublic": {
            "type": "boolean",
            "readOnly": true
          },
          "isNotPublic": {
            "type": "boolean",
            "readOnly": true
          },
          "isPublic": {
            "type": "boolean",
            "readOnly": true
          },
          "isAutoLayout": {
            "type": "boolean",
            "readOnly": true
          },
          "isExplicitLayout": {
            "type": "boolean",
            "readOnly": true
          },
          "isLayoutSequential": {
            "type": "boolean",
            "readOnly": true
          },
          "isAnsiClass": {
            "type": "boolean",
            "readOnly": true
          },
          "isAutoClass": {
            "type": "boolean",
            "readOnly": true
          },
          "isUnicodeClass": {
            "type": "boolean",
            "readOnly": true
          },
          "isCOMObject": {
            "type": "boolean",
            "readOnly": true
          },
          "isContextful": {
            "type": "boolean",
            "readOnly": true
          },
          "isEnum": {
            "type": "boolean",
            "readOnly": true
          },
          "isMarshalByRef": {
            "type": "boolean",
            "readOnly": true
          },
          "isPrimitive": {
            "type": "boolean",
            "readOnly": true
          },
          "isValueType": {
            "type": "boolean",
            "readOnly": true
          },
          "isSignatureType": {
            "type": "boolean",
            "readOnly": true
          },
          "isSecurityCritical": {
            "type": "boolean",
            "readOnly": true
          },
          "isSecuritySafeCritical": {
            "type": "boolean",
            "readOnly": true
          },
          "isSecurityTransparent": {
            "type": "boolean",
            "readOnly": true
          },
          "structLayoutAttribute": {
            "$ref": "#/components/schemas/StructLayoutAttribute"
          },
          "typeInitializer": {
            "$ref": "#/components/schemas/ConstructorInfo"
          },
          "typeHandle": {
            "$ref": "#/components/schemas/RuntimeTypeHandle"
          },
          "guid": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "baseType": {
            "$ref": "#/components/schemas/Type"
          },
          "isSerializable": {
            "type": "boolean",
            "readOnly": true,
            "deprecated": true
          },
          "containsGenericParameters": {
            "type": "boolean",
            "readOnly": true
          },
          "isVisible": {
            "type": "boolean",
            "readOnly": true
          },
          "genericTypeParameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Type"
            },
            "readOnly": true
          },
          "declaredConstructors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConstructorInfo"
            },
            "readOnly": true
          },
          "declaredEvents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EventInfo"
            },
            "readOnly": true
          },
          "declaredFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FieldInfo"
            },
            "readOnly": true
          },
          "declaredMembers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MemberInfo"
            },
            "readOnly": true
          },
          "declaredMethods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MethodInfo"
            },
            "readOnly": true
          },
          "declaredNestedTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TypeInfo"
            },
            "readOnly": true
          },
          "declaredProperties": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyInfo"
            },
            "readOnly": true
          },
          "implementedInterfaces": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Type"
            },
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "UpdateBrokerProfileRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "oidcClientId": {
            "type": "string"
          },
          "oidcClientSecret": {
            "type": "string"
          },
          "apiClientId": {
            "type": "string",
            "nullable": true
          },
          "apiClientSecret": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdateClientRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "auditRetentionYears": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdateCompanyRequest": {
        "type": "object",
        "properties": {
          "billingEmail": {
            "type": "string",
            "nullable": true
          },
          "opsEmail": {
            "type": "string",
            "nullable": true
          },
          "addressLine1": {
            "type": "string",
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdateLicenseCertRequest": {
        "type": "object",
        "properties": {
          "licenseCertificateId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "UpdateRolesRequest": {
        "type": "object",
        "properties": {
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "UpdateSafeConfigurationRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "safeWebsiteUrl": {
            "type": "string"
          },
          "licenseCertificateId": {
            "type": "string",
            "nullable": true
          },
          "dgaUsername": {
            "type": "string",
            "nullable": true
          },
          "dgaPassword": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdateSafeWebsiteRequest": {
        "type": "object",
        "properties": {
          "safeWebsiteUrl": {
            "type": "string"
          },
          "licenseCertificateId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Usage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "client": {
            "$ref": "#/components/schemas/Client"
          },
          "category": {
            "type": "string"
          },
          "operation": {
            "type": "string"
          },
          "count": {
            "type": "integer",
            "format": "int32"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "UsageStatisticsDto": {
        "type": "object",
        "properties": {
          "totalCalls": {
            "type": "integer",
            "format": "int32"
          },
          "periodStart": {
            "type": "string",
            "format": "date-time"
          },
          "periodEnd": {
            "type": "string",
            "format": "date-time"
          },
          "byCategory": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CategoryUsageDto"
            }
          },
          "byOperation": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OperationUsageDto"
            }
          },
          "byClient": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientUsageDto"
            },
            "nullable": true
          },
          "timeSeries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DailyUsageDto"
            }
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "X-Api-Key": {
        "type": "apiKey",
        "description": "API Key for client authentication. Required for all endpoints except health checks.",
        "name": "X-Api-Key",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "X-Api-Key": [ ]
    }
  ],
  "tags": [
    {
      "name": "Audit",
      "description": "\nAccess your audit history for all compliance checks performed through the SAFE/KYC platform.\n\nThis endpoint allows clients (casinos/operators) to retrieve a documented trace of their\ncompliance activity, including CPR checks, ROFUS lookups, PEP screenings, and SAFE evaluations.\n\nOnly non-sensitive audit header information is returned:\n- ExternalReference (your customer identifier)\n- Category (e.g., Rofus, Pep, Cpr)\n- Operation (e.g., gambler_check, check_bulk)\n- Timestamp of the completed check\n- High-level result summary\n\nDecrypted and sensitive payload content is never exposed through this API.\n"
    },
    {
      "name": "Identity",
      "description": "\nIdentity verification through multiple identity providers (MitID, BankID, eIDAS).\n\n## Testing in Non-Production Environments\n\n**Authentication Flow:**\n1. Call `/api/auth/{brokerId}/start` to initiate authentication (e.g., broker='mitid')\n2. Redirect the end-user to the provided `redirectUrl` to complete authentication\n3. User is automatically redirected back to your `returnUrl` with status information\n4. Call `/api/auth/{brokerId}/result` with the `sessionId` to retrieve normalized identity data\n\n**Query Parameters on Redirect:**\n- `status`: Authentication result (success, failed, cancelled)\n- `sessionId`: Session identifier for retrieving the result\n- `state`: Your original state value (if provided)\n- `reason`: Error description (only on failures)\n\n**Test Requirements:**\n- Use test/dummy personal data only (no real CPR numbers or personal information)\n- Test environment supports all level of assurance values (Low, Substantial, High)\n- Optional: Provide `errorRedirectUrl` for custom error handling\n\n**Note:** Use `/api/brokers` to discover available identity providers and their capabilities.\n"
    },
    {
      "name": "Rofus",
      "description": "\nIn non-production environments, these endpoints return deterministic mock data so that clients can test different ROFUS/CSRP/marketing outcomes.\n\nMock rules:\n\n- Gambler/self-exclusion (GamblerCheck)\n  - Based on the last digit of the CPR:\n    - 0–3 → NotRegistered\n    - 4–6 → RegisteredTemporarily\n    - 7–9 → RegisteredIndefinitely\n\n- CSRP registration (CsrpCheck / Evaluation)\n  - Based on the last digit of the CPR:\n    - 0–4 → NotRegistered\n    - 5–9 → Registered\n\n- Age / minor flag (CsrpCheck / Evaluation)\n  - Based on the second last digit of the CPR:\n    - even → Age17OrBelow (IsMinor = true)\n    - odd  → Age18OrAbove (IsMinor = false)\n\n- Marketing permission (Commercial / Evaluation)\n  - Based on the last digit of the CPR:\n    - even → MarketingAllowed = true\n    - odd  → MarketingAllowed = false\n"
    }
  ]
}