{
  "openapi": "3.0.1",
  "info": {
    "title": "RegulaView Operator Reporting API",
    "description": "Version 1 API for licensed operator reporting. Use /v1/auth/token for client-credentials authentication, then report transactions in real time with /v1/ingest/transactions or /v1/ingest/transactions/batch. Daily tax declarations, cashier reconciliation, device heartbeats, corrections, responsible-gaming events, and manifest attestation are documented here. URL versioning is canonical; X-RegulaView-Api-Version is accepted for clients that also send header-based version metadata.",
    "contact": {
      "name": "RegulaView",
      "email": "api@regulaview.io"
    },
    "version": "v1"
  },
  "paths": {
    "/v1/alerts": {
      "get": {
        "tags": [
          "AlertsQuery"
        ],
        "parameters": [
          {
            "name": "minSeverity",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/AlertSeverity"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/AlertStatus"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/alerts/{id}": {
      "get": {
        "tags": [
          "AlertsQuery"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/audit": {
      "get": {
        "tags": [
          "AuditQuery"
        ],
        "parameters": [
          {
            "name": "action",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 200
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/auth/token": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Issue a Bearer access token for an operator API client using client_credentials.",
        "parameters": [
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TokenRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TokenResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/corrections": {
      "post": {
        "tags": [
          "Corrections"
        ],
        "summary": "Submit an after-the-fact correction request for review.",
        "parameters": [
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitCorrectionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitCorrectionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitCorrectionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Corrections"
        ],
        "summary": "List correction requests for the authenticated operator.",
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/CorrectionStatus"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/devices/{id}/heartbeat": {
      "post": {
        "tags": [
          "Devices"
        ],
        "summary": "Submit a heartbeat for one registered device and receive the current remote-disable state.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HeartbeatRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/HeartbeatRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/HeartbeatRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/HeartbeatResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HeartbeatResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/HeartbeatResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "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"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/devices/external/{externalId}/heartbeat": {
      "post": {
        "tags": [
          "Devices"
        ],
        "summary": "Submit a heartbeat using the operator-owned deviceExternalId. Creates the device mapping on first use.",
        "parameters": [
          {
            "name": "externalId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HeartbeatRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/HeartbeatRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/HeartbeatRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/HeartbeatResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HeartbeatResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/HeartbeatResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/devices/{id}/disable": {
      "post": {
        "tags": [
          "Devices"
        ],
        "summary": "Regulator action: remotely disable a device (game-stops). Audited.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeviceActionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DeviceActionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DeviceActionRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/devices/{id}/enable": {
      "post": {
        "tags": [
          "Devices"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeviceActionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DeviceActionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DeviceActionRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/devices": {
      "get": {
        "tags": [
          "DevicesQuery"
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "health",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/DeviceHealth"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/health/live": {
      "get": {
        "tags": [
          "Health"
        ],
        "parameters": [
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/health/ready": {
      "get": {
        "tags": [
          "Health"
        ],
        "parameters": [
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/incidents": {
      "get": {
        "tags": [
          "IncidentsQuery"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/IncidentStatus"
            }
          },
          {
            "name": "minSeverity",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/AlertSeverity"
            }
          },
          {
            "name": "active",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/incidents/{id}": {
      "get": {
        "tags": [
          "IncidentsQuery"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/ingest/transactions": {
      "post": {
        "tags": [
          "Ingestion"
        ],
        "summary": "Ingest one transaction event for the authenticated operator. Returns 202 Accepted immediately; validation, chain sealing, and reporting projections continue asynchronously.",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-RegulaView-Signature",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IngestTransactionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/IngestTransactionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/IngestTransactionRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/IngestTransactionAcceptedResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IngestTransactionAcceptedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/IngestTransactionAcceptedResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/ingest/transactions/batch": {
      "post": {
        "tags": [
          "Ingestion"
        ],
        "summary": "Ingest up to 5000 transaction events in one request. Returns per-item accepted, duplicate, conflict, or rejected status.",
        "parameters": [
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IngestBatchRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/IngestBatchRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/IngestBatchRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/IngestAcceptedResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IngestAcceptedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/IngestAcceptedResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/findings": {
      "get": {
        "tags": [
          "Integrity"
        ],
        "parameters": [
          {
            "name": "rule",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/IntegrityRule"
            }
          },
          {
            "name": "minSeverity",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/AlertSeverity"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 200
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/cases": {
      "get": {
        "tags": [
          "Integrity"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/IntegrityCaseStatus"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 100
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/risk/operators": {
      "get": {
        "tags": [
          "Integrity"
        ],
        "parameters": [
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/risk/operators/{operatorId}": {
      "get": {
        "tags": [
          "Integrity"
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/chain/{operatorId}": {
      "get": {
        "tags": [
          "IntegrityChain"
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "day",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 500
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/manifests": {
      "get": {
        "tags": [
          "IntegrityChain"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "operatorId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/manifests/{operatorId}/{day}": {
      "get": {
        "tags": [
          "IntegrityChain"
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "day",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/manifests/{day}": {
      "get": {
        "tags": [
          "IntegrityChain"
        ],
        "parameters": [
          {
            "name": "day",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/manifests/{operatorId}/{day}/build": {
      "post": {
        "tags": [
          "IntegrityChain"
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "day",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/manifests/{operatorId}/{day}/verify": {
      "get": {
        "tags": [
          "IntegrityChain"
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "day",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/manifests/{day}/verify": {
      "get": {
        "tags": [
          "IntegrityChain"
        ],
        "parameters": [
          {
            "name": "day",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/manifests/{day}/signing-key": {
      "get": {
        "tags": [
          "IntegrityChain"
        ],
        "summary": "Retrieve the authenticated operator's HMAC signing key for a reporting day.",
        "parameters": [
          {
            "name": "day",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DailySigningKeyResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DailySigningKeyResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DailySigningKeyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/manifests/{day}/attest": {
      "post": {
        "tags": [
          "IntegrityChain"
        ],
        "summary": "Countersign a built daily manifest using HMAC-SHA256 over merkleRoot|day|operatorId.",
        "parameters": [
          {
            "name": "day",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttestRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AttestRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AttestRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/proof/{transactionId}": {
      "get": {
        "tags": [
          "IntegrityChain"
        ],
        "summary": "Returns the Merkle inclusion proof for a transaction's chain entry.",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/proof-manifests/build": {
      "post": {
        "tags": [
          "IntegrityChain"
        ],
        "parameters": [
          {
            "name": "fromUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "operatorId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "jurisdiction",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/proof-manifests/{manifestId}/verify": {
      "get": {
        "tags": [
          "IntegrityChain"
        ],
        "parameters": [
          {
            "name": "manifestId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/legal-proof/transactions/{transactionId}": {
      "get": {
        "tags": [
          "IntegrityChain"
        ],
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/legal-proof/rejections/{rejectedSubmissionId}": {
      "get": {
        "tags": [
          "IntegrityChain"
        ],
        "parameters": [
          {
            "name": "rejectedSubmissionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/legal-proof/alerts/{alertId}": {
      "get": {
        "tags": [
          "IntegrityChain"
        ],
        "parameters": [
          {
            "name": "alertId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integrity/legal-revalidation/transactions/{transactionId}": {
      "post": {
        "tags": [
          "IntegrityChain"
        ],
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LegalRevalidationRequestDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/LegalRevalidationRequestDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/LegalRevalidationRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/jurisdictions": {
      "get": {
        "tags": [
          "JurisdictionsQuery"
        ],
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "active",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "region",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "product",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/GamblingProduct"
            }
          },
          {
            "name": "taxBasis",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/TaxBase"
            }
          },
          {
            "name": "realTime",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "daily",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "playerMonitoring",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "code"
            }
          },
          {
            "name": "sortDesc",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/jurisdictions/{id}": {
      "get": {
        "tags": [
          "JurisdictionsQuery"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/jurisdictions/by-code/{code}": {
      "get": {
        "tags": [
          "JurisdictionsQuery"
        ],
        "parameters": [
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/jurisdictions/{id}/versions": {
      "get": {
        "tags": [
          "JurisdictionsQuery"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/operator-onboarding": {
      "post": {
        "tags": [
          "OperatorOnboarding"
        ],
        "parameters": [
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OnboardOperatorRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OnboardOperatorRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OnboardOperatorRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OperatorDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperatorDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperatorDto"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/operator-onboarding/me": {
      "get": {
        "tags": [
          "OperatorOnboarding"
        ],
        "parameters": [
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/operators": {
      "get": {
        "tags": [
          "Operators"
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OperatorDtoPagedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperatorDtoPagedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperatorDtoPagedResult"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/recon/cashier-totals": {
      "post": {
        "tags": [
          "Reconciliation"
        ],
        "summary": "Submit or replace daily cashier totals for the authenticated operator.",
        "parameters": [
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CashierTotalsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CashierTotalsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CashierTotalsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Reconciliation"
        ],
        "summary": "List cashier reconciliation rows for the authenticated operator.",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/": {
      "get": {
        "tags": [
          "RegulaView.Api"
        ],
        "parameters": [
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/reporting/dashboard": {
      "get": {
        "tags": [
          "Reporting"
        ],
        "parameters": [
          {
            "name": "fromUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "operatorId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "jurisdiction",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ReportingDashboardDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportingDashboardDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportingDashboardDto"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/reporting/transactions": {
      "get": {
        "tags": [
          "Reporting"
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "jurisdiction",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/TransactionStatus"
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/TransactionType"
            }
          },
          {
            "name": "validationStatus",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ValidationAttemptStatus"
            }
          },
          {
            "name": "fromUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ReportingTransactionDtoPagedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportingTransactionDtoPagedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportingTransactionDtoPagedResult"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/reporting/cashflow/daily": {
      "get": {
        "tags": [
          "Reporting"
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "jurisdiction",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fromUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 500
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportingDailyBucketDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportingDailyBucketDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportingDailyBucketDto"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/reporting/validation/rules": {
      "get": {
        "tags": [
          "Reporting"
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "jurisdiction",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fromUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 500
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportingValidationRuleBucketDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportingValidationRuleBucketDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportingValidationRuleBucketDto"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/reporting/rejections": {
      "get": {
        "tags": [
          "Reporting"
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "jurisdiction",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fromUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 500
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportingRejectionBucketDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportingRejectionBucketDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportingRejectionBucketDto"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/reporting/alerts": {
      "get": {
        "tags": [
          "Reporting"
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "jurisdiction",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fromUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 500
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportingAlertBucketDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportingAlertBucketDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportingAlertBucketDto"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/reporting/proof-manifests": {
      "get": {
        "tags": [
          "Reporting"
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "jurisdiction",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fromUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 500
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportingProofManifestDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportingProofManifestDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportingProofManifestDto"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/reporting/projections/health": {
      "get": {
        "tags": [
          "Reporting"
        ],
        "parameters": [
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectionHealthDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectionHealthDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectionHealthDto"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/reporting/projections/run": {
      "post": {
        "tags": [
          "Reporting"
        ],
        "parameters": [
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectionRunRequestDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectionRunRequestDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectionRunRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectionRunResultDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectionRunResultDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectionRunResultDto"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/reporting/projections/rebuild": {
      "post": {
        "tags": [
          "Reporting"
        ],
        "parameters": [
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectionRunRequestDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectionRunRequestDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectionRunRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectionRunResultDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectionRunResultDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectionRunResultDto"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rg/events": {
      "post": {
        "tags": [
          "ResponsibleGaming"
        ],
        "summary": "Submit a responsible-gaming event for the authenticated operator.",
        "parameters": [
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitRgEventRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitRgEventRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitRgEventRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rg/policies": {
      "get": {
        "tags": [
          "ResponsibleGaming"
        ],
        "summary": "List active responsible-gaming policies visible to the authenticated operator.",
        "parameters": [
          {
            "name": "jurisdiction",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/status/components": {
      "get": {
        "tags": [
          "StatusRead"
        ],
        "parameters": [
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/status/incidents": {
      "get": {
        "tags": [
          "StatusRead"
        ],
        "parameters": [
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/status/incidents/{id}": {
      "get": {
        "tags": [
          "StatusRead"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/tax/declarations": {
      "post": {
        "tags": [
          "Tax"
        ],
        "summary": "Submit or replace the authenticated operator's daily tax declaration.",
        "parameters": [
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeclareTaxRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DeclareTaxRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DeclareTaxRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OperatorTaxSummaryDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperatorTaxSummaryDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperatorTaxSummaryDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/tax": {
      "get": {
        "tags": [
          "Tax"
        ],
        "summary": "List daily tax summaries for the authenticated operator.",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions": {
      "get": {
        "tags": [
          "TransactionsQuery"
        ],
        "parameters": [
          {
            "name": "operatorId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/TransactionStatus"
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/TransactionType"
            }
          },
          {
            "name": "fromUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionDtoPagedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionDtoPagedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionDtoPagedResult"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions/{id}": {
      "get": {
        "tags": [
          "TransactionsQuery"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "Optional client-generated correlation identifier. Echoed in responses and problem details for support and reconciliation.",
            "schema": {
              "type": "string"
            },
            "example": "op-2026-04-30-000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired, or invalid Bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated token does not have the required scope or operator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for this endpoint policy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AlertSeverity": {
        "enum": [
          "Info",
          "Low",
          "Medium",
          "High",
          "Critical"
        ],
        "type": "string"
      },
      "AlertStatus": {
        "enum": [
          "Open",
          "Acknowledged",
          "Investigating",
          "Resolved",
          "Suppressed",
          "WaitingForOperator",
          "Escalated",
          "FalsePositive"
        ],
        "type": "string"
      },
      "AttestRequest": {
        "type": "object",
        "properties": {
          "merkleRoot": {
            "type": "string"
          },
          "signature": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "description": "Operator countersignature for a daily integrity manifest."
      },
      "CashierTotalsRequest": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "format": "date"
          },
          "cashIn": {
            "type": "number",
            "format": "double"
          },
          "cashOut": {
            "type": "number",
            "format": "double"
          },
          "outletReference": {
            "type": "string",
            "nullable": true
          },
          "source": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Independent cashier or payment-provider totals for daily reconciliation."
      },
      "CorrectionPayloadChange": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "from": {
            "nullable": true
          },
          "to": {
            "nullable": true
          },
          "reason": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "One requested field-level correction using JSON Pointer paths against the transaction payload."
      },
      "CorrectionStatus": {
        "enum": [
          "Submitted",
          "UnderReview",
          "Approved",
          "Rejected",
          "Applied",
          "Withdrawn"
        ],
        "type": "string"
      },
      "DailySigningKeyResponse": {
        "type": "object",
        "properties": {
          "operatorId": {
            "type": "string",
            "format": "uuid"
          },
          "day": {
            "type": "string",
            "format": "date"
          },
          "keyId": {
            "type": "string"
          },
          "secretBase64": {
            "type": "string"
          },
          "algorithm": {
            "type": "string"
          },
          "validFromUtc": {
            "type": "string",
            "format": "date-time"
          },
          "validToUtc": {
            "type": "string",
            "format": "date-time"
          },
          "canonicalStringFormat": {
            "type": "string"
          },
          "transactionCanonicalStringFormat": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "description": "Daily manifest signing key returned to the authenticated operator for one reporting day."
      },
      "DeclareTaxRequest": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "format": "date"
          },
          "grossWagers": {
            "type": "number",
            "format": "double"
          },
          "payouts": {
            "type": "number",
            "format": "double"
          },
          "declaredTax": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Daily operator tax declaration. Gross wagers and payouts are aggregated for the declared day."
      },
      "DeviceActionRequest": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DeviceHealth": {
        "enum": [
          "Unknown",
          "Healthy",
          "Degraded",
          "Down"
        ],
        "type": "string"
      },
      "GamblingProduct": {
        "enum": [
          "OnlineCasino",
          "PhysicalCasino",
          "RetailGambling",
          "SportsBetting",
          "VirtualGames",
          "Lotto",
          "InstantWin",
          "Keno",
          "Bingo",
          "GamingMachine",
          "Jackpot",
          "ParimutuelRacing",
          "MobileGambling",
          "Poker",
          "VirtualSports",
          "ScheduledGames",
          "Other"
        ],
        "type": "string"
      },
      "HeartbeatRequest": {
        "type": "object",
        "properties": {
          "configurationVersion": {
            "type": "string",
            "nullable": true
          },
          "configurationHash": {
            "type": "string",
            "nullable": true
          },
          "gameEnabled": {
            "type": "boolean",
            "nullable": true
          },
          "health": {
            "$ref": "#/components/schemas/DeviceHealth"
          }
        },
        "additionalProperties": false,
        "description": "Device status heartbeat submitted by an operator-managed device or estate gateway."
      },
      "HeartbeatResponse": {
        "type": "object",
        "properties": {
          "deviceId": {
            "type": "string",
            "format": "uuid"
          },
          "acceptedAtUtc": {
            "type": "string",
            "format": "date-time"
          },
          "remotelyDisabled": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "IncidentStatus": {
        "enum": [
          "Open",
          "Investigating",
          "Mitigated",
          "Resolved",
          "Closed",
          "Identified",
          "Monitoring",
          "FalsePositive"
        ],
        "type": "string"
      },
      "IngestAcceptanceReceipt": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string",
            "format": "uuid"
          },
          "externalId": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "payloadHash": {
            "type": "string"
          },
          "idempotencyKey": {
            "type": "string",
            "nullable": true
          },
          "location": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Receipt returned when a transaction is accepted or recognized as an identical duplicate."
      },
      "IngestAcceptedResponse": {
        "type": "object",
        "properties": {
          "batchId": {
            "type": "string"
          },
          "accepted": {
            "type": "integer",
            "format": "int32"
          },
          "rejected": {
            "type": "integer",
            "format": "int32"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "duplicates": {
            "type": "integer",
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IngestBatchItemResult"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Batch ingestion response with per-item acceptance, duplicate, conflict, and rejection results."
      },
      "IngestBatchItemResult": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "externalId": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "transactionId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "idempotencyKey": {
            "type": "string",
            "nullable": true
          },
          "payloadHash": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "IngestBatchRequest": {
        "required": [
          "transactions"
        ],
        "type": "object",
        "properties": {
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IngestTransactionRequest"
            }
          }
        },
        "additionalProperties": false,
        "description": "Batch transaction submission. Maximum accepted batch size is 5000 transactions."
      },
      "IngestTransactionAcceptedResponse": {
        "type": "object",
        "properties": {
          "receipt": {
            "$ref": "#/components/schemas/IngestAcceptanceReceipt"
          }
        },
        "additionalProperties": false,
        "description": "Single transaction ingestion response. Validation and downstream reporting continue asynchronously."
      },
      "IngestTransactionRequest": {
        "required": [
          "currency",
          "externalId",
          "occurredAtUtc",
          "type"
        ],
        "type": "object",
        "properties": {
          "externalId": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string",
            "description": "Operator-assigned transaction identifier. Must be unique per operator for a distinct event. Maximum length: 64 characters."
          },
          "deviceExternalId": {
            "maxLength": 128,
            "minLength": 0,
            "type": "string",
            "description": "Optional operator-owned device, terminal, outlet, or system identifier. RegulaView maps this to an internal device record.",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/TransactionType"
          },
          "amount": {
            "minimum": 0,
            "type": "number",
            "description": "Non-negative monetary amount in the transaction currency.",
            "format": "double"
          },
          "currency": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string",
            "description": "ISO 4217 currency code, for example EUR. Exactly three characters."
          },
          "occurredAtUtc": {
            "type": "string",
            "description": "UTC timestamp when the event occurred in the operator system.",
            "format": "date-time"
          },
          "product": {
            "$ref": "#/components/schemas/GamblingProduct"
          },
          "chainReference": {
            "type": "string",
            "description": "Optional business chain reference that links a wager to its payout, void, refund, or adjustment.",
            "nullable": true
          },
          "correlationId": {
            "type": "string",
            "description": "Optional operator-side correlation identifier for reconciliation and support.",
            "nullable": true
          },
          "idempotencyKey": {
            "maxLength": 128,
            "minLength": 0,
            "type": "string",
            "description": "Fallback idempotency key when the Idempotency-Key header cannot be sent. Prefer the header for single-transaction requests.",
            "nullable": true
          },
          "signature": {
            "maxLength": 128,
            "minLength": 0,
            "type": "string",
            "description": "Hex HMAC-SHA256 signature over the canonical transaction string. Prefer X-RegulaView-Signature for single submissions; use this field for batch items.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Transaction event submitted by an operator for regulatory reporting."
      },
      "IntegrityCaseStatus": {
        "enum": [
          "Open",
          "UnderReview",
          "Escalated",
          "Dismissed",
          "Confirmed",
          "Closed"
        ],
        "type": "string"
      },
      "IntegrityRule": {
        "enum": [
          "MissingHeartbeat",
          "OutletSilence",
          "DuplicateEvent",
          "OutOfOrderEvent",
          "BackdatedEvent",
          "AmountAnomaly",
          "VoidSpike",
          "PayoutRatioAnomaly",
          "BrokenLifecycleChain",
          "BenchmarkOutlier",
          "MissingEndOfDayReport",
          "DeclarationMismatch",
          "ImpossibleTransition",
          "SuspiciouslyCleanData",
          "ReplayAttack",
          "SignatureInvalid",
          "ReferenceMismatch"
        ],
        "type": "string"
      },
      "LegalRevalidationRequestDto": {
        "type": "object",
        "properties": {
          "legalBasis": {
            "type": "string"
          },
          "ruleSetId": {
            "type": "string",
            "nullable": true
          },
          "ruleSetVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OnboardOperatorRequest": {
        "type": "object",
        "properties": {
          "licenseNumber": {
            "type": "string"
          },
          "legalName": {
            "type": "string"
          },
          "tradingName": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string"
          },
          "jurisdiction": {
            "type": "string"
          },
          "supportedProducts": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OperatorDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "licenseNumber": {
            "type": "string"
          },
          "legalName": {
            "type": "string"
          },
          "tradingName": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/OperatorStatus"
          },
          "onboardedAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastReportAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OperatorDtoPagedResult": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OperatorDto"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "OperatorStatus": {
        "enum": [
          "Pending",
          "Active",
          "Suspended",
          "Revoked"
        ],
        "type": "string"
      },
      "OperatorTaxSummaryDto": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "format": "date"
          },
          "grossWagers": {
            "type": "number",
            "format": "double"
          },
          "payouts": {
            "type": "number",
            "format": "double"
          },
          "netRevenue": {
            "type": "number",
            "format": "double"
          },
          "calculatedTax": {
            "type": "number",
            "format": "double"
          },
          "declaredTax": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "variance": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "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": { }
      },
      "ProblemResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer",
            "format": "int32"
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "correlationId": {
            "type": "string",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "nullable": true
          },
          "timestampUtc": {
            "type": "string",
            "format": "date-time"
          },
          "errors": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "readOnly": true
          },
          "message": {
            "type": "string",
            "readOnly": true
          },
          "details": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Standard error response returned for validation, authentication, authorization, conflict, and rate-limit failures."
      },
      "ProjectionHealthDto": {
        "type": "object",
        "properties": {
          "projectionName": {
            "type": "string"
          },
          "sourceName": {
            "type": "string"
          },
          "lastProcessedSourceId": {
            "type": "string",
            "nullable": true
          },
          "lastProcessedEventId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "lastProcessedAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastSourceOccurredAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "pendingEvents": {
            "type": "integer",
            "format": "int64"
          },
          "errorCount": {
            "type": "integer",
            "format": "int64"
          },
          "deadLetterCount": {
            "type": "integer",
            "format": "int64"
          },
          "rebuildStatus": {
            "$ref": "#/components/schemas/ProjectionRebuildStatus"
          },
          "rebuildStartedAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "rebuildCompletedAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastError": {
            "type": "string",
            "nullable": true
          },
          "lagSeconds": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProjectionRebuildStatus": {
        "enum": [
          "Idle",
          "Running",
          "Completed",
          "Failed"
        ],
        "type": "string"
      },
      "ProjectionRunRequestDto": {
        "type": "object",
        "properties": {
          "fromUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "toUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "operatorId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "jurisdiction": {
            "type": "string",
            "nullable": true
          },
          "reset": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ProjectionRunResultDto": {
        "type": "object",
        "properties": {
          "projectionName": {
            "type": "string"
          },
          "reset": {
            "type": "boolean"
          },
          "transactionsProjected": {
            "type": "integer",
            "format": "int32"
          },
          "validationAttemptsProjected": {
            "type": "integer",
            "format": "int32"
          },
          "rejectionsProjected": {
            "type": "integer",
            "format": "int32"
          },
          "ingestionRejectionsProjected": {
            "type": "integer",
            "format": "int32"
          },
          "alertsProjected": {
            "type": "integer",
            "format": "int32"
          },
          "proofManifestsProjected": {
            "type": "integer",
            "format": "int32"
          },
          "bucketsRebuilt": {
            "type": "integer",
            "format": "int32"
          },
          "startedAtUtc": {
            "type": "string",
            "format": "date-time"
          },
          "completedAtUtc": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "ReportingAlertBucketDto": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "format": "date"
          },
          "operatorId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "jurisdiction": {
            "type": "string"
          },
          "ruleKey": {
            "type": "string"
          },
          "severity": {
            "$ref": "#/components/schemas/AlertSeverity"
          },
          "status": {
            "$ref": "#/components/schemas/AlertStatus"
          },
          "alertCount": {
            "type": "integer",
            "format": "int64"
          },
          "occurrenceCount": {
            "type": "integer",
            "format": "int64"
          },
          "lastSeenAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReportingDailyBucketDto": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "format": "date"
          },
          "operatorId": {
            "type": "string",
            "format": "uuid"
          },
          "jurisdiction": {
            "type": "string"
          },
          "product": {
            "$ref": "#/components/schemas/GamblingProduct"
          },
          "currency": {
            "type": "string"
          },
          "receivedCount": {
            "type": "integer",
            "format": "int64"
          },
          "validatedCount": {
            "type": "integer",
            "format": "int64"
          },
          "acceptedValidationCount": {
            "type": "integer",
            "format": "int64"
          },
          "flaggedValidationCount": {
            "type": "integer",
            "format": "int64"
          },
          "rejectedCount": {
            "type": "integer",
            "format": "int64"
          },
          "ingestionRejectedCount": {
            "type": "integer",
            "format": "int64"
          },
          "alertCount": {
            "type": "integer",
            "format": "int64"
          },
          "alertOccurrenceCount": {
            "type": "integer",
            "format": "int64"
          },
          "dailyManifestCount": {
            "type": "integer",
            "format": "int64"
          },
          "proofManifestCount": {
            "type": "integer",
            "format": "int64"
          },
          "receivedAmount": {
            "type": "number",
            "format": "double"
          },
          "validatedAmount": {
            "type": "number",
            "format": "double"
          },
          "rejectedAmount": {
            "type": "number",
            "format": "double"
          },
          "lastSourceEventAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastProjectedAtUtc": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "ReportingDashboardDto": {
        "type": "object",
        "properties": {
          "windowStartUtc": {
            "type": "string",
            "format": "date-time"
          },
          "windowEndUtc": {
            "type": "string",
            "format": "date-time"
          },
          "receivedCount": {
            "type": "integer",
            "format": "int64"
          },
          "validatedCount": {
            "type": "integer",
            "format": "int64"
          },
          "rejectedCount": {
            "type": "integer",
            "format": "int64"
          },
          "ingestionRejectedCount": {
            "type": "integer",
            "format": "int64"
          },
          "openAlertCount": {
            "type": "integer",
            "format": "int64"
          },
          "proofManifestCount": {
            "type": "integer",
            "format": "int64"
          },
          "unknownJurisdictionCount": {
            "type": "integer",
            "format": "int64"
          },
          "receivedAmount": {
            "type": "number",
            "format": "double"
          },
          "validatedAmount": {
            "type": "number",
            "format": "double"
          },
          "rejectedAmount": {
            "type": "number",
            "format": "double"
          },
          "maxProjectionLagSourceUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "projectionHealth": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectionHealthDto"
            }
          }
        },
        "additionalProperties": false
      },
      "ReportingProofManifestDto": {
        "type": "object",
        "properties": {
          "manifestId": {
            "type": "string",
            "format": "uuid"
          },
          "manifestKind": {
            "type": "string"
          },
          "manifestKey": {
            "type": "string"
          },
          "operatorId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "jurisdiction": {
            "type": "string"
          },
          "day": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "windowStartUtc": {
            "type": "string",
            "format": "date-time"
          },
          "windowEndUtc": {
            "type": "string",
            "format": "date-time"
          },
          "generatedAtUtc": {
            "type": "string",
            "format": "date-time"
          },
          "entryCount": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string"
          },
          "merkleRoot": {
            "type": "string"
          },
          "signingKeyId": {
            "type": "string",
            "nullable": true
          },
          "lastProjectedAtUtc": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "ReportingRejectionBucketDto": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "format": "date"
          },
          "operatorId": {
            "type": "string",
            "format": "uuid"
          },
          "jurisdiction": {
            "type": "string"
          },
          "reason": {
            "$ref": "#/components/schemas/SubmissionRejectionReason"
          },
          "ruleId": {
            "type": "string",
            "nullable": true
          },
          "ruleSetId": {
            "type": "string",
            "nullable": true
          },
          "rejectedSubmissionCount": {
            "type": "integer",
            "format": "int64"
          },
          "ingestionRejectionCount": {
            "type": "integer",
            "format": "int64"
          },
          "lastRejectedAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReportingTransactionDto": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string",
            "format": "uuid"
          },
          "externalId": {
            "type": "string"
          },
          "operatorId": {
            "type": "string",
            "format": "uuid"
          },
          "deviceId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "jurisdiction": {
            "type": "string",
            "nullable": true
          },
          "unknownJurisdiction": {
            "type": "boolean"
          },
          "product": {
            "$ref": "#/components/schemas/GamblingProduct"
          },
          "type": {
            "$ref": "#/components/schemas/TransactionType"
          },
          "status": {
            "$ref": "#/components/schemas/TransactionStatus"
          },
          "validationStatus": {
            "$ref": "#/components/schemas/ValidationAttemptStatus"
          },
          "rejectionReason": {
            "$ref": "#/components/schemas/SubmissionRejectionReason"
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "occurredAtUtc": {
            "type": "string",
            "format": "date-time"
          },
          "receivedAtUtc": {
            "type": "string",
            "format": "date-time"
          },
          "validatedAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "rejectedAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "payloadHash": {
            "type": "string",
            "nullable": true
          },
          "resultHash": {
            "type": "string",
            "nullable": true
          },
          "alertCount": {
            "type": "integer",
            "format": "int32"
          },
          "highestAlertSeverity": {
            "$ref": "#/components/schemas/AlertSeverity"
          },
          "lastProjectedAtUtc": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "ReportingTransactionDtoPagedResult": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportingTransactionDto"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "ReportingValidationRuleBucketDto": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "format": "date"
          },
          "operatorId": {
            "type": "string",
            "format": "uuid"
          },
          "jurisdiction": {
            "type": "string"
          },
          "ruleSetId": {
            "type": "string"
          },
          "ruleSetVersion": {
            "type": "integer",
            "format": "int32"
          },
          "ruleId": {
            "type": "string"
          },
          "ruleVersion": {
            "type": "integer",
            "format": "int32"
          },
          "outcome": {
            "$ref": "#/components/schemas/ValidationRuleOutcome"
          },
          "severity": {
            "$ref": "#/components/schemas/ValidationSeverity"
          },
          "count": {
            "type": "integer",
            "format": "int64"
          },
          "lastObservedAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RgEventType": {
        "enum": [
          "LimitBreach",
          "SelfExclusionTriggered",
          "HighRiskPattern",
          "SuspiciousRepetition",
          "AgeVerificationFailure",
          "OutletAnomaly"
        ],
        "type": "string"
      },
      "SubmissionRejectionReason": {
        "enum": [
          "SchemaInvalid",
          "AuthorizationFailed",
          "OperatorScopeViolation",
          "DuplicateExternalId",
          "AmountOutOfRange",
          "TimestampImpossible",
          "UnknownOperator",
          "UnknownDevice",
          "SignatureInvalid",
          "BusinessRuleViolation",
          "Other"
        ],
        "type": "string"
      },
      "SubmitCorrectionRequest": {
        "type": "object",
        "properties": {
          "originalExternalId": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "payloadDiff": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CorrectionPayloadChange"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Correction request for an already submitted transaction. Corrections are reviewable and do not mutate the original event."
      },
      "SubmitRgEventRequest": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/RgEventType"
          },
          "severity": {
            "$ref": "#/components/schemas/AlertSeverity"
          },
          "deviceId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "deviceExternalId": {
            "type": "string",
            "nullable": true
          },
          "pseudonymousPlayerRef": {
            "type": "string",
            "nullable": true
          },
          "policyId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "summary": {
            "type": "string",
            "nullable": true
          },
          "evidence": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Responsible-gaming event reported by an operator when limits, exclusions, or risk patterns are triggered."
      },
      "TaxBase": {
        "enum": [
          "Ggr",
          "Turnover",
          "Ngr",
          "Winnings",
          "Stake",
          "Mixed",
          "Custom"
        ],
        "type": "string"
      },
      "TokenRequest": {
        "type": "object",
        "properties": {
          "clientId": {
            "type": "string",
            "description": "Operator client identifier issued during onboarding."
          },
          "clientSecret": {
            "type": "string",
            "description": "Client secret issued during onboarding. Send only over TLS."
          },
          "grantType": {
            "type": "string",
            "description": "Must be client_credentials."
          }
        },
        "additionalProperties": false,
        "description": "OAuth2-style client credentials request for an operator API token."
      },
      "TokenResponse": {
        "type": "object",
        "properties": {
          "accessToken": {
            "type": "string"
          },
          "tokenType": {
            "type": "string"
          },
          "expiresIn": {
            "type": "integer",
            "format": "int32"
          },
          "scope": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "description": "Bearer token response. Scope is a space-delimited list such as ingest:write read:own."
      },
      "TransactionDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "externalId": {
            "type": "string"
          },
          "operatorId": {
            "type": "string",
            "format": "uuid"
          },
          "deviceId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/TransactionType"
          },
          "status": {
            "$ref": "#/components/schemas/TransactionStatus"
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "occurredAtUtc": {
            "type": "string",
            "format": "date-time"
          },
          "validationNotes": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TransactionDtoPagedResult": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionDto"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "TransactionStatus": {
        "enum": [
          "Received",
          "Validated",
          "Rejected",
          "Settled",
          "Reconciled",
          "Disputed"
        ],
        "type": "string"
      },
      "TransactionType": {
        "enum": [
          "Wager",
          "Payout",
          "Adjustment",
          "Void",
          "Refund",
          "Deposit",
          "Withdrawal"
        ],
        "type": "string"
      },
      "ValidationAttemptStatus": {
        "enum": [
          "Accepted",
          "Rejected",
          "Flagged"
        ],
        "type": "string"
      },
      "ValidationRuleOutcome": {
        "enum": [
          "Passed",
          "Warning",
          "Rejected"
        ],
        "type": "string"
      },
      "ValidationSeverity": {
        "enum": [
          "Info",
          "Warning",
          "Error"
        ],
        "type": "string"
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "http",
        "description": "JWT access token issued by POST /v1/auth/token using client credentials. Send as: Authorization: Bearer <accessToken>.",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "security": [
    {
      "Bearer": [ ]
    }
  ],
  "tags": [
    {
      "name": "JurisdictionsQuery",
      "description": "Read-only public API surface over the jurisdictions module.\r\nMutations stay in the AdminWeb so that the audit trail and version snapshots\r\n(which require `AuditTrailService` and a System.Security.Claims.ClaimsPrincipal)\r\nflow through a single, hardened code path."
    }
  ]
}