[{"data":1,"prerenderedAt":765},["ShallowReactive",2],{"navigation_docs":3,"-api-sandbox":225,"-api-sandbox-surround":760},[4,25,60,91,195,210],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting started",false,"\u002Fgetting-started","1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Quickstart","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F2.quickstart","i-lucide-zap",{"title":21,"path":22,"stem":23,"icon":24},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F3.installation","i-lucide-server",{"title":26,"icon":6,"path":27,"stem":28,"children":29,"page":6},"Concepts","\u002Fconcepts","2.concepts",[30,35,40,45,50,55],{"title":31,"path":32,"stem":33,"icon":34},"How AML works","\u002Fconcepts\u002Fhow-aml-works","2.concepts\u002F1.how-aml-works","i-lucide-book-open",{"title":36,"path":37,"stem":38,"icon":39},"Events and decisions","\u002Fconcepts\u002Fevents-and-decisions","2.concepts\u002F2.events-and-decisions","i-lucide-activity",{"title":41,"path":42,"stem":43,"icon":44},"Rules","\u002Fconcepts\u002Frules","2.concepts\u002F3.rules","i-lucide-scale",{"title":46,"path":47,"stem":48,"icon":49},"Alerts, cases and reporting","\u002Fconcepts\u002Falerts-cases-reporting","2.concepts\u002F4.alerts-cases-reporting","i-lucide-folder-search",{"title":51,"path":52,"stem":53,"icon":54},"Entities and the graph","\u002Fconcepts\u002Fentities-and-graph","2.concepts\u002F5.entities-and-graph","i-lucide-network",{"title":56,"path":57,"stem":58,"icon":59},"Audit log","\u002Fconcepts\u002Faudit-log","2.concepts\u002F6.audit-log","i-lucide-scroll-text",{"title":61,"icon":6,"path":62,"stem":63,"children":64,"page":6},"Guides","\u002Fguides","3.guides",[65,70,75,81,86],{"title":66,"path":67,"stem":68,"icon":69},"Guides by role","\u002Fguides\u002Fby-role","3.guides\u002F1.by-role","i-lucide-users",{"title":71,"path":72,"stem":73,"icon":74},"Integration plan","\u002Fguides\u002Fintegration-plan","3.guides\u002F2.integration-plan","i-lucide-list-checks",{"title":76,"path":77,"stem":78,"icon":79,"badge":80},"Connecting a rail","\u002Fguides\u002Fconnecting-a-rail","3.guides\u002F3.connecting-a-rail","i-lucide-plug","Coming soon",{"title":82,"path":83,"stem":84,"icon":85},"Backup and restore","\u002Fguides\u002Fbackup-and-restore","3.guides\u002F4.backup-and-restore","i-lucide-database-backup",{"title":87,"path":88,"stem":89,"icon":90},"Upgrade and roll back","\u002Fguides\u002Fupgrade-and-roll-back","3.guides\u002F5.upgrade-and-roll-back","i-lucide-arrow-up-circle",{"title":92,"icon":6,"path":93,"stem":94,"children":95,"page":6},"API reference","\u002Fapi","4.api",[96,101,106,111,116,121,126,131,136,139,144,149,153,158,163,168,173,178,183,186,191],{"title":97,"path":98,"stem":99,"icon":100},"Authentication","\u002Fapi\u002Fauthentication","4.api\u002F01.authentication","i-lucide-key-round",{"title":102,"path":103,"stem":104,"icon":105},"Errors","\u002Fapi\u002Ferrors","4.api\u002F02.errors","i-lucide-circle-alert",{"title":107,"path":108,"stem":109,"icon":110},"Idempotency","\u002Fapi\u002Fidempotency","4.api\u002F03.idempotency","i-lucide-repeat",{"title":112,"path":113,"stem":114,"icon":115},"Health","\u002Fapi\u002Fhealth","4.api\u002F04.health","i-lucide-heart-pulse",{"title":117,"path":118,"stem":119,"icon":120},"Entities","\u002Fapi\u002Fentities","4.api\u002F05.entities","i-lucide-user-round",{"title":122,"path":123,"stem":124,"icon":125},"Events","\u002Fapi\u002Fevents","4.api\u002F06.events","i-lucide-send",{"title":127,"path":128,"stem":129,"icon":130},"Decisions","\u002Fapi\u002Fdecisions","4.api\u002F07.decisions","i-lucide-gavel",{"title":132,"path":133,"stem":134,"icon":135},"Alerts","\u002Fapi\u002Falerts","4.api\u002F08.alerts","i-lucide-bell",{"title":41,"path":137,"stem":138,"icon":44},"\u002Fapi\u002Frules","4.api\u002F09.rules",{"title":140,"path":141,"stem":142,"icon":143},"Screening","\u002Fapi\u002Fscreening","4.api\u002F10.screening","i-lucide-user-search",{"title":145,"path":146,"stem":147,"icon":148},"API keys","\u002Fapi\u002Fapi-keys","4.api\u002F11.api-keys","i-lucide-key",{"title":150,"path":151,"stem":152,"icon":120},"People and sessions","\u002Fapi\u002Fpeople","4.api\u002F12.people",{"title":154,"path":155,"stem":156,"icon":157},"Overview","\u002Fapi\u002Foverview","4.api\u002F13.overview","i-lucide-layout-dashboard",{"title":159,"path":160,"stem":161,"icon":162},"Webhooks","\u002Fapi\u002Fwebhooks","4.api\u002F14.webhooks","i-lucide-webhook",{"title":164,"path":165,"stem":166,"icon":167},"Cases","\u002Fapi\u002Fcases","4.api\u002F15.cases","i-lucide-folder-open",{"title":169,"path":170,"stem":171,"icon":172},"Reports","\u002Fapi\u002Freports","4.api\u002F16.reports","i-lucide-file-check",{"title":174,"path":175,"stem":176,"icon":177},"Organisation","\u002Fapi\u002Forganisation","4.api\u002F17.organisation","i-lucide-building-2",{"title":179,"path":180,"stem":181,"icon":182},"Setup","\u002Fapi\u002Fsetup","4.api\u002F18.setup","i-lucide-rocket",{"title":56,"path":184,"stem":185,"icon":59},"\u002Fapi\u002Faudit-log","4.api\u002F19.audit-log",{"title":187,"path":188,"stem":189,"icon":190},"Sandbox scenarios","\u002Fapi\u002Fsandbox","4.api\u002F20.sandbox","i-lucide-flask-conical",{"title":80,"path":192,"stem":193,"icon":194,"badge":80},"\u002Fapi\u002Fcoming-soon","4.api\u002F21.coming-soon","i-lucide-clock",{"title":196,"icon":6,"path":197,"stem":198,"children":199,"page":6},"Security and licensing","\u002Fsecurity","5.security",[200,205],{"title":201,"path":202,"stem":203,"icon":204},"Data flows","\u002Fsecurity\u002Fdata-flows","5.security\u002F1.data-flows","i-lucide-shield-check",{"title":206,"path":207,"stem":208,"icon":209,"badge":80},"Licensing and metering","\u002Fsecurity\u002Flicensing","5.security\u002F2.licensing","i-lucide-file-badge",{"title":211,"icon":6,"path":212,"stem":213,"children":214,"page":6},"Reference","\u002Freference","6.reference",[215,220],{"title":216,"path":217,"stem":218,"icon":219},"Glossary","\u002Freference\u002Fglossary","6.reference\u002F1.glossary","i-lucide-book-a",{"title":221,"path":222,"stem":223,"icon":224},"FAQ","\u002Freference\u002Ffaq","6.reference\u002F2.faq","i-lucide-circle-help",{"id":226,"title":187,"body":227,"description":753,"extension":754,"links":755,"meta":756,"navigation":757,"path":188,"seo":758,"stem":189,"__hash__":759},"docs\u002F4.api\u002F20.sandbox.md",{"type":228,"value":229,"toc":749},"minimark",[230,250,257,262,266,320,458,481,485,488,491,529,665,680,742,745],[231,232,233,234,239,240,244,245,249],"p",{},"A scenario is a few synthetic events built to trip one built-in rule, so you can see a real alert without writing a payload. They only load into the ",[235,236,238],"a",{"href":237},"\u002Fapi\u002Fauthentication#test-keys","sandbox",": with a test key, or from the dashboard after switching to ",[241,242,243],"strong",{},"Sandbox",". On live data both endpoints return ",[246,247,248],"code",{},"400",".",[231,251,252,253,256],{},"A test key needs the ",[246,254,255],{},"events:write"," scope. Signed in, engineers and admins can load scenarios, because it sends events. The events go through the same path as any other, so the alerts, entities and decisions they make are real, just in the sandbox.",[258,259,261],"h2",{"id":260},"list-scenarios","List scenarios",[263,264,265],"badge",{},"GET \u002Fv1\u002Fsandbox\u002Fscenarios",[267,268,274],"pre",{"className":269,"code":270,"filename":271,"language":272,"meta":273,"style":273},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl \"$SENTINEL_URL\u002Fv1\u002Fsandbox\u002Fscenarios\" \\\n  -H \"Authorization: Bearer $SENTINEL_TEST_KEY\"\n","Terminal","bash","",[246,275,276,303],{"__ignoreMap":273},[277,278,281,285,289,293,297,300],"span",{"class":279,"line":280},"line",1,[277,282,284],{"class":283},"sBMFI","curl",[277,286,288],{"class":287},"sMK4o"," \"",[277,290,292],{"class":291},"sTEyZ","$SENTINEL_URL",[277,294,296],{"class":295},"sfazB","\u002Fv1\u002Fsandbox\u002Fscenarios",[277,298,299],{"class":287},"\"",[277,301,302],{"class":291}," \\\n",[277,304,306,309,311,314,317],{"class":279,"line":305},2,[277,307,308],{"class":295},"  -H",[277,310,288],{"class":287},[277,312,313],{"class":295},"Authorization: Bearer ",[277,315,316],{"class":291},"$SENTINEL_TEST_KEY",[277,318,319],{"class":287},"\"\n",[267,321,326],{"className":322,"code":323,"filename":324,"language":325,"meta":273,"style":273},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"scenarios\": [\n    {\n      \"key\": \"structuring\",\n      \"title\": \"Structuring below the threshold\",\n      \"detail\": \"Four transfers of GHS 4,950 in under an hour, each just under the 5,000 reporting line.\",\n      \"expected_rule\": \"structuring_below_threshold\"\n    }\n  ]\n}\n","Response · 200","json",[246,327,328,333,350,356,379,400,421,440,446,452],{"__ignoreMap":273},[277,329,330],{"class":279,"line":280},[277,331,332],{"class":287},"{\n",[277,334,335,338,342,344,347],{"class":279,"line":305},[277,336,337],{"class":287},"  \"",[277,339,341],{"class":340},"spNyl","scenarios",[277,343,299],{"class":287},[277,345,346],{"class":287},":",[277,348,349],{"class":287}," [\n",[277,351,353],{"class":279,"line":352},3,[277,354,355],{"class":287},"    {\n",[277,357,359,362,365,367,369,371,374,376],{"class":279,"line":358},4,[277,360,361],{"class":287},"      \"",[277,363,364],{"class":283},"key",[277,366,299],{"class":287},[277,368,346],{"class":287},[277,370,288],{"class":287},[277,372,373],{"class":295},"structuring",[277,375,299],{"class":287},[277,377,378],{"class":287},",\n",[277,380,382,384,387,389,391,393,396,398],{"class":279,"line":381},5,[277,383,361],{"class":287},[277,385,386],{"class":283},"title",[277,388,299],{"class":287},[277,390,346],{"class":287},[277,392,288],{"class":287},[277,394,395],{"class":295},"Structuring below the threshold",[277,397,299],{"class":287},[277,399,378],{"class":287},[277,401,403,405,408,410,412,414,417,419],{"class":279,"line":402},6,[277,404,361],{"class":287},[277,406,407],{"class":283},"detail",[277,409,299],{"class":287},[277,411,346],{"class":287},[277,413,288],{"class":287},[277,415,416],{"class":295},"Four transfers of GHS 4,950 in under an hour, each just under the 5,000 reporting line.",[277,418,299],{"class":287},[277,420,378],{"class":287},[277,422,424,426,429,431,433,435,438],{"class":279,"line":423},7,[277,425,361],{"class":287},[277,427,428],{"class":283},"expected_rule",[277,430,299],{"class":287},[277,432,346],{"class":287},[277,434,288],{"class":287},[277,436,437],{"class":295},"structuring_below_threshold",[277,439,319],{"class":287},[277,441,443],{"class":279,"line":442},8,[277,444,445],{"class":287},"    }\n",[277,447,449],{"class":279,"line":448},9,[277,450,451],{"class":287},"  ]\n",[277,453,455],{"class":279,"line":454},10,[277,456,457],{"class":287},"}\n",[231,459,460,461,463,464,463,467,463,470,463,473,476,477,480],{},"The list has six scenarios today: ",[246,462,373],{},", ",[246,465,466],{},"fan_in",[246,468,469],{},"fan_out",[246,471,472],{},"dormant",[246,474,475],{},"shared_device"," and ",[246,478,479],{},"round_tripping",". The example shows the first.",[258,482,484],{"id":483},"load-a-scenario","Load a scenario",[263,486,487],{},"POST \u002Fv1\u002Fsandbox\u002Fscenarios\u002F{key}",[231,489,490],{},"Sends the scenario's events one at a time, oldest first, as sync events, so each is decided as it arrives. Every load uses new wallets, so loading one twice adds a second pattern and never collides with the first.",[267,492,494],{"className":269,"code":493,"filename":271,"language":272,"meta":273,"style":273},"curl -X POST \"$SENTINEL_URL\u002Fv1\u002Fsandbox\u002Fscenarios\u002Fstructuring\" \\\n  -H \"Authorization: Bearer $SENTINEL_TEST_KEY\"\n",[246,495,496,517],{"__ignoreMap":273},[277,497,498,500,503,506,508,510,513,515],{"class":279,"line":280},[277,499,284],{"class":283},[277,501,502],{"class":295}," -X",[277,504,505],{"class":295}," POST",[277,507,288],{"class":287},[277,509,292],{"class":291},[277,511,512],{"class":295},"\u002Fv1\u002Fsandbox\u002Fscenarios\u002Fstructuring",[277,514,299],{"class":287},[277,516,302],{"class":291},[277,518,519,521,523,525,527],{"class":279,"line":305},[277,520,308],{"class":295},[277,522,288],{"class":287},[277,524,313],{"class":295},[277,526,316],{"class":291},[277,528,319],{"class":287},[267,530,532],{"className":322,"code":531,"filename":324,"language":325,"meta":273,"style":273},"{\n  \"scenario\": \"structuring\",\n  \"expected_rule\": \"structuring_below_threshold\",\n  \"fired\": true,\n  \"events\": 4,\n  \"rules_fired\": [\n    \"structuring_below_threshold\"\n  ],\n  \"alert_ids\": [\n    \"a0edbe50-21e2-41b8-ade0-c80acfdd0a94\"\n  ]\n}\n",[246,533,534,538,557,575,589,606,619,628,633,646,655,660],{"__ignoreMap":273},[277,535,536],{"class":279,"line":280},[277,537,332],{"class":287},[277,539,540,542,545,547,549,551,553,555],{"class":279,"line":305},[277,541,337],{"class":287},[277,543,544],{"class":340},"scenario",[277,546,299],{"class":287},[277,548,346],{"class":287},[277,550,288],{"class":287},[277,552,373],{"class":295},[277,554,299],{"class":287},[277,556,378],{"class":287},[277,558,559,561,563,565,567,569,571,573],{"class":279,"line":352},[277,560,337],{"class":287},[277,562,428],{"class":340},[277,564,299],{"class":287},[277,566,346],{"class":287},[277,568,288],{"class":287},[277,570,437],{"class":295},[277,572,299],{"class":287},[277,574,378],{"class":287},[277,576,577,579,582,584,586],{"class":279,"line":358},[277,578,337],{"class":287},[277,580,581],{"class":340},"fired",[277,583,299],{"class":287},[277,585,346],{"class":287},[277,587,588],{"class":287}," true,\n",[277,590,591,593,596,598,600,604],{"class":279,"line":381},[277,592,337],{"class":287},[277,594,595],{"class":340},"events",[277,597,299],{"class":287},[277,599,346],{"class":287},[277,601,603],{"class":602},"sbssI"," 4",[277,605,378],{"class":287},[277,607,608,610,613,615,617],{"class":279,"line":402},[277,609,337],{"class":287},[277,611,612],{"class":340},"rules_fired",[277,614,299],{"class":287},[277,616,346],{"class":287},[277,618,349],{"class":287},[277,620,621,624,626],{"class":279,"line":423},[277,622,623],{"class":287},"    \"",[277,625,437],{"class":295},[277,627,319],{"class":287},[277,629,630],{"class":279,"line":442},[277,631,632],{"class":287},"  ],\n",[277,634,635,637,640,642,644],{"class":279,"line":448},[277,636,337],{"class":287},[277,638,639],{"class":340},"alert_ids",[277,641,299],{"class":287},[277,643,346],{"class":287},[277,645,349],{"class":287},[277,647,648,650,653],{"class":279,"line":454},[277,649,623],{"class":287},[277,651,652],{"class":295},"a0edbe50-21e2-41b8-ade0-c80acfdd0a94",[277,654,319],{"class":287},[277,656,658],{"class":279,"line":657},11,[277,659,451],{"class":287},[277,661,663],{"class":279,"line":662},12,[277,664,457],{"class":287},[231,666,667,669,670,673,674,676,677,679],{},[246,668,581],{}," is ",[246,671,672],{},"true"," when the expected rule fired on at least one event. ",[246,675,612],{}," lists every rule that fired, once each, and ",[246,678,639],{}," the alerts the events raised. Some scenarios trip a second rule as well, which is normal.",[681,682,683,696],"table",{},[684,685,686],"thead",{},[687,688,689,693],"tr",{},[690,691,692],"th",{},"Status",[690,694,695],{},"When",[697,698,699,709,719,732],"tbody",{},[687,700,701,706],{},[702,703,704],"td",{},[246,705,248],{},[702,707,708],{},"The request is on live data: use a test key, or switch the dashboard to Sandbox",[687,710,711,716],{},[702,712,713],{},[246,714,715],{},"401",[702,717,718],{},"No key or session",[687,720,721,726],{},[702,722,723],{},[246,724,725],{},"403",[702,727,728,729,731],{},"The key lacks ",[246,730,255],{},", or the person can't send events",[687,733,734,739],{},[702,735,736],{},[246,737,738],{},"404",[702,740,741],{},"No scenario has that key",[231,743,744],{},"The sandbox scores with the built-in rules unless it has rules of its own. If it does, a scenario only fires when those rules cover its pattern.",[746,747,748],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":273,"searchDepth":305,"depth":305,"links":750},[751,752],{"id":260,"depth":305,"text":261},{"id":483,"depth":305,"text":484},"Load labelled laundering patterns into the sandbox and see which rule fires.","md",null,{},{"icon":190},{"title":187,"description":753},"XEGT-yFZmGOqCh1XzoEWMktlPHip-T9dqqUMf7_X1p8",[761,763],{"title":56,"path":184,"stem":185,"description":762,"icon":59,"children":-1},"Read the audit log, check its hash chain and export it as CSV.",{"title":80,"path":192,"stem":193,"description":764,"icon":194,"badge":80,"children":-1},"What the API has today, and what is planned but not built yet.",1793272040259]