{
  "openapi": "3.0.0",
  "paths": {
    "/health": {
      "get": {
        "operationId": "HealthController_health",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "health"
        ]
      }
    },
    "/health/live": {
      "get": {
        "operationId": "HealthController_live",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "health"
        ]
      }
    },
    "/health/ready": {
      "get": {
        "operationId": "HealthController_ready",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "health"
        ]
      }
    },
    "/system/info": {
      "get": {
        "operationId": "SystemController_info",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "system"
        ]
      }
    },
    "/auth/login": {
      "post": {
        "operationId": "AuthController_login",
        "summary": "Login with email and password (MFA aware)",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "auth"
        ]
      }
    },
    "/auth/refresh": {
      "post": {
        "operationId": "AuthController_refresh",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefreshDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "auth"
        ]
      }
    },
    "/auth/logout": {
      "post": {
        "operationId": "AuthController_logout",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LogoutDto"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "auth"
        ]
      }
    },
    "/auth/logout-all": {
      "post": {
        "operationId": "AuthController_logoutAll",
        "parameters": [],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "auth"
        ]
      }
    },
    "/auth/forgot-password": {
      "post": {
        "operationId": "AuthController_forgot",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForgotPasswordDto"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": ""
          }
        },
        "tags": [
          "auth"
        ]
      }
    },
    "/auth/reset-password": {
      "post": {
        "operationId": "AuthController_reset",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResetPasswordDto"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "auth"
        ]
      }
    },
    "/auth/change-password": {
      "post": {
        "operationId": "AuthController_change",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangePasswordDto"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "auth"
        ]
      }
    },
    "/auth/me": {
      "get": {
        "operationId": "AuthController_me",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "auth"
        ]
      }
    },
    "/auth/sessions": {
      "get": {
        "operationId": "AuthController_listSessions",
        "summary": "List active refresh-token sessions (\"your logged-in devices\").",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "auth"
        ]
      }
    },
    "/auth/sessions/{familyId}": {
      "delete": {
        "operationId": "AuthController_revokeSession",
        "summary": "Revoke a specific session (any device other than the current one).",
        "parameters": [
          {
            "name": "familyId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "auth"
        ]
      }
    },
    "/auth/mfa/setup": {
      "post": {
        "operationId": "AuthController_mfaSetup",
        "parameters": [],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "auth"
        ]
      }
    },
    "/auth/mfa/verify": {
      "post": {
        "operationId": "AuthController_mfaVerify",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MfaVerifyDto"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "auth"
        ]
      }
    },
    "/auth/mfa/disable": {
      "post": {
        "operationId": "AuthController_mfaDisable",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MfaDisableDto"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "auth"
        ]
      }
    },
    "/users": {
      "get": {
        "operationId": "UsersController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "pending",
                "active",
                "suspended",
                "locked",
                "archived"
              ],
              "type": "string"
            }
          },
          {
            "name": "insurerId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "users"
        ]
      },
      "post": {
        "operationId": "UsersController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUserDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "users"
        ]
      }
    },
    "/users/{id}": {
      "get": {
        "operationId": "UsersController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "users"
        ]
      },
      "patch": {
        "operationId": "UsersController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "users"
        ]
      }
    },
    "/users/{id}/activate": {
      "post": {
        "operationId": "UsersController_activate",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "users"
        ]
      }
    },
    "/users/{id}/suspend": {
      "post": {
        "operationId": "UsersController_suspend",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SuspendUserDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "users"
        ]
      }
    },
    "/users/{id}/roles": {
      "post": {
        "operationId": "UsersController_assignRole",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignRoleDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "users"
        ]
      }
    },
    "/users/{id}/roles/{roleId}": {
      "delete": {
        "operationId": "UsersController_removeRole",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "roleId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "users"
        ]
      }
    },
    "/roles": {
      "get": {
        "operationId": "RolesController_list",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "roles"
        ]
      },
      "post": {
        "operationId": "RolesController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRoleDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "roles"
        ]
      }
    },
    "/roles/{id}": {
      "get": {
        "operationId": "RolesController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "roles"
        ]
      },
      "patch": {
        "operationId": "RolesController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRoleDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "roles"
        ]
      },
      "delete": {
        "operationId": "RolesController_delete",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "roles"
        ]
      }
    },
    "/roles/{id}/permissions": {
      "put": {
        "operationId": "RolesController_setPermissions",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetRolePermissionsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "roles"
        ]
      }
    },
    "/permissions": {
      "get": {
        "operationId": "RolesController_permissions",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "roles"
        ]
      }
    },
    "/id-patterns": {
      "get": {
        "operationId": "IdPatternsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "id-patterns"
        ]
      },
      "post": {
        "operationId": "IdPatternsController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateIdPatternDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "id-patterns"
        ]
      }
    },
    "/id-patterns/{id}": {
      "get": {
        "operationId": "IdPatternsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "id-patterns"
        ]
      },
      "patch": {
        "operationId": "IdPatternsController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateIdPatternDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "id-patterns"
        ]
      }
    },
    "/operational-policies": {
      "get": {
        "operationId": "OperationalPoliciesController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "kyc",
                "payments",
                "security",
                "data_sharing",
                "referrals"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "operational-policies"
        ]
      },
      "post": {
        "operationId": "OperationalPoliciesController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePolicyDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "operational-policies"
        ]
      }
    },
    "/operational-policies/{id}": {
      "get": {
        "operationId": "OperationalPoliciesController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "operational-policies"
        ]
      },
      "patch": {
        "operationId": "OperationalPoliciesController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePolicyDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "operational-policies"
        ]
      }
    },
    "/policies": {
      "get": {
        "operationId": "PoliciesController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "active",
                "lapsed",
                "cancelled",
                "reinstated",
                "expired",
                "renewed"
              ],
              "type": "string"
            }
          },
          {
            "name": "agentId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "insurerId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "effectiveToBefore",
            "required": false,
            "in": "query",
            "description": "Effective-to on or before this date (ISO).",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "policies"
        ]
      }
    },
    "/policies/{id}": {
      "get": {
        "operationId": "PoliciesController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "policies"
        ]
      }
    },
    "/policies/{id}/timeline": {
      "get": {
        "operationId": "PoliciesController_timeline",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "policies"
        ]
      }
    },
    "/policies/{id}/cancel": {
      "post": {
        "operationId": "PoliciesController_cancel",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelPolicyDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "policies"
        ]
      }
    },
    "/policies/{id}/reinstate": {
      "post": {
        "operationId": "PoliciesController_reinstate",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReinstatePolicyDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "policies"
        ]
      }
    },
    "/policies/{id}/endorsements": {
      "post": {
        "operationId": "PoliciesController_createEndorsement",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEndorsementDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "policies"
        ]
      }
    },
    "/policies/{id}/endorsements/{endorsementId}/approve": {
      "post": {
        "operationId": "PoliciesController_approveEndorsement",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endorsementId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "policies"
        ]
      }
    },
    "/claims": {
      "get": {
        "operationId": "ClaimsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "filed",
                "under_review",
                "investigation",
                "awaiting_documents",
                "settled",
                "repudiated",
                "withdrawn",
                "appealed",
                "closed"
              ],
              "type": "string"
            }
          },
          {
            "name": "policyId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "agentId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "claims"
        ]
      },
      "post": {
        "operationId": "ClaimsController_file",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileClaimDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "claims"
        ]
      }
    },
    "/claims/{id}": {
      "get": {
        "operationId": "ClaimsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "claims"
        ]
      }
    },
    "/claims/{id}/assign": {
      "post": {
        "operationId": "ClaimsController_assign",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignClaimDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "claims"
        ]
      }
    },
    "/claims/{id}/investigate": {
      "post": {
        "operationId": "ClaimsController_investigate",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "claims"
        ]
      }
    },
    "/claims/{id}/request-documents": {
      "post": {
        "operationId": "ClaimsController_requestDocs",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "claims"
        ]
      }
    },
    "/claims/{id}/review": {
      "post": {
        "operationId": "ClaimsController_review",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "claims"
        ]
      }
    },
    "/claims/{id}/settle": {
      "post": {
        "operationId": "ClaimsController_settle",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SettleClaimDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "claims"
        ]
      }
    },
    "/claims/{id}/repudiate": {
      "post": {
        "operationId": "ClaimsController_repudiate",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepudiateClaimDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "claims"
        ]
      }
    },
    "/claims/{id}/withdraw": {
      "post": {
        "operationId": "ClaimsController_withdraw",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WithdrawClaimDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "claims"
        ]
      }
    },
    "/claims/{id}/appeal": {
      "post": {
        "operationId": "ClaimsController_appeal",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppealClaimDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "claims"
        ]
      }
    },
    "/claims/{id}/close": {
      "post": {
        "operationId": "ClaimsController_close",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "claims"
        ]
      }
    },
    "/claims/{id}/payments": {
      "post": {
        "operationId": "ClaimsController_recordPayment",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordClaimPaymentDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "claims"
        ]
      }
    },
    "/claims/{id}/notes": {
      "post": {
        "operationId": "ClaimsController_addNote",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddClaimNoteDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "claims"
        ]
      }
    },
    "/claims/{id}/documents": {
      "post": {
        "operationId": "ClaimsController_addDocument",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddClaimDocumentDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "claims"
        ]
      }
    },
    "/renewals": {
      "get": {
        "operationId": "RenewalsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "pending",
                "offered",
                "accepted",
                "declined",
                "lapsed",
                "converted"
              ],
              "type": "string"
            }
          },
          {
            "name": "agentId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "renewals"
        ]
      }
    },
    "/renewals/{id}": {
      "get": {
        "operationId": "RenewalsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "renewals"
        ]
      }
    },
    "/renewals/policies/{policyId}/generate": {
      "post": {
        "operationId": "RenewalsController_generate",
        "parameters": [
          {
            "name": "policyId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "renewals"
        ]
      }
    },
    "/renewals/{id}/offer": {
      "post": {
        "operationId": "RenewalsController_offer",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OfferRenewalDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "renewals"
        ]
      }
    },
    "/renewals/{id}/decline": {
      "post": {
        "operationId": "RenewalsController_decline",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeclineRenewalDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "renewals"
        ]
      }
    },
    "/renewals/{id}/convert": {
      "post": {
        "operationId": "RenewalsController_convert",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "renewals"
        ]
      }
    },
    "/disputes": {
      "get": {
        "operationId": "DisputesController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "open",
                "triaged",
                "upheld",
                "rejected",
                "withdrawn",
                "escalated",
                "closed"
              ],
              "type": "string"
            }
          },
          {
            "name": "subjectType",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "referral",
                "commission",
                "payment",
                "claim"
              ],
              "type": "string"
            }
          },
          {
            "name": "subjectId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "disputes"
        ]
      },
      "post": {
        "operationId": "DisputesController_raise",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RaiseDisputeDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "disputes"
        ]
      }
    },
    "/disputes/{id}": {
      "get": {
        "operationId": "DisputesController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "disputes"
        ]
      }
    },
    "/disputes/{id}/triage": {
      "post": {
        "operationId": "DisputesController_triage",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TriageDisputeDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "disputes"
        ]
      }
    },
    "/disputes/{id}/resolve": {
      "post": {
        "operationId": "DisputesController_resolve",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResolveDisputeDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "disputes"
        ]
      }
    },
    "/disputes/{id}/withdraw": {
      "post": {
        "operationId": "DisputesController_withdraw",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WithdrawDisputeDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "disputes"
        ]
      }
    },
    "/disputes/{id}/escalate": {
      "post": {
        "operationId": "DisputesController_escalate",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EscalateDisputeDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "disputes"
        ]
      }
    },
    "/disputes/{id}/close": {
      "post": {
        "operationId": "DisputesController_close",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "disputes"
        ]
      }
    },
    "/disputes/{id}/notes": {
      "post": {
        "operationId": "DisputesController_addNote",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DisputeNoteDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "disputes"
        ]
      }
    },
    "/quotations": {
      "get": {
        "operationId": "QuotationsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "received",
                "shared",
                "accepted",
                "declined",
                "expired",
                "superseded"
              ],
              "type": "string"
            }
          },
          {
            "name": "referralId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "quotations"
        ]
      }
    },
    "/quotations/referrals/{referralId}/compare": {
      "get": {
        "operationId": "QuotationsController_compare",
        "parameters": [
          {
            "name": "referralId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "quotations"
        ]
      }
    },
    "/quotations/{id}": {
      "get": {
        "operationId": "QuotationsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "quotations"
        ]
      }
    },
    "/quotations/{id}/accept": {
      "post": {
        "operationId": "QuotationsController_accept",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "quotations"
        ]
      }
    },
    "/quotations/{id}/decline": {
      "post": {
        "operationId": "QuotationsController_decline",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeclineQuotationDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "quotations"
        ]
      }
    },
    "/quotations/sweep/expire": {
      "post": {
        "operationId": "QuotationsController_expire",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "quotations"
        ]
      }
    },
    "/clients": {
      "get": {
        "operationId": "ClientsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search by phone / NIN / email hash — case-insensitive equality.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "clients"
        ]
      },
      "post": {
        "operationId": "ClientsController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateClientDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "clients"
        ]
      }
    },
    "/clients/{id}": {
      "get": {
        "operationId": "ClientsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "clients"
        ]
      },
      "patch": {
        "operationId": "ClientsController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateClientDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "clients"
        ]
      }
    },
    "/clients/{id}/timeline": {
      "get": {
        "operationId": "ClientsController_timeline",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "clients"
        ]
      }
    },
    "/clients/merge": {
      "post": {
        "operationId": "ClientsController_merge",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MergeClientsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "clients"
        ]
      }
    },
    "/billing/invoices": {
      "get": {
        "operationId": "InvoicesController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "draft",
                "issued",
                "paid",
                "overdue",
                "written_off",
                "cancelled"
              ],
              "type": "string"
            }
          },
          {
            "name": "agentId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "billing"
        ]
      },
      "post": {
        "operationId": "InvoicesController_issue",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IssueInvoiceDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "billing"
        ]
      }
    },
    "/billing/invoices/{id}": {
      "get": {
        "operationId": "InvoicesController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "billing"
        ]
      }
    },
    "/billing/invoices/{id}/payments": {
      "post": {
        "operationId": "InvoicesController_recordPayment",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordPaymentDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "billing"
        ]
      }
    },
    "/billing/invoices/{id}/write-off": {
      "post": {
        "operationId": "InvoicesController_writeOff",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteOffInvoiceDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "billing"
        ]
      }
    },
    "/billing/invoices/{id}/cancel": {
      "post": {
        "operationId": "InvoicesController_cancel",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelInvoiceDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "billing"
        ]
      }
    },
    "/billing/dunning/run": {
      "post": {
        "operationId": "InvoicesController_dunning",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "billing"
        ]
      }
    },
    "/sanctions/screenings": {
      "get": {
        "operationId": "SanctionsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "clear",
                "potential_match",
                "confirmed_match",
                "false_positive"
              ],
              "type": "string"
            }
          },
          {
            "name": "subjectType",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "agent",
                "client"
              ],
              "type": "string"
            }
          },
          {
            "name": "subjectId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "sanctions"
        ]
      }
    },
    "/sanctions/screenings/{id}": {
      "get": {
        "operationId": "SanctionsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "sanctions"
        ]
      }
    },
    "/sanctions/screen": {
      "post": {
        "operationId": "SanctionsController_screen",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScreenRequestDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "sanctions"
        ]
      }
    },
    "/sanctions/screenings/{id}/review": {
      "post": {
        "operationId": "SanctionsController_review",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReviewScreeningDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "sanctions"
        ]
      }
    },
    "/bordereau": {
      "get": {
        "operationId": "BordereauController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "generating",
                "ready",
                "shared",
                "reconciled",
                "disputed",
                "archived"
              ],
              "type": "string"
            }
          },
          {
            "name": "insurerId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "bordereau"
        ]
      },
      "post": {
        "operationId": "BordereauController_generate",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateBordereauDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "bordereau"
        ]
      }
    },
    "/bordereau/{id}": {
      "get": {
        "operationId": "BordereauController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "bordereau"
        ]
      }
    },
    "/bordereau/{id}/share": {
      "post": {
        "operationId": "BordereauController_share",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "bordereau"
        ]
      }
    },
    "/bordereau/{id}/reconcile": {
      "post": {
        "operationId": "BordereauController_reconcile",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReconcileBordereauDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "bordereau"
        ]
      }
    },
    "/bordereau/{id}/dispute": {
      "post": {
        "operationId": "BordereauController_dispute",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DisputeBordereauDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "bordereau"
        ]
      }
    },
    "/bordereau/{id}/export.xlsx": {
      "get": {
        "operationId": "BordereauController_exportXlsx",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "bordereau"
        ]
      }
    },
    "/bordereau/{id}/export.pdf": {
      "get": {
        "operationId": "BordereauController_exportPdf",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "bordereau"
        ]
      }
    },
    "/organizations": {
      "get": {
        "operationId": "OrganizationsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "brokerage",
                "agency",
                "partner",
                "zfa_internal"
              ],
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "organizations"
        ]
      },
      "post": {
        "operationId": "OrganizationsController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOrganizationDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "organizations"
        ]
      }
    },
    "/organizations/{id}": {
      "get": {
        "operationId": "OrganizationsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "organizations"
        ]
      },
      "patch": {
        "operationId": "OrganizationsController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateOrganizationDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "organizations"
        ]
      }
    },
    "/organizations/{id}/suspend": {
      "post": {
        "operationId": "OrganizationsController_suspend",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SuspendOrganizationDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "organizations"
        ]
      }
    },
    "/organizations/{id}/reinstate": {
      "post": {
        "operationId": "OrganizationsController_reinstate",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "organizations"
        ]
      }
    },
    "/underwriting/rules": {
      "get": {
        "operationId": "UnderwritingController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "insurerId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "insurerProductId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "active",
            "required": false,
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "underwriting"
        ]
      },
      "post": {
        "operationId": "UnderwritingController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUnderwritingRuleDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "underwriting"
        ]
      }
    },
    "/underwriting/rules/{id}": {
      "get": {
        "operationId": "UnderwritingController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "underwriting"
        ]
      },
      "patch": {
        "operationId": "UnderwritingController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUnderwritingRuleDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "underwriting"
        ]
      }
    },
    "/underwriting/evaluate": {
      "post": {
        "operationId": "UnderwritingController_evaluate",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EvaluateDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "underwriting"
        ]
      }
    },
    "/insurer-webhooks": {
      "get": {
        "operationId": "InsurerWebhooksController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "received",
                "processed",
                "rejected",
                "ignored"
              ],
              "type": "string"
            }
          },
          {
            "name": "insurerId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "eventType",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "quotation.issued",
                "quotation.declined",
                "policy.bound",
                "policy.cancelled",
                "claim.received",
                "claim.settled",
                "claim.repudiated"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurer-webhooks"
        ]
      }
    },
    "/insurer-webhooks/{id}": {
      "get": {
        "operationId": "InsurerWebhooksController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurer-webhooks"
        ]
      }
    },
    "/insurer-webhooks/{id}/replay": {
      "post": {
        "operationId": "InsurerWebhooksController_replay",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurer-webhooks"
        ]
      }
    },
    "/webhooks/insurers/{insurerCode}": {
      "post": {
        "operationId": "InsurerInboundWebhookController_ingest",
        "parameters": [
          {
            "name": "insurerCode",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-insurer-signature",
            "required": true,
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InsurerWebhookBody"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "webhooks"
        ]
      }
    },
    "/leads": {
      "get": {
        "operationId": "LeadsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "new",
                "assigned",
                "contacted",
                "converted",
                "qualified_out",
                "spam"
              ],
              "type": "string"
            }
          },
          {
            "name": "agentId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "leads"
        ]
      }
    },
    "/leads/{id}": {
      "get": {
        "operationId": "LeadsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "leads"
        ]
      }
    },
    "/leads/{id}/assign": {
      "post": {
        "operationId": "LeadsController_assign",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignLeadDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "leads"
        ]
      }
    },
    "/leads/{id}/contacted": {
      "post": {
        "operationId": "LeadsController_contacted",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "leads"
        ]
      }
    },
    "/leads/{id}/convert": {
      "post": {
        "operationId": "LeadsController_convert",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConvertLeadDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "leads"
        ]
      }
    },
    "/leads/{id}/dismiss": {
      "post": {
        "operationId": "LeadsController_dismiss",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DismissLeadDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "leads"
        ]
      }
    },
    "/public/leads": {
      "post": {
        "operationId": "PublicLeadsController_submit",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLeadDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "leads-public"
        ]
      }
    },
    "/client-portal/otp/request": {
      "post": {
        "operationId": "PortalController_requestOtp",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestOtpDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "client-portal"
        ]
      }
    },
    "/client-portal/otp/verify": {
      "post": {
        "operationId": "PortalController_verifyOtp",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyOtpDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "client-portal"
        ]
      }
    },
    "/client-portal/me/policies": {
      "get": {
        "operationId": "PortalController_myPolicies",
        "parameters": [
          {
            "name": "authorization",
            "required": true,
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "client-portal"
        ]
      }
    },
    "/client-portal/me/claims": {
      "get": {
        "operationId": "PortalController_myClaims",
        "parameters": [
          {
            "name": "authorization",
            "required": true,
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "client-portal"
        ]
      }
    },
    "/admin/client-portal/sessions/{sessionId}/revoke": {
      "post": {
        "operationId": "PortalAdminController_revoke",
        "parameters": [
          {
            "name": "sessionId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "client-portal-admin"
        ]
      }
    },
    "/communications/agents/{id}": {
      "get": {
        "operationId": "CommunicationsController_agentTimeline",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "channel",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "email",
                "sms",
                "whatsapp",
                "in_app"
              ],
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "pending",
                "sent",
                "failed",
                "read"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "communications"
        ]
      }
    },
    "/communications/clients/{id}": {
      "get": {
        "operationId": "CommunicationsController_clientTimeline",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "channel",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "email",
                "sms",
                "whatsapp",
                "in_app"
              ],
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "pending",
                "sent",
                "failed",
                "read"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "communications"
        ]
      }
    },
    "/communications/referrals/{id}": {
      "get": {
        "operationId": "CommunicationsController_referralTimeline",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "channel",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "email",
                "sms",
                "whatsapp",
                "in_app"
              ],
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "pending",
                "sent",
                "failed",
                "read"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "communications"
        ]
      }
    },
    "/communications/policies/{id}": {
      "get": {
        "operationId": "CommunicationsController_policyTimeline",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "channel",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "email",
                "sms",
                "whatsapp",
                "in_app"
              ],
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "pending",
                "sent",
                "failed",
                "read"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "communications"
        ]
      }
    },
    "/communications/claims/{id}": {
      "get": {
        "operationId": "CommunicationsController_claimTimeline",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "channel",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "email",
                "sms",
                "whatsapp",
                "in_app"
              ],
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "pending",
                "sent",
                "failed",
                "read"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "communications"
        ]
      }
    },
    "/ratings": {
      "get": {
        "operationId": "RatingsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subjectType",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "insurer",
                "agent",
                "product"
              ],
              "type": "string"
            }
          },
          {
            "name": "subjectId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "ratings"
        ]
      },
      "post": {
        "operationId": "RatingsController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRatingDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "ratings"
        ]
      }
    },
    "/ratings/summary/{subjectType}/{subjectId}": {
      "get": {
        "operationId": "RatingsController_summary",
        "parameters": [
          {
            "name": "subjectType",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subjectId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "ratings"
        ]
      }
    },
    "/ratings/{id}": {
      "delete": {
        "operationId": "RatingsController_remove",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "ratings"
        ]
      }
    },
    "/content": {
      "get": {
        "operationId": "ContentAssetsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "code",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "draft",
                "published",
                "archived"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "content"
        ]
      },
      "post": {
        "operationId": "ContentAssetsController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateContentAssetDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "content"
        ]
      }
    },
    "/content/{id}": {
      "get": {
        "operationId": "ContentAssetsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "content"
        ]
      },
      "patch": {
        "operationId": "ContentAssetsController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateContentAssetDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "content"
        ]
      }
    },
    "/content/{id}/publish": {
      "post": {
        "operationId": "ContentAssetsController_publish",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "content"
        ]
      }
    },
    "/content/{id}/archive": {
      "post": {
        "operationId": "ContentAssetsController_archive",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "content"
        ]
      }
    },
    "/public/content/{code}/in-force": {
      "get": {
        "operationId": "PublicContentController_inForce",
        "parameters": [
          {
            "name": "code",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "at",
            "required": true,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "content-public"
        ]
      }
    },
    "/warehouse-export": {
      "get": {
        "operationId": "WarehouseExportController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "warehouse-export"
        ]
      }
    },
    "/warehouse-export/{id}": {
      "get": {
        "operationId": "WarehouseExportController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "warehouse-export"
        ]
      }
    },
    "/warehouse-export/run": {
      "post": {
        "operationId": "WarehouseExportController_run",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TriggerExportDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "warehouse-export"
        ]
      }
    },
    "/fraud/rules": {
      "get": {
        "operationId": "FraudController_listRules",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "fraud"
        ]
      },
      "post": {
        "operationId": "FraudController_createRule",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateFraudRuleDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "fraud"
        ]
      }
    },
    "/fraud/rules/{id}": {
      "patch": {
        "operationId": "FraudController_updateRule",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateFraudRuleDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "fraud"
        ]
      }
    },
    "/fraud/alerts": {
      "get": {
        "operationId": "FraudController_listAlerts",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "severity",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "low",
                "medium",
                "high",
                "critical"
              ],
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "open",
                "triaged",
                "resolved",
                "false_positive"
              ],
              "type": "string"
            }
          },
          {
            "name": "ruleId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "fraud"
        ]
      }
    },
    "/fraud/alerts/{id}/triage": {
      "post": {
        "operationId": "FraudController_triage",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TriageAlertDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "fraud"
        ]
      }
    },
    "/fraud/alerts/{id}/resolve": {
      "post": {
        "operationId": "FraudController_resolve",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResolveAlertDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "fraud"
        ]
      }
    },
    "/fraud/scan": {
      "post": {
        "operationId": "FraudController_scan",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "fraud"
        ]
      }
    },
    "/search": {
      "get": {
        "operationId": "SearchController_search",
        "parameters": [
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "all",
                "insurers",
                "agents",
                "products",
                "referrals",
                "policies",
                "claims"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "search"
        ]
      }
    },
    "/support/tickets": {
      "get": {
        "operationId": "SupportTicketsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "new",
                "assigned",
                "in_progress",
                "awaiting_reporter",
                "resolved",
                "closed"
              ],
              "type": "string"
            }
          },
          {
            "name": "priority",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "low",
                "normal",
                "high",
                "urgent"
              ],
              "type": "string"
            }
          },
          {
            "name": "category",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "support-tickets"
        ]
      },
      "post": {
        "operationId": "SupportTicketsController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTicketDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "support-tickets"
        ]
      }
    },
    "/support/tickets/{id}": {
      "get": {
        "operationId": "SupportTicketsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "support-tickets"
        ]
      }
    },
    "/support/tickets/{id}/assign": {
      "post": {
        "operationId": "SupportTicketsController_assign",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignTicketDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "support-tickets"
        ]
      }
    },
    "/support/tickets/{id}/reply": {
      "post": {
        "operationId": "SupportTicketsController_reply",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReplyTicketDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "support-tickets"
        ]
      }
    },
    "/support/tickets/{id}/resolve": {
      "post": {
        "operationId": "SupportTicketsController_resolve",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResolveTicketDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "support-tickets"
        ]
      }
    },
    "/support/tickets/{id}/close": {
      "post": {
        "operationId": "SupportTicketsController_close",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "support-tickets"
        ]
      }
    },
    "/wallet": {
      "get": {
        "operationId": "WalletsController_mine",
        "parameters": [
          {
            "name": "currency",
            "required": true,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "wallet"
        ]
      }
    },
    "/wallet/ledger": {
      "get": {
        "operationId": "WalletsController_myLedger",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "kind",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "commission_credit",
                "withdrawal_debit",
                "withdrawal_reverse",
                "investment_lock",
                "investment_release",
                "interest_credit",
                "penalty_debit",
                "adjustment_credit",
                "adjustment_debit",
                "fee_debit"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "wallet"
        ]
      }
    },
    "/wallet/withdraw": {
      "post": {
        "operationId": "WalletsController_withdraw",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WithdrawDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "wallet"
        ]
      }
    },
    "/wallet/convert": {
      "post": {
        "operationId": "WalletsController_convert",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConvertWalletDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "wallet"
        ]
      }
    },
    "/wallets/{agentId}": {
      "get": {
        "operationId": "WalletsAdminController_read",
        "parameters": [
          {
            "name": "agentId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "wallets-admin"
        ]
      }
    },
    "/wallets/{agentId}/ledger": {
      "get": {
        "operationId": "WalletsAdminController_ledger",
        "parameters": [
          {
            "name": "agentId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "kind",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "commission_credit",
                "withdrawal_debit",
                "withdrawal_reverse",
                "investment_lock",
                "investment_release",
                "interest_credit",
                "penalty_debit",
                "adjustment_credit",
                "adjustment_debit",
                "fee_debit"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "wallets-admin"
        ]
      }
    },
    "/wallets/{agentId}/adjustments": {
      "post": {
        "operationId": "WalletsAdminController_adjust",
        "parameters": [
          {
            "name": "agentId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdjustWalletDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "wallets-admin"
        ]
      }
    },
    "/fx-rates": {
      "get": {
        "operationId": "FxRatesController_list",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "fx-rates"
        ]
      },
      "post": {
        "operationId": "FxRatesController_upsert",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertFxRateDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "fx-rates"
        ]
      }
    },
    "/deduction-types": {
      "get": {
        "operationId": "DeductionTypesController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "commission",
                "wallet_withdrawal",
                "both"
              ],
              "type": "string"
            }
          },
          {
            "name": "kind",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "fee",
                "tax",
                "membership",
                "levy",
                "penalty",
                "other"
              ],
              "type": "string"
            }
          },
          {
            "name": "active",
            "required": false,
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "deduction-types"
        ]
      },
      "post": {
        "operationId": "DeductionTypesController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateDeductionTypeDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "deduction-types"
        ]
      }
    },
    "/deduction-types/{id}": {
      "get": {
        "operationId": "DeductionTypesController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "deduction-types"
        ]
      },
      "patch": {
        "operationId": "DeductionTypesController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDeductionTypeDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "deduction-types"
        ]
      }
    },
    "/deduction-types/preview": {
      "post": {
        "operationId": "DeductionTypesController_preview",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PreviewDeductionsDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "deduction-types"
        ]
      }
    },
    "/investment-products": {
      "get": {
        "operationId": "InvestmentProductsController_list",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "investment-products"
        ]
      },
      "post": {
        "operationId": "InvestmentProductsController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInvestmentProductDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "investment-products"
        ]
      }
    },
    "/investment-products/{id}": {
      "get": {
        "operationId": "InvestmentProductsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "investment-products"
        ]
      },
      "patch": {
        "operationId": "InvestmentProductsController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateInvestmentProductDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "investment-products"
        ]
      }
    },
    "/investments": {
      "get": {
        "operationId": "InvestmentsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "active",
                "matured",
                "redeemed",
                "redeemed_early",
                "cancelled"
              ],
              "type": "string"
            }
          },
          {
            "name": "agentId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "investments"
        ]
      },
      "post": {
        "operationId": "InvestmentsController_open",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenInvestmentDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "investments"
        ]
      }
    },
    "/investments/{id}": {
      "get": {
        "operationId": "InvestmentsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "investments"
        ]
      }
    },
    "/investments/{id}/redeem": {
      "post": {
        "operationId": "InvestmentsController_redeem",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "investments"
        ]
      }
    },
    "/investments/accrual/run": {
      "post": {
        "operationId": "InvestmentsController_accrue",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "investments"
        ]
      }
    },
    "/ira-registry": {
      "get": {
        "operationId": "IraRegistryController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "company",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "ira-registry"
        ]
      }
    },
    "/ira-registry/summary/by-company": {
      "get": {
        "operationId": "IraRegistryController_summary",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "ira-registry"
        ]
      }
    },
    "/ira-registry/{iraNumber}": {
      "get": {
        "operationId": "IraRegistryController_find",
        "parameters": [
          {
            "name": "iraNumber",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "ira-registry"
        ]
      }
    },
    "/public/ira-registry/{iraNumber}": {
      "get": {
        "operationId": "PublicIraRegistryController_find",
        "parameters": [
          {
            "name": "iraNumber",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "ira-registry-public"
        ]
      }
    },
    "/passkeys": {
      "get": {
        "operationId": "PasskeysController_list",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "passkeys"
        ]
      }
    },
    "/passkeys/registration/options": {
      "post": {
        "operationId": "PasskeysController_registrationOptions",
        "parameters": [],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "passkeys"
        ]
      }
    },
    "/passkeys/registration/verify": {
      "post": {
        "operationId": "PasskeysController_verifyRegistration",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyRegistrationDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "passkeys"
        ]
      }
    },
    "/passkeys/{id}": {
      "delete": {
        "operationId": "PasskeysController_remove",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "passkeys"
        ]
      }
    },
    "/passkeys/authentication/options": {
      "post": {
        "operationId": "PublicPasskeysController_authenticationOptions",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LookupEmailDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "passkeys-public"
        ]
      }
    },
    "/passkeys/authentication/verify": {
      "post": {
        "operationId": "PublicPasskeysController_verifyAuthentication",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyAuthenticationDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "passkeys-public"
        ]
      }
    },
    "/agents": {
      "get": {
        "operationId": "AgentsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "pending",
                "active",
                "suspended",
                "rejected",
                "expired",
                "blacklisted",
                "archived"
              ],
              "type": "string"
            }
          },
          {
            "name": "type",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "licensed_agent",
                "introducer",
                "corporate"
              ],
              "type": "string"
            }
          },
          {
            "name": "kycStatus",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "not_submitted",
                "submitted",
                "in_review",
                "more_info_required",
                "verified",
                "rejected",
                "expired"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agents"
        ]
      },
      "post": {
        "operationId": "AgentsController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAgentDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "agents"
        ]
      }
    },
    "/agents/self-register": {
      "post": {
        "operationId": "AgentsController_selfRegister",
        "summary": "Public self-registration (introducer must supply sponsor code)",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SelfRegisterAgentDto"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": ""
          }
        },
        "tags": [
          "agents"
        ]
      }
    },
    "/agents/{id}/introducers": {
      "get": {
        "operationId": "AgentsController_introducers",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agents"
        ]
      }
    },
    "/agents/{id}/internal-referrals": {
      "get": {
        "operationId": "AgentsController_internalReferrals",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agents"
        ]
      }
    },
    "/agents/{id}": {
      "get": {
        "operationId": "AgentsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agents"
        ]
      },
      "patch": {
        "operationId": "AgentsController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAgentDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agents"
        ]
      }
    },
    "/agents/{id}/approve": {
      "post": {
        "operationId": "AgentsController_approve",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "agents"
        ]
      }
    },
    "/agents/{id}/reject": {
      "post": {
        "operationId": "AgentsController_reject",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReasonDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "agents"
        ]
      }
    },
    "/agents/{id}/suspend": {
      "post": {
        "operationId": "AgentsController_suspend",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReasonDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "agents"
        ]
      }
    },
    "/agents/{id}/blacklist": {
      "post": {
        "operationId": "AgentsController_blacklist",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReasonDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "agents"
        ]
      }
    },
    "/agents/{id}/referrals": {
      "get": {
        "operationId": "AgentsController_referrals",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agents"
        ]
      }
    },
    "/agents/{id}/commissions": {
      "get": {
        "operationId": "AgentsController_commissions",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agents"
        ]
      }
    },
    "/agents/{id}/payouts": {
      "get": {
        "operationId": "AgentsController_payouts",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agents"
        ]
      }
    },
    "/agents/{id}/statement": {
      "get": {
        "operationId": "AgentsController_statement",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agents"
        ]
      }
    },
    "/agents/{id}/statement.pdf": {
      "get": {
        "operationId": "AgentsController_statementPdf",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agents"
        ]
      }
    },
    "/agents/bulk-import": {
      "post": {
        "operationId": "AgentsController_bulkImport",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agents"
        ]
      }
    },
    "/agents/{id}/kyc/requirements": {
      "get": {
        "operationId": "AgentKycController_requirements",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agent-kyc"
        ]
      }
    },
    "/agents/{id}/kyc/documents": {
      "get": {
        "operationId": "AgentKycController_documents",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agent-kyc"
        ]
      }
    },
    "/agents/{id}/kyc/submit": {
      "post": {
        "operationId": "AgentKycController_submit",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitKycDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "agent-kyc"
        ]
      }
    },
    "/agents/{id}/kyc/documents/{docId}/review": {
      "post": {
        "operationId": "AgentKycController_review",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "docId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReviewKycDocumentDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "agent-kyc"
        ]
      }
    },
    "/agents/{id}/kyc/verify": {
      "post": {
        "operationId": "AgentKycController_verify",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyKycDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "agent-kyc"
        ]
      }
    },
    "/agents/{id}/kyc/reject": {
      "post": {
        "operationId": "AgentKycController_reject",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RejectKycDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agent-kyc"
        ]
      }
    },
    "/agents/{agentId}/licences": {
      "get": {
        "operationId": "AgentLicensesController_list",
        "parameters": [
          {
            "name": "agentId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agent-licenses"
        ]
      },
      "post": {
        "operationId": "AgentLicensesController_create",
        "parameters": [
          {
            "name": "agentId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAgentLicenseDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "agent-licenses"
        ]
      }
    },
    "/agents/{agentId}/licences/{id}": {
      "get": {
        "operationId": "AgentLicensesController_find",
        "parameters": [
          {
            "name": "agentId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agent-licenses"
        ]
      },
      "patch": {
        "operationId": "AgentLicensesController_update",
        "parameters": [
          {
            "name": "agentId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAgentLicenseDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agent-licenses"
        ]
      },
      "delete": {
        "operationId": "AgentLicensesController_delete",
        "parameters": [
          {
            "name": "agentId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "agent-licenses"
        ]
      }
    },
    "/insurers": {
      "get": {
        "operationId": "InsurersController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "onboarding",
                "active",
                "inactive",
                "suspended",
                "archived"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurers"
        ]
      },
      "post": {
        "operationId": "InsurersController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInsurerDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "insurers"
        ]
      }
    },
    "/insurers/{id}": {
      "get": {
        "operationId": "InsurersController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurers"
        ]
      },
      "patch": {
        "operationId": "InsurersController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateInsurerDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurers"
        ]
      }
    },
    "/insurers/{id}/activate": {
      "post": {
        "operationId": "InsurersController_activate",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "insurers"
        ]
      }
    },
    "/insurers/{id}/suspend": {
      "post": {
        "operationId": "InsurersController_suspend",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReasonDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "insurers"
        ]
      }
    },
    "/insurers/{id}/products": {
      "get": {
        "operationId": "InsurersController_products",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurers"
        ]
      }
    },
    "/insurers/{id}/referrals": {
      "get": {
        "operationId": "InsurersController_referrals",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurers"
        ]
      }
    },
    "/insurers/{id}/performance": {
      "get": {
        "operationId": "InsurersController_performance",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurers"
        ]
      }
    },
    "/insurers/{insurerId}/contacts": {
      "get": {
        "operationId": "InsurerContactsController_list",
        "parameters": [
          {
            "name": "insurerId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurer-contacts"
        ]
      },
      "post": {
        "operationId": "InsurerContactsController_create",
        "parameters": [
          {
            "name": "insurerId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInsurerContactDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "insurer-contacts"
        ]
      }
    },
    "/insurers/{insurerId}/contacts/{id}": {
      "patch": {
        "operationId": "InsurerContactsController_update",
        "parameters": [
          {
            "name": "insurerId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateInsurerContactDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurer-contacts"
        ]
      },
      "delete": {
        "operationId": "InsurerContactsController_delete",
        "parameters": [
          {
            "name": "insurerId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "insurer-contacts"
        ]
      }
    },
    "/insurers/{insurerId}/integration-settings": {
      "get": {
        "operationId": "InsurerIntegrationSettingsController_list",
        "parameters": [
          {
            "name": "insurerId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurer-integration-settings"
        ]
      },
      "post": {
        "operationId": "InsurerIntegrationSettingsController_upsert",
        "parameters": [
          {
            "name": "insurerId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertInsurerIntegrationSettingDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "insurer-integration-settings"
        ]
      }
    },
    "/insurers/{insurerId}/integration-settings/{key}": {
      "delete": {
        "operationId": "InsurerIntegrationSettingsController_delete",
        "parameters": [
          {
            "name": "insurerId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "key",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "insurer-integration-settings"
        ]
      }
    },
    "/product-categories": {
      "get": {
        "operationId": "ProductCategoriesController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "product-categories"
        ]
      },
      "post": {
        "operationId": "ProductCategoriesController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProductCategoryDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "product-categories"
        ]
      }
    },
    "/product-categories/{id}": {
      "get": {
        "operationId": "ProductCategoriesController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "product-categories"
        ]
      },
      "patch": {
        "operationId": "ProductCategoriesController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProductCategoryDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "product-categories"
        ]
      },
      "delete": {
        "operationId": "ProductCategoriesController_delete",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "product-categories"
        ]
      }
    },
    "/insurer-products": {
      "get": {
        "operationId": "InsurerProductsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "insurerId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categoryId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "isActive",
            "required": false,
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurer-products"
        ]
      },
      "post": {
        "operationId": "InsurerProductsController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInsurerProductDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "insurer-products"
        ]
      }
    },
    "/insurer-products/{id}": {
      "get": {
        "operationId": "InsurerProductsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurer-products"
        ]
      },
      "patch": {
        "operationId": "InsurerProductsController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateInsurerProductDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurer-products"
        ]
      }
    },
    "/insurer-products/{id}/activate": {
      "post": {
        "operationId": "InsurerProductsController_activate",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "insurer-products"
        ]
      }
    },
    "/insurer-products/{id}/deactivate": {
      "post": {
        "operationId": "InsurerProductsController_deactivate",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "insurer-products"
        ]
      }
    },
    "/insurer-products/{id}/plans": {
      "get": {
        "operationId": "InsurerProductsController_plans",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurer-products"
        ]
      }
    },
    "/insurer-products/{id}/required-documents": {
      "get": {
        "operationId": "InsurerProductsController_requiredDocs",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurer-products"
        ]
      }
    },
    "/insurer-products/{id}/commission-rules": {
      "get": {
        "operationId": "InsurerProductsController_commissionRules",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurer-products"
        ]
      }
    },
    "/insurer-products/bulk-import": {
      "post": {
        "operationId": "InsurerProductsController_bulkImport",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "insurer-products"
        ]
      }
    },
    "/product-plans": {
      "get": {
        "operationId": "ProductPlansController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "insurerProductId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "isActive",
            "required": false,
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "product-plans"
        ]
      },
      "post": {
        "operationId": "ProductPlansController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProductPlanDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "product-plans"
        ]
      }
    },
    "/product-plans/{id}": {
      "get": {
        "operationId": "ProductPlansController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "product-plans"
        ]
      },
      "patch": {
        "operationId": "ProductPlansController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProductPlanDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "product-plans"
        ]
      }
    },
    "/product-plans/{id}/activate": {
      "post": {
        "operationId": "ProductPlansController_activate",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "product-plans"
        ]
      }
    },
    "/product-plans/{id}/deactivate": {
      "post": {
        "operationId": "ProductPlansController_deactivate",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "product-plans"
        ]
      }
    },
    "/product-plans/{id}/effective-required-documents": {
      "get": {
        "operationId": "ProductPlansController_effectiveDocs",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "product-plans"
        ]
      }
    },
    "/product-plans/{id}/required-documents": {
      "get": {
        "operationId": "ProductPlansController_listDocs",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "product-plans"
        ]
      },
      "post": {
        "operationId": "ProductPlansController_upsertDoc",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertPlanRequiredDocDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "product-plans"
        ]
      }
    },
    "/product-plans/{id}/required-documents/{code}": {
      "delete": {
        "operationId": "ProductPlansController_deleteDoc",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "code",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "product-plans"
        ]
      }
    },
    "/referrals": {
      "get": {
        "operationId": "ReferralsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "draft",
                "submitted",
                "under_review",
                "more_information_required",
                "sent_to_insurer",
                "quotation_pending",
                "quotation_received",
                "quotation_shared",
                "client_accepted",
                "premium_payment_pending",
                "premium_paid",
                "policy_issued",
                "commission_pending",
                "commission_approved",
                "commission_paid",
                "rejected",
                "cancelled",
                "reversed",
                "disputed",
                "archived"
              ],
              "type": "string"
            }
          },
          {
            "name": "agentId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "insurerId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "insurerProductId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      },
      "post": {
        "operationId": "ReferralsController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReferralDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/referrals/{id}": {
      "get": {
        "operationId": "ReferralsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      },
      "patch": {
        "operationId": "ReferralsController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateReferralDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/referrals/{id}/submit": {
      "post": {
        "operationId": "ReferralsController_submit",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitReferralDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/referrals/{id}/assign": {
      "post": {
        "operationId": "ReferralsController_assign",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignReferralDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/referrals/{id}/request-info": {
      "post": {
        "operationId": "ReferralsController_requestInfo",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestInfoDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/referrals/{id}/send-to-insurer": {
      "post": {
        "operationId": "ReferralsController_sendToInsurer",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/referrals/{id}/record-quotation": {
      "post": {
        "operationId": "ReferralsController_recordQuotation",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordQuotationDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/referrals/{id}/share-quotation": {
      "post": {
        "operationId": "ReferralsController_shareQuotation",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShareQuotationDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/referrals/{id}/client-acceptance": {
      "post": {
        "operationId": "ReferralsController_acceptance",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientAcceptanceDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/referrals/{id}/confirm-premium-payment": {
      "post": {
        "operationId": "ReferralsController_confirmPremium",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfirmPremiumPaymentDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/referrals/{id}/issue-policy": {
      "post": {
        "operationId": "ReferralsController_issuePolicy",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IssuePolicyDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/referrals/{id}/reject": {
      "post": {
        "operationId": "ReferralsController_reject",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReasonDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/referrals/{id}/cancel": {
      "post": {
        "operationId": "ReferralsController_cancel",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReasonDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/referrals/{id}/reverse": {
      "post": {
        "operationId": "ReferralsController_reverse",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReasonDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/referrals/{id}/dispute": {
      "post": {
        "operationId": "ReferralsController_dispute",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReasonDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/referrals/{id}/timeline": {
      "get": {
        "operationId": "ReferralsController_timeline",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/referrals/{id}/documents": {
      "get": {
        "operationId": "ReferralsController_documents",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      },
      "post": {
        "operationId": "ReferralsController_attachDoc",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttachDocumentDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/referrals/{id}/commissions": {
      "get": {
        "operationId": "ReferralsController_commissions",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/referrals/{id}/notes": {
      "post": {
        "operationId": "ReferralsController_addNote",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoteDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "referrals"
        ]
      }
    },
    "/commissions": {
      "get": {
        "operationId": "CommissionsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "commissions"
        ]
      }
    },
    "/commissions/{id}": {
      "get": {
        "operationId": "CommissionsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "commissions"
        ]
      }
    },
    "/commissions/{id}/recalculate": {
      "post": {
        "operationId": "CommissionsController_recalculate",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "commissions"
        ]
      }
    },
    "/commissions/{id}/approve": {
      "post": {
        "operationId": "CommissionsController_approve",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "commissions"
        ]
      }
    },
    "/commissions/{id}/adjust": {
      "post": {
        "operationId": "CommissionsController_adjust",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdjustDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "commissions"
        ]
      }
    },
    "/commissions/{id}/reverse": {
      "post": {
        "operationId": "CommissionsController_reverse",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReasonDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "commissions"
        ]
      }
    },
    "/commissions/{id}/dispute": {
      "post": {
        "operationId": "CommissionsController_dispute",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReasonDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "commissions"
        ]
      }
    },
    "/commissions/{id}/audit": {
      "get": {
        "operationId": "CommissionsController_audit",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "commissions"
        ]
      }
    },
    "/commissions/{id}/deductions": {
      "get": {
        "operationId": "CommissionsController_deductions",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "commissions"
        ]
      }
    },
    "/documents/upload": {
      "post": {
        "operationId": "DocumentsController_upload",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/UploadDocumentDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "documents"
        ]
      }
    },
    "/documents/{id}": {
      "get": {
        "operationId": "DocumentsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "documents"
        ]
      },
      "patch": {
        "operationId": "DocumentsController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDocumentDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "documents"
        ]
      },
      "delete": {
        "operationId": "DocumentsController_delete",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "documents"
        ]
      }
    },
    "/documents/{id}/download": {
      "get": {
        "operationId": "DocumentsController_download",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "documents"
        ]
      }
    },
    "/documents/{id}/signed-url": {
      "get": {
        "operationId": "DocumentsController_signedUrl",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "documents"
        ]
      }
    },
    "/commission-rules": {
      "get": {
        "operationId": "CommissionRulesController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "insurerProductId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "isActive",
            "required": false,
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "commission-rules"
        ]
      },
      "post": {
        "operationId": "CommissionRulesController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCommissionRuleDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "commission-rules"
        ]
      }
    },
    "/commission-rules/{id}": {
      "get": {
        "operationId": "CommissionRulesController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "commission-rules"
        ]
      },
      "patch": {
        "operationId": "CommissionRulesController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCommissionRuleDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "commission-rules"
        ]
      }
    },
    "/commission-rules/{id}/activate": {
      "post": {
        "operationId": "CommissionRulesController_activate",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "commission-rules"
        ]
      }
    },
    "/commission-rules/{id}/deactivate": {
      "post": {
        "operationId": "CommissionRulesController_deactivate",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "commission-rules"
        ]
      }
    },
    "/commission-rules/simulate": {
      "post": {
        "operationId": "CommissionRulesController_simulate",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SimulateCommissionDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "commission-rules"
        ]
      }
    },
    "/payout-accounts": {
      "get": {
        "operationId": "PayoutAccountsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "agentId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "payout-accounts"
        ]
      },
      "post": {
        "operationId": "PayoutAccountsController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePayoutAccountDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "payout-accounts"
        ]
      }
    },
    "/payout-accounts/{id}": {
      "get": {
        "operationId": "PayoutAccountsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "payout-accounts"
        ]
      },
      "patch": {
        "operationId": "PayoutAccountsController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePayoutAccountDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "payout-accounts"
        ]
      }
    },
    "/payout-accounts/{id}/verify": {
      "post": {
        "operationId": "PayoutAccountsController_verify",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "payout-accounts"
        ]
      }
    },
    "/payment-batches": {
      "get": {
        "operationId": "PaymentBatchesController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "draft",
                "pending_approval",
                "approved",
                "submitted",
                "completed",
                "cancelled"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "payment-batches"
        ]
      },
      "post": {
        "operationId": "PaymentBatchesController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePaymentBatchDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "payment-batches"
        ]
      }
    },
    "/payment-batches/{id}": {
      "get": {
        "operationId": "PaymentBatchesController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "payment-batches"
        ]
      }
    },
    "/payment-batches/{id}/approve": {
      "post": {
        "operationId": "PaymentBatchesController_approve",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "payment-batches"
        ]
      }
    },
    "/payment-batches/{id}/submit": {
      "post": {
        "operationId": "PaymentBatchesController_submit",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "payment-batches"
        ]
      }
    },
    "/payment-batches/{id}/cancel": {
      "post": {
        "operationId": "PaymentBatchesController_cancel",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReasonDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "payment-batches"
        ]
      }
    },
    "/payments": {
      "get": {
        "operationId": "PaymentsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "pending_approval",
                "approved",
                "processing",
                "sent_to_gateway",
                "successful",
                "failed",
                "retry_pending",
                "cancelled",
                "reversed",
                "reconciled"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "payments"
        ]
      }
    },
    "/payments/{id}": {
      "get": {
        "operationId": "PaymentsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "payments"
        ]
      }
    },
    "/payments/{id}/retry": {
      "post": {
        "operationId": "PaymentsController_retry",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "payments"
        ]
      }
    },
    "/payments/{id}/reconcile": {
      "post": {
        "operationId": "PaymentsController_reconcile",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReconcileDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "payments"
        ]
      }
    },
    "/payments/reconcile/import": {
      "post": {
        "operationId": "PaymentsController_importReconciliation",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportReconciliationDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "payments"
        ]
      }
    },
    "/payment-webhooks/{provider}": {
      "post": {
        "operationId": "PaymentWebhookController_ingest",
        "parameters": [
          {
            "name": "provider",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "payment-webhooks"
        ]
      }
    },
    "/subscription-plans": {
      "get": {
        "operationId": "SubscriptionPlansController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "subscription-plans"
        ]
      },
      "post": {
        "operationId": "SubscriptionPlansController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSubscriptionPlanDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "subscription-plans"
        ]
      }
    },
    "/subscription-plans/{id}": {
      "patch": {
        "operationId": "SubscriptionPlansController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSubscriptionPlanDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "subscription-plans"
        ]
      }
    },
    "/agent-subscriptions": {
      "get": {
        "operationId": "AgentSubscriptionsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "agentId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agent-subscriptions"
        ]
      },
      "post": {
        "operationId": "AgentSubscriptionsController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAgentSubscriptionDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "agent-subscriptions"
        ]
      }
    },
    "/agent-subscriptions/{id}": {
      "get": {
        "operationId": "AgentSubscriptionsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "agent-subscriptions"
        ]
      }
    },
    "/agent-subscriptions/{id}/renew": {
      "post": {
        "operationId": "AgentSubscriptionsController_renew",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "agent-subscriptions"
        ]
      }
    },
    "/agent-subscriptions/{id}/cancel": {
      "post": {
        "operationId": "AgentSubscriptionsController_cancel",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelSubscriptionDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "agent-subscriptions"
        ]
      }
    },
    "/reports/agent-performance": {
      "get": {
        "operationId": "ReportsController_agentPerformance",
        "parameters": [
          {
            "name": "from",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "reports"
        ]
      }
    },
    "/reports/referral-pipeline": {
      "get": {
        "operationId": "ReportsController_referralPipeline",
        "parameters": [
          {
            "name": "from",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "reports"
        ]
      }
    },
    "/reports/insurer-performance": {
      "get": {
        "operationId": "ReportsController_insurerPerformance",
        "parameters": [
          {
            "name": "from",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "insurerId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "reports"
        ]
      }
    },
    "/reports/product-performance": {
      "get": {
        "operationId": "ReportsController_productPerformance",
        "parameters": [
          {
            "name": "from",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "reports"
        ]
      }
    },
    "/reports/commission-summary": {
      "get": {
        "operationId": "ReportsController_commissionSummary",
        "parameters": [
          {
            "name": "from",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "reports"
        ]
      }
    },
    "/reports/payment-reconciliation": {
      "get": {
        "operationId": "ReportsController_paymentReconciliation",
        "parameters": [
          {
            "name": "from",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "reports"
        ]
      }
    },
    "/reports/audit-events": {
      "get": {
        "operationId": "ReportsController_auditEvents",
        "parameters": [
          {
            "name": "from",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "reports"
        ]
      }
    },
    "/reports/export": {
      "get": {
        "operationId": "ReportsController_export",
        "parameters": [
          {
            "name": "from",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "csv",
                "json",
                "xlsx",
                "pdf"
              ],
              "type": "string"
            }
          },
          {
            "name": "dataset",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "referrals",
                "commissions",
                "payments"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "reports"
        ]
      }
    },
    "/reports/regulator/platform-summary": {
      "get": {
        "operationId": "RegulatorReportsController_platformSummary",
        "summary": "Aggregate ZFA InsureLink platform performance",
        "description": "Returns anonymised platform performance for a date window: total referrals, referrals by status, policies issued, conversion rate, aggregate premium underwritten, and aggregate commissions paid. Contains no agent, client, or contact identifiers.",
        "parameters": [
          {
            "name": "from",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "regulator-reports"
        ]
      }
    },
    "/reports/regulator/product-mix": {
      "get": {
        "operationId": "RegulatorReportsController_productMix",
        "summary": "Referral volume and premium by product category",
        "description": "Aggregate breakdown across motor, life, medical, property, business, marine, agriculture, travel, other. No agent or client identifiers.",
        "parameters": [
          {
            "name": "from",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "regulator-reports"
        ]
      }
    },
    "/reports/regulator/insurer-summary": {
      "get": {
        "operationId": "RegulatorReportsController_insurerSummary",
        "summary": "Aggregate volume per licensed insurer",
        "description": "Referral count, policies issued, conversion rate, and aggregate premium per insurer. Insurer names are already public via the IRA register; no agent or client information is disclosed.",
        "parameters": [
          {
            "name": "from",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "regulator-reports"
        ]
      }
    },
    "/reports/regulator/compliance-export": {
      "get": {
        "operationId": "RegulatorReportsController_complianceExport",
        "summary": "Bundled JSON export for regulator submission",
        "description": "Combines platform-summary, product-mix and insurer-summary into a single downloadable JSON with an explicit disclosure statement.",
        "parameters": [
          {
            "name": "from",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "json",
                "xlsx",
                "pdf"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "regulator-reports"
        ]
      }
    },
    "/notifications": {
      "get": {
        "operationId": "NotificationsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "pending",
                "sent",
                "failed",
                "read"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "notifications"
        ]
      }
    },
    "/notifications/{id}": {
      "get": {
        "operationId": "NotificationsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "notifications"
        ]
      }
    },
    "/notifications/{id}/read": {
      "post": {
        "operationId": "NotificationsController_read",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "notifications"
        ]
      }
    },
    "/notifications/read-all": {
      "post": {
        "operationId": "NotificationsController_readAll",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "notifications"
        ]
      }
    },
    "/notification-preferences/me": {
      "get": {
        "operationId": "NotificationPreferencesController_mine",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "notification-preferences"
        ]
      },
      "post": {
        "operationId": "NotificationPreferencesController_update",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkUpdatePreferencesDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "notification-preferences"
        ]
      }
    },
    "/notification-templates": {
      "get": {
        "operationId": "NotificationTemplatesController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "notification-templates"
        ]
      },
      "post": {
        "operationId": "NotificationTemplatesController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTemplateDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "notification-templates"
        ]
      }
    },
    "/notification-templates/{id}": {
      "patch": {
        "operationId": "NotificationTemplatesController_update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTemplateDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "notification-templates"
        ]
      }
    },
    "/audit-events": {
      "get": {
        "operationId": "AuditReadController_events",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "action",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entityType",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entityId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "actorId",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "audit"
        ]
      }
    },
    "/audit-events/verify": {
      "get": {
        "operationId": "AuditReadController_verifyChain",
        "parameters": [
          {
            "name": "fromSeq",
            "required": false,
            "in": "query",
            "schema": {
              "default": 0,
              "type": "number"
            }
          },
          {
            "name": "take",
            "required": false,
            "in": "query",
            "schema": {
              "default": 5000,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "audit"
        ]
      }
    },
    "/audit-events/{id}": {
      "get": {
        "operationId": "AuditReadController_event",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "audit"
        ]
      }
    },
    "/security-events": {
      "get": {
        "operationId": "AuditReadController_securityEvents",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "audit"
        ]
      }
    },
    "/compliance/cases": {
      "get": {
        "operationId": "ComplianceController_cases",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "compliance"
        ]
      }
    },
    "/compliance/referrals/{id}": {
      "get": {
        "operationId": "ComplianceController_referral",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "compliance"
        ]
      }
    },
    "/compliance/dsar/export/{userId}": {
      "get": {
        "operationId": "DsarController_export",
        "parameters": [
          {
            "name": "userId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "compliance-dsar"
        ]
      }
    },
    "/compliance/dsar/erase/{userId}": {
      "post": {
        "operationId": "DsarController_erase",
        "summary": "Pseudonymise a data subject (right to erasure)",
        "parameters": [
          {
            "name": "userId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DsarErasureDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "compliance-dsar"
        ]
      }
    },
    "/api-keys": {
      "get": {
        "operationId": "ApiKeysController_list",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "api-keys"
        ]
      },
      "post": {
        "operationId": "ApiKeysController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateApiKeyDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "api-keys"
        ]
      }
    },
    "/api-keys/{id}": {
      "delete": {
        "operationId": "ApiKeysController_revoke",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "api-keys"
        ]
      }
    },
    "/siem/export/status": {
      "get": {
        "operationId": "SiemExportController_status",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "siem-export"
        ]
      }
    },
    "/siem/export/push": {
      "post": {
        "operationId": "SiemExportController_push",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "siem-export"
        ]
      }
    },
    "/compliance/regulator-requests": {
      "get": {
        "operationId": "RegulatorRequestsController_list",
        "parameters": [
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "regulator-record-requests"
        ]
      },
      "post": {
        "operationId": "RegulatorRequestsController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRecordRequestDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "regulator-record-requests"
        ]
      }
    },
    "/compliance/regulator-requests/{id}": {
      "get": {
        "operationId": "RegulatorRequestsController_find",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "regulator-record-requests"
        ]
      }
    },
    "/compliance/regulator-requests/{id}/approve": {
      "post": {
        "operationId": "RegulatorRequestsController_approve",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApproveRecordRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "regulator-record-requests"
        ]
      }
    },
    "/compliance/regulator-requests/{id}/deny": {
      "post": {
        "operationId": "RegulatorRequestsController_deny",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DenyRecordRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "regulator-record-requests"
        ]
      }
    },
    "/compliance/regulator-requests/{id}/fulfil": {
      "post": {
        "operationId": "RegulatorRequestsController_fulfil",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FulfilRecordRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "regulator-record-requests"
        ]
      }
    }
  },
  "info": {
    "title": "Zachary InsureLink API",
    "description": "API-first insurance referral, commission, payment and audit platform",
    "version": "1.0.0",
    "contact": {}
  },
  "tags": [],
  "servers": [],
  "components": {
    "securitySchemes": {
      "bearer": {
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "type": "http"
      }
    },
    "schemas": {
      "LoginDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "mfaToken": {
            "type": "string"
          }
        },
        "required": [
          "email",
          "password"
        ]
      },
      "RefreshDto": {
        "type": "object",
        "properties": {
          "refreshToken": {
            "type": "string"
          }
        },
        "required": [
          "refreshToken"
        ]
      },
      "LogoutDto": {
        "type": "object",
        "properties": {
          "refreshToken": {
            "type": "string"
          }
        },
        "required": [
          "refreshToken"
        ]
      },
      "ForgotPasswordDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          }
        },
        "required": [
          "email"
        ]
      },
      "ResetPasswordDto": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "newPassword": {
            "type": "string"
          }
        },
        "required": [
          "token",
          "newPassword"
        ]
      },
      "ChangePasswordDto": {
        "type": "object",
        "properties": {
          "currentPassword": {
            "type": "string"
          },
          "newPassword": {
            "type": "string"
          }
        },
        "required": [
          "currentPassword",
          "newPassword"
        ]
      },
      "MfaVerifyDto": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          }
        },
        "required": [
          "token"
        ]
      },
      "MfaDisableDto": {
        "type": "object",
        "properties": {
          "password": {
            "type": "string"
          },
          "token": {
            "type": "string"
          }
        },
        "required": [
          "password",
          "token"
        ]
      },
      "CreateUserDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "roleIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "organizationId": {
            "type": "string"
          },
          "insurerId": {
            "type": "string"
          },
          "agentId": {
            "type": "string"
          }
        },
        "required": [
          "email",
          "firstName",
          "lastName",
          "password",
          "roleIds"
        ]
      },
      "UpdateUserDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "roleIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "organizationId": {
            "type": "string"
          },
          "insurerId": {
            "type": "string"
          },
          "agentId": {
            "type": "string"
          }
        }
      },
      "SuspendUserDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "reason"
        ]
      },
      "AssignRoleDto": {
        "type": "object",
        "properties": {
          "roleId": {
            "type": "string"
          }
        },
        "required": [
          "roleId"
        ]
      },
      "CreateRoleDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "permissionIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "name",
          "permissionIds"
        ]
      },
      "UpdateRoleDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "permissionIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "SetRolePermissionsDto": {
        "type": "object",
        "properties": {
          "permissionIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "permissionIds"
        ]
      },
      "CreateIdPatternDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "regex": {
            "type": "string",
            "description": "JavaScript-compatible regex source (no leading/trailing slash)."
          },
          "example": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          }
        },
        "required": [
          "code",
          "label",
          "regex"
        ]
      },
      "UpdateIdPatternDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "regex": {
            "type": "string",
            "description": "JavaScript-compatible regex source (no leading/trailing slash)."
          },
          "example": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "CreatePolicyDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "category": {
            "type": "string",
            "enum": [
              "kyc",
              "payments",
              "security",
              "data_sharing",
              "referrals"
            ]
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "value": {
            "type": "object"
          },
          "isActive": {
            "type": "boolean"
          },
          "effectiveFrom": {
            "type": "string"
          },
          "effectiveTo": {
            "type": "string"
          }
        },
        "required": [
          "code",
          "category",
          "name",
          "value"
        ]
      },
      "UpdatePolicyDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "category": {
            "type": "string",
            "enum": [
              "kyc",
              "payments",
              "security",
              "data_sharing",
              "referrals"
            ]
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "value": {
            "type": "object"
          },
          "isActive": {
            "type": "boolean"
          },
          "effectiveFrom": {
            "type": "string"
          },
          "effectiveTo": {
            "type": "string"
          }
        }
      },
      "CancelPolicyDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          },
          "refundAmount": {
            "type": "number",
            "description": "Pro-rata refund amount. When omitted, calculated from unused days."
          }
        },
        "required": [
          "reason"
        ]
      },
      "ReinstatePolicyDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "reason"
        ]
      },
      "CreateEndorsementDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "cover_increase",
              "cover_decrease",
              "address_change",
              "add_beneficiary",
              "remove_beneficiary",
              "premium_correction",
              "other"
            ]
          },
          "effectiveFrom": {
            "type": "string"
          },
          "premiumDelta": {
            "type": "number",
            "description": "Signed change to premium — positive for uplift, negative for reduction."
          },
          "sumInsuredAfter": {
            "type": "number",
            "description": "Sum-insured value AFTER the endorsement takes effect."
          },
          "reason": {
            "type": "string"
          },
          "documentId": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "effectiveFrom",
          "reason"
        ]
      },
      "FileClaimDto": {
        "type": "object",
        "properties": {
          "policyId": {
            "type": "string"
          },
          "incidentDate": {
            "type": "string"
          },
          "incidentType": {
            "type": "string",
            "description": "Free-form category e.g. \"motor_collision\", \"medical_admission\"."
          },
          "description": {
            "type": "string"
          },
          "claimedAmount": {
            "type": "number",
            "description": "Claimed amount in the policy currency."
          },
          "currency": {
            "type": "string",
            "description": "ISO currency; defaults to policy currency."
          },
          "documentIds": {
            "description": "Document IDs uploaded to support the claim.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "policyId",
          "incidentDate",
          "incidentType",
          "description",
          "claimedAmount"
        ]
      },
      "AssignClaimDto": {
        "type": "object",
        "properties": {
          "assignedTo": {
            "type": "string"
          },
          "slaDueAt": {
            "type": "string"
          }
        },
        "required": [
          "assignedTo"
        ]
      },
      "SettleClaimDto": {
        "type": "object",
        "properties": {
          "settledAmount": {
            "type": "number",
            "description": "Amount actually settled — may be less than claimed."
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "settledAmount"
        ]
      },
      "RepudiateClaimDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          },
          "clawbackCommissions": {
            "type": "boolean",
            "description": "When true, related commissions on the parent referral are clawed back."
          }
        },
        "required": [
          "reason"
        ]
      },
      "WithdrawClaimDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "reason"
        ]
      },
      "AppealClaimDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "reason"
        ]
      },
      "RecordClaimPaymentDto": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number"
          },
          "currency": {
            "type": "string"
          },
          "paymentMethod": {
            "type": "string"
          },
          "paymentReference": {
            "type": "string"
          }
        },
        "required": [
          "amount"
        ]
      },
      "AddClaimNoteDto": {
        "type": "object",
        "properties": {
          "body": {
            "type": "string"
          },
          "visibility": {
            "type": "string",
            "description": "\"internal\" hides from the reporting agent."
          }
        },
        "required": [
          "body"
        ]
      },
      "AddClaimDocumentDto": {
        "type": "object",
        "properties": {
          "documentId": {
            "type": "string"
          },
          "purpose": {
            "type": "string"
          }
        },
        "required": [
          "documentId",
          "purpose"
        ]
      },
      "OfferRenewalDto": {
        "type": "object",
        "properties": {
          "proposedPremium": {
            "type": "number",
            "description": "Overrides the auto-computed premium (uplift, promo, etc.)."
          },
          "message": {
            "type": "string"
          }
        }
      },
      "DeclineRenewalDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "reason"
        ]
      },
      "RaiseDisputeDto": {
        "type": "object",
        "properties": {
          "subjectType": {
            "type": "string",
            "enum": [
              "referral",
              "commission",
              "payment",
              "claim"
            ]
          },
          "subjectId": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "subjectType",
          "subjectId",
          "reason"
        ]
      },
      "TriageDisputeDto": {
        "type": "object",
        "properties": {
          "triageNote": {
            "type": "string"
          }
        }
      },
      "ResolveDisputeDto": {
        "type": "object",
        "properties": {
          "outcome": {
            "type": "string",
            "enum": [
              "upheld",
              "rejected"
            ]
          },
          "resolutionNote": {
            "type": "string"
          }
        },
        "required": [
          "outcome",
          "resolutionNote"
        ]
      },
      "WithdrawDisputeDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        }
      },
      "EscalateDisputeDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "reason"
        ]
      },
      "DisputeNoteDto": {
        "type": "object",
        "properties": {
          "body": {
            "type": "string"
          },
          "visibility": {
            "type": "string",
            "description": "\"internal\" hides from reporter; \"both\" is visible to both parties."
          }
        },
        "required": [
          "body"
        ]
      },
      "DeclineQuotationDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "reason"
        ]
      },
      "CreateClientDto": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "nationalId": {
            "type": "string"
          },
          "dob": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "gender": {
            "type": "string"
          }
        },
        "required": [
          "firstName",
          "lastName",
          "phone"
        ]
      },
      "UpdateClientDto": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "nationalId": {
            "type": "string"
          },
          "dob": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "gender": {
            "type": "string"
          }
        }
      },
      "MergeClientsDto": {
        "type": "object",
        "properties": {
          "duplicateId": {
            "type": "string",
            "description": "ID of the duplicate to fold into the target."
          },
          "targetId": {
            "type": "string",
            "description": "ID of the surviving canonical client."
          }
        },
        "required": [
          "duplicateId",
          "targetId"
        ]
      },
      "IssueInvoiceDto": {
        "type": "object",
        "properties": {
          "subscriptionId": {
            "type": "string"
          },
          "periodStart": {
            "type": "string",
            "description": "Manual override — defaults to the subscription plan intervals."
          },
          "periodEnd": {
            "type": "string"
          },
          "amount": {
            "type": "number",
            "description": "Override amount before VAT; defaults to the plan price."
          },
          "taxExempt": {
            "type": "boolean",
            "description": "Skip VAT (e.g. for exempt plans)."
          },
          "dueInDays": {
            "type": "number",
            "description": "Payment due window in days (default 14)."
          }
        },
        "required": [
          "subscriptionId"
        ]
      },
      "RecordPaymentDto": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number"
          },
          "currency": {
            "type": "string"
          },
          "paymentMethod": {
            "type": "string",
            "enum": [
              "bank_transfer",
              "mobile_money",
              "card",
              "cash"
            ]
          },
          "paymentReference": {
            "type": "string"
          }
        },
        "required": [
          "amount",
          "paymentMethod"
        ]
      },
      "WriteOffInvoiceDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "reason"
        ]
      },
      "CancelInvoiceDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "reason"
        ]
      },
      "ScreenRequestDto": {
        "type": "object",
        "properties": {
          "subjectType": {
            "type": "string",
            "enum": [
              "agent",
              "client"
            ]
          },
          "subjectId": {
            "type": "string"
          }
        },
        "required": [
          "subjectType",
          "subjectId"
        ]
      },
      "ReviewScreeningDto": {
        "type": "object",
        "properties": {
          "outcome": {
            "type": "string",
            "enum": [
              "confirmed_match",
              "false_positive"
            ]
          },
          "reviewNote": {
            "type": "string"
          }
        },
        "required": [
          "outcome",
          "reviewNote"
        ]
      },
      "GenerateBordereauDto": {
        "type": "object",
        "properties": {
          "insurerId": {
            "type": "string"
          },
          "periodStart": {
            "type": "string"
          },
          "periodEnd": {
            "type": "string"
          }
        },
        "required": [
          "insurerId",
          "periodStart",
          "periodEnd"
        ]
      },
      "ReconcileBordereauDto": {
        "type": "object",
        "properties": {
          "note": {
            "type": "string"
          }
        }
      },
      "DisputeBordereauDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "reason"
        ]
      },
      "CreateOrganizationDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "brokerage",
              "agency",
              "partner",
              "zfa_internal"
            ]
          },
          "billingEmail": {
            "type": "string"
          },
          "contactPhone": {
            "type": "string"
          },
          "taxPin": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "parentOrgId": {
            "type": "string",
            "description": "Parent organization for hierarchy (branch → head office)."
          }
        },
        "required": [
          "name",
          "type"
        ]
      },
      "UpdateOrganizationDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "brokerage",
              "agency",
              "partner",
              "zfa_internal"
            ]
          },
          "billingEmail": {
            "type": "string"
          },
          "contactPhone": {
            "type": "string"
          },
          "taxPin": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "parentOrgId": {
            "type": "string",
            "description": "Parent organization for hierarchy (branch → head office)."
          }
        }
      },
      "SuspendOrganizationDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "reason"
        ]
      },
      "CreateUnderwritingRuleDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "insurerId": {
            "type": "string"
          },
          "insurerProductId": {
            "type": "string"
          },
          "productPlanId": {
            "type": "string"
          },
          "agentType": {
            "type": "string",
            "enum": [
              "licensed_agent",
              "introducer",
              "corporate"
            ]
          },
          "expression": {
            "type": "object",
            "description": "AST — see UwExpression."
          },
          "action": {
            "type": "string",
            "enum": [
              "auto_decline",
              "refer_for_review",
              "flag",
              "allow"
            ]
          },
          "reason": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          },
          "effectiveFrom": {
            "type": "string"
          },
          "effectiveTo": {
            "type": "string"
          }
        },
        "required": [
          "code",
          "name",
          "expression",
          "action",
          "reason"
        ]
      },
      "UpdateUnderwritingRuleDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "insurerId": {
            "type": "string"
          },
          "insurerProductId": {
            "type": "string"
          },
          "productPlanId": {
            "type": "string"
          },
          "agentType": {
            "type": "string",
            "enum": [
              "licensed_agent",
              "introducer",
              "corporate"
            ]
          },
          "expression": {
            "type": "object",
            "description": "AST — see UwExpression."
          },
          "action": {
            "type": "string",
            "enum": [
              "auto_decline",
              "refer_for_review",
              "flag",
              "allow"
            ]
          },
          "reason": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          },
          "effectiveFrom": {
            "type": "string"
          },
          "effectiveTo": {
            "type": "string"
          }
        }
      },
      "EvaluateDto": {
        "type": "object",
        "properties": {
          "referralId": {
            "type": "string"
          }
        },
        "required": [
          "referralId"
        ]
      },
      "InsurerWebhookBody": {
        "type": "object",
        "properties": {
          "eventType": {
            "type": "string",
            "enum": [
              "quotation.issued",
              "quotation.declined",
              "policy.bound",
              "policy.cancelled",
              "claim.received",
              "claim.settled",
              "claim.repudiated"
            ]
          },
          "externalId": {
            "type": "string",
            "description": "Insurer-side event id (idempotency key)."
          },
          "referralId": {
            "type": "string"
          },
          "externalQuotationRef": {
            "type": "string"
          },
          "policyNumber": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "eventType",
          "referralId"
        ]
      },
      "AssignLeadDto": {
        "type": "object",
        "properties": {
          "agentId": {
            "type": "string"
          }
        },
        "required": [
          "agentId"
        ]
      },
      "ConvertLeadDto": {
        "type": "object",
        "properties": {
          "insurerId": {
            "type": "string"
          },
          "insurerProductId": {
            "type": "string"
          },
          "productPlanId": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          }
        },
        "required": [
          "insurerId",
          "insurerProductId"
        ]
      },
      "DismissLeadDto": {
        "type": "object",
        "properties": {
          "outcome": {
            "type": "string",
            "enum": [
              "qualified_out",
              "spam"
            ]
          },
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "outcome"
        ]
      },
      "CreateLeadDto": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "interest": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "description": "Source label — \"website\", \"whatsapp\", \"call_centre\", etc."
          },
          "captchaToken": {
            "type": "string",
            "description": "reCAPTCHA v3 token (verified server-side)."
          }
        },
        "required": [
          "firstName",
          "lastName",
          "phone",
          "source"
        ]
      },
      "RequestOtpDto": {
        "type": "object",
        "properties": {
          "phone": {
            "type": "string"
          },
          "email": {
            "type": "string"
          }
        }
      },
      "VerifyOtpDto": {
        "type": "object",
        "properties": {
          "phone": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "code": {
            "type": "string"
          }
        },
        "required": [
          "code"
        ]
      },
      "CreateRatingDto": {
        "type": "object",
        "properties": {
          "subjectType": {
            "type": "string",
            "enum": [
              "insurer",
              "agent",
              "product"
            ]
          },
          "subjectId": {
            "type": "string"
          },
          "rating": {
            "type": "number",
            "description": "1-5 scale."
          },
          "category": {
            "type": "string",
            "description": "e.g. \"turnaround_time\", \"quote_quality\", \"service\"."
          },
          "comment": {
            "type": "string"
          }
        },
        "required": [
          "subjectType",
          "subjectId",
          "rating"
        ]
      },
      "CreateContentAssetDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Stable code identifying the content across versions."
          },
          "title": {
            "type": "string"
          },
          "category": {
            "type": "string",
            "enum": [
              "product_brochure",
              "terms",
              "privacy_policy",
              "training",
              "marketing",
              "other"
            ]
          },
          "body": {
            "type": "string"
          },
          "documentId": {
            "type": "string"
          },
          "effectiveFrom": {
            "type": "string"
          },
          "effectiveTo": {
            "type": "string"
          }
        },
        "required": [
          "code",
          "title",
          "category",
          "body"
        ]
      },
      "UpdateContentAssetDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Stable code identifying the content across versions."
          },
          "title": {
            "type": "string"
          },
          "category": {
            "type": "string",
            "enum": [
              "product_brochure",
              "terms",
              "privacy_policy",
              "training",
              "marketing",
              "other"
            ]
          },
          "body": {
            "type": "string"
          },
          "documentId": {
            "type": "string"
          },
          "effectiveFrom": {
            "type": "string"
          },
          "effectiveTo": {
            "type": "string"
          }
        }
      },
      "TriggerExportDto": {
        "type": "object",
        "properties": {
          "format": {
            "type": "string",
            "enum": [
              "json",
              "csv"
            ]
          }
        }
      },
      "CreateFraudRuleDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "ruleType": {
            "type": "string",
            "enum": [
              "agent_referral_velocity",
              "client_duplication_across_agents",
              "commission_spike",
              "payment_burst"
            ]
          },
          "parameters": {
            "type": "object",
            "description": "Rule parameters (thresholds, windows)."
          },
          "severity": {
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high",
              "critical"
            ]
          },
          "isActive": {
            "type": "boolean"
          }
        },
        "required": [
          "code",
          "name",
          "ruleType",
          "parameters"
        ]
      },
      "UpdateFraudRuleDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "ruleType": {
            "type": "string",
            "enum": [
              "agent_referral_velocity",
              "client_duplication_across_agents",
              "commission_spike",
              "payment_burst"
            ]
          },
          "parameters": {
            "type": "object",
            "description": "Rule parameters (thresholds, windows)."
          },
          "severity": {
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high",
              "critical"
            ]
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "TriageAlertDto": {
        "type": "object",
        "properties": {
          "note": {
            "type": "string"
          }
        }
      },
      "ResolveAlertDto": {
        "type": "object",
        "properties": {
          "outcome": {
            "type": "string",
            "enum": [
              "resolved",
              "false_positive"
            ]
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "outcome",
          "note"
        ]
      },
      "CreateTicketDto": {
        "type": "object",
        "properties": {
          "subject": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "category": {
            "type": "string",
            "enum": [
              "account",
              "billing",
              "referral",
              "commission",
              "technical",
              "other"
            ]
          },
          "priority": {
            "type": "string",
            "enum": [
              "low",
              "normal",
              "high",
              "urgent"
            ]
          }
        },
        "required": [
          "subject",
          "body",
          "category"
        ]
      },
      "AssignTicketDto": {
        "type": "object",
        "properties": {
          "assignedTo": {
            "type": "string"
          }
        },
        "required": [
          "assignedTo"
        ]
      },
      "ReplyTicketDto": {
        "type": "object",
        "properties": {
          "body": {
            "type": "string"
          },
          "visibility": {
            "type": "string",
            "description": "\"internal\" hides from the reporter."
          }
        },
        "required": [
          "body"
        ]
      },
      "ResolveTicketDto": {
        "type": "object",
        "properties": {
          "resolutionNote": {
            "type": "string"
          }
        },
        "required": [
          "resolutionNote"
        ]
      },
      "WithdrawDto": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number"
          },
          "payoutAccountId": {
            "type": "string",
            "description": "Target payout account id (must belong to the wallet owner)."
          },
          "currency": {
            "type": "string"
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "amount",
          "payoutAccountId"
        ]
      },
      "ConvertWalletDto": {
        "type": "object",
        "properties": {
          "fromCurrency": {
            "type": "string"
          },
          "toCurrency": {
            "type": "string"
          },
          "amount": {
            "type": "number"
          }
        },
        "required": [
          "fromCurrency",
          "toCurrency",
          "amount"
        ]
      },
      "AdjustWalletDto": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "description": "Positive = credit, negative = debit."
          },
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "amount",
          "reason"
        ]
      },
      "UpsertFxRateDto": {
        "type": "object",
        "properties": {
          "fromCurrency": {
            "type": "string"
          },
          "toCurrency": {
            "type": "string"
          },
          "rate": {
            "type": "number",
            "description": "Multiplier — 1 fromCcy = <rate> toCcy."
          },
          "source": {
            "type": "string"
          }
        },
        "required": [
          "fromCurrency",
          "toCurrency",
          "rate"
        ]
      },
      "CreateDeductionTypeDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "fee",
              "tax",
              "membership",
              "levy",
              "penalty",
              "other"
            ]
          },
          "computation": {
            "type": "string",
            "enum": [
              "percentage",
              "fixed_amount",
              "tiered"
            ]
          },
          "percentageValue": {
            "type": "number",
            "description": "Required when computation is \"percentage\"."
          },
          "fixedAmountValue": {
            "type": "number",
            "description": "Required when computation is \"fixed_amount\"."
          },
          "currency": {
            "type": "string"
          },
          "scope": {
            "type": "string",
            "enum": [
              "commission",
              "wallet_withdrawal",
              "both"
            ]
          },
          "priority": {
            "type": "number",
            "description": "Application order (lower first)."
          },
          "isActive": {
            "type": "boolean"
          },
          "agentType": {
            "type": "string",
            "enum": [
              "licensed_agent",
              "introducer",
              "corporate"
            ]
          },
          "insurerId": {
            "type": "string"
          },
          "insurerProductId": {
            "type": "string"
          },
          "minGross": {
            "type": "number"
          },
          "maxGross": {
            "type": "number"
          },
          "effectiveFrom": {
            "type": "string"
          },
          "effectiveTo": {
            "type": "string"
          },
          "metadata": {
            "type": "object",
            "description": "For tiered computation: { tiers: [{ min, max?, percentage?, fixedAmount? }, ...] }."
          }
        },
        "required": [
          "code",
          "displayName",
          "kind",
          "computation",
          "scope"
        ]
      },
      "UpdateDeductionTypeDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "fee",
              "tax",
              "membership",
              "levy",
              "penalty",
              "other"
            ]
          },
          "computation": {
            "type": "string",
            "enum": [
              "percentage",
              "fixed_amount",
              "tiered"
            ]
          },
          "percentageValue": {
            "type": "number",
            "description": "Required when computation is \"percentage\"."
          },
          "fixedAmountValue": {
            "type": "number",
            "description": "Required when computation is \"fixed_amount\"."
          },
          "currency": {
            "type": "string"
          },
          "scope": {
            "type": "string",
            "enum": [
              "commission",
              "wallet_withdrawal",
              "both"
            ]
          },
          "priority": {
            "type": "number",
            "description": "Application order (lower first)."
          },
          "isActive": {
            "type": "boolean"
          },
          "agentType": {
            "type": "string",
            "enum": [
              "licensed_agent",
              "introducer",
              "corporate"
            ]
          },
          "insurerId": {
            "type": "string"
          },
          "insurerProductId": {
            "type": "string"
          },
          "minGross": {
            "type": "number"
          },
          "maxGross": {
            "type": "number"
          },
          "effectiveFrom": {
            "type": "string"
          },
          "effectiveTo": {
            "type": "string"
          },
          "metadata": {
            "type": "object",
            "description": "For tiered computation: { tiers: [{ min, max?, percentage?, fixedAmount? }, ...] }."
          }
        }
      },
      "PreviewDeductionsDto": {
        "type": "object",
        "properties": {
          "scope": {
            "type": "string",
            "enum": [
              "commission",
              "wallet_withdrawal",
              "both"
            ]
          },
          "grossAmount": {
            "type": "number"
          },
          "currency": {
            "type": "string"
          },
          "agentType": {
            "type": "string",
            "enum": [
              "licensed_agent",
              "introducer",
              "corporate"
            ]
          },
          "insurerId": {
            "type": "string"
          },
          "insurerProductId": {
            "type": "string"
          },
          "at": {
            "type": "string",
            "description": "Simulation date (defaults to now)."
          }
        },
        "required": [
          "scope",
          "grossAmount"
        ]
      },
      "CreateInvestmentProductDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "fixed_term",
              "call"
            ]
          },
          "interestRateAnnualPct": {
            "type": "number",
            "description": "Annualised interest rate as a percent (e.g. 10 = 10% p.a.)."
          },
          "currency": {
            "type": "string"
          },
          "minTermDays": {
            "type": "number"
          },
          "maxTermDays": {
            "type": "number"
          },
          "minAmount": {
            "type": "number"
          },
          "maxAmount": {
            "type": "number"
          },
          "earlyRedemptionPenaltyPct": {
            "type": "number",
            "description": "Fraction of accrued interest forfeited on early redemption (percent, e.g. 50 = 50%)."
          },
          "isActive": {
            "type": "boolean"
          }
        },
        "required": [
          "code",
          "name",
          "kind",
          "interestRateAnnualPct"
        ]
      },
      "UpdateInvestmentProductDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "fixed_term",
              "call"
            ]
          },
          "interestRateAnnualPct": {
            "type": "number",
            "description": "Annualised interest rate as a percent (e.g. 10 = 10% p.a.)."
          },
          "currency": {
            "type": "string"
          },
          "minTermDays": {
            "type": "number"
          },
          "maxTermDays": {
            "type": "number"
          },
          "minAmount": {
            "type": "number"
          },
          "maxAmount": {
            "type": "number"
          },
          "earlyRedemptionPenaltyPct": {
            "type": "number",
            "description": "Fraction of accrued interest forfeited on early redemption (percent, e.g. 50 = 50%)."
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "OpenInvestmentDto": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string"
          },
          "amount": {
            "type": "number"
          },
          "termDays": {
            "type": "number",
            "description": "Term in days (fixed_term products only)."
          }
        },
        "required": [
          "productId",
          "amount"
        ]
      },
      "VerifyRegistrationDto": {
        "type": "object",
        "properties": {
          "response": {
            "type": "object"
          },
          "nickname": {
            "type": "string",
            "description": "Human-readable label for the passkey (e.g. \"iPhone 15\")."
          }
        },
        "required": [
          "response"
        ]
      },
      "LookupEmailDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          }
        },
        "required": [
          "email"
        ]
      },
      "VerifyAuthenticationDto": {
        "type": "object",
        "properties": {
          "response": {
            "type": "object"
          }
        },
        "required": [
          "response"
        ]
      },
      "CreateAgentDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "licensed_agent",
              "introducer",
              "corporate"
            ],
            "default": "licensed_agent"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "nationalId": {
            "type": "string",
            "description": "National Identification Number (NIN). Mandatory for every agent. Validated against the ZFA \"national_id\" IdPattern when configured."
          },
          "iraRegistrationNumber": {
            "type": "string",
            "description": "IRA (Insurance Regulatory Authority) registration number. Required for licensed agents; validated against the ZFA IdPattern when configured.",
            "example": "IRA/AG/2026/00123"
          },
          "iraRegistrationExpiresAt": {
            "type": "string",
            "description": "Expiry date of the IRA registration."
          },
          "insurelinkAgencyNumber": {
            "type": "string",
            "description": "InsureLink Agency Number assigned by Zachary Financial Agency. Must be unique when set.",
            "example": "ZFA-AG-000123"
          },
          "taxPin": {
            "type": "string",
            "description": "Tax PIN / TIN. Validated against the ZFA \"tax_pin\" IdPattern when configured."
          },
          "address": {
            "type": "string"
          },
          "tier": {
            "type": "string"
          },
          "sponsorAgentId": {
            "type": "string",
            "description": "UUID of the sponsoring licensed agent. Required when type is \"introducer\". Non-licensed introducers must be attached to a licensed agent so ZFA does not engage them directly."
          }
        },
        "required": [
          "firstName",
          "lastName",
          "email",
          "phone",
          "nationalId"
        ]
      },
      "SelfRegisterAgentDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "licensed_agent",
              "introducer",
              "corporate"
            ]
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "nationalId": {
            "type": "string"
          },
          "iraRegistrationNumber": {
            "type": "string",
            "description": "Required for licensed_agent type.",
            "example": "IRA/AG/2026/00123"
          },
          "taxPin": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "sponsorCode": {
            "type": "string",
            "description": "Sponsoring licensed agent — supply the sponsor's public code (e.g. \"26-ABCDEFGH23\") or their full internal reference. Required when type is introducer."
          }
        },
        "required": [
          "type",
          "firstName",
          "lastName",
          "email",
          "phone",
          "nationalId"
        ]
      },
      "UpdateAgentDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "licensed_agent",
              "introducer",
              "corporate"
            ],
            "default": "licensed_agent"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "nationalId": {
            "type": "string",
            "description": "National Identification Number (NIN). Mandatory for every agent. Validated against the ZFA \"national_id\" IdPattern when configured."
          },
          "iraRegistrationNumber": {
            "type": "string",
            "description": "IRA (Insurance Regulatory Authority) registration number. Required for licensed agents; validated against the ZFA IdPattern when configured.",
            "example": "IRA/AG/2026/00123"
          },
          "iraRegistrationExpiresAt": {
            "type": "string",
            "description": "Expiry date of the IRA registration."
          },
          "insurelinkAgencyNumber": {
            "type": "string",
            "description": "InsureLink Agency Number assigned by Zachary Financial Agency. Must be unique when set.",
            "example": "ZFA-AG-000123"
          },
          "taxPin": {
            "type": "string",
            "description": "Tax PIN / TIN. Validated against the ZFA \"tax_pin\" IdPattern when configured."
          },
          "address": {
            "type": "string"
          },
          "tier": {
            "type": "string"
          },
          "sponsorAgentId": {
            "type": "string",
            "description": "UUID of the sponsoring licensed agent. Required when type is \"introducer\". Non-licensed introducers must be attached to a licensed agent so ZFA does not engage them directly."
          }
        }
      },
      "ReasonDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "reason"
        ]
      },
      "KycDocumentInput": {
        "type": "object",
        "properties": {
          "documentId": {
            "type": "string",
            "description": "Document ID previously uploaded via /documents/upload."
          },
          "kind": {
            "type": "string",
            "description": "Kind of KYC evidence (e.g. national_id_front, ira_licence)."
          },
          "documentReference": {
            "type": "string",
            "description": "Issuer reference number (NIN, IRA licence #, tax PIN, etc.) — validated against ZFA IdPattern when configured."
          },
          "issuedAt": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string"
          }
        },
        "required": [
          "documentId",
          "kind"
        ]
      },
      "SubmitKycDto": {
        "type": "object",
        "properties": {
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KycDocumentInput"
            }
          }
        },
        "required": [
          "documents"
        ]
      },
      "ReviewKycDocumentDto": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "verified",
              "rejected",
              "expired"
            ]
          },
          "rejectionReason": {
            "type": "string"
          }
        },
        "required": [
          "status"
        ]
      },
      "VerifyKycDto": {
        "type": "object",
        "properties": {
          "validityYears": {
            "type": "number",
            "description": "Years until re-verification is due. Falls back to the ZFA policy value."
          }
        }
      },
      "RejectKycDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "reason"
        ]
      },
      "CreateAgentLicenseDto": {
        "type": "object",
        "properties": {
          "licenseNo": {
            "type": "string"
          },
          "issuer": {
            "type": "string"
          },
          "issuedAt": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string"
          },
          "documentId": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "expired",
              "suspended",
              "revoked"
            ]
          }
        },
        "required": [
          "licenseNo",
          "issuer",
          "issuedAt",
          "expiresAt"
        ]
      },
      "UpdateAgentLicenseDto": {
        "type": "object",
        "properties": {
          "licenseNo": {
            "type": "string"
          },
          "issuer": {
            "type": "string"
          },
          "issuedAt": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string"
          },
          "documentId": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "expired",
              "suspended",
              "revoked"
            ]
          }
        }
      },
      "CreateInsurerDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "registrationNo": {
            "type": "string"
          },
          "contactEmail": {
            "type": "string"
          },
          "contactPhone": {
            "type": "string"
          },
          "address": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "contactEmail",
          "contactPhone"
        ]
      },
      "UpdateInsurerDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "registrationNo": {
            "type": "string"
          },
          "contactEmail": {
            "type": "string"
          },
          "contactPhone": {
            "type": "string"
          },
          "address": {
            "type": "string"
          }
        }
      },
      "CreateInsurerContactDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "isPrimary": {
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "email"
        ]
      },
      "UpdateInsurerContactDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "isPrimary": {
            "type": "boolean"
          }
        }
      },
      "UpsertInsurerIntegrationSettingDto": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "isSecret": {
            "type": "boolean",
            "description": "When true the value is AES-256-GCM encrypted at rest and never returned in list/get responses (masked preview only)."
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "CreateProductCategoryDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          }
        },
        "required": [
          "code",
          "name"
        ]
      },
      "UpdateProductCategoryDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "RequiredDocumentInput": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "isMandatory": {
            "type": "boolean"
          }
        },
        "required": [
          "code",
          "label"
        ]
      },
      "CreateInsurerProductDto": {
        "type": "object",
        "properties": {
          "insurerId": {
            "type": "string"
          },
          "categoryId": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "supportsDirectIntegration": {
            "type": "boolean"
          },
          "processingSlaHours": {
            "type": "number"
          },
          "commissionApplicable": {
            "type": "boolean"
          },
          "requiredDocuments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RequiredDocumentInput"
            }
          }
        },
        "required": [
          "insurerId",
          "categoryId",
          "code",
          "name"
        ]
      },
      "UpdateInsurerProductDto": {
        "type": "object",
        "properties": {
          "insurerId": {
            "type": "string"
          },
          "categoryId": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "supportsDirectIntegration": {
            "type": "boolean"
          },
          "processingSlaHours": {
            "type": "number"
          },
          "commissionApplicable": {
            "type": "boolean"
          },
          "requiredDocuments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RequiredDocumentInput"
            }
          }
        }
      },
      "CreateProductPlanDto": {
        "type": "object",
        "properties": {
          "insurerProductId": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "coverageAmount": {
            "type": "number"
          },
          "currency": {
            "type": "string"
          }
        },
        "required": [
          "insurerProductId",
          "code",
          "name"
        ]
      },
      "UpdateProductPlanDto": {
        "type": "object",
        "properties": {
          "insurerProductId": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "coverageAmount": {
            "type": "number"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "UpsertPlanRequiredDocDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "isMandatory": {
            "type": "boolean"
          }
        },
        "required": [
          "code",
          "label"
        ]
      },
      "CreateReferralDto": {
        "type": "object",
        "properties": {
          "agentId": {
            "type": "string"
          },
          "insurerProductId": {
            "type": "string",
            "description": "Insurer product ID — required. Referrals cannot select a bare product category."
          },
          "productPlanId": {
            "type": "string"
          },
          "clientFirstName": {
            "type": "string"
          },
          "clientLastName": {
            "type": "string"
          },
          "clientEmail": {
            "type": "string"
          },
          "clientPhone": {
            "type": "string"
          },
          "clientNationalId": {
            "type": "string"
          },
          "clientDob": {
            "type": "string"
          },
          "clientAddress": {
            "type": "string"
          },
          "requestedCoverage": {
            "type": "number"
          },
          "currency": {
            "type": "string"
          }
        },
        "required": [
          "agentId",
          "insurerProductId",
          "clientFirstName",
          "clientLastName",
          "clientPhone"
        ]
      },
      "UpdateReferralDto": {
        "type": "object",
        "properties": {
          "agentId": {
            "type": "string"
          },
          "insurerProductId": {
            "type": "string",
            "description": "Insurer product ID — required. Referrals cannot select a bare product category."
          },
          "productPlanId": {
            "type": "string"
          },
          "clientFirstName": {
            "type": "string"
          },
          "clientLastName": {
            "type": "string"
          },
          "clientEmail": {
            "type": "string"
          },
          "clientPhone": {
            "type": "string"
          },
          "clientNationalId": {
            "type": "string"
          },
          "clientDob": {
            "type": "string"
          },
          "clientAddress": {
            "type": "string"
          },
          "requestedCoverage": {
            "type": "number"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "SubmitReferralDto": {
        "type": "object",
        "properties": {
          "clientConsentMethod": {
            "type": "string"
          }
        }
      },
      "AssignReferralDto": {
        "type": "object",
        "properties": {
          "assigneeId": {
            "type": "string"
          }
        },
        "required": [
          "assigneeId"
        ]
      },
      "RequestInfoDto": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          }
        },
        "required": [
          "message"
        ]
      },
      "RecordQuotationDto": {
        "type": "object",
        "properties": {
          "quotationRef": {
            "type": "string"
          },
          "premiumAmount": {
            "type": "number"
          },
          "currency": {
            "type": "string"
          },
          "validFrom": {
            "type": "string"
          },
          "validTo": {
            "type": "string"
          },
          "documentId": {
            "type": "string"
          }
        },
        "required": [
          "quotationRef",
          "premiumAmount",
          "validFrom",
          "validTo"
        ]
      },
      "ShareQuotationDto": {
        "type": "object",
        "properties": {
          "channel": {
            "type": "string"
          }
        }
      },
      "ClientAcceptanceDto": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string"
          },
          "evidenceRef": {
            "type": "string"
          },
          "documentId": {
            "type": "string"
          }
        },
        "required": [
          "method"
        ]
      },
      "ConfirmPremiumPaymentDto": {
        "type": "object",
        "properties": {
          "premiumAmount": {
            "type": "number"
          },
          "reference": {
            "type": "string"
          }
        },
        "required": [
          "premiumAmount"
        ]
      },
      "IssuePolicyDto": {
        "type": "object",
        "properties": {
          "policyNumber": {
            "type": "string"
          },
          "effectiveFrom": {
            "type": "string"
          },
          "effectiveTo": {
            "type": "string"
          },
          "documentId": {
            "type": "string"
          },
          "premiumAmount": {
            "type": "number"
          }
        },
        "required": [
          "policyNumber",
          "effectiveFrom",
          "effectiveTo"
        ]
      },
      "AttachDocumentDto": {
        "type": "object",
        "properties": {
          "documentId": {
            "type": "string"
          },
          "category": {
            "type": "string"
          }
        },
        "required": [
          "documentId",
          "category"
        ]
      },
      "NoteDto": {
        "type": "object",
        "properties": {
          "body": {
            "type": "string"
          },
          "visibility": {
            "type": "string",
            "enum": [
              "internal",
              "external",
              "system"
            ]
          }
        },
        "required": [
          "body"
        ]
      },
      "AdjustDto": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "description": "Signed delta to apply to the approved amount."
          },
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "amount",
          "reason"
        ]
      },
      "UploadDocumentDto": {
        "type": "object",
        "properties": {
          "ownerType": {
            "type": "string",
            "enum": [
              "agent",
              "insurer",
              "referral",
              "commission",
              "payment",
              "kyc"
            ]
          },
          "ownerId": {
            "type": "string"
          },
          "classification": {
            "type": "string"
          }
        },
        "required": [
          "ownerType",
          "ownerId"
        ]
      },
      "UpdateDocumentDto": {
        "type": "object",
        "properties": {
          "classification": {
            "type": "string"
          }
        }
      },
      "CreateCommissionRuleDto": {
        "type": "object",
        "properties": {
          "insurerProductId": {
            "type": "string"
          },
          "productPlanId": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "basis": {
            "type": "string",
            "enum": [
              "premium_percentage",
              "fixed_amount",
              "tiered"
            ]
          },
          "percentage": {
            "type": "number"
          },
          "fixedAmount": {
            "type": "number"
          },
          "minPremium": {
            "type": "number"
          },
          "maxPremium": {
            "type": "number"
          },
          "agentTier": {
            "type": "string"
          },
          "effectiveFrom": {
            "type": "string"
          },
          "effectiveTo": {
            "type": "string"
          }
        },
        "required": [
          "insurerProductId",
          "code",
          "name",
          "basis",
          "effectiveFrom"
        ]
      },
      "UpdateCommissionRuleDto": {
        "type": "object",
        "properties": {
          "insurerProductId": {
            "type": "string"
          },
          "productPlanId": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "basis": {
            "type": "string",
            "enum": [
              "premium_percentage",
              "fixed_amount",
              "tiered"
            ]
          },
          "percentage": {
            "type": "number"
          },
          "fixedAmount": {
            "type": "number"
          },
          "minPremium": {
            "type": "number"
          },
          "maxPremium": {
            "type": "number"
          },
          "agentTier": {
            "type": "string"
          },
          "effectiveFrom": {
            "type": "string"
          },
          "effectiveTo": {
            "type": "string"
          }
        }
      },
      "SimulateCommissionDto": {
        "type": "object",
        "properties": {
          "insurerProductId": {
            "type": "string"
          },
          "productPlanId": {
            "type": "string"
          },
          "agentTier": {
            "type": "string"
          },
          "premiumAmount": {
            "type": "number"
          }
        },
        "required": [
          "insurerProductId",
          "premiumAmount"
        ]
      },
      "CreatePayoutAccountDto": {
        "type": "object",
        "properties": {
          "agentId": {
            "type": "string"
          },
          "accountType": {
            "type": "string",
            "enum": [
              "bank",
              "mobile_money"
            ]
          },
          "accountNumber": {
            "type": "string"
          },
          "bankCode": {
            "type": "string"
          },
          "branchCode": {
            "type": "string"
          },
          "accountHolder": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "isPrimary": {
            "type": "boolean"
          }
        },
        "required": [
          "agentId",
          "accountType",
          "accountNumber",
          "accountHolder"
        ]
      },
      "UpdatePayoutAccountDto": {
        "type": "object",
        "properties": {
          "agentId": {
            "type": "string"
          },
          "accountType": {
            "type": "string",
            "enum": [
              "bank",
              "mobile_money"
            ]
          },
          "accountNumber": {
            "type": "string"
          },
          "bankCode": {
            "type": "string"
          },
          "branchCode": {
            "type": "string"
          },
          "accountHolder": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "isPrimary": {
            "type": "boolean"
          }
        }
      },
      "CreatePaymentBatchDto": {
        "type": "object",
        "properties": {
          "reference": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "commissionIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "provider": {
            "type": "string",
            "enum": [
              "mock",
              "bank",
              "mobile_money"
            ]
          }
        },
        "required": [
          "reference",
          "commissionIds",
          "provider"
        ]
      },
      "ReconcileDto": {
        "type": "object",
        "properties": {
          "externalRef": {
            "type": "string"
          },
          "amount": {
            "type": "number"
          },
          "notes": {
            "type": "string"
          }
        },
        "required": [
          "externalRef",
          "amount"
        ]
      },
      "ImportReconciliationDto": {
        "type": "object",
        "properties": {
          "csv": {
            "type": "string",
            "description": "Raw CSV feed. Header row required. Columns: provider,providerRef,amount,currency,processedAt,note. Any additional columns are ignored."
          }
        },
        "required": [
          "csv"
        ]
      },
      "CreateSubscriptionPlanDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "priceAmount": {
            "type": "number"
          },
          "currency": {
            "type": "string"
          },
          "intervalDays": {
            "type": "number"
          },
          "graceDays": {
            "type": "number"
          },
          "isActive": {
            "type": "boolean"
          }
        },
        "required": [
          "code",
          "name",
          "priceAmount",
          "intervalDays"
        ]
      },
      "UpdateSubscriptionPlanDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "priceAmount": {
            "type": "number"
          },
          "currency": {
            "type": "string"
          },
          "intervalDays": {
            "type": "number"
          },
          "graceDays": {
            "type": "number"
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "CreateAgentSubscriptionDto": {
        "type": "object",
        "properties": {
          "agentId": {
            "type": "string"
          },
          "planId": {
            "type": "string"
          }
        },
        "required": [
          "agentId",
          "planId"
        ]
      },
      "CancelSubscriptionDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "reason"
        ]
      },
      "PreferenceItem": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "enum": [
              "agent",
              "agent_kyc",
              "referral",
              "commission",
              "payment",
              "subscription",
              "auth",
              "compliance",
              "system"
            ]
          },
          "channel": {
            "type": "string",
            "enum": [
              "email",
              "sms",
              "whatsapp",
              "in_app"
            ]
          },
          "enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "category",
          "channel",
          "enabled"
        ]
      },
      "BulkUpdatePreferencesDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PreferenceItem"
            }
          }
        },
        "required": [
          "items"
        ]
      },
      "CreateTemplateDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "subject": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "channel": {
            "type": "string",
            "enum": [
              "email",
              "sms",
              "whatsapp",
              "in_app"
            ]
          },
          "isActive": {
            "type": "boolean"
          }
        },
        "required": [
          "code",
          "name",
          "body",
          "channel"
        ]
      },
      "UpdateTemplateDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "subject": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "channel": {
            "type": "string",
            "enum": [
              "email",
              "sms",
              "whatsapp",
              "in_app"
            ]
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "DsarErasureDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "description": "Justification captured in the audit trail."
          }
        },
        "required": [
          "reason"
        ]
      },
      "CreateApiKeyDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "scopes": {
            "description": "System permissions the key may act with. Must be a subset of the platform catalogue.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "expiresAt": {
            "type": "string",
            "description": "ISO date after which the key stops working."
          },
          "ownerType": {
            "type": "string",
            "description": "Partner organisation code, insurer, etc."
          },
          "ownerId": {
            "type": "string"
          },
          "rateLimitPerMin": {
            "type": "number",
            "description": "Max requests per minute for this key. Null = fall back to global limit."
          },
          "allowedIps": {
            "description": "Allowlist of IP addresses that may present this key. Empty = unrestricted.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "name",
          "scopes"
        ]
      },
      "CreateRecordRequestDto": {
        "type": "object",
        "properties": {
          "regulatorName": {
            "type": "string"
          },
          "requesterEmail": {
            "type": "string"
          },
          "legalBasis": {
            "type": "string",
            "description": "Statute or regulator directive under which the records are requested. Captured verbatim in the audit trail."
          },
          "scope": {
            "type": "string",
            "enum": [
              "referrals",
              "commissions",
              "payments",
              "audit_events"
            ]
          },
          "filters": {
            "type": "object",
            "description": "Free-form filter object (date range, insurer, product, agent, etc.). Compliance uses this to run the queries during fulfilment."
          }
        },
        "required": [
          "regulatorName",
          "requesterEmail",
          "legalBasis",
          "scope"
        ]
      },
      "ApproveRecordRequestDto": {
        "type": "object",
        "properties": {
          "note": {
            "type": "string",
            "description": "Compliance officer approval note."
          }
        }
      },
      "DenyRecordRequestDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "reason"
        ]
      },
      "FulfilRecordRequestDto": {
        "type": "object",
        "properties": {
          "attachedIds": {
            "description": "Record IDs (referral / commission / payment / audit event) released to the regulator.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "attachedNote": {
            "type": "string",
            "description": "Note included in the fulfilment audit event."
          }
        },
        "required": [
          "attachedIds"
        ]
      }
    }
  }
}