[{"data":1,"prerenderedAt":904},["ShallowReactive",2],{"page-\u002Fworkflows\u002Ffor-each":3,"all-pages":570},{"id":4,"title":5,"body":6,"description":561,"extension":562,"meta":563,"navigation":208,"path":564,"robots":565,"seo":566,"sitemap":567,"stem":568,"__hash__":569},"content\u002F01.workflows\u002F07.for-each.md","For Each",{"type":7,"value":8,"toc":550},"minimark",[9,18,23,64,99,176,179,233,237,242,245,277,281,287,319,323,336,373,384,388,391,433,444,448,455,506,510,516,546],[10,11,12,13,17],"p",{},"Recon often means doing the same thing thousands of times: probe every\nsubdomain, screenshot every host, fuzz every parameter. ",[14,15,16],"code",{},"step.for_each"," is the\nbounded data-parallel primitive for exactly that.",[19,20,22],"h2",{"id":21},"basic-shape","Basic Shape",[24,25,30],"pre",{"className":26,"code":27,"language":28,"meta":29,"style":29},"language-bhw shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","step.for_each(\n    items = ...,\n    do = lambda item: [...],   # returns a list of steps for one item\n    concurrency = 20,          # max iterations in flight, default 20\n)\n","bhw","",[14,31,32,40,46,52,58],{"__ignoreMap":29},[33,34,37],"span",{"class":35,"line":36},"line",1,[33,38,39],{},"step.for_each(\n",[33,41,43],{"class":35,"line":42},2,[33,44,45],{},"    items = ...,\n",[33,47,49],{"class":35,"line":48},3,[33,50,51],{},"    do = lambda item: [...],   # returns a list of steps for one item\n",[33,53,55],{"class":35,"line":54},4,[33,56,57],{},"    concurrency = 20,          # max iterations in flight, default 20\n",[33,59,61],{"class":35,"line":60},5,[33,62,63],{},")\n",[65,66,67,74,93],"ul",{},[68,69,70,73],"li",{},[14,71,72],{},"items"," — what to iterate over (see below).",[68,75,76,79,80,84,85,88,89,92],{},[14,77,78],{},"do"," — an ordinary one-parameter function. It is ",[81,82,83],"strong",{},"deferred",": stored as a\ntemplate and invoked once per item at runtime. The item is bound to its\nsingle parameter; there is no magic ",[14,86,87],{},"item"," variable. Lambdas and named\n",[14,90,91],{},"def"," functions both work.",[68,94,95,98],{},[14,96,97],{},"concurrency"," — upper bound on parallel iterations, so you do not get your\nIP rate-limited or your runner OOM-killed at 3 AM.",[24,100,102],{"className":26,"code":101,"language":28,"meta":29,"style":29},"activity(\n    name = \"probe-subdomains\",\n    triggers = [trigger.on(discover.succeeded())],\n    steps = [\n        step.for_each(\n            items = path.file(\"subs-clean.txt\").lines(),\n            do = lambda sub: [\n                step.exec(command = [\"httpx\", \"-u\", sub, \"-title\", \"-status-code\"]),\n            ],\n            concurrency = 50,\n        ),\n    ],\n)\n",[14,103,104,109,114,119,124,129,135,141,147,153,159,165,171],{"__ignoreMap":29},[33,105,106],{"class":35,"line":36},[33,107,108],{},"activity(\n",[33,110,111],{"class":35,"line":42},[33,112,113],{},"    name = \"probe-subdomains\",\n",[33,115,116],{"class":35,"line":48},[33,117,118],{},"    triggers = [trigger.on(discover.succeeded())],\n",[33,120,121],{"class":35,"line":54},[33,122,123],{},"    steps = [\n",[33,125,126],{"class":35,"line":60},[33,127,128],{},"        step.for_each(\n",[33,130,132],{"class":35,"line":131},6,[33,133,134],{},"            items = path.file(\"subs-clean.txt\").lines(),\n",[33,136,138],{"class":35,"line":137},7,[33,139,140],{},"            do = lambda sub: [\n",[33,142,144],{"class":35,"line":143},8,[33,145,146],{},"                step.exec(command = [\"httpx\", \"-u\", sub, \"-title\", \"-status-code\"]),\n",[33,148,150],{"class":35,"line":149},9,[33,151,152],{},"            ],\n",[33,154,156],{"class":35,"line":155},10,[33,157,158],{},"            concurrency = 50,\n",[33,160,162],{"class":35,"line":161},11,[33,163,164],{},"        ),\n",[33,166,168],{"class":35,"line":167},12,[33,169,170],{},"    ],\n",[33,172,174],{"class":35,"line":173},13,[33,175,63],{},[10,177,178],{},"A named function is equivalent and reads better for multi-step bodies:",[24,180,182],{"className":26,"code":181,"language":28,"meta":29,"style":29},"def probe(target):\n    return [\n        step.exec(command = [\"httpx\", \"-u\", target, \"-title\", \"-status-code\"]),\n    ]\n\nstep.for_each(\n    items = path.file(\"subs-clean.txt\").lines(),\n    do = probe,\n    concurrency = 50,\n)\n",[14,183,184,189,194,199,204,210,214,219,224,229],{"__ignoreMap":29},[33,185,186],{"class":35,"line":36},[33,187,188],{},"def probe(target):\n",[33,190,191],{"class":35,"line":42},[33,192,193],{},"    return [\n",[33,195,196],{"class":35,"line":48},[33,197,198],{},"        step.exec(command = [\"httpx\", \"-u\", target, \"-title\", \"-status-code\"]),\n",[33,200,201],{"class":35,"line":54},[33,202,203],{},"    ]\n",[33,205,206],{"class":35,"line":60},[33,207,209],{"emptyLinePlaceholder":208},true,"\n",[33,211,212],{"class":35,"line":131},[33,213,39],{},[33,215,216],{"class":35,"line":137},[33,217,218],{},"    items = path.file(\"subs-clean.txt\").lines(),\n",[33,220,221],{"class":35,"line":143},[33,222,223],{},"    do = probe,\n",[33,225,226],{"class":35,"line":149},[33,227,228],{},"    concurrency = 50,\n",[33,230,231],{"class":35,"line":155},[33,232,63],{},[19,234,236],{"id":235},"what-can-be-items","What Can Be Items",[238,239,241],"h3",{"id":240},"lists","Lists",[10,243,244],{},"Plain Starlark lists work:",[24,246,248],{"className":26,"code":247,"language":28,"meta":29,"style":29},"step.for_each(\n    items = [\"dirs-common.txt\", \"dirs-api.txt\", \"dirs-backup.txt\"],\n    do = lambda wl: [\n        step.exec(command = [\"ffuf\", \"-w\", wl, \"-u\", \"https:\u002F\u002Facme-example.com\u002FFUZZ\"]),\n    ],\n)\n",[14,249,250,254,259,264,269,273],{"__ignoreMap":29},[33,251,252],{"class":35,"line":36},[33,253,39],{},[33,255,256],{"class":35,"line":42},[33,257,258],{},"    items = [\"dirs-common.txt\", \"dirs-api.txt\", \"dirs-backup.txt\"],\n",[33,260,261],{"class":35,"line":48},[33,262,263],{},"    do = lambda wl: [\n",[33,265,266],{"class":35,"line":54},[33,267,268],{},"        step.exec(command = [\"ffuf\", \"-w\", wl, \"-u\", \"https:\u002F\u002Facme-example.com\u002FFUZZ\"]),\n",[33,270,271],{"class":35,"line":60},[33,272,170],{},[33,274,275],{"class":35,"line":131},[33,276,63],{},[238,278,280],{"id":279},"files-and-globs","Files and globs",[10,282,283,286],{},[14,284,285],{},"path.glob(base, pattern)"," enumerates files matching a pattern — this is how\nyou fan out over partitioned transform output or per-target result files.\nBoth arguments are required; prefer the keyword form:",[24,288,290],{"className":26,"code":289,"language":28,"meta":29,"style":29},"step.for_each(\n    items = path.glob(base = \"batches\", pattern = \"scan-*.txt\"),\n    do = lambda batch_file: [\n        step.exec(command = [\"nuclei\", \"-l\", batch_file, \"-severity\", \"critical,high\"]),\n    ],\n)\n",[14,291,292,296,301,306,311,315],{"__ignoreMap":29},[33,293,294],{"class":35,"line":36},[33,295,39],{},[33,297,298],{"class":35,"line":42},[33,299,300],{},"    items = path.glob(base = \"batches\", pattern = \"scan-*.txt\"),\n",[33,302,303],{"class":35,"line":48},[33,304,305],{},"    do = lambda batch_file: [\n",[33,307,308],{"class":35,"line":54},[33,309,310],{},"        step.exec(command = [\"nuclei\", \"-l\", batch_file, \"-severity\", \"critical,high\"]),\n",[33,312,313],{"class":35,"line":60},[33,314,170],{},[33,316,317],{"class":35,"line":131},[33,318,63],{},[238,320,322],{"id":321},"typed-transform-expressions","Typed transform expressions",[10,324,325,326,329,330,335],{},"Any typed ",[14,327,328],{},"Items\u003CT>"," expression can be iterated directly, including partitioned\ntransforms (see ",[331,332,334],"a",{"href":333},"\u002Fworkflows\u002Ftransforms#partitioning","Transforms","):",[24,337,339],{"className":26,"code":338,"language":28,"meta":29,"style":29},"step.for_each(\n    # ~20 balanced batches of unique live hosts.\n    items = path.file(\"live.txt\").lines().unique().partition(partition.count(20)),\n    do = lambda batch: [\n        step.exec(command = [\"nuclei\", \"-l\", batch.as_file(), \"-o\", \"findings.txt\"]),\n    ],\n)\n",[14,340,341,345,350,355,360,365,369],{"__ignoreMap":29},[33,342,343],{"class":35,"line":36},[33,344,39],{},[33,346,347],{"class":35,"line":42},[33,348,349],{},"    # ~20 balanced batches of unique live hosts.\n",[33,351,352],{"class":35,"line":48},[33,353,354],{},"    items = path.file(\"live.txt\").lines().unique().partition(partition.count(20)),\n",[33,356,357],{"class":35,"line":54},[33,358,359],{},"    do = lambda batch: [\n",[33,361,362],{"class":35,"line":60},[33,363,364],{},"        step.exec(command = [\"nuclei\", \"-l\", batch.as_file(), \"-o\", \"findings.txt\"]),\n",[33,366,367],{"class":35,"line":131},[33,368,170],{},[33,370,371],{"class":35,"line":137},[33,372,63],{},[10,374,375,376,379,380,383],{},"A ",[14,377,378],{},"Batch\u003CT>"," is an execution-local group of items, not a file. Call\n",[14,381,382],{},".as_file()"," explicitly when a tool needs the batch materialized on disk.",[19,385,387],{"id":386},"multi-step-bodies","Multi-Step Bodies",[10,389,390],{},"The body returns a list of steps, so each iteration can be a small sequential\npipeline of its own:",[24,392,394],{"className":26,"code":393,"language":28,"meta":29,"style":29},"step.for_each(\n    items = path.file(\"targets.txt\").lines(),\n    do = lambda target: [\n        step.exec(command = [\"katana\", \"-u\", target, \"-d\", \"3\", \"-o\", \"urls-{}.txt\".format(target)]),\n        step.exec(command = [\"dalfox\", \"file\", \"urls-{}.txt\".format(target), \"-o\", \"xss-{}.txt\".format(target)]),\n    ],\n    concurrency = 10,\n)\n",[14,395,396,400,405,410,415,420,424,429],{"__ignoreMap":29},[33,397,398],{"class":35,"line":36},[33,399,39],{},[33,401,402],{"class":35,"line":42},[33,403,404],{},"    items = path.file(\"targets.txt\").lines(),\n",[33,406,407],{"class":35,"line":48},[33,408,409],{},"    do = lambda target: [\n",[33,411,412],{"class":35,"line":54},[33,413,414],{},"        step.exec(command = [\"katana\", \"-u\", target, \"-d\", \"3\", \"-o\", \"urls-{}.txt\".format(target)]),\n",[33,416,417],{"class":35,"line":60},[33,418,419],{},"        step.exec(command = [\"dalfox\", \"file\", \"urls-{}.txt\".format(target), \"-o\", \"xss-{}.txt\".format(target)]),\n",[33,421,422],{"class":35,"line":131},[33,423,170],{},[33,425,426],{"class":35,"line":137},[33,427,428],{},"    concurrency = 10,\n",[33,430,431],{"class":35,"line":143},[33,432,63],{},[10,434,435,436,439,440,443],{},"Iterations are independent: one target failing does not stop the others. The\nwhole ",[14,437,438],{},"for_each"," step fails only after all iterations complete if any failed\n(unless ",[14,441,442],{},"allow_failure = True",").",[19,445,447],{"id":446},"conditions-inside-bodies","Conditions Inside Bodies",[10,449,450,451,454],{},"Steps inside the body support the usual ",[14,452,453],{},"cond",", so you can branch per item:",[24,456,458],{"className":26,"code":457,"language":28,"meta":29,"style":29},"step.for_each(\n    items = path.file(\"hosts.txt\").lines(),\n    do = lambda host: [\n        step.exec(\n            command = [\"nuclei\", \"-u\", host, \"-tags\", \"exposure\"],\n            allow_failure = True,\n        ),\n        step.script(content = \"echo done with {}\".format(host)),\n    ],\n)\n",[14,459,460,464,469,474,479,484,489,493,498,502],{"__ignoreMap":29},[33,461,462],{"class":35,"line":36},[33,463,39],{},[33,465,466],{"class":35,"line":42},[33,467,468],{},"    items = path.file(\"hosts.txt\").lines(),\n",[33,470,471],{"class":35,"line":48},[33,472,473],{},"    do = lambda host: [\n",[33,475,476],{"class":35,"line":54},[33,477,478],{},"        step.exec(\n",[33,480,481],{"class":35,"line":60},[33,482,483],{},"            command = [\"nuclei\", \"-u\", host, \"-tags\", \"exposure\"],\n",[33,485,486],{"class":35,"line":131},[33,487,488],{},"            allow_failure = True,\n",[33,490,491],{"class":35,"line":137},[33,492,164],{},[33,494,495],{"class":35,"line":143},[33,496,497],{},"        step.script(content = \"echo done with {}\".format(host)),\n",[33,499,500],{"class":35,"line":149},[33,501,170],{},[33,503,504],{"class":35,"line":155},[33,505,63],{},[19,507,509],{"id":508},"tuning-concurrency","Tuning Concurrency",[10,511,512,513,515],{},"Pick ",[14,514,97],{}," like you would pick threads for your own tooling:",[65,517,518,525,539],{},[68,519,520,521,524],{},"CPU-bound tools (screenshots, headless browsers): low, e.g. ",[14,522,523],{},"5",".",[68,526,527,528,531,532,535,536,524],{},"Network-bound probes (",[14,529,530],{},"httpx",", ",[14,533,534],{},"subfinder","): higher, e.g. ",[14,537,538],{},"50",[68,540,541,542,545],{},"Aggressive scanners (",[14,543,544],{},"nuclei"," with all templates): moderate, and respect the\nprogram's scope and rate limits — being first to report is worthless if you\nget banned for hammering infrastructure.",[547,548,549],"style",{},"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":29,"searchDepth":60,"depth":54,"links":551},[552,553,558,559,560],{"id":21,"depth":42,"text":22},{"id":235,"depth":42,"text":236,"children":554},[555,556,557],{"id":240,"depth":48,"text":241},{"id":279,"depth":48,"text":280},{"id":321,"depth":48,"text":322},{"id":386,"depth":42,"text":387},{"id":446,"depth":42,"text":447},{"id":508,"depth":42,"text":509},"Bounded data-parallel execution over targets with step.for_each.","md",{},"\u002Fworkflows\u002Ffor-each",null,{"title":5,"description":561},{"loc":564},"01.workflows\u002F07.for-each","45TSLymHDIvDMacDAF11pu93cuqx30lcM09uz_Trun8",[571,630,646,665,700,716,728,739,750,761,785,804,824,835,846],{"title":572,"path":573,"stem":574,"children":575},"Workflows","\u002Fworkflows","01.workflows",[576,578,582,586,590,594,598,602,605,606,610,614,618,622,626],{"title":572,"path":573,"stem":577},"01.workflows\u002Findex",{"title":579,"path":580,"stem":581},"Workflow Quick Reference","\u002Fworkflows\u002Fquick-reference","01.workflows\u002F00.quick-reference",{"title":583,"path":584,"stem":585},"Workflows Overview","\u002Fworkflows\u002Foverview","01.workflows\u002F01.overview",{"title":587,"path":588,"stem":589},"Workflow Syntax Reference","\u002Fworkflows\u002Fsyntax-reference","01.workflows\u002F02.syntax-reference",{"title":591,"path":592,"stem":593},"Steps","\u002Fworkflows\u002Fsteps","01.workflows\u002F03.steps",{"title":595,"path":596,"stem":597},"Step Outputs","\u002Fworkflows\u002Fstep-outputs","01.workflows\u002F04.step-outputs",{"title":599,"path":600,"stem":601},"Concurrency","\u002Fworkflows\u002Fconcurrency","01.workflows\u002F05.concurrency",{"title":334,"path":603,"stem":604},"\u002Fworkflows\u002Ftransforms","01.workflows\u002F06.transforms",{"title":5,"path":564,"stem":568},{"title":607,"path":608,"stem":609},"Modules","\u002Fworkflows\u002Fmodules","01.workflows\u002F08.modules",{"title":611,"path":612,"stem":613},"Agents","\u002Fworkflows\u002Fagents","01.workflows\u002F09.agents",{"title":615,"path":616,"stem":617},"Decisions","\u002Fworkflows\u002Fdecisions","01.workflows\u002F10.decisions",{"title":619,"path":620,"stem":621},"Configuration References","\u002Fworkflows\u002Fconfig","01.workflows\u002F11.config",{"title":623,"path":624,"stem":625},"Comparison With Other Automation Systems","\u002Fworkflows\u002Fcomparison","01.workflows\u002F12.comparison",{"title":627,"path":628,"stem":629},"Generate with AI","\u002Fworkflows\u002Fai-generation","01.workflows\u002F13.ai-generation",{"title":631,"path":632,"stem":633,"children":634},"Projects","\u002Fprojects","02.projects",[635,638,642],{"title":636,"path":632,"stem":637},"Projects & Runs","02.projects\u002Findex",{"title":639,"path":640,"stem":641},"Projects Overview","\u002Fprojects\u002Foverview","02.projects\u002F1.overview",{"title":643,"path":644,"stem":645},"Runs & Artifacts","\u002Fprojects\u002Fruns-artifacts","02.projects\u002F2.runs-artifacts",{"title":647,"path":648,"stem":649,"children":650},"Runners","\u002Frunners","03.runners",[651,653,657,661],{"title":647,"path":648,"stem":652},"03.runners\u002Findex",{"title":654,"path":655,"stem":656},"Runner Overview","\u002Frunners\u002Foverview","03.runners\u002F1.overview",{"title":658,"path":659,"stem":660},"Getting Started with Runners","\u002Frunners\u002Fgetting-started","03.runners\u002F2.getting-started",{"title":662,"path":663,"stem":664},"Custom Runner Images","\u002Frunners\u002Fcustom-image","03.runners\u002F3.custom-image",{"title":666,"path":667,"stem":668,"children":669},"Datasets","\u002Fdatasets","04.datasets",[670,672,676,680,684,688,692,696],{"title":666,"path":667,"stem":671},"04.datasets\u002Findex",{"title":673,"path":674,"stem":675},"Datasets Overview","\u002Fdatasets\u002Foverview","04.datasets\u002F1.overview",{"title":677,"path":678,"stem":679},"Dataset Schemas and Identity","\u002Fdatasets\u002Fschema","04.datasets\u002F2.schema",{"title":681,"path":682,"stem":683},"Pushing and Reading Dataset Rows","\u002Fdatasets\u002Fworkflows","04.datasets\u002F3.workflows",{"title":685,"path":686,"stem":687},"Dataset SQL Reference","\u002Fdatasets\u002Fsql","04.datasets\u002F4.sql",{"title":689,"path":690,"stem":691},"Dataset Structured Filters","\u002Fdatasets\u002Ffilters","04.datasets\u002F5.filters",{"title":693,"path":694,"stem":695},"Dataset Saved Views","\u002Fdatasets\u002Fviews","04.datasets\u002F6.views",{"title":697,"path":698,"stem":699},"Datasets API and CLI","\u002Fdatasets\u002Fapi-cli","04.datasets\u002F7.api-cli",{"title":701,"path":702,"stem":703,"children":704},"Agent","\u002Fagent","05.agent",[705,708,712],{"title":706,"path":702,"stem":707},"BH Agent","05.agent\u002Findex",{"title":709,"path":710,"stem":711},"BH Agent Overview","\u002Fagent\u002Foverview","05.agent\u002F1.overview",{"title":713,"path":714,"stem":715},"MCP servers","\u002Fagent\u002Fmcp-servers","05.agent\u002F2.mcp-servers",{"title":717,"path":718,"stem":719,"children":720},"Bhlast","\u002Fbhlast","06.bhlast",[721,724],{"title":722,"path":718,"stem":723},"Bhlast Servers","06.bhlast\u002Findex",{"title":725,"path":726,"stem":727},"Bhlast servers overview","\u002Fbhlast\u002Foverview","06.bhlast\u002F1.overview",{"title":729,"path":730,"stem":731,"children":732},"Notifications","\u002Fnotifications","07.notifications",[733,735],{"title":729,"path":730,"stem":734},"07.notifications\u002Findex",{"title":736,"path":737,"stem":738},"Notifications Overview","\u002Fnotifications\u002Foverview","07.notifications\u002F1.overview",{"title":740,"path":741,"stem":742,"children":743},"Blob Storage","\u002Fblob-storage","08.blob-storage",[744,746],{"title":740,"path":741,"stem":745},"08.blob-storage\u002Findex",{"title":747,"path":748,"stem":749},"Blob Storage Overview","\u002Fblob-storage\u002Foverview","08.blob-storage\u002F1.overview",{"title":751,"path":752,"stem":753,"children":754},"Payloads","\u002Fpayloads","09.payloads",[755,757],{"title":751,"path":752,"stem":756},"09.payloads\u002Findex",{"title":758,"path":759,"stem":760},"Payloads overview","\u002Fpayloads\u002Foverview","09.payloads\u002F1.overview",{"title":762,"path":763,"stem":764,"children":765},"Cve Watcher","\u002Fcve-watcher","10.cve-watcher",[766,769,773,777,781],{"title":767,"path":763,"stem":768},"CVE Watcher","10.cve-watcher\u002Findex",{"title":770,"path":771,"stem":772},"CVE Watcher Overview","\u002Fcve-watcher\u002Foverview","10.cve-watcher\u002F1.overview",{"title":774,"path":775,"stem":776},"CVE Watcher Search and Filters","\u002Fcve-watcher\u002Fsearch","10.cve-watcher\u002F2.search",{"title":778,"path":779,"stem":780},"CVE Watcher Push Notifications","\u002Fcve-watcher\u002Fnotifications","10.cve-watcher\u002F3.notifications",{"title":782,"path":783,"stem":784},"CVE Watcher API and Scopes","\u002Fcve-watcher\u002Fapi","10.cve-watcher\u002F4.api",{"title":786,"path":787,"stem":788,"children":789},"Developer","\u002Fdeveloper","11.developer",[790,792,796,800],{"title":786,"path":787,"stem":791},"11.developer\u002Findex",{"title":793,"path":794,"stem":795},"Developer Overview","\u002Fdeveloper\u002Foverview","11.developer\u002F1.overview",{"title":797,"path":798,"stem":799},"Personal Access Token Scopes","\u002Fdeveloper\u002Fscopes","11.developer\u002F2.scopes",{"title":801,"path":802,"stem":803},"Personal Access Tokens","\u002Fdeveloper\u002Fpersonal-access-tokens","11.developer\u002F3.personal-access-tokens",{"title":805,"path":806,"stem":807,"children":808},"Bh","\u002Fbh","12.bh",[809,812,816,820],{"title":810,"path":806,"stem":811},"BH CLI","12.bh\u002Findex",{"title":813,"path":814,"stem":815},"BH CLI Overview","\u002Fbh\u002Foverview","12.bh\u002F1.overview",{"title":817,"path":818,"stem":819},"BH CLI Commands","\u002Fbh\u002Fcommands","12.bh\u002F2.commands",{"title":821,"path":822,"stem":823},"BH CLI Examples","\u002Fbh\u002Fexamples","12.bh\u002F3.examples",{"title":825,"path":826,"stem":827,"children":828},"Billing","\u002Fbilling","13.billing",[829,831],{"title":825,"path":826,"stem":830},"13.billing\u002Findex",{"title":832,"path":833,"stem":834},"Billing Overview","\u002Fbilling\u002Foverview","13.billing\u002F1.overview",{"title":836,"path":837,"stem":838,"children":839},"Tools","\u002Ftools","14.tools",[840,842],{"title":836,"path":837,"stem":841},"14.tools\u002Findex",{"title":843,"path":844,"stem":845},"Cookie Lab","\u002Ftools\u002Fcookie-lab","14.tools\u002F1.cookie-lab",{"title":847,"path":848,"stem":849,"children":850},"Site Policies","\u002Fsite-policies","99.site-policies",[851,853,866,870,874,878,882,886,890],{"title":847,"path":848,"stem":852},"99.site-policies\u002Findex",{"title":854,"path":855,"stem":856,"children":857},"Privacy Policy","\u002Fsite-policies\u002Fprivacy-policy","99.site-policies\u002F1.privacy-policy",[858,862],{"title":859,"path":860,"stem":861},"Company Processors","\u002Fsite-policies\u002Fprivacy-policy\u002Fcompany-processors","99.site-policies\u002Fprivacy-policy\u002F1.company-processors",{"title":863,"path":864,"stem":865},"Data Export Instructions","\u002Fsite-policies\u002Fprivacy-policy\u002Fdata-export-instructions","99.site-policies\u002Fprivacy-policy\u002F2.data-export-instructions",{"title":867,"path":868,"stem":869},"Terms of Service","\u002Fsite-policies\u002Fterms-of-service","99.site-policies\u002F2.terms-of-service",{"title":871,"path":872,"stem":873},"California Resident Notice at Collection","\u002Fsite-policies\u002Fccpa","99.site-policies\u002F3.ccpa",{"title":875,"path":876,"stem":877},"Cancellation Policy","\u002Fsite-policies\u002Fcancellation-policy","99.site-policies\u002F4.cancellation-policy",{"title":879,"path":880,"stem":881},"Refund Policy","\u002Fsite-policies\u002Frefund-policy","99.site-policies\u002F5.refund-policy",{"title":883,"path":884,"stem":885},"Taxes on Services","\u002Fsite-policies\u002Ftaxes-on-services","99.site-policies\u002F6.taxes-on-services",{"title":887,"path":888,"stem":889},"Disclaimer","\u002Fsite-policies\u002Fdisclaimer","99.site-policies\u002F7.disclaimer",{"title":891,"path":892,"stem":893,"children":894},"Security","\u002Fsite-policies\u002Fsecurity","99.site-policies\u002Fsecurity\u002Findex",[895,896,900],{"title":891,"path":892,"stem":893},{"title":897,"path":898,"stem":899},"Security Overview","\u002Fsite-policies\u002Fsecurity\u002Fsecurity-overview","99.site-policies\u002Fsecurity\u002F1.security-overview",{"title":901,"path":902,"stem":903},"Security Response","\u002Fsite-policies\u002Fsecurity\u002Fsecurity-response","99.site-policies\u002Fsecurity\u002F2.security-response",1794410312375]