[{"data":1,"prerenderedAt":2083},["ShallowReactive",2],{"navigation":3,"\u002Factions-and-metrics\u002Fconfirmation":307,"\u002Factions-and-metrics\u002Fconfirmation-surround":2078},{"3.x":4,"2.x":203},[5,32,61,99,121,147,165],{"title":6,"icon":7,"path":8,"stem":9,"children":10,"page":31},"Getting Started","i-heroicons-star","\u002Fgetting-started","1.getting-started",[11,15,19,23,27],{"title":12,"path":13,"stem":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":16,"path":17,"stem":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":20,"path":21,"stem":22},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":24,"path":25,"stem":26},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F4.configuration",{"title":28,"path":29,"stem":30},"Upgrade guide","\u002Fgetting-started\u002Fupgrade-guide","1.getting-started\u002F5.upgrade-guide",false,{"title":33,"icon":34,"path":35,"stem":36,"children":37,"page":31},"Resources","i-heroicons-document-text","\u002Fresources","2.resources",[38,41,45,49,53,57],{"title":33,"path":39,"stem":40},"\u002Fresources\u002Fresources","2.resources\u002F1.resources",{"title":42,"path":43,"stem":44},"Fields","\u002Fresources\u002Ffields","2.resources\u002F2.fields",{"title":46,"path":47,"stem":48},"Relationships","\u002Fresources\u002Frelations","2.resources\u002F3.relations",{"title":50,"path":51,"stem":52},"Validation","\u002Fresources\u002Fvalidation","2.resources\u002F4.validation",{"title":54,"path":55,"stem":56},"Perimeter","\u002Fresources\u002Fperimeter","2.resources\u002F5.perimeter",{"title":58,"path":59,"stem":60},"Limits","\u002Fresources\u002Flimits","2.resources\u002F6.limits",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":31},"Search","i-heroicons-magnifying-glass","\u002Fsearch","3.search",[67,71,75,79,83,87,91,95],{"title":68,"path":69,"stem":70},"Search overview","\u002Fsearch\u002Foverview","3.search\u002F1.overview",{"title":72,"path":73,"stem":74},"Search filters","\u002Fsearch\u002Ffilters","3.search\u002F2.filters",{"title":76,"path":77,"stem":78},"Sorts and selects","\u002Fsearch\u002Fsorts-and-selects","3.search\u002F3.sorts-and-selects",{"title":80,"path":81,"stem":82},"Includes and aggregates","\u002Fsearch\u002Fincludes-and-aggregates","3.search\u002F4.includes-and-aggregates",{"title":84,"path":85,"stem":86},"Scopes and instructions","\u002Fsearch\u002Fscopes-and-instructions","3.search\u002F5.scopes-and-instructions",{"title":88,"path":89,"stem":90},"Text search","\u002Fsearch\u002Ftext-search","3.search\u002F6.text-search",{"title":92,"path":93,"stem":94},"Search engines","\u002Fsearch\u002Fsearch-engines","3.search\u002F7.search-engines",{"title":96,"path":97,"stem":98},"Searching outside HTTP","\u002Fsearch\u002Foutside-http","3.search\u002F8.outside-http",{"title":100,"icon":101,"path":102,"stem":103,"children":104,"page":31},"Writing","i-heroicons-pencil-square","\u002Fwriting","4.writing",[105,109,113,117],{"title":106,"path":107,"stem":108},"Mutate","\u002Fwriting\u002Fmutate","4.writing\u002F1.mutate",{"title":110,"path":111,"stem":112},"Writing relations","\u002Fwriting\u002Frelations","4.writing\u002F2.relations",{"title":114,"path":115,"stem":116},"Versioned rows","\u002Fwriting\u002Fversioned-rows","4.writing\u002F3.versioned-rows",{"title":118,"path":119,"stem":120},"Deleting and restoring","\u002Fwriting\u002Fdeleting","4.writing\u002F4.deleting",{"title":122,"icon":123,"path":124,"stem":125,"children":126,"page":31},"Actions and Metrics","i-heroicons-bolt","\u002Factions-and-metrics","5.actions-and-metrics",[127,131,135,139,143],{"title":128,"path":129,"stem":130},"Actions","\u002Factions-and-metrics\u002Factions","5.actions-and-metrics\u002F1.actions",{"title":132,"path":133,"stem":134},"Queued Actions","\u002Factions-and-metrics\u002Fqueued-actions","5.actions-and-metrics\u002F2.queued-actions",{"title":136,"path":137,"stem":138},"Confirmation","\u002Factions-and-metrics\u002Fconfirmation","5.actions-and-metrics\u002F3.confirmation",{"title":140,"path":141,"stem":142},"Metrics","\u002Factions-and-metrics\u002Fmetrics","5.actions-and-metrics\u002F4.metrics",{"title":144,"path":145,"stem":146},"Exports","\u002Factions-and-metrics\u002Fexports","5.actions-and-metrics\u002F5.exports",{"title":148,"icon":149,"path":150,"stem":151,"children":152,"page":31},"Authorization","i-heroicons-lock-closed","\u002Fauthorization","6.authorization",[153,157,161],{"title":154,"path":155,"stem":156},"Policies","\u002Fauthorization\u002Fpolicies","6.authorization\u002F1.policies",{"title":158,"path":159,"stem":160},"Gates","\u002Fauthorization\u002Fgates","6.authorization\u002F2.gates",{"title":162,"path":163,"stem":164},"Decision Cache","\u002Fauthorization\u002Fdecision-cache","6.authorization\u002F3.decision-cache",{"title":166,"icon":167,"path":168,"stem":169,"children":170,"page":31},"Digging Deeper","i-heroicons-list-bullet","\u002Fdigging-deeper","7.digging-deeper",[171,175,179,183,187,191,195,199],{"title":172,"path":173,"stem":174},"Details","\u002Fdigging-deeper\u002Fdetails","7.digging-deeper\u002F1.details",{"title":176,"path":177,"stem":178},"Events and Hooks","\u002Fdigging-deeper\u002Fevents-and-hooks","7.digging-deeper\u002F2.events-and-hooks",{"title":180,"path":181,"stem":182},"Custom Responses","\u002Fdigging-deeper\u002Fresponses","7.digging-deeper\u002F3.responses",{"title":184,"path":185,"stem":186},"OpenAPI Documentation","\u002Fdigging-deeper\u002Fopenapi","7.digging-deeper\u002F4.openapi",{"title":188,"path":189,"stem":190},"Precognition","\u002Fdigging-deeper\u002Fprecognition","7.digging-deeper\u002F5.precognition",{"title":192,"path":193,"stem":194},"Artisan Commands","\u002Fdigging-deeper\u002Fartisan","7.digging-deeper\u002F6.artisan",{"title":196,"path":197,"stem":198},"Laravel Boost Skill","\u002Fdigging-deeper\u002Fai-skill","7.digging-deeper\u002F7.ai-skill",{"title":200,"path":201,"stem":202},"Translations","\u002Fdigging-deeper\u002Ftranslations","7.digging-deeper\u002F8.translations",[204,215,237,260,297],{"title":6,"icon":7,"path":205,"stem":206,"children":207,"page":31},"\u002F2.x\u002Fgetting-started","2.x\u002F1.getting-started",[208,211],{"title":16,"path":209,"stem":210},"\u002F2.x\u002Fgetting-started\u002Finstallation","2.x\u002F1.getting-started\u002F1.installation",{"title":212,"path":213,"stem":214},"Upgrade Guide","\u002F2.x\u002Fgetting-started\u002Fupgrade-guide","2.x\u002F1.getting-started\u002F2.upgrade-guide",{"title":216,"icon":217,"path":218,"stem":219,"children":220,"page":31},"Endpoints","i-heroicons-arrow-uturn-left","\u002F2.x\u002Fendpoints","2.x\u002F2.endpoints",[221,224,227,230,233],{"title":172,"path":222,"stem":223},"\u002F2.x\u002Fendpoints\u002Fdetails","2.x\u002F2.endpoints\u002F1.details",{"title":62,"path":225,"stem":226},"\u002F2.x\u002Fendpoints\u002Fsearch","2.x\u002F2.endpoints\u002F2.search",{"title":106,"path":228,"stem":229},"\u002F2.x\u002Fendpoints\u002Fmutate","2.x\u002F2.endpoints\u002F3.mutate",{"title":128,"path":231,"stem":232},"\u002F2.x\u002Fendpoints\u002Factions","2.x\u002F2.endpoints\u002F4.actions",{"title":234,"path":235,"stem":236},"Delete","\u002F2.x\u002Fendpoints\u002Fdelete","2.x\u002F2.endpoints\u002F5.delete",{"title":33,"icon":34,"path":238,"stem":239,"children":240,"page":31},"\u002F2.x\u002Fresources","2.x\u002F3.resources",[241,245,249,252,256],{"title":242,"path":243,"stem":244},"Basics","\u002F2.x\u002Fresources\u002Fbasics","2.x\u002F3.resources\u002F1.basics",{"title":246,"path":247,"stem":248},"Exposed Data","\u002F2.x\u002Fresources\u002Fexposed-data","2.x\u002F3.resources\u002F2.exposed-data",{"title":46,"path":250,"stem":251},"\u002F2.x\u002Fresources\u002Frelationships","2.x\u002F3.resources\u002F3.relationships",{"title":253,"path":254,"stem":255},"Validations","\u002F2.x\u002Fresources\u002Fvalidations","2.x\u002F3.resources\u002F4.validations",{"title":257,"path":258,"stem":259},"Interactions","\u002F2.x\u002Fresources\u002Finteractions","2.x\u002F3.resources\u002F5.interactions",{"title":166,"icon":167,"path":261,"stem":262,"children":263,"page":31},"\u002F2.x\u002Fdigging-deeper","2.x\u002F4.digging-deeper",[264,267,271,274,278,282,286,290,294],{"title":128,"path":265,"stem":266},"\u002F2.x\u002Fdigging-deeper\u002Factions","2.x\u002F4.digging-deeper\u002F1.actions",{"title":268,"path":269,"stem":270},"Hooks","\u002F2.x\u002Fdigging-deeper\u002Fhooks","2.x\u002F4.digging-deeper\u002F2.hooks",{"title":158,"path":272,"stem":273},"\u002F2.x\u002Fdigging-deeper\u002Fgates","2.x\u002F4.digging-deeper\u002F3.gates",{"title":275,"path":276,"stem":277},"Authorizations","\u002F2.x\u002Fdigging-deeper\u002Fauthorizations","2.x\u002F4.digging-deeper\u002F4.authorizations",{"title":279,"path":280,"stem":281},"Full Text Search","\u002F2.x\u002Fdigging-deeper\u002Ffull-text-search","2.x\u002F4.digging-deeper\u002F5.full-text-search",{"title":283,"path":284,"stem":285},"Instructions","\u002F2.x\u002Fdigging-deeper\u002Finstructions","2.x\u002F4.digging-deeper\u002F6.instructions",{"title":287,"path":288,"stem":289},"Responses","\u002F2.x\u002Fdigging-deeper\u002Fresponses","2.x\u002F4.digging-deeper\u002F7.responses",{"title":291,"path":292,"stem":293},"Documentation","\u002F2.x\u002Fdigging-deeper\u002Fdocumentation","2.x\u002F4.digging-deeper\u002F8.documentation",{"title":188,"path":295,"stem":296},"\u002F2.x\u002Fdigging-deeper\u002Fprecognition","2.x\u002F4.digging-deeper\u002F9.precognition",{"title":298,"icon":299,"path":300,"stem":301,"children":302,"page":31},"Integrations","i-lucide-puzzle","\u002F2.x\u002Fintegrations","2.x\u002F5.integrations",[303],{"title":304,"path":305,"stem":306},"Flutter","\u002F2.x\u002Fintegrations\u002Fflutter","2.x\u002F5.integrations\u002F1.flutter",{"id":308,"title":136,"body":309,"description":2071,"extension":2072,"links":2073,"meta":2074,"navigation":442,"path":137,"seo":2075,"sitemap":2076,"stem":138,"__hash__":2077},"docs3x\u002F5.actions-and-metrics\u002F3.confirmation.md",{"type":310,"value":311,"toc":2064},"minimark",[312,324,358,363,375,659,721,725,736,761,772,893,916,920,925,961,1004,1015,1042,1063,1066,1075,1162,1330,1361,1487,1494,1507,1883,1906,1909,1960,1984,1992,1996,2060],[313,314,315,319,320,323],"p",{},[316,317,318],"code",{},"->confirm()"," only asks clients to show a dialog: a client that skips it still runs the action. When an action or a write must not run unconfirmed, declare a confirmation hook. The endpoint then answers ",[316,321,322],{},"428"," with a signed token, and runs only when the same request comes back with that token.",[325,326,327,335],"ul",{},[328,329,330,331,334],"li",{},"Actions declare ",[316,332,333],{},"confirmation()",".",[328,336,337,338,341,342,341,345,348,349,352,353,334],{},"Resources declare ",[316,339,340],{},"mutateConfirmation()",", ",[316,343,344],{},"destroyConfirmation()",[316,346,347],{},"restoreConfirmation()"," and ",[316,350,351],{},"forceDestroyConfirmation()",", see ",[354,355,357],"a",{"href":356},"#confirming-writes","Confirming writes",[359,360,362],"h2",{"id":361},"asking-for-a-confirmation","Asking for a confirmation",[313,364,365,367,368,370,371,374],{},[316,366,333],{}," receives the fields and the number of rows the action would run on. Return a ",[316,369,136],{}," to ask, or ",[316,372,373],{},"null"," to run at once:",[376,377,382],"pre",{"className":378,"code":379,"language":380,"meta":381,"style":381},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use Lomkit\\Rest\\Actions\\ActionFields;\nuse Lomkit\\Rest\\Confirmation\\Confirmation;\n\nclass ShredDocuments extends Action\n{\n    public function confirmation(ActionFields $fields, int $rows): ?Confirmation\n    {\n        if ($rows \u003C 3) {\n            return null;\n        }\n\n        return Confirmation::make(\"Shred {$rows} documents?\")\n            ->data(['rows' => $rows])\n            ->expiresIn(300);\n    }\n}\n","php","",[316,383,384,416,437,444,461,467,511,517,542,551,557,562,602,631,647,653],{"__ignoreMap":381},[385,386,389,393,397,401,404,406,408,410,413],"span",{"class":387,"line":388},"line",1,[385,390,392],{"class":391},"sbssI","use",[385,394,396],{"class":395},"sTEyZ"," Lomkit",[385,398,400],{"class":399},"sMK4o","\\",[385,402,403],{"class":395},"Rest",[385,405,400],{"class":399},[385,407,128],{"class":395},[385,409,400],{"class":399},[385,411,412],{"class":395},"ActionFields",[385,414,415],{"class":399},";\n",[385,417,419,421,423,425,427,429,431,433,435],{"class":387,"line":418},2,[385,420,392],{"class":391},[385,422,396],{"class":395},[385,424,400],{"class":399},[385,426,403],{"class":395},[385,428,400],{"class":399},[385,430,136],{"class":395},[385,432,400],{"class":399},[385,434,136],{"class":395},[385,436,415],{"class":399},[385,438,440],{"class":387,"line":439},3,[385,441,443],{"emptyLinePlaceholder":442},true,"\n",[385,445,447,451,455,458],{"class":387,"line":446},4,[385,448,450],{"class":449},"spNyl","class",[385,452,454],{"class":453},"sBMFI"," ShredDocuments",[385,456,457],{"class":449}," extends",[385,459,460],{"class":453}," Action\n",[385,462,464],{"class":387,"line":463},5,[385,465,466],{"class":399},"{\n",[385,468,470,473,476,480,483,485,488,491,494,497,499,502,505,508],{"class":387,"line":469},6,[385,471,472],{"class":449},"    public",[385,474,475],{"class":449}," function",[385,477,479],{"class":478},"s2Zo4"," confirmation",[385,481,482],{"class":399},"(",[385,484,412],{"class":453},[385,486,487],{"class":399}," $",[385,489,490],{"class":395},"fields",[385,492,493],{"class":399},",",[385,495,496],{"class":391}," int",[385,498,487],{"class":399},[385,500,501],{"class":395},"rows",[385,503,504],{"class":399},"):",[385,506,507],{"class":399}," ?",[385,509,510],{"class":453},"Confirmation\n",[385,512,514],{"class":387,"line":513},7,[385,515,516],{"class":399},"    {\n",[385,518,520,524,527,530,533,536,539],{"class":387,"line":519},8,[385,521,523],{"class":522},"s7zQu","        if",[385,525,526],{"class":399}," ($",[385,528,529],{"class":395},"rows ",[385,531,532],{"class":399},"\u003C",[385,534,535],{"class":391}," 3",[385,537,538],{"class":399},")",[385,540,541],{"class":399}," {\n",[385,543,545,548],{"class":387,"line":544},9,[385,546,547],{"class":522},"            return",[385,549,550],{"class":399}," null;\n",[385,552,554],{"class":387,"line":553},10,[385,555,556],{"class":399},"        }\n",[385,558,560],{"class":387,"line":559},11,[385,561,443],{"emptyLinePlaceholder":442},[385,563,565,568,571,574,577,579,582,586,589,591,594,597,599],{"class":387,"line":564},12,[385,566,567],{"class":522},"        return",[385,569,570],{"class":453}," Confirmation",[385,572,573],{"class":399},"::",[385,575,576],{"class":478},"make",[385,578,482],{"class":399},[385,580,581],{"class":399},"\"",[385,583,585],{"class":584},"sfazB","Shred ",[385,587,588],{"class":399},"{$",[385,590,501],{"class":395},[385,592,593],{"class":399},"}",[385,595,596],{"class":584}," documents?",[385,598,581],{"class":399},[385,600,601],{"class":399},")\n",[385,603,605,608,611,614,617,619,621,624,626,628],{"class":387,"line":604},13,[385,606,607],{"class":399},"            ->",[385,609,610],{"class":478},"data",[385,612,613],{"class":399},"([",[385,615,616],{"class":399},"'",[385,618,501],{"class":584},[385,620,616],{"class":399},[385,622,623],{"class":399}," =>",[385,625,487],{"class":399},[385,627,501],{"class":395},[385,629,630],{"class":399},"])\n",[385,632,634,636,639,641,644],{"class":387,"line":633},14,[385,635,607],{"class":399},[385,637,638],{"class":478},"expiresIn",[385,640,482],{"class":399},[385,642,643],{"class":391},"300",[385,645,646],{"class":399},");\n",[385,648,650],{"class":387,"line":649},15,[385,651,652],{"class":399},"    }\n",[385,654,656],{"class":387,"line":655},16,[385,657,658],{"class":399},"}\n",[325,660,661,667,680,692],{},[328,662,663,666],{},[316,664,665],{},"make()"," takes the message of the response.",[328,668,669,672,673,676,677,334],{},[316,670,671],{},"data()"," adds an object for the client. It takes an array with string keys, ",[316,674,675],{},"{}"," when empty. A list throws ",[316,678,679],{},"Lomkit\\Rest\\Exceptions\\InvalidConfirmationException",[328,681,682,685,686,688,689,334],{},[316,683,684],{},"expiresIn()"," sets the lifetime of the token in seconds, ",[316,687,643],{}," by default, at least ",[316,690,691],{},"1",[328,693,694,697,698,701,702,704,705,708,709,712,713,716,717,720],{},[316,695,696],{},"$rows"," counts the rows that the search matches in the perimeter, within its ",[316,699,700],{},"limit",", the keys of the ",[316,703,33],{}," target, or ",[316,706,707],{},"0"," for the ",[316,710,711],{},"None"," target. It is counted before ",[316,714,715],{},"skipUnauthorized()"," leaves rows out, so ",[316,718,719],{},"impacted"," can end lower.",[359,722,724],{"id":723},"the-first-request","The first request",[376,726,730],{"className":727,"code":728,"language":729,"meta":381,"style":381},"language-http shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","POST \u002Fapi\u002Fdocuments\u002Factions\u002Fshred-documents\n","http",[316,731,732],{"__ignoreMap":381},[385,733,734],{"class":387,"line":388},[385,735,728],{},[376,737,741],{"className":738,"code":739,"language":740,"meta":381,"style":381},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\"search\": {}}\n","json",[316,742,743],{"__ignoreMap":381},[385,744,745,748,750,753,755,758],{"class":387,"line":388},[385,746,747],{"class":399},"{",[385,749,581],{"class":399},[385,751,752],{"class":449},"search",[385,754,581],{"class":399},[385,756,757],{"class":399},":",[385,759,760],{"class":399}," {}}\n",[313,762,763,764,768,769,771],{},"The endpoint validates the body, runs the entry checks and the ",[354,765,767],{"href":766},"\u002Factions-and-metrics\u002Factions#checking-each-row","row checks",", then answers ",[316,770,322],{}," and runs nothing:",[376,773,775],{"className":738,"code":774,"language":740,"meta":381,"style":381},"{\n  \"message\": \"Shred 4 documents?\",\n  \"confirmation\": {\n    \"token\": \"1794132300.f70157796d502916907407d48c8d213b83d718f1c91d9723258bf7760aac3331\",\n    \"expires_at\": \"2026-11-08T10:05:00Z\",\n    \"data\": {\"rows\": 4}\n  }\n}\n",[316,776,777,781,804,817,838,858,884,889],{"__ignoreMap":381},[385,778,779],{"class":387,"line":388},[385,780,466],{"class":399},[385,782,783,786,789,791,793,796,799,801],{"class":387,"line":418},[385,784,785],{"class":399},"  \"",[385,787,788],{"class":449},"message",[385,790,581],{"class":399},[385,792,757],{"class":399},[385,794,795],{"class":399}," \"",[385,797,798],{"class":584},"Shred 4 documents?",[385,800,581],{"class":399},[385,802,803],{"class":399},",\n",[385,805,806,808,811,813,815],{"class":387,"line":439},[385,807,785],{"class":399},[385,809,810],{"class":449},"confirmation",[385,812,581],{"class":399},[385,814,757],{"class":399},[385,816,541],{"class":399},[385,818,819,822,825,827,829,831,834,836],{"class":387,"line":446},[385,820,821],{"class":399},"    \"",[385,823,824],{"class":453},"token",[385,826,581],{"class":399},[385,828,757],{"class":399},[385,830,795],{"class":399},[385,832,833],{"class":584},"1794132300.f70157796d502916907407d48c8d213b83d718f1c91d9723258bf7760aac3331",[385,835,581],{"class":399},[385,837,803],{"class":399},[385,839,840,842,845,847,849,851,854,856],{"class":387,"line":463},[385,841,821],{"class":399},[385,843,844],{"class":453},"expires_at",[385,846,581],{"class":399},[385,848,757],{"class":399},[385,850,795],{"class":399},[385,852,853],{"class":584},"2026-11-08T10:05:00Z",[385,855,581],{"class":399},[385,857,803],{"class":399},[385,859,860,862,864,866,868,871,873,875,877,879,882],{"class":387,"line":469},[385,861,821],{"class":399},[385,863,610],{"class":453},[385,865,581],{"class":399},[385,867,757],{"class":399},[385,869,870],{"class":399}," {",[385,872,581],{"class":399},[385,874,501],{"class":391},[385,876,581],{"class":399},[385,878,757],{"class":399},[385,880,881],{"class":391}," 4",[385,883,658],{"class":399},[385,885,886],{"class":387,"line":513},[385,887,888],{"class":399},"  }\n",[385,890,891],{"class":387,"line":519},[385,892,658],{"class":399},[313,894,895,896,899,900,903,904,907,908,911,912,915],{},"No ",[316,897,898],{},"operating()"," event, no ",[316,901,902],{},"handle()",", no job, no batch and no ",[316,905,906],{},"ActionOperated"," event run before the confirmation. A ",[316,909,910],{},"422"," and a ",[316,913,914],{},"403"," still come first.",[359,917,919],{"id":918},"confirming","Confirming",[313,921,922,923,757],{},"The client sends the same body again, with the token under ",[316,924,810],{},[376,926,928],{"className":738,"code":927,"language":740,"meta":381,"style":381},"{\"search\": {}, \"confirmation\": \"1794132300.f70157796d502916907407d48c8d213b83d718f1c91d9723258bf7760aac3331\"}\n",[316,929,930],{"__ignoreMap":381},[385,931,932,934,936,938,940,942,945,947,949,951,953,955,957,959],{"class":387,"line":388},[385,933,747],{"class":399},[385,935,581],{"class":399},[385,937,752],{"class":449},[385,939,581],{"class":399},[385,941,757],{"class":399},[385,943,944],{"class":399}," {},",[385,946,795],{"class":399},[385,948,810],{"class":449},[385,950,581],{"class":399},[385,952,757],{"class":399},[385,954,795],{"class":399},[385,956,833],{"class":584},[385,958,581],{"class":399},[385,960,658],{"class":399},[376,962,964],{"className":738,"code":963,"language":740,"meta":381,"style":381},"{\"data\": {\"impacted\": 4, \"result\": null}}\n",[316,965,966],{"__ignoreMap":381},[385,967,968,970,972,974,976,978,980,982,984,986,988,990,992,994,997,999,1001],{"class":387,"line":388},[385,969,747],{"class":399},[385,971,581],{"class":399},[385,973,610],{"class":449},[385,975,581],{"class":399},[385,977,757],{"class":399},[385,979,870],{"class":399},[385,981,581],{"class":399},[385,983,719],{"class":453},[385,985,581],{"class":399},[385,987,757],{"class":399},[385,989,881],{"class":391},[385,991,493],{"class":399},[385,993,795],{"class":399},[385,995,996],{"class":453},"result",[385,998,581],{"class":399},[385,1000,757],{"class":399},[385,1002,1003],{"class":399}," null}}\n",[313,1005,1006,1007,341,1009,348,1012,1014],{},"The token is valid for the same user and guard, the same resource and action, the same ",[316,1008,752],{},[316,1010,1011],{},"resources",[316,1013,490],{},", and the same number of rows, until it expires. It can be used again until then.",[325,1016,1017,1020,1029],{},[328,1018,1019],{},"The order of the keys and the unknown keys at the first level of the body do not count.",[328,1021,1022,1023,1025,1026,334],{},"Any other token, an expired one, or a number of rows that changed answers a new ",[316,1024,322],{}," with a fresh token. With one more row, the message becomes ",[316,1027,1028],{},"Shred 5 documents?",[328,1030,1031,1033,1034,1036,1037,341,1039],{},[316,1032,810],{}," must be a string: another type, ",[316,1035,373],{}," included, is a ",[316,1038,910],{},[316,1040,1041],{},"The confirmation field must be a string.",[1043,1044,1045],"note",{},[313,1046,1047,1048,1051,1052,1055,1056,1059,1060,1062],{},"The token holds no state: it is signed with ",[316,1049,1050],{},"app.key",". Set ",[316,1053,1054],{},"APP_KEY"," before an action or a resource asks for a confirmation. An empty key throws ",[316,1057,1058],{},"Lomkit\\Rest\\Exceptions\\InvalidConfigException"," once a confirmation is due. A hook that returns ",[316,1061,373],{}," needs no key.",[359,1064,357],{"id":1065},"confirming-writes",[313,1067,1068,1069,1071,1072,1074],{},"A resource asks for a confirmation before a write with one hook per endpoint. Each returns a ",[316,1070,136],{},", or ",[316,1073,373],{},", the default, to write at once:",[1076,1077,1078,1094],"table",{},[1079,1080,1081],"thead",{},[1082,1083,1084,1088,1091],"tr",{},[1085,1086,1087],"th",{},"Hook",[1085,1089,1090],{},"Endpoint",[1085,1092,1093],{},"Receives",[1095,1096,1097,1113,1130,1146],"tbody",{},[1082,1098,1099,1105,1110],{},[1100,1101,1102],"td",{},[316,1103,1104],{},"mutateConfirmation(PendingMutation $mutation)",[1100,1106,1107],{},[316,1108,1109],{},"mutate",[1100,1111,1112],{},"the entries of the request",[1082,1114,1115,1120,1125],{},[1100,1116,1117],{},[316,1118,1119],{},"destroyConfirmation(Collection $models)",[1100,1121,1122],{},[316,1123,1124],{},"destroy",[1100,1126,1127,1128],{},"the rows of ",[316,1129,1011],{},[1082,1131,1132,1137,1142],{},[1100,1133,1134],{},[316,1135,1136],{},"restoreConfirmation(Collection $models)",[1100,1138,1139],{},[316,1140,1141],{},"restore",[1100,1143,1127,1144],{},[316,1145,1011],{},[1082,1147,1148,1153,1158],{},[1100,1149,1150],{},[316,1151,1152],{},"forceDestroyConfirmation(Collection $models)",[1100,1154,1155],{},[316,1156,1157],{},"forceDestroy",[1100,1159,1127,1160],{},[316,1161,1011],{},[376,1163,1165],{"className":378,"code":1164,"language":380,"meta":381,"style":381},"use Illuminate\\Database\\Eloquent\\Collection;\nuse Lomkit\\Rest\\Confirmation\\Confirmation;\n\npublic function destroyConfirmation(Collection $models): ?Confirmation\n{\n    return Confirmation::make(\"Delete {$models->count()} documents?\")\n        ->data(['titles' => $models->pluck('title')->all()]);\n}\n",[316,1166,1167,1191,1211,1215,1240,1244,1281,1326],{"__ignoreMap":381},[385,1168,1169,1171,1174,1176,1179,1181,1184,1186,1189],{"class":387,"line":388},[385,1170,392],{"class":391},[385,1172,1173],{"class":395}," Illuminate",[385,1175,400],{"class":399},[385,1177,1178],{"class":395},"Database",[385,1180,400],{"class":399},[385,1182,1183],{"class":395},"Eloquent",[385,1185,400],{"class":399},[385,1187,1188],{"class":395},"Collection",[385,1190,415],{"class":399},[385,1192,1193,1195,1197,1199,1201,1203,1205,1207,1209],{"class":387,"line":418},[385,1194,392],{"class":391},[385,1196,396],{"class":395},[385,1198,400],{"class":399},[385,1200,403],{"class":395},[385,1202,400],{"class":399},[385,1204,136],{"class":395},[385,1206,400],{"class":399},[385,1208,136],{"class":395},[385,1210,415],{"class":399},[385,1212,1213],{"class":387,"line":439},[385,1214,443],{"emptyLinePlaceholder":442},[385,1216,1217,1220,1222,1225,1227,1229,1231,1234,1236,1238],{"class":387,"line":446},[385,1218,1219],{"class":449},"public",[385,1221,475],{"class":449},[385,1223,1224],{"class":478}," destroyConfirmation",[385,1226,482],{"class":399},[385,1228,1188],{"class":453},[385,1230,487],{"class":399},[385,1232,1233],{"class":395},"models",[385,1235,504],{"class":399},[385,1237,507],{"class":399},[385,1239,510],{"class":453},[385,1241,1242],{"class":387,"line":463},[385,1243,466],{"class":399},[385,1245,1246,1249,1251,1253,1255,1257,1259,1262,1264,1266,1269,1272,1275,1277,1279],{"class":387,"line":469},[385,1247,1248],{"class":522},"    return",[385,1250,570],{"class":453},[385,1252,573],{"class":399},[385,1254,576],{"class":478},[385,1256,482],{"class":399},[385,1258,581],{"class":399},[385,1260,1261],{"class":584},"Delete ",[385,1263,588],{"class":399},[385,1265,1233],{"class":395},[385,1267,1268],{"class":399},"->",[385,1270,1271],{"class":478},"count",[385,1273,1274],{"class":399},"()}",[385,1276,596],{"class":584},[385,1278,581],{"class":399},[385,1280,601],{"class":399},[385,1282,1283,1286,1288,1290,1292,1295,1297,1299,1301,1303,1305,1308,1310,1312,1315,1317,1320,1323],{"class":387,"line":513},[385,1284,1285],{"class":399},"        ->",[385,1287,610],{"class":478},[385,1289,613],{"class":399},[385,1291,616],{"class":399},[385,1293,1294],{"class":584},"titles",[385,1296,616],{"class":399},[385,1298,623],{"class":399},[385,1300,487],{"class":399},[385,1302,1233],{"class":395},[385,1304,1268],{"class":399},[385,1306,1307],{"class":478},"pluck",[385,1309,482],{"class":399},[385,1311,616],{"class":399},[385,1313,1314],{"class":584},"title",[385,1316,616],{"class":399},[385,1318,1319],{"class":399},")->",[385,1321,1322],{"class":478},"all",[385,1324,1325],{"class":399},"()]);\n",[385,1327,1328],{"class":387,"line":519},[385,1329,658],{"class":399},[376,1331,1334],{"className":738,"code":1332,"filename":1333,"language":740,"meta":381,"style":381},"{\"resources\": [1, 2]}\n","DELETE \u002Fapi\u002Fdocuments",[316,1335,1336],{"__ignoreMap":381},[385,1337,1338,1340,1342,1344,1346,1348,1351,1353,1355,1358],{"class":387,"line":388},[385,1339,747],{"class":399},[385,1341,581],{"class":399},[385,1343,1011],{"class":449},[385,1345,581],{"class":399},[385,1347,757],{"class":399},[385,1349,1350],{"class":399}," [",[385,1352,691],{"class":391},[385,1354,493],{"class":399},[385,1356,1357],{"class":391}," 2",[385,1359,1360],{"class":399},"]}\n",[376,1362,1365],{"className":738,"code":1363,"filename":1364,"language":740,"meta":381,"style":381},"{\n  \"message\": \"Delete 2 documents?\",\n  \"confirmation\": {\n    \"token\": \"1794132300.…\",\n    \"expires_at\": \"2026-11-08T10:05:00Z\",\n    \"data\": {\"titles\": [\"Budget\", \"Contract\"]}\n  }\n}\n","428 Precondition Required",[316,1366,1367,1371,1390,1402,1421,1439,1479,1483],{"__ignoreMap":381},[385,1368,1369],{"class":387,"line":388},[385,1370,466],{"class":399},[385,1372,1373,1375,1377,1379,1381,1383,1386,1388],{"class":387,"line":418},[385,1374,785],{"class":399},[385,1376,788],{"class":449},[385,1378,581],{"class":399},[385,1380,757],{"class":399},[385,1382,795],{"class":399},[385,1384,1385],{"class":584},"Delete 2 documents?",[385,1387,581],{"class":399},[385,1389,803],{"class":399},[385,1391,1392,1394,1396,1398,1400],{"class":387,"line":439},[385,1393,785],{"class":399},[385,1395,810],{"class":449},[385,1397,581],{"class":399},[385,1399,757],{"class":399},[385,1401,541],{"class":399},[385,1403,1404,1406,1408,1410,1412,1414,1417,1419],{"class":387,"line":446},[385,1405,821],{"class":399},[385,1407,824],{"class":453},[385,1409,581],{"class":399},[385,1411,757],{"class":399},[385,1413,795],{"class":399},[385,1415,1416],{"class":584},"1794132300.…",[385,1418,581],{"class":399},[385,1420,803],{"class":399},[385,1422,1423,1425,1427,1429,1431,1433,1435,1437],{"class":387,"line":463},[385,1424,821],{"class":399},[385,1426,844],{"class":453},[385,1428,581],{"class":399},[385,1430,757],{"class":399},[385,1432,795],{"class":399},[385,1434,853],{"class":584},[385,1436,581],{"class":399},[385,1438,803],{"class":399},[385,1440,1441,1443,1445,1447,1449,1451,1453,1455,1457,1459,1461,1463,1466,1468,1470,1472,1475,1477],{"class":387,"line":469},[385,1442,821],{"class":399},[385,1444,610],{"class":453},[385,1446,581],{"class":399},[385,1448,757],{"class":399},[385,1450,870],{"class":399},[385,1452,581],{"class":399},[385,1454,1294],{"class":391},[385,1456,581],{"class":399},[385,1458,757],{"class":399},[385,1460,1350],{"class":399},[385,1462,581],{"class":399},[385,1464,1465],{"class":584},"Budget",[385,1467,581],{"class":399},[385,1469,493],{"class":399},[385,1471,795],{"class":399},[385,1473,1474],{"class":584},"Contract",[385,1476,581],{"class":399},[385,1478,1360],{"class":399},[385,1480,1481],{"class":387,"line":513},[385,1482,888],{"class":399},[385,1484,1485],{"class":387,"line":519},[385,1486,658],{"class":399},[313,1488,1489,1490,1493],{},"The client sends the same body again with ",[316,1491,1492],{},"\"confirmation\": \"\u003Ctoken>\"",", and the endpoint writes.",[313,1495,1496,1499,1500,1502,1503,1506],{},[316,1497,1498],{},"Lomkit\\Rest\\Mutations\\PendingMutation"," holds the entries of ",[316,1501,1109],{},", as ",[316,1504,1505],{},"MutationNode"," objects, and the stored rows that they name:",[376,1508,1510],{"className":378,"code":1509,"language":380,"meta":381,"style":381},"use Illuminate\\Database\\Eloquent\\Model;\nuse Lomkit\\Rest\\Confirmation\\Confirmation;\nuse Lomkit\\Rest\\Fields\\MutationOperation;\nuse Lomkit\\Rest\\Mutations\\MutationNode;\nuse Lomkit\\Rest\\Mutations\\PendingMutation;\n\npublic function mutateConfirmation(PendingMutation $mutation): ?Confirmation\n{\n    $archived = collect($mutation->entries)\n        ->filter(fn (MutationNode $entry): bool => $entry->operation === MutationOperation::Update)\n        ->map(fn (MutationNode $entry): ?Model => $mutation->row($this, $entry->key))\n        ->filter(fn (?Model $document): bool => (bool) $document?->archived);\n\n    return $archived->isEmpty() ? null : Confirmation::make(\"Edit {$archived->count()} archived documents?\");\n}\n",[316,1511,1512,1533,1553,1574,1595,1616,1620,1644,1648,1674,1725,1776,1821,1825,1879],{"__ignoreMap":381},[385,1513,1514,1516,1518,1520,1522,1524,1526,1528,1531],{"class":387,"line":388},[385,1515,392],{"class":391},[385,1517,1173],{"class":395},[385,1519,400],{"class":399},[385,1521,1178],{"class":395},[385,1523,400],{"class":399},[385,1525,1183],{"class":395},[385,1527,400],{"class":399},[385,1529,1530],{"class":395},"Model",[385,1532,415],{"class":399},[385,1534,1535,1537,1539,1541,1543,1545,1547,1549,1551],{"class":387,"line":418},[385,1536,392],{"class":391},[385,1538,396],{"class":395},[385,1540,400],{"class":399},[385,1542,403],{"class":395},[385,1544,400],{"class":399},[385,1546,136],{"class":395},[385,1548,400],{"class":399},[385,1550,136],{"class":395},[385,1552,415],{"class":399},[385,1554,1555,1557,1559,1561,1563,1565,1567,1569,1572],{"class":387,"line":439},[385,1556,392],{"class":391},[385,1558,396],{"class":395},[385,1560,400],{"class":399},[385,1562,403],{"class":395},[385,1564,400],{"class":399},[385,1566,42],{"class":395},[385,1568,400],{"class":399},[385,1570,1571],{"class":395},"MutationOperation",[385,1573,415],{"class":399},[385,1575,1576,1578,1580,1582,1584,1586,1589,1591,1593],{"class":387,"line":446},[385,1577,392],{"class":391},[385,1579,396],{"class":395},[385,1581,400],{"class":399},[385,1583,403],{"class":395},[385,1585,400],{"class":399},[385,1587,1588],{"class":395},"Mutations",[385,1590,400],{"class":399},[385,1592,1505],{"class":395},[385,1594,415],{"class":399},[385,1596,1597,1599,1601,1603,1605,1607,1609,1611,1614],{"class":387,"line":463},[385,1598,392],{"class":391},[385,1600,396],{"class":395},[385,1602,400],{"class":399},[385,1604,403],{"class":395},[385,1606,400],{"class":399},[385,1608,1588],{"class":395},[385,1610,400],{"class":399},[385,1612,1613],{"class":395},"PendingMutation",[385,1615,415],{"class":399},[385,1617,1618],{"class":387,"line":469},[385,1619,443],{"emptyLinePlaceholder":442},[385,1621,1622,1624,1626,1629,1631,1633,1635,1638,1640,1642],{"class":387,"line":513},[385,1623,1219],{"class":449},[385,1625,475],{"class":449},[385,1627,1628],{"class":478}," mutateConfirmation",[385,1630,482],{"class":399},[385,1632,1613],{"class":453},[385,1634,487],{"class":399},[385,1636,1637],{"class":395},"mutation",[385,1639,504],{"class":399},[385,1641,507],{"class":399},[385,1643,510],{"class":453},[385,1645,1646],{"class":387,"line":519},[385,1647,466],{"class":399},[385,1649,1650,1653,1656,1659,1662,1665,1667,1669,1672],{"class":387,"line":544},[385,1651,1652],{"class":399},"    $",[385,1654,1655],{"class":395},"archived ",[385,1657,1658],{"class":399},"=",[385,1660,1661],{"class":478}," collect",[385,1663,1664],{"class":399},"($",[385,1666,1637],{"class":395},[385,1668,1268],{"class":399},[385,1670,1671],{"class":395},"entries",[385,1673,601],{"class":399},[385,1675,1676,1678,1681,1683,1686,1689,1691,1693,1696,1698,1701,1703,1705,1707,1709,1712,1715,1718,1720,1723],{"class":387,"line":553},[385,1677,1285],{"class":399},[385,1679,1680],{"class":478},"filter",[385,1682,482],{"class":399},[385,1684,1685],{"class":449},"fn",[385,1687,1688],{"class":399}," (",[385,1690,1505],{"class":453},[385,1692,487],{"class":399},[385,1694,1695],{"class":395},"entry",[385,1697,504],{"class":399},[385,1699,1700],{"class":391}," bool",[385,1702,623],{"class":399},[385,1704,487],{"class":399},[385,1706,1695],{"class":395},[385,1708,1268],{"class":399},[385,1710,1711],{"class":395},"operation ",[385,1713,1714],{"class":399},"===",[385,1716,1717],{"class":453}," MutationOperation",[385,1719,573],{"class":399},[385,1721,1722],{"class":395},"Update",[385,1724,601],{"class":399},[385,1726,1727,1729,1732,1734,1736,1738,1740,1742,1744,1746,1748,1750,1752,1754,1756,1758,1761,1764,1766,1768,1770,1773],{"class":387,"line":559},[385,1728,1285],{"class":399},[385,1730,1731],{"class":478},"map",[385,1733,482],{"class":399},[385,1735,1685],{"class":449},[385,1737,1688],{"class":399},[385,1739,1505],{"class":453},[385,1741,487],{"class":399},[385,1743,1695],{"class":395},[385,1745,504],{"class":399},[385,1747,507],{"class":399},[385,1749,1530],{"class":453},[385,1751,623],{"class":399},[385,1753,487],{"class":399},[385,1755,1637],{"class":395},[385,1757,1268],{"class":399},[385,1759,1760],{"class":478},"row",[385,1762,1763],{"class":399},"($this,",[385,1765,487],{"class":399},[385,1767,1695],{"class":395},[385,1769,1268],{"class":399},[385,1771,1772],{"class":395},"key",[385,1774,1775],{"class":399},"))\n",[385,1777,1778,1780,1782,1784,1786,1789,1791,1793,1796,1798,1800,1802,1804,1807,1809,1811,1813,1816,1819],{"class":387,"line":564},[385,1779,1285],{"class":399},[385,1781,1680],{"class":478},[385,1783,482],{"class":399},[385,1785,1685],{"class":449},[385,1787,1788],{"class":399}," (?",[385,1790,1530],{"class":453},[385,1792,487],{"class":399},[385,1794,1795],{"class":395},"document",[385,1797,504],{"class":399},[385,1799,1700],{"class":391},[385,1801,623],{"class":399},[385,1803,1688],{"class":399},[385,1805,1806],{"class":449},"bool",[385,1808,538],{"class":399},[385,1810,487],{"class":399},[385,1812,1795],{"class":395},[385,1814,1815],{"class":399},"?->",[385,1817,1818],{"class":395},"archived",[385,1820,646],{"class":399},[385,1822,1823],{"class":387,"line":604},[385,1824,443],{"emptyLinePlaceholder":442},[385,1826,1827,1829,1831,1833,1835,1838,1841,1843,1846,1849,1851,1853,1855,1857,1859,1862,1864,1866,1868,1870,1872,1875,1877],{"class":387,"line":633},[385,1828,1248],{"class":522},[385,1830,487],{"class":399},[385,1832,1818],{"class":395},[385,1834,1268],{"class":399},[385,1836,1837],{"class":478},"isEmpty",[385,1839,1840],{"class":399},"()",[385,1842,507],{"class":399},[385,1844,1845],{"class":399}," null",[385,1847,1848],{"class":399}," :",[385,1850,570],{"class":453},[385,1852,573],{"class":399},[385,1854,576],{"class":478},[385,1856,482],{"class":399},[385,1858,581],{"class":399},[385,1860,1861],{"class":584},"Edit ",[385,1863,588],{"class":399},[385,1865,1818],{"class":395},[385,1867,1268],{"class":399},[385,1869,1271],{"class":478},[385,1871,1274],{"class":399},[385,1873,1874],{"class":584}," archived documents?",[385,1876,581],{"class":399},[385,1878,646],{"class":399},[385,1880,1881],{"class":387,"line":649},[385,1882,658],{"class":399},[325,1884,1885,1898],{},[328,1886,1887,1890,1891,1893,1894,1897],{},[316,1888,1889],{},"$mutation->entries"," lists the entries of the root of ",[316,1892,1109],{},". Their ",[316,1895,1896],{},"relations"," hold the nested entries.",[328,1899,1900,1903,1904,334],{},[316,1901,1902],{},"$mutation->row($resource, $key)"," returns the row of a key as stored before the request, or ",[316,1905,373],{},[313,1907,1908],{},"When the checks run:",[325,1910,1911,1932,1941],{},[328,1912,1913,1915,1916,1918,1919,1921,1922,1688,1925,1928,1929,334],{},[316,1914,1109],{}," asks after validation (",[316,1917,910],{},"), the row checks (",[316,1920,914],{},") and the ",[354,1923,1924],{"href":115},"version check",[316,1926,1927],{},"409","), inside its transaction, before ",[316,1930,1931],{},"mutatingAll()",[328,1933,1934,341,1936,348,1938,1940],{},[316,1935,1124],{},[316,1937,1141],{},[316,1939,1157],{}," ask after validation and the row checks, before their transaction.",[328,1942,1943,1944,1946,1947,341,1949,341,1952,1955,1956,1959],{},"A ",[316,1945,322],{}," writes nothing: no ",[316,1948,1931],{},[316,1950,1951],{},"destroyingAll()",[316,1953,1954],{},"restoringAll()"," or ",[316,1957,1958],{},"forceDestroyingAll()",", no row hook and no event.",[313,1961,1962,1963,348,1965,1968,1969,341,1971,1973,1974,1976,1977,1979,1980,1983],{},"The token is valid for the same user and guard, the same resource and endpoint, and the same body: ",[316,1964,1109],{},[316,1966,1967],{},"response"," on ",[316,1970,1109],{},[316,1972,1011],{}," on the other endpoints. A token of ",[316,1975,1157],{}," does not confirm a ",[316,1978,1124],{},". The order of the keys of an object and the unknown keys at the first level of the body do not count, but the order of a list does: ",[316,1981,1982],{},"{\"resources\": [2, 1]}"," asks again.",[313,1985,1986,1987,1989,1990,334],{},"The four endpoints read ",[316,1988,810],{}," as a string, also on a resource without the hook: another type is a ",[316,1991,910],{},[359,1993,1995],{"id":1994},"clients","Clients",[325,1997,1998,2033,2044],{},[328,1999,2000,2001,2004,2005,2008,2009,2012,2013,2015,2016,2019,2020,2023,2024,2026,2027,2029,2030,2032],{},"The ",[354,2002,2003],{"href":173},"details",", with ",[316,2006,2007],{},"?with=actions",", give ",[316,2010,2011],{},"\"confirmation\": true"," on each action that declares ",[316,2014,333],{},". With ",[316,2017,2018],{},"?with=confirmations",", they give the writes of the resource that ask for one: ",[316,2021,2022],{},"{\"mutate\": false, \"destroy\": true, \"restore\": false, \"forceDestroy\": false}",". Show your dialog when the endpoint answers ",[316,2025,322],{},", with the ",[316,2028,788],{}," and the ",[316,2031,610],{}," of the response.",[328,2034,1943,2035,2037,2038,1955,2041,2043],{},[354,2036,188],{"href":189}," request stops before the confirmation: it answers ",[316,2039,2040],{},"204",[316,2042,910],{}," and asks nothing.",[328,2045,2046,2047,2049,2050,2053,2054,2056,2057,334],{},"The OpenAPI document lists the ",[316,2048,322],{}," response, ",[316,2051,2052],{},"RestConfirmationRequired",", on the operations of these actions and writes, and documents ",[316,2055,810],{}," in their body. See ",[354,2058,2059],{"href":185},"OpenAPI",[2061,2062,2063],"style",{},"html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}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);}",{"title":381,"searchDepth":388,"depth":418,"links":2065},[2066,2067,2068,2069,2070],{"id":361,"depth":418,"text":362},{"id":723,"depth":418,"text":724},{"id":918,"depth":418,"text":919},{"id":1065,"depth":418,"text":357},{"id":1994,"depth":418,"text":1995},"Make the endpoint check that the user confirmed an action or a write before it runs, with a signed token and a 428 response.","md",null,{},{"title":136,"description":2071},{"loc":137},"kq_w1Z5DXkmeZeWCuB7H5zTMMqt2iXY8y78MntW0gsU",[2079,2081],{"title":132,"path":133,"stem":134,"description":2080,"children":-1},"Run an action in queued jobs, as the user who sent the request, and follow a batch from the client.",{"title":140,"path":141,"stem":142,"description":2082,"children":-1},"Compute counts, totals, breakdowns, trends and top lists over the rows of a resource, with ranges, time zones and a result cache.",1794181354983]