{
  "openapi": "3.1.0",
  "info": {
    "title": "eterfaceID API",
    "version": "1.0.0",
    "description": "KYC, KYB, sanctions screening, transaction monitoring and regulatory reporting. Authenticate with an eterfaceID API key: Authorization: Bearer eid_…"
  },
  "servers": [
    {
      "url": "https://www.eterfaceid.com"
    }
  ],
  "tags": [
    {
      "name": "Getting started",
      "description": "Check a key and see which company and environment it belongs to."
    },
    {
      "name": "Cases",
      "description": "A case is one person or one business being checked."
    },
    {
      "name": "Identity verification",
      "description": "Either send us the data yourself, or hand the customer a secure link."
    },
    {
      "name": "Business verification",
      "description": "Beneficial ownership under FATF R.24/R.25, the CTA and PCMLTFA."
    },
    {
      "name": "Screening and monitoring",
      "description": "Sanctions, PEP and watchlist screening, plus transaction rules and alerts."
    },
    {
      "name": "Bank-confirmed identity",
      "description": "Available when bank connections are switched on for the platform."
    },
    {
      "name": "Regulatory reports",
      "description": "Draft, list and mark filed the reports your regulator expects."
    }
  ],
  "components": {
    "securitySchemes": {
      "ApiKey": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "eid_…"
      }
    }
  },
  "security": [
    {
      "ApiKey": []
    }
  ],
  "paths": {
    "/api/public/v1/ping": {
      "get": {
        "tags": [
          "Getting started"
        ],
        "summary": "Check your key",
        "description": "Confirms the key works and returns the company and environment it belongs to.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "data": {
                    "ok": true,
                    "api_version": "v1",
                    "environment": "live",
                    "organization": {
                      "id": "…",
                      "name": "eFinMoney"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/cases": {
      "get": {
        "tags": [
          "Cases"
        ],
        "summary": "List cases",
        "description": "Newest first. Filter with ?status= and ?case_type=, page with ?limit= and ?offset=.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "data": [
                    {
                      "id": "…",
                      "reference": "API-XYZ",
                      "case_type": "person",
                      "status": "in_review",
                      "risk_level": "low"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      },
      "post": {
        "tags": [
          "Cases"
        ],
        "summary": "Create a case",
        "description": "Send an Idempotency-Key header so a retry never creates a second case.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "case_type": "person",
                "subject_name": "Jane Doe",
                "country": "CA",
                "reference": "EFIN-10231"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "data": {
                    "id": "…",
                    "reference": "EFIN-10231",
                    "status": "pending"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/cases/{case_id}": {
      "get": {
        "tags": [
          "Cases"
        ],
        "summary": "Read a case",
        "description": "The case with its checks, screening matches, beneficial owners and recent transactions.",
        "parameters": [
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/cases/{case_id}/decision": {
      "post": {
        "tags": [
          "Cases"
        ],
        "summary": "Approve or reject",
        "description": "Records the decision, writes the audit entry and emails the reviewer and case owner.",
        "parameters": [
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "status": "approved",
                "note": "Document and bank details matched."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/cases/{case_id}/verification-sessions": {
      "post": {
        "tags": [
          "Identity verification"
        ],
        "summary": "Create a hosted link",
        "description": "Returns a one-time link the customer opens to submit their ID and liveness check. The result arrives on your webhook as verification.completed.",
        "parameters": [
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "expires_in_minutes": 1440,
                "redirect_url": "https://app.efinmoney.com/kyc/done"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "data": {
                    "id": "…",
                    "url": "https://eterfaceid.com/verify/…",
                    "expires_at": "…"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/cases/{case_id}/documents": {
      "post": {
        "tags": [
          "Identity verification"
        ],
        "summary": "Submit a document",
        "description": "Server-to-server document check: machine-readable lines are parsed and validated, dates and ID number formats are checked, and the name is compared with the case.",
        "parameters": [
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "doc_type": "passport",
                "mrz": "P<CANDOE<<JANE<<<<…",
                "document_number": "AB123456",
                "birth_date": "1990-04-12"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "data": {
                    "document_id": "…",
                    "result": "pass",
                    "checks": [
                      {
                        "name": "MRZ check digits",
                        "ok": true
                      }
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/cases/{case_id}/selfies": {
      "post": {
        "tags": [
          "Identity verification"
        ],
        "summary": "Submit a liveness check",
        "description": "Scores liveness from the capture signals. Face-to-document matching is confirmed by a reviewer.",
        "parameters": [
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "challenge": "Blink twice",
                "signals": {
                  "frames_captured": 16,
                  "challenge_passed": true,
                  "motion_variance": 0.18,
                  "brightness_range": 0.12,
                  "blur_score": 0.22,
                  "face_stable": true
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/cases/{case_id}/addresses": {
      "post": {
        "tags": [
          "Identity verification"
        ],
        "summary": "Verify an address and age",
        "description": "Checks address structure, postal code and province, and validates date of birth when supplied.",
        "parameters": [
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "line1": "120 King St W",
                "city": "Toronto",
                "region": "ON",
                "postal_code": "M5H 1A1",
                "country": "CA",
                "birth_date": "1990-04-12"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/cases/{case_id}/risk": {
      "post": {
        "tags": [
          "Identity verification"
        ],
        "summary": "Score fraud and device risk",
        "description": "Email, phone, device and network signals combined into one score with every factor listed.",
        "parameters": [
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "email": "jane@example.com",
                "phone": "+14165550123",
                "ip_address": "203.0.113.4",
                "ip_country": "CA",
                "fingerprint": "…"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/cases/{case_id}/owners": {
      "get": {
        "tags": [
          "Business verification"
        ],
        "summary": "List owners",
        "description": "Everyone recorded against the business, with effective percentages.",
        "parameters": [
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      },
      "post": {
        "tags": [
          "Business verification"
        ],
        "summary": "Add an owner",
        "description": "Layered holdings are supported through parent_owner_id.",
        "parameters": [
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "name": "Holdco Ltd",
                "entity_type": "business",
                "ownership_pct": 60,
                "country": "CA"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/cases/{case_id}/ownership": {
      "post": {
        "tags": [
          "Business verification"
        ],
        "summary": "Work out the beneficial owners",
        "description": "Multiplies ownership down the chain, flags owners at or above 25%, and applies the OFAC 50 percent rule.",
        "parameters": [
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "data": {
                    "owners": [
                      {
                        "name": "Jane Doe",
                        "effectivePct": 42,
                        "isUbo": true
                      }
                    ],
                    "rule": {
                      "blocked": false
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/cases/{case_id}/registry": {
      "get": {
        "tags": [
          "Business verification"
        ],
        "summary": "Read The KYB registry lookups",
        "description": "Official-registry results already saved on the case.",
        "parameters": [
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      },
      "post": {
        "tags": [
          "Business verification"
        ],
        "summary": "Look up the company in The KYB",
        "description": "Searches official registries through The KYB and attaches the best match (or a chosen kyb_response_id) as an entity check.",
        "parameters": [
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "name": "Acme Ltd",
                "registration_number": "1234567",
                "country": "CA"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/screening": {
      "post": {
        "tags": [
          "Screening and monitoring"
        ],
        "summary": "Screen a name",
        "description": "Ad-hoc screening with no case attached. Returns every match above the threshold with its reasons.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "name": "Vladimir Putin",
                "entity_type": "person",
                "country": "RU",
                "threshold": 0.72
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/cases/{case_id}/screen": {
      "post": {
        "tags": [
          "Screening and monitoring"
        ],
        "summary": "Screen or re-screen a case",
        "description": "Records new matches against the case and updates its risk score.",
        "parameters": [
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "threshold": 0.72
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/cases/{case_id}/hits": {
      "get": {
        "tags": [
          "Screening and monitoring"
        ],
        "summary": "List matches",
        "description": "Screening matches recorded on the case.",
        "parameters": [
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/hits/{hit_id}": {
      "patch": {
        "tags": [
          "Screening and monitoring"
        ],
        "summary": "Clear or confirm a match",
        "description": "Mark a match as a true or false positive, with a note.",
        "parameters": [
          {
            "name": "hit_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "disposition": "false_positive",
                "note": "Different date of birth."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/transactions": {
      "post": {
        "tags": [
          "Screening and monitoring"
        ],
        "summary": "Record a payment",
        "description": "Runs FINTRAC, FinCEN and FATF rules (cash and cross-border thresholds, structuring, travel rule, velocity, deviation) and screens the counterparty.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "case_id": "…",
                "direction": "inbound",
                "method": "cash",
                "amount": 9800,
                "currency": "CAD",
                "counterparty_name": "Acme Ltd"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "data": {
                    "id": "…",
                    "risk_score": 72,
                    "status": "review",
                    "alerts": [
                      {
                        "code": "STRUCTURING"
                      }
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      },
      "get": {
        "tags": [
          "Screening and monitoring"
        ],
        "summary": "List payments",
        "description": "Filter with ?case_id=.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/alerts": {
      "get": {
        "tags": [
          "Screening and monitoring"
        ],
        "summary": "List alerts",
        "description": "Filter with ?status= and ?case_id=.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/alerts/{alert_id}": {
      "patch": {
        "tags": [
          "Screening and monitoring"
        ],
        "summary": "Acknowledge or close an alert",
        "description": "Moves an alert to acknowledged or closed.",
        "parameters": [
          {
            "name": "alert_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "status": "closed",
                "detail": "Reviewed, expected activity."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/cases/{case_id}/bank": {
      "post": {
        "tags": [
          "Bank-confirmed identity"
        ],
        "summary": "Start or finish a bank link",
        "description": "Called with no body it returns a link token your front-end passes to the bank sign-in window. Called with public_token it completes the link.",
        "parameters": [
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "public_token": "public-sandbox-…"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      },
      "get": {
        "tags": [
          "Bank-confirmed identity"
        ],
        "summary": "Read bank results",
        "description": "Linked banks and the field-by-field identity comparison.",
        "parameters": [
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/reports": {
      "post": {
        "tags": [
          "Regulatory reports"
        ],
        "summary": "Draft a report",
        "description": "Builds an STR, LCTR, EFTR, SAR, CTR or FIU package from the case, its matches and its payments.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "case_id": "…",
                "report_type": "str",
                "jurisdiction": "CA",
                "authority": "FINTRAC",
                "narrative": "…"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      },
      "get": {
        "tags": [
          "Regulatory reports"
        ],
        "summary": "List reports",
        "description": "Filter with ?status=.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/api/public/v1/reports/{report_id}": {
      "get": {
        "tags": [
          "Regulatory reports"
        ],
        "summary": "Read a report",
        "description": "The full report package.",
        "parameters": [
          {
            "name": "report_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Regulatory reports"
        ],
        "summary": "Mark a report filed",
        "description": "Records the authority's reference and fires the report.filed webhook.",
        "parameters": [
          {
            "name": "report_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "status": "submitted",
                "reference": "FINTRAC-2026-0091"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        },
        "security": [
          {
            "ApiKey": []
          }
        ]
      }
    }
  },
  "x-webhooks": [
    {
      "event": "case.created",
      "when": "A case is created through the API."
    },
    {
      "event": "case.decision",
      "when": "A case is approved or rejected."
    },
    {
      "event": "verification.completed",
      "when": "A document, liveness check or hosted link is finished."
    },
    {
      "event": "screening.hit",
      "when": "Screening finds a new match on a case."
    },
    {
      "event": "transaction.flagged",
      "when": "A payment triggers one or more rules."
    },
    {
      "event": "report.filed",
      "when": "A regulatory report is marked as filed."
    }
  ]
}