[{"data":1,"prerenderedAt":1965},["ShallowReactive",2],{"navigation_docs":3,"-getting-started-quickstart":183,"-getting-started-quickstart-surround":1960},[4,25,60,81,153,168],{"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],{"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,"icon":6,"path":83,"stem":84,"children":85,"page":6},"API reference","\u002Fapi","4.api",[86,91,96,101,106,111,116,121,126,129,134,139,144,149],{"title":87,"path":88,"stem":89,"icon":90},"Authentication","\u002Fapi\u002Fauthentication","4.api\u002F01.authentication","i-lucide-key-round",{"title":92,"path":93,"stem":94,"icon":95},"Errors","\u002Fapi\u002Ferrors","4.api\u002F02.errors","i-lucide-circle-alert",{"title":97,"path":98,"stem":99,"icon":100},"Idempotency","\u002Fapi\u002Fidempotency","4.api\u002F03.idempotency","i-lucide-repeat",{"title":102,"path":103,"stem":104,"icon":105},"Health","\u002Fapi\u002Fhealth","4.api\u002F04.health","i-lucide-heart-pulse",{"title":107,"path":108,"stem":109,"icon":110},"Entities","\u002Fapi\u002Fentities","4.api\u002F05.entities","i-lucide-user-round",{"title":112,"path":113,"stem":114,"icon":115},"Events","\u002Fapi\u002Fevents","4.api\u002F06.events","i-lucide-send",{"title":117,"path":118,"stem":119,"icon":120},"Decisions","\u002Fapi\u002Fdecisions","4.api\u002F07.decisions","i-lucide-gavel",{"title":122,"path":123,"stem":124,"icon":125},"Alerts","\u002Fapi\u002Falerts","4.api\u002F08.alerts","i-lucide-bell",{"title":41,"path":127,"stem":128,"icon":44},"\u002Fapi\u002Frules","4.api\u002F09.rules",{"title":130,"path":131,"stem":132,"icon":133},"Screening","\u002Fapi\u002Fscreening","4.api\u002F10.screening","i-lucide-user-search",{"title":135,"path":136,"stem":137,"icon":138},"API keys","\u002Fapi\u002Fapi-keys","4.api\u002F11.api-keys","i-lucide-key",{"title":140,"path":141,"stem":142,"icon":143},"Overview","\u002Fapi\u002Foverview","4.api\u002F12.overview","i-lucide-layout-dashboard",{"title":145,"path":146,"stem":147,"icon":148,"badge":80},"Webhooks","\u002Fapi\u002Fwebhooks","4.api\u002F13.webhooks","i-lucide-webhook",{"title":80,"path":150,"stem":151,"icon":152,"badge":80},"\u002Fapi\u002Fcoming-soon","4.api\u002F14.coming-soon","i-lucide-clock",{"title":154,"icon":6,"path":155,"stem":156,"children":157,"page":6},"Security and licensing","\u002Fsecurity","5.security",[158,163],{"title":159,"path":160,"stem":161,"icon":162},"Data flows","\u002Fsecurity\u002Fdata-flows","5.security\u002F1.data-flows","i-lucide-shield-check",{"title":164,"path":165,"stem":166,"icon":167,"badge":80},"Licensing and metering","\u002Fsecurity\u002Flicensing","5.security\u002F2.licensing","i-lucide-file-badge",{"title":169,"icon":6,"path":170,"stem":171,"children":172,"page":6},"Reference","\u002Freference","6.reference",[173,178],{"title":174,"path":175,"stem":176,"icon":177},"Glossary","\u002Freference\u002Fglossary","6.reference\u002F1.glossary","i-lucide-book-a",{"title":179,"path":180,"stem":181,"icon":182},"FAQ","\u002Freference\u002Ffaq","6.reference\u002F2.faq","i-lucide-circle-help",{"id":184,"title":16,"body":185,"description":1953,"extension":1954,"links":1955,"meta":1956,"navigation":1957,"path":17,"seo":1958,"stem":18,"__hash__":1959},"docs\u002F1.getting-started\u002F2.quickstart.md",{"type":186,"value":187,"toc":1942},"minimark",[188,192,195,200,212,264,267,280,345,349,360,413,416,448,452,455,568,572,575,721,728,849,853,880,1081,1090,1097,1101,1133,1140,1618,1622,1625,1694,1701,1770,1781,1818,1833,1836,1840,1843,1876,1891,1902,1906,1938],[189,190,191],"p",{},"This takes about 15 minutes. You'll run Sentinel on your own machine, send a few transactions, get a decision back, and close the alert they raise with a second key.",[189,193,194],{},"There's no hosted sandbox yet, so you run your own copy.",[196,197,199],"h2",{"id":198},"_1-start-sentinel","1. Start Sentinel",[189,201,202,203,207,208,211],{},"You need Go (the version in ",[204,205,206],"code",{},"go.mod","), Docker with Compose, and ",[204,209,210],{},"make",". From the root of the Sentinel repository:",[213,214,220],"pre",{"className":215,"code":216,"filename":217,"language":218,"meta":219,"style":219},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","cp .env.example .env   # local settings: PostgreSQL on 5433, Redis on 6379\nmake up                # starts PostgreSQL, Redis and Redpanda\nmake run               # applies the migrations, then serves on :8080\n","Terminal","bash","",[204,221,222,242,253],{"__ignoreMap":219},[223,224,227,231,235,238],"span",{"class":225,"line":226},"line",1,[223,228,230],{"class":229},"sBMFI","cp",[223,232,234],{"class":233},"sfazB"," .env.example",[223,236,237],{"class":233}," .env",[223,239,241],{"class":240},"sHwdD","   # local settings: PostgreSQL on 5433, Redis on 6379\n",[223,243,245,247,250],{"class":225,"line":244},2,[223,246,210],{"class":229},[223,248,249],{"class":233}," up",[223,251,252],{"class":240},"                # starts PostgreSQL, Redis and Redpanda\n",[223,254,256,258,261],{"class":225,"line":255},3,[223,257,210],{"class":229},[223,259,260],{"class":233}," run",[223,262,263],{"class":240},"               # applies the migrations, then serves on :8080\n",[189,265,266],{},"Check that it's up:",[213,268,270],{"className":215,"code":269,"filename":217,"language":218,"meta":219,"style":219},"curl localhost:8080\u002Fhealthz\n",[204,271,272],{"__ignoreMap":219},[223,273,274,277],{"class":225,"line":226},[223,275,276],{"class":229},"curl",[223,278,279],{"class":233}," localhost:8080\u002Fhealthz\n",[213,281,286],{"className":282,"code":283,"filename":284,"language":285,"meta":219,"style":219},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"status\": \"ok\",\n  \"version\": \"dev\"\n}\n","Response · 200","json",[204,287,288,294,320,339],{"__ignoreMap":219},[223,289,290],{"class":225,"line":226},[223,291,293],{"class":292},"sMK4o","{\n",[223,295,296,299,303,306,309,312,315,317],{"class":225,"line":244},[223,297,298],{"class":292},"  \"",[223,300,302],{"class":301},"spNyl","status",[223,304,305],{"class":292},"\"",[223,307,308],{"class":292},":",[223,310,311],{"class":292}," \"",[223,313,314],{"class":233},"ok",[223,316,305],{"class":292},[223,318,319],{"class":292},",\n",[223,321,322,324,327,329,331,333,336],{"class":225,"line":255},[223,323,298],{"class":292},[223,325,326],{"class":301},"version",[223,328,305],{"class":292},[223,330,308],{"class":292},[223,332,311],{"class":292},[223,334,335],{"class":233},"dev",[223,337,338],{"class":292},"\"\n",[223,340,342],{"class":225,"line":341},4,[223,343,344],{"class":292},"}\n",[196,346,348],{"id":347},"_2-make-a-key","2. Make a key",[189,350,351,352,355,356,359],{},"In another terminal, create an API key. The admin command needs ",[204,353,354],{},"SENTINEL_DATABASE_URL",", so load ",[204,357,358],{},".env"," into the shell first. The key is printed once, so keep it.",[213,361,363],{"className":215,"code":362,"filename":217,"language":218,"meta":219,"style":219},"set -a; . .\u002F.env; set +a\ngo run .\u002Fcmd\u002Fsentinel-admin key create -name quickstart\n",[204,364,365,391],{"__ignoreMap":219},[223,366,367,371,374,377,380,383,385,388],{"class":225,"line":226},[223,368,370],{"class":369},"s2Zo4","set",[223,372,373],{"class":233}," -a",[223,375,376],{"class":292},";",[223,378,379],{"class":369}," .",[223,381,382],{"class":233}," .\u002F.env",[223,384,376],{"class":292},[223,386,387],{"class":369}," set",[223,389,390],{"class":233}," +a\n",[223,392,393,396,398,401,404,407,410],{"class":225,"line":244},[223,394,395],{"class":229},"go",[223,397,260],{"class":233},[223,399,400],{"class":233}," .\u002Fcmd\u002Fsentinel-admin",[223,402,403],{"class":233}," key",[223,405,406],{"class":233}," create",[223,408,409],{"class":233}," -name",[223,411,412],{"class":233}," quickstart\n",[189,414,415],{},"Put the base URL and key in your shell so the examples work as written:",[213,417,419],{"className":215,"code":418,"filename":217,"language":218,"meta":219,"style":219},"export SENTINEL_URL=http:\u002F\u002Flocalhost:8080\nexport SENTINEL_KEY=snt_live_...\n",[204,420,421,436],{"__ignoreMap":219},[223,422,423,426,430,433],{"class":225,"line":226},[223,424,425],{"class":301},"export",[223,427,429],{"class":428},"sTEyZ"," SENTINEL_URL",[223,431,432],{"class":292},"=",[223,434,435],{"class":428},"http:\u002F\u002Flocalhost:8080\n",[223,437,438,440,443,445],{"class":225,"line":244},[223,439,425],{"class":301},[223,441,442],{"class":428}," SENTINEL_KEY",[223,444,432],{"class":292},[223,446,447],{"class":428},"snt_live_...\n",[196,449,451],{"id":450},"_3-create-a-customer","3. Create a customer",[189,453,454],{},"Tell Sentinel who the sender is. IDs are yours, so use the ones your own systems already use.",[213,456,458],{"className":215,"code":457,"filename":217,"language":218,"meta":219,"style":219},"curl -X POST \"$SENTINEL_URL\u002Fv1\u002Fentities\" \\\n  -H \"Authorization: Bearer $SENTINEL_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"id\": \"cus_10442\",\n    \"kind\": \"customer\",\n    \"attributes\": {\n      \"name\": \"Test Customer\",\n      \"kyc_result\": \"verified\"\n    }\n  }'\n",[204,459,460,483,500,513,523,529,535,541,547,553,559],{"__ignoreMap":219},[223,461,462,464,467,470,472,475,478,480],{"class":225,"line":226},[223,463,276],{"class":229},[223,465,466],{"class":233}," -X",[223,468,469],{"class":233}," POST",[223,471,311],{"class":292},[223,473,474],{"class":428},"$SENTINEL_URL",[223,476,477],{"class":233},"\u002Fv1\u002Fentities",[223,479,305],{"class":292},[223,481,482],{"class":428}," \\\n",[223,484,485,488,490,493,496,498],{"class":225,"line":244},[223,486,487],{"class":233},"  -H",[223,489,311],{"class":292},[223,491,492],{"class":233},"Authorization: Bearer ",[223,494,495],{"class":428},"$SENTINEL_KEY",[223,497,305],{"class":292},[223,499,482],{"class":428},[223,501,502,504,506,509,511],{"class":225,"line":255},[223,503,487],{"class":233},[223,505,311],{"class":292},[223,507,508],{"class":233},"Content-Type: application\u002Fjson",[223,510,305],{"class":292},[223,512,482],{"class":428},[223,514,515,518,521],{"class":225,"line":341},[223,516,517],{"class":233},"  -d",[223,519,520],{"class":292}," '",[223,522,293],{"class":233},[223,524,526],{"class":225,"line":525},5,[223,527,528],{"class":233},"    \"id\": \"cus_10442\",\n",[223,530,532],{"class":225,"line":531},6,[223,533,534],{"class":233},"    \"kind\": \"customer\",\n",[223,536,538],{"class":225,"line":537},7,[223,539,540],{"class":233},"    \"attributes\": {\n",[223,542,544],{"class":225,"line":543},8,[223,545,546],{"class":233},"      \"name\": \"Test Customer\",\n",[223,548,550],{"class":225,"line":549},9,[223,551,552],{"class":233},"      \"kyc_result\": \"verified\"\n",[223,554,556],{"class":225,"line":555},10,[223,557,558],{"class":233},"    }\n",[223,560,562,565],{"class":225,"line":561},11,[223,563,564],{"class":233},"  }",[223,566,567],{"class":292},"'\n",[196,569,571],{"id":570},"_4-send-an-event","4. Send an event",[189,573,574],{},"Send a transfer in sync mode, so the decision comes back on the same request.",[213,576,578],{"className":215,"code":577,"filename":217,"language":218,"meta":219,"style":219},"curl -X POST \"$SENTINEL_URL\u002Fv1\u002Fevents?mode=sync\" \\\n  -H \"Authorization: Bearer $SENTINEL_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"type\": \"transfer.outbound\",\n    \"idempotency_key\": \"txn_quickstart_001\",\n    \"occurred_at\": \"2026-10-15T11:02:41Z\",\n    \"amount\": {\n      \"value\": 4950,\n      \"currency\": \"USD\"\n    },\n    \"rail\": \"mobile_money\",\n    \"source\": {\n      \"entity_id\": \"cus_10442\",\n      \"account_id\": \"wal_8812\"\n    },\n    \"destination\": {\n      \"account_id\": \"wal_6603\"\n    }\n  }'\n",[204,579,580,599,613,625,633,638,643,648,653,658,663,668,674,680,686,692,697,703,709,714],{"__ignoreMap":219},[223,581,582,584,586,588,590,592,595,597],{"class":225,"line":226},[223,583,276],{"class":229},[223,585,466],{"class":233},[223,587,469],{"class":233},[223,589,311],{"class":292},[223,591,474],{"class":428},[223,593,594],{"class":233},"\u002Fv1\u002Fevents?mode=sync",[223,596,305],{"class":292},[223,598,482],{"class":428},[223,600,601,603,605,607,609,611],{"class":225,"line":244},[223,602,487],{"class":233},[223,604,311],{"class":292},[223,606,492],{"class":233},[223,608,495],{"class":428},[223,610,305],{"class":292},[223,612,482],{"class":428},[223,614,615,617,619,621,623],{"class":225,"line":255},[223,616,487],{"class":233},[223,618,311],{"class":292},[223,620,508],{"class":233},[223,622,305],{"class":292},[223,624,482],{"class":428},[223,626,627,629,631],{"class":225,"line":341},[223,628,517],{"class":233},[223,630,520],{"class":292},[223,632,293],{"class":233},[223,634,635],{"class":225,"line":525},[223,636,637],{"class":233},"    \"type\": \"transfer.outbound\",\n",[223,639,640],{"class":225,"line":531},[223,641,642],{"class":233},"    \"idempotency_key\": \"txn_quickstart_001\",\n",[223,644,645],{"class":225,"line":537},[223,646,647],{"class":233},"    \"occurred_at\": \"2026-10-15T11:02:41Z\",\n",[223,649,650],{"class":225,"line":543},[223,651,652],{"class":233},"    \"amount\": {\n",[223,654,655],{"class":225,"line":549},[223,656,657],{"class":233},"      \"value\": 4950,\n",[223,659,660],{"class":225,"line":555},[223,661,662],{"class":233},"      \"currency\": \"USD\"\n",[223,664,665],{"class":225,"line":561},[223,666,667],{"class":233},"    },\n",[223,669,671],{"class":225,"line":670},12,[223,672,673],{"class":233},"    \"rail\": \"mobile_money\",\n",[223,675,677],{"class":225,"line":676},13,[223,678,679],{"class":233},"    \"source\": {\n",[223,681,683],{"class":225,"line":682},14,[223,684,685],{"class":233},"      \"entity_id\": \"cus_10442\",\n",[223,687,689],{"class":225,"line":688},15,[223,690,691],{"class":233},"      \"account_id\": \"wal_8812\"\n",[223,693,695],{"class":225,"line":694},16,[223,696,667],{"class":233},[223,698,700],{"class":225,"line":699},17,[223,701,702],{"class":233},"    \"destination\": {\n",[223,704,706],{"class":225,"line":705},18,[223,707,708],{"class":233},"      \"account_id\": \"wal_6603\"\n",[223,710,712],{"class":225,"line":711},19,[223,713,558],{"class":233},[223,715,717,719],{"class":225,"line":716},20,[223,718,564],{"class":233},[223,720,567],{"class":292},[189,722,723,724,727],{},"A first transfer from a new customer comes back as ",[204,725,726],{},"allow"," with no reasons:",[213,729,731],{"className":282,"code":730,"filename":284,"language":285,"meta":219,"style":219},"{\n  \"id\": \"5f0c2b7e-3a41-4c1d-9b6e-1f2a3b4c5d6e\",\n  \"event_id\": \"9b21d4c8-7e5f-4a3b-8c2d-6e7f8a9b0c1d\",\n  \"decision\": \"allow\",\n  \"risk_score\": 0,\n  \"reasons\": [],\n  \"created_at\": \"2026-10-15T11:02:41.041Z\"\n}\n",[204,732,733,737,757,777,796,813,827,845],{"__ignoreMap":219},[223,734,735],{"class":225,"line":226},[223,736,293],{"class":292},[223,738,739,741,744,746,748,750,753,755],{"class":225,"line":244},[223,740,298],{"class":292},[223,742,743],{"class":301},"id",[223,745,305],{"class":292},[223,747,308],{"class":292},[223,749,311],{"class":292},[223,751,752],{"class":233},"5f0c2b7e-3a41-4c1d-9b6e-1f2a3b4c5d6e",[223,754,305],{"class":292},[223,756,319],{"class":292},[223,758,759,761,764,766,768,770,773,775],{"class":225,"line":255},[223,760,298],{"class":292},[223,762,763],{"class":301},"event_id",[223,765,305],{"class":292},[223,767,308],{"class":292},[223,769,311],{"class":292},[223,771,772],{"class":233},"9b21d4c8-7e5f-4a3b-8c2d-6e7f8a9b0c1d",[223,774,305],{"class":292},[223,776,319],{"class":292},[223,778,779,781,784,786,788,790,792,794],{"class":225,"line":341},[223,780,298],{"class":292},[223,782,783],{"class":301},"decision",[223,785,305],{"class":292},[223,787,308],{"class":292},[223,789,311],{"class":292},[223,791,726],{"class":233},[223,793,305],{"class":292},[223,795,319],{"class":292},[223,797,798,800,803,805,807,811],{"class":225,"line":525},[223,799,298],{"class":292},[223,801,802],{"class":301},"risk_score",[223,804,305],{"class":292},[223,806,308],{"class":292},[223,808,810],{"class":809},"sbssI"," 0",[223,812,319],{"class":292},[223,814,815,817,820,822,824],{"class":225,"line":531},[223,816,298],{"class":292},[223,818,819],{"class":301},"reasons",[223,821,305],{"class":292},[223,823,308],{"class":292},[223,825,826],{"class":292}," [],\n",[223,828,829,831,834,836,838,840,843],{"class":225,"line":537},[223,830,298],{"class":292},[223,832,833],{"class":301},"created_at",[223,835,305],{"class":292},[223,837,308],{"class":292},[223,839,311],{"class":292},[223,841,842],{"class":233},"2026-10-15T11:02:41.041Z",[223,844,338],{"class":292},[223,846,847],{"class":225,"line":543},[223,848,344],{"class":292},[196,850,852],{"id":851},"_5-trip-a-rule","5. Trip a rule",[189,854,855,856,859,860,868,869,872,873,876,877,308],{},"The built-in rule ",[204,857,858],{},"structuring_below_threshold"," fires on the third transfer from one source in 24 hours with an amount from 4,500 to just under 5,000. Send the same request twice more, with a ",[861,862,863,864,867],"strong",{},"new ",[204,865,866],{},"idempotency_key"," each time"," (",[204,870,871],{},"txn_quickstart_002",", then ",[204,874,875],{},"txn_quickstart_003","). The third comes back as a ",[204,878,879],{},"review",[213,881,883],{"className":282,"code":882,"filename":284,"language":285,"meta":219,"style":219},"{\n  \"id\": \"a81e4f02-6c9d-4b7a-9e3f-2d1c0b9a8f7e\",\n  \"event_id\": \"c4d5e6f7-0a1b-4c2d-8e9f-3a4b5c6d7e8f\",\n  \"decision\": \"review\",\n  \"risk_score\": 60,\n  \"alert_id\": \"c7d4e1a2-5b6c-4d7e-8f9a-0b1c2d3e4f5a\",\n  \"reasons\": [\n    {\n      \"rule\": \"structuring_below_threshold\",\n      \"version\": 1,\n      \"detail\": \"repeated transfers just below the reporting threshold within 24h\"\n    }\n  ],\n  \"created_at\": \"2026-10-15T11:09:12.318Z\"\n}\n",[204,884,885,889,908,927,945,960,980,993,998,1018,1033,1051,1055,1060,1077],{"__ignoreMap":219},[223,886,887],{"class":225,"line":226},[223,888,293],{"class":292},[223,890,891,893,895,897,899,901,904,906],{"class":225,"line":244},[223,892,298],{"class":292},[223,894,743],{"class":301},[223,896,305],{"class":292},[223,898,308],{"class":292},[223,900,311],{"class":292},[223,902,903],{"class":233},"a81e4f02-6c9d-4b7a-9e3f-2d1c0b9a8f7e",[223,905,305],{"class":292},[223,907,319],{"class":292},[223,909,910,912,914,916,918,920,923,925],{"class":225,"line":255},[223,911,298],{"class":292},[223,913,763],{"class":301},[223,915,305],{"class":292},[223,917,308],{"class":292},[223,919,311],{"class":292},[223,921,922],{"class":233},"c4d5e6f7-0a1b-4c2d-8e9f-3a4b5c6d7e8f",[223,924,305],{"class":292},[223,926,319],{"class":292},[223,928,929,931,933,935,937,939,941,943],{"class":225,"line":341},[223,930,298],{"class":292},[223,932,783],{"class":301},[223,934,305],{"class":292},[223,936,308],{"class":292},[223,938,311],{"class":292},[223,940,879],{"class":233},[223,942,305],{"class":292},[223,944,319],{"class":292},[223,946,947,949,951,953,955,958],{"class":225,"line":525},[223,948,298],{"class":292},[223,950,802],{"class":301},[223,952,305],{"class":292},[223,954,308],{"class":292},[223,956,957],{"class":809}," 60",[223,959,319],{"class":292},[223,961,962,964,967,969,971,973,976,978],{"class":225,"line":531},[223,963,298],{"class":292},[223,965,966],{"class":301},"alert_id",[223,968,305],{"class":292},[223,970,308],{"class":292},[223,972,311],{"class":292},[223,974,975],{"class":233},"c7d4e1a2-5b6c-4d7e-8f9a-0b1c2d3e4f5a",[223,977,305],{"class":292},[223,979,319],{"class":292},[223,981,982,984,986,988,990],{"class":225,"line":537},[223,983,298],{"class":292},[223,985,819],{"class":301},[223,987,305],{"class":292},[223,989,308],{"class":292},[223,991,992],{"class":292}," [\n",[223,994,995],{"class":225,"line":543},[223,996,997],{"class":292},"    {\n",[223,999,1000,1003,1006,1008,1010,1012,1014,1016],{"class":225,"line":549},[223,1001,1002],{"class":292},"      \"",[223,1004,1005],{"class":229},"rule",[223,1007,305],{"class":292},[223,1009,308],{"class":292},[223,1011,311],{"class":292},[223,1013,858],{"class":233},[223,1015,305],{"class":292},[223,1017,319],{"class":292},[223,1019,1020,1022,1024,1026,1028,1031],{"class":225,"line":555},[223,1021,1002],{"class":292},[223,1023,326],{"class":229},[223,1025,305],{"class":292},[223,1027,308],{"class":292},[223,1029,1030],{"class":809}," 1",[223,1032,319],{"class":292},[223,1034,1035,1037,1040,1042,1044,1046,1049],{"class":225,"line":561},[223,1036,1002],{"class":292},[223,1038,1039],{"class":229},"detail",[223,1041,305],{"class":292},[223,1043,308],{"class":292},[223,1045,311],{"class":292},[223,1047,1048],{"class":233},"repeated transfers just below the reporting threshold within 24h",[223,1050,338],{"class":292},[223,1052,1053],{"class":225,"line":670},[223,1054,558],{"class":292},[223,1056,1057],{"class":225,"line":676},[223,1058,1059],{"class":292},"  ],\n",[223,1061,1062,1064,1066,1068,1070,1072,1075],{"class":225,"line":682},[223,1063,298],{"class":292},[223,1065,833],{"class":301},[223,1067,305],{"class":292},[223,1069,308],{"class":292},[223,1071,311],{"class":292},[223,1073,1074],{"class":233},"2026-10-15T11:09:12.318Z",[223,1076,338],{"class":292},[223,1078,1079],{"class":225,"line":688},[223,1080,344],{"class":292},[189,1082,1083,1084,1086,1087,1089],{},"A score of 60 is a ",[204,1085,879],{},", so the decision went on an alert, and ",[204,1088,966],{}," points to it.",[1091,1092,1093,1094,1096],"note",{},"Resending an ",[204,1095,866],{}," returns the original event and decision. Retries never create duplicates, so use a new key for each new transaction.",[196,1098,1100],{"id":1099},"_6-see-the-alert","6. See the alert",[213,1102,1104],{"className":215,"code":1103,"filename":217,"language":218,"meta":219,"style":219},"curl \"$SENTINEL_URL\u002Fv1\u002Falerts?status=open\" \\\n  -H \"Authorization: Bearer $SENTINEL_KEY\"\n",[204,1105,1106,1121],{"__ignoreMap":219},[223,1107,1108,1110,1112,1114,1117,1119],{"class":225,"line":226},[223,1109,276],{"class":229},[223,1111,311],{"class":292},[223,1113,474],{"class":428},[223,1115,1116],{"class":233},"\u002Fv1\u002Falerts?status=open",[223,1118,305],{"class":292},[223,1120,482],{"class":428},[223,1122,1123,1125,1127,1129,1131],{"class":225,"line":244},[223,1124,487],{"class":233},[223,1126,311],{"class":292},[223,1128,492],{"class":233},[223,1130,495],{"class":428},[223,1132,338],{"class":292},[189,1134,1135,1136,1139],{},"The alert comes back with the decision and event behind it. Send a fourth transfer and list again: it joins the same alert, and ",[204,1137,1138],{},"occurrences"," goes from 1 to 2. Alerts are grouped by source, so one busy customer doesn't fill the queue.",[213,1141,1143],{"className":282,"code":1142,"filename":284,"language":285,"meta":219,"style":219},"{\n  \"alerts\": [\n    {\n      \"id\": \"c7d4e1a2-5b6c-4d7e-8f9a-0b1c2d3e4f5a\",\n      \"decision_id\": \"a81e4f02-6c9d-4b7a-9e3f-2d1c0b9a8f7e\",\n      \"event_id\": \"c4d5e6f7-0a1b-4c2d-8e9f-3a4b5c6d7e8f\",\n      \"status\": \"open\",\n      \"priority\": \"medium\",\n      \"occurrences\": 2,\n      \"last_event_at\": \"2026-10-15T11:02:41Z\",\n      \"created_at\": \"2026-10-15T11:09:12.318Z\",\n      \"updated_at\": \"2026-10-15T11:12:30.904Z\",\n      \"decision\": \"review\",\n      \"risk_score\": 60,\n      \"reasons\": [\n        {\n          \"rule\": \"structuring_below_threshold\",\n          \"version\": 1,\n          \"detail\": \"repeated transfers just below the reporting threshold within 24h\"\n        }\n      ],\n      \"event\": {\n        \"type\": \"transfer.outbound\",\n        \"occurred_at\": \"2026-10-15T11:02:41Z\",\n        \"amount\": {\n          \"value\": 4950,\n          \"currency\": \"USD\"\n        },\n        \"rail\": \"mobile_money\",\n        \"source_id\": \"cus_10442\"\n      }\n    }\n  ]\n}\n",[204,1144,1145,1149,1162,1166,1184,1203,1221,1240,1260,1275,1295,1313,1333,1351,1365,1377,1382,1401,1415,1431,1436,1442,1457,1479,1499,1513,1531,1550,1556,1577,1596,1602,1607,1613],{"__ignoreMap":219},[223,1146,1147],{"class":225,"line":226},[223,1148,293],{"class":292},[223,1150,1151,1153,1156,1158,1160],{"class":225,"line":244},[223,1152,298],{"class":292},[223,1154,1155],{"class":301},"alerts",[223,1157,305],{"class":292},[223,1159,308],{"class":292},[223,1161,992],{"class":292},[223,1163,1164],{"class":225,"line":255},[223,1165,997],{"class":292},[223,1167,1168,1170,1172,1174,1176,1178,1180,1182],{"class":225,"line":341},[223,1169,1002],{"class":292},[223,1171,743],{"class":229},[223,1173,305],{"class":292},[223,1175,308],{"class":292},[223,1177,311],{"class":292},[223,1179,975],{"class":233},[223,1181,305],{"class":292},[223,1183,319],{"class":292},[223,1185,1186,1188,1191,1193,1195,1197,1199,1201],{"class":225,"line":525},[223,1187,1002],{"class":292},[223,1189,1190],{"class":229},"decision_id",[223,1192,305],{"class":292},[223,1194,308],{"class":292},[223,1196,311],{"class":292},[223,1198,903],{"class":233},[223,1200,305],{"class":292},[223,1202,319],{"class":292},[223,1204,1205,1207,1209,1211,1213,1215,1217,1219],{"class":225,"line":531},[223,1206,1002],{"class":292},[223,1208,763],{"class":229},[223,1210,305],{"class":292},[223,1212,308],{"class":292},[223,1214,311],{"class":292},[223,1216,922],{"class":233},[223,1218,305],{"class":292},[223,1220,319],{"class":292},[223,1222,1223,1225,1227,1229,1231,1233,1236,1238],{"class":225,"line":537},[223,1224,1002],{"class":292},[223,1226,302],{"class":229},[223,1228,305],{"class":292},[223,1230,308],{"class":292},[223,1232,311],{"class":292},[223,1234,1235],{"class":233},"open",[223,1237,305],{"class":292},[223,1239,319],{"class":292},[223,1241,1242,1244,1247,1249,1251,1253,1256,1258],{"class":225,"line":543},[223,1243,1002],{"class":292},[223,1245,1246],{"class":229},"priority",[223,1248,305],{"class":292},[223,1250,308],{"class":292},[223,1252,311],{"class":292},[223,1254,1255],{"class":233},"medium",[223,1257,305],{"class":292},[223,1259,319],{"class":292},[223,1261,1262,1264,1266,1268,1270,1273],{"class":225,"line":549},[223,1263,1002],{"class":292},[223,1265,1138],{"class":229},[223,1267,305],{"class":292},[223,1269,308],{"class":292},[223,1271,1272],{"class":809}," 2",[223,1274,319],{"class":292},[223,1276,1277,1279,1282,1284,1286,1288,1291,1293],{"class":225,"line":555},[223,1278,1002],{"class":292},[223,1280,1281],{"class":229},"last_event_at",[223,1283,305],{"class":292},[223,1285,308],{"class":292},[223,1287,311],{"class":292},[223,1289,1290],{"class":233},"2026-10-15T11:02:41Z",[223,1292,305],{"class":292},[223,1294,319],{"class":292},[223,1296,1297,1299,1301,1303,1305,1307,1309,1311],{"class":225,"line":561},[223,1298,1002],{"class":292},[223,1300,833],{"class":229},[223,1302,305],{"class":292},[223,1304,308],{"class":292},[223,1306,311],{"class":292},[223,1308,1074],{"class":233},[223,1310,305],{"class":292},[223,1312,319],{"class":292},[223,1314,1315,1317,1320,1322,1324,1326,1329,1331],{"class":225,"line":670},[223,1316,1002],{"class":292},[223,1318,1319],{"class":229},"updated_at",[223,1321,305],{"class":292},[223,1323,308],{"class":292},[223,1325,311],{"class":292},[223,1327,1328],{"class":233},"2026-10-15T11:12:30.904Z",[223,1330,305],{"class":292},[223,1332,319],{"class":292},[223,1334,1335,1337,1339,1341,1343,1345,1347,1349],{"class":225,"line":676},[223,1336,1002],{"class":292},[223,1338,783],{"class":229},[223,1340,305],{"class":292},[223,1342,308],{"class":292},[223,1344,311],{"class":292},[223,1346,879],{"class":233},[223,1348,305],{"class":292},[223,1350,319],{"class":292},[223,1352,1353,1355,1357,1359,1361,1363],{"class":225,"line":682},[223,1354,1002],{"class":292},[223,1356,802],{"class":229},[223,1358,305],{"class":292},[223,1360,308],{"class":292},[223,1362,957],{"class":809},[223,1364,319],{"class":292},[223,1366,1367,1369,1371,1373,1375],{"class":225,"line":688},[223,1368,1002],{"class":292},[223,1370,819],{"class":229},[223,1372,305],{"class":292},[223,1374,308],{"class":292},[223,1376,992],{"class":292},[223,1378,1379],{"class":225,"line":694},[223,1380,1381],{"class":292},"        {\n",[223,1383,1384,1387,1389,1391,1393,1395,1397,1399],{"class":225,"line":699},[223,1385,1386],{"class":292},"          \"",[223,1388,1005],{"class":809},[223,1390,305],{"class":292},[223,1392,308],{"class":292},[223,1394,311],{"class":292},[223,1396,858],{"class":233},[223,1398,305],{"class":292},[223,1400,319],{"class":292},[223,1402,1403,1405,1407,1409,1411,1413],{"class":225,"line":705},[223,1404,1386],{"class":292},[223,1406,326],{"class":809},[223,1408,305],{"class":292},[223,1410,308],{"class":292},[223,1412,1030],{"class":809},[223,1414,319],{"class":292},[223,1416,1417,1419,1421,1423,1425,1427,1429],{"class":225,"line":711},[223,1418,1386],{"class":292},[223,1420,1039],{"class":809},[223,1422,305],{"class":292},[223,1424,308],{"class":292},[223,1426,311],{"class":292},[223,1428,1048],{"class":233},[223,1430,338],{"class":292},[223,1432,1433],{"class":225,"line":716},[223,1434,1435],{"class":292},"        }\n",[223,1437,1439],{"class":225,"line":1438},21,[223,1440,1441],{"class":292},"      ],\n",[223,1443,1445,1447,1450,1452,1454],{"class":225,"line":1444},22,[223,1446,1002],{"class":292},[223,1448,1449],{"class":229},"event",[223,1451,305],{"class":292},[223,1453,308],{"class":292},[223,1455,1456],{"class":292}," {\n",[223,1458,1460,1463,1466,1468,1470,1472,1475,1477],{"class":225,"line":1459},23,[223,1461,1462],{"class":292},"        \"",[223,1464,1465],{"class":809},"type",[223,1467,305],{"class":292},[223,1469,308],{"class":292},[223,1471,311],{"class":292},[223,1473,1474],{"class":233},"transfer.outbound",[223,1476,305],{"class":292},[223,1478,319],{"class":292},[223,1480,1482,1484,1487,1489,1491,1493,1495,1497],{"class":225,"line":1481},24,[223,1483,1462],{"class":292},[223,1485,1486],{"class":809},"occurred_at",[223,1488,305],{"class":292},[223,1490,308],{"class":292},[223,1492,311],{"class":292},[223,1494,1290],{"class":233},[223,1496,305],{"class":292},[223,1498,319],{"class":292},[223,1500,1502,1504,1507,1509,1511],{"class":225,"line":1501},25,[223,1503,1462],{"class":292},[223,1505,1506],{"class":809},"amount",[223,1508,305],{"class":292},[223,1510,308],{"class":292},[223,1512,1456],{"class":292},[223,1514,1516,1518,1522,1524,1526,1529],{"class":225,"line":1515},26,[223,1517,1386],{"class":292},[223,1519,1521],{"class":1520},"swJcz","value",[223,1523,305],{"class":292},[223,1525,308],{"class":292},[223,1527,1528],{"class":809}," 4950",[223,1530,319],{"class":292},[223,1532,1534,1536,1539,1541,1543,1545,1548],{"class":225,"line":1533},27,[223,1535,1386],{"class":292},[223,1537,1538],{"class":1520},"currency",[223,1540,305],{"class":292},[223,1542,308],{"class":292},[223,1544,311],{"class":292},[223,1546,1547],{"class":233},"USD",[223,1549,338],{"class":292},[223,1551,1553],{"class":225,"line":1552},28,[223,1554,1555],{"class":292},"        },\n",[223,1557,1559,1561,1564,1566,1568,1570,1573,1575],{"class":225,"line":1558},29,[223,1560,1462],{"class":292},[223,1562,1563],{"class":809},"rail",[223,1565,305],{"class":292},[223,1567,308],{"class":292},[223,1569,311],{"class":292},[223,1571,1572],{"class":233},"mobile_money",[223,1574,305],{"class":292},[223,1576,319],{"class":292},[223,1578,1580,1582,1585,1587,1589,1591,1594],{"class":225,"line":1579},30,[223,1581,1462],{"class":292},[223,1583,1584],{"class":809},"source_id",[223,1586,305],{"class":292},[223,1588,308],{"class":292},[223,1590,311],{"class":292},[223,1592,1593],{"class":233},"cus_10442",[223,1595,338],{"class":292},[223,1597,1599],{"class":225,"line":1598},31,[223,1600,1601],{"class":292},"      }\n",[223,1603,1605],{"class":225,"line":1604},32,[223,1606,558],{"class":292},[223,1608,1610],{"class":225,"line":1609},33,[223,1611,1612],{"class":292},"  ]\n",[223,1614,1616],{"class":225,"line":1615},34,[223,1617,344],{"class":292},[196,1619,1621],{"id":1620},"_7-close-it-with-a-second-key","7. Close it with a second key",[189,1623,1624],{},"Closing an alert takes two people. Ask to close it as a false positive:",[213,1626,1628],{"className":215,"code":1627,"filename":217,"language":218,"meta":219,"style":219},"curl -X POST \"$SENTINEL_URL\u002Fv1\u002Falerts\u002Fc7d4e1a2-5b6c-4d7e-8f9a-0b1c2d3e4f5a\u002Fclosure\" \\\n  -H \"Authorization: Bearer $SENTINEL_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"disposition\": \"false_positive\"\n  }'\n",[204,1629,1630,1649,1663,1675,1683,1688],{"__ignoreMap":219},[223,1631,1632,1634,1636,1638,1640,1642,1645,1647],{"class":225,"line":226},[223,1633,276],{"class":229},[223,1635,466],{"class":233},[223,1637,469],{"class":233},[223,1639,311],{"class":292},[223,1641,474],{"class":428},[223,1643,1644],{"class":233},"\u002Fv1\u002Falerts\u002Fc7d4e1a2-5b6c-4d7e-8f9a-0b1c2d3e4f5a\u002Fclosure",[223,1646,305],{"class":292},[223,1648,482],{"class":428},[223,1650,1651,1653,1655,1657,1659,1661],{"class":225,"line":244},[223,1652,487],{"class":233},[223,1654,311],{"class":292},[223,1656,492],{"class":233},[223,1658,495],{"class":428},[223,1660,305],{"class":292},[223,1662,482],{"class":428},[223,1664,1665,1667,1669,1671,1673],{"class":225,"line":255},[223,1666,487],{"class":233},[223,1668,311],{"class":292},[223,1670,508],{"class":233},[223,1672,305],{"class":292},[223,1674,482],{"class":428},[223,1676,1677,1679,1681],{"class":225,"line":341},[223,1678,517],{"class":233},[223,1680,520],{"class":292},[223,1682,293],{"class":233},[223,1684,1685],{"class":225,"line":525},[223,1686,1687],{"class":233},"    \"disposition\": \"false_positive\"\n",[223,1689,1690,1692],{"class":225,"line":531},[223,1691,564],{"class":233},[223,1693,567],{"class":292},[189,1695,1696,1697,1700],{},"Approving with the same key returns ",[204,1698,1699],{},"403",". Make a second key for a reviewer, this time through the API:",[213,1702,1704],{"className":215,"code":1703,"filename":217,"language":218,"meta":219,"style":219},"curl -X POST \"$SENTINEL_URL\u002Fv1\u002Fkeys\" \\\n  -H \"Authorization: Bearer $SENTINEL_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"name\": \"reviewer\"\n  }'\n",[204,1705,1706,1725,1739,1751,1759,1764],{"__ignoreMap":219},[223,1707,1708,1710,1712,1714,1716,1718,1721,1723],{"class":225,"line":226},[223,1709,276],{"class":229},[223,1711,466],{"class":233},[223,1713,469],{"class":233},[223,1715,311],{"class":292},[223,1717,474],{"class":428},[223,1719,1720],{"class":233},"\u002Fv1\u002Fkeys",[223,1722,305],{"class":292},[223,1724,482],{"class":428},[223,1726,1727,1729,1731,1733,1735,1737],{"class":225,"line":244},[223,1728,487],{"class":233},[223,1730,311],{"class":292},[223,1732,492],{"class":233},[223,1734,495],{"class":428},[223,1736,305],{"class":292},[223,1738,482],{"class":428},[223,1740,1741,1743,1745,1747,1749],{"class":225,"line":255},[223,1742,487],{"class":233},[223,1744,311],{"class":292},[223,1746,508],{"class":233},[223,1748,305],{"class":292},[223,1750,482],{"class":428},[223,1752,1753,1755,1757],{"class":225,"line":341},[223,1754,517],{"class":233},[223,1756,520],{"class":292},[223,1758,293],{"class":233},[223,1760,1761],{"class":225,"line":525},[223,1762,1763],{"class":233},"    \"name\": \"reviewer\"\n",[223,1765,1766,1768],{"class":225,"line":531},[223,1767,564],{"class":233},[223,1769,567],{"class":292},[189,1771,1772,1773,1776,1777,1780],{},"Copy the ",[204,1774,1775],{},"secret"," from the response into ",[204,1778,1779],{},"SENTINEL_REVIEWER_KEY",", then approve with it:",[213,1782,1784],{"className":215,"code":1783,"filename":217,"language":218,"meta":219,"style":219},"curl -X POST \"$SENTINEL_URL\u002Fv1\u002Falerts\u002Fc7d4e1a2-5b6c-4d7e-8f9a-0b1c2d3e4f5a\u002Fclosure\u002Fapprove\" \\\n  -H \"Authorization: Bearer $SENTINEL_REVIEWER_KEY\"\n",[204,1785,1786,1805],{"__ignoreMap":219},[223,1787,1788,1790,1792,1794,1796,1798,1801,1803],{"class":225,"line":226},[223,1789,276],{"class":229},[223,1791,466],{"class":233},[223,1793,469],{"class":233},[223,1795,311],{"class":292},[223,1797,474],{"class":428},[223,1799,1800],{"class":233},"\u002Fv1\u002Falerts\u002Fc7d4e1a2-5b6c-4d7e-8f9a-0b1c2d3e4f5a\u002Fclosure\u002Fapprove",[223,1802,305],{"class":292},[223,1804,482],{"class":428},[223,1806,1807,1809,1811,1813,1816],{"class":225,"line":244},[223,1808,487],{"class":233},[223,1810,311],{"class":292},[223,1812,492],{"class":233},[223,1814,1815],{"class":428},"$SENTINEL_REVIEWER_KEY",[223,1817,338],{"class":292},[189,1819,1820,1821,1824,1825,1828,1829,1832],{},"The alert is now ",[204,1822,1823],{},"closed",", with ",[204,1826,1827],{},"closure_requested_by"," and ",[204,1830,1831],{},"closed_by"," showing the two keys.",[189,1834,1835],{},"That's the whole loop: an event goes in, a decision comes out, an alert waits for a person, and two people agree on how it ends.",[196,1837,1839],{"id":1838},"see-it-in-the-dashboard","See it in the dashboard",[189,1841,1842],{},"The dashboard has the Overview, the alert queue with notes and closure, screening and match review, rules with backtests, and the API keys screen. To run it in development:",[213,1844,1846],{"className":215,"code":1845,"filename":217,"language":218,"meta":219,"style":219},"cd web\nnpm install\nnpm run dev   # http:\u002F\u002Flocalhost:5173, proxies \u002Fv1 to the API on :8080\n",[204,1847,1848,1856,1864],{"__ignoreMap":219},[223,1849,1850,1853],{"class":225,"line":226},[223,1851,1852],{"class":369},"cd",[223,1854,1855],{"class":233}," web\n",[223,1857,1858,1861],{"class":225,"line":244},[223,1859,1860],{"class":229},"npm",[223,1862,1863],{"class":233}," install\n",[223,1865,1866,1868,1870,1873],{"class":225,"line":255},[223,1867,1860],{"class":229},[223,1869,260],{"class":233},[223,1871,1872],{"class":233}," dev",[223,1874,1875],{"class":240},"   # http:\u002F\u002Flocalhost:5173, proxies \u002Fv1 to the API on :8080\n",[189,1877,1878,1879,1882,1883,1886,1887,1890],{},"Sign in with an API key. To serve the dashboard from the API itself, build with ",[204,1880,1881],{},"make bundle"," and run ",[204,1884,1885],{},".\u002Fbin\u002Fsentinel-api",". See ",[1888,1889,21],"a",{"href":22},".",[189,1892,1893,1894,1897,1898,1901],{},"To see a first alert without curl, use ",[861,1895,1896],{},"Send a test event",". It's on the empty Alerts screen and under ",[861,1899,1900],{},"Developers",". Pick a scenario, such as structuring under the threshold or a sanctions name match, and the dialog sends it and shows the decision or the screening result. When a test transfer raises an alert, the dialog links to it. There's no sandbox, so these are real events that run through your live rules, and their alerts join the queue. Close them as false positives once you've looked.",[196,1903,1905],{"id":1904},"next-steps","Next steps",[1907,1908,1909,1916,1922,1931],"ul",{},[1910,1911,1912,1913,1915],"li",{},"Read ",[1888,1914,36],{"href":37}," for how scores work.",[1910,1917,1918,1919,1890],{},"Write a rule of your own with the ",[1888,1920,1921],{"href":127},"rules API",[1910,1923,1924,1925,1928,1929,1890],{},"Wire ",[204,1926,1927],{},"POST \u002Fv1\u002Fevents"," into your payment flow using the ",[1888,1930,82],{"href":113},[1910,1932,1933,1934,1937],{},"Follow the ",[1888,1935,1936],{"href":72},"integration plan"," to get from a test install to production.",[1939,1940,1941],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":219,"searchDepth":244,"depth":244,"links":1943},[1944,1945,1946,1947,1948,1949,1950,1951,1952],{"id":198,"depth":244,"text":199},{"id":347,"depth":244,"text":348},{"id":450,"depth":244,"text":451},{"id":570,"depth":244,"text":571},{"id":851,"depth":244,"text":852},{"id":1099,"depth":244,"text":1100},{"id":1620,"depth":244,"text":1621},{"id":1838,"depth":244,"text":1839},{"id":1904,"depth":244,"text":1905},"Run Sentinel locally, make a key, send events, and work the alert they raise.","md",null,{},{"icon":19},{"title":16,"description":1953},"rptXQ2addEib645mFcXQhBkuDKHCE0ZkbIEFjC8u7RE",[1961,1963],{"title":11,"path":12,"stem":13,"description":1962,"icon":14,"children":-1},"What Sentinel is, what it does and doesn't do, and who uses it.",{"title":21,"path":22,"stem":23,"description":1964,"icon":24,"children":-1},"What a Sentinel install runs, how to deploy it with Docker or from source, and how to configure and operate it.",1792169656544]