[{"data":1,"prerenderedAt":2696},["ShallowReactive",2],{"page-\u002Fdatasets\u002Fapi-cli":3,"all-pages":2368},{"id":4,"title":5,"body":6,"description":2359,"extension":2360,"meta":2361,"navigation":1909,"path":2362,"robots":2363,"seo":2364,"sitemap":2365,"stem":2366,"__hash__":2367},"content\u002F04.datasets\u002F7.api-cli.md","Datasets API and CLI",{"type":7,"value":8,"toc":2342},"minimark",[9,13,17,34,65,70,110,128,131,298,302,622,633,636,824,865,868,1022,1037,1040,1066,1072,1075,1277,1365,1380,1383,1458,1472,1475,1499,1502,1546,1552,1555,1637,1698,1739,1743,1847,1859,1863,1869,2203,2220,2223,2227,2305,2309,2338],[10,11,5],"h1",{"id":12},"datasets-api-and-cli",[14,15,16],"p",{},"Datasets are exposed through two ConnectRPC services:",[18,19,20,28],"ul",{},[21,22,23,27],"li",{},[24,25,26],"code",{},"bountyhub.dataset.v1.DatasetService"," — datasets, ingest, SQL, describe, export.",[21,29,30,33],{},[24,31,32],{},"bountyhub.dataset.v1.DatasetViewService"," — saved views.",[14,35,36,37,40,41,44,45,48,49,52,53,56,57,60,61,64],{},"The generated TypeScript SDK exposes ",[24,38,39],{},"datasetClient"," and ",[24,42,43],{},"datasetViewClient","; the\n",[24,46,47],{},"bh"," CLI wraps the most common ",[24,50,51],{},"DatasetService"," calls. In Connect JSON, ",[24,54,55],{},"int64","\nand ",[24,58,59],{},"uint64"," fields (for example ",[24,62,63],{},"rowCount",") are encoded as strings.",[66,67,69],"h2",{"id":68},"authentication-and-scopes","Authentication and scopes",[71,72,73,86],"table",{},[74,75,76],"thead",{},[77,78,79,83],"tr",{},[80,81,82],"th",{},"Access",[80,84,85],{},"Scope",[87,88,89,100],"tbody",{},[77,90,91,95],{},[92,93,94],"td",{},"Get, list, query, project-wide query, describe, export, execute view",[92,96,97],{},[24,98,99],{},"DatasetRo",[77,101,102,105],{},[92,103,104],{},"Create, update, delete, ingest, delete rows, clear, create\u002Fupdate\u002Fdelete view",[92,106,107],{},[24,108,109],{},"DatasetRw",[14,111,112,113,117,118,121,122,127],{},"Create a Personal Access Token with the ",[114,115,116],"strong",{},"Datasets"," scope (and ",[114,119,120],{},"Projects","\nread, which it requires). See\n",[123,124,126],"a",{"href":125},"\u002Fdeveloper\u002Fscopes","Personal Access Token scopes",".",[66,129,51],{"id":130},"datasetservice",[71,132,133,146],{},[74,134,135],{},[77,136,137,140,143],{},[80,138,139],{},"RPC",[80,141,142],{},"Purpose",[80,144,145],{},"Pagination",[87,147,148,161,173,186,198,210,222,234,246,262,274,286],{},[77,149,150,155,158],{},[92,151,152],{},[24,153,154],{},"CreateDataset",[92,156,157],{},"Create a table and schema",[92,159,160],{},"—",[77,162,163,168,171],{},[92,164,165],{},[24,166,167],{},"GetDataset",[92,169,170],{},"Read one dataset",[92,172,160],{},[77,174,175,180,183],{},[92,176,177],{},[24,178,179],{},"ListDatasets",[92,181,182],{},"List project datasets",[92,184,185],{},"Default 50, max 500",[77,187,188,193,196],{},[92,189,190],{},[24,191,192],{},"UpdateDataset",[92,194,195],{},"Change name or description",[92,197,160],{},[77,199,200,205,208],{},[92,201,202],{},[24,203,204],{},"DeleteDataset",[92,206,207],{},"Delete the dataset and its files",[92,209,160],{},[77,211,212,217,220],{},[92,213,214],{},[24,215,216],{},"IngestDatasetRows",[92,218,219],{},"Append observations",[92,221,160],{},[77,223,224,229,232],{},[92,225,226],{},[24,227,228],{},"DeleteDatasetRows",[92,230,231],{},"Soft- or hard-delete records selected by a filter",[92,233,160],{},[77,235,236,241,244],{},[92,237,238],{},[24,239,240],{},"ClearDataset",[92,242,243],{},"Remove every record and stored file",[92,245,160],{},[77,247,248,253,259],{},[92,249,250],{},[24,251,252],{},"QueryDataset",[92,254,255,256],{},"One read-only SELECT over ",[24,257,258],{},"dataset",[92,260,261],{},"Default 100, max 1,000",[77,263,264,269,272],{},[92,265,266],{},[24,267,268],{},"QueryDatasets",[92,270,271],{},"One SELECT over every dataset in a project",[92,273,261],{},[77,275,276,281,284],{},[92,277,278],{},[24,279,280],{},"DescribeDataset",[92,282,283],{},"Null\u002Fdistinct counts and top values",[92,285,160],{},[77,287,288,293,296],{},[92,289,290],{},[24,291,292],{},"ExportDataset",[92,294,295],{},"Stream a full query result to a file",[92,297,160],{},[299,300,154],"h3",{"id":301},"createdataset",[303,304,309],"pre",{"className":305,"code":306,"language":307,"meta":308,"style":308},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"projectId\": \"\u003Cproject-uuid>\",\n  \"name\": \"subdomains\",\n  \"description\": \"Resolved subdomains per program\",\n  \"schema\": {\n    \"columns\": [\n      { \"name\": \"host\", \"kind\": \"COLUMN_KIND_TEXT\", \"nullable\": false, \"identity\": true },\n      { \"name\": \"program\", \"kind\": \"COLUMN_KIND_TEXT\", \"nullable\": false, \"identity\": true },\n      { \"name\": \"resolved\", \"kind\": \"COLUMN_KIND_BOOLEAN\", \"nullable\": true }\n    ]\n  }\n}\n","json","",[24,310,311,320,348,369,390,405,422,492,552,604,610,616],{"__ignoreMap":308},[312,313,316],"span",{"class":314,"line":315},"line",1,[312,317,319],{"class":318},"sMK4o","{\n",[312,321,323,326,330,333,336,339,343,345],{"class":314,"line":322},2,[312,324,325],{"class":318},"  \"",[312,327,329],{"class":328},"spNyl","projectId",[312,331,332],{"class":318},"\"",[312,334,335],{"class":318},":",[312,337,338],{"class":318}," \"",[312,340,342],{"class":341},"sfazB","\u003Cproject-uuid>",[312,344,332],{"class":318},[312,346,347],{"class":318},",\n",[312,349,351,353,356,358,360,362,365,367],{"class":314,"line":350},3,[312,352,325],{"class":318},[312,354,355],{"class":328},"name",[312,357,332],{"class":318},[312,359,335],{"class":318},[312,361,338],{"class":318},[312,363,364],{"class":341},"subdomains",[312,366,332],{"class":318},[312,368,347],{"class":318},[312,370,372,374,377,379,381,383,386,388],{"class":314,"line":371},4,[312,373,325],{"class":318},[312,375,376],{"class":328},"description",[312,378,332],{"class":318},[312,380,335],{"class":318},[312,382,338],{"class":318},[312,384,385],{"class":341},"Resolved subdomains per program",[312,387,332],{"class":318},[312,389,347],{"class":318},[312,391,393,395,398,400,402],{"class":314,"line":392},5,[312,394,325],{"class":318},[312,396,397],{"class":328},"schema",[312,399,332],{"class":318},[312,401,335],{"class":318},[312,403,404],{"class":318}," {\n",[312,406,408,411,415,417,419],{"class":314,"line":407},6,[312,409,410],{"class":318},"    \"",[312,412,414],{"class":413},"sBMFI","columns",[312,416,332],{"class":318},[312,418,335],{"class":318},[312,420,421],{"class":318}," [\n",[312,423,425,428,430,433,435,437,439,442,444,447,449,452,454,456,458,461,463,465,467,470,472,474,477,479,482,484,486,489],{"class":314,"line":424},7,[312,426,427],{"class":318},"      {",[312,429,338],{"class":318},[312,431,355],{"class":432},"sbssI",[312,434,332],{"class":318},[312,436,335],{"class":318},[312,438,338],{"class":318},[312,440,441],{"class":341},"host",[312,443,332],{"class":318},[312,445,446],{"class":318},",",[312,448,338],{"class":318},[312,450,451],{"class":432},"kind",[312,453,332],{"class":318},[312,455,335],{"class":318},[312,457,338],{"class":318},[312,459,460],{"class":341},"COLUMN_KIND_TEXT",[312,462,332],{"class":318},[312,464,446],{"class":318},[312,466,338],{"class":318},[312,468,469],{"class":432},"nullable",[312,471,332],{"class":318},[312,473,335],{"class":318},[312,475,476],{"class":318}," false,",[312,478,338],{"class":318},[312,480,481],{"class":432},"identity",[312,483,332],{"class":318},[312,485,335],{"class":318},[312,487,488],{"class":318}," true",[312,490,491],{"class":318}," },\n",[312,493,495,497,499,501,503,505,507,510,512,514,516,518,520,522,524,526,528,530,532,534,536,538,540,542,544,546,548,550],{"class":314,"line":494},8,[312,496,427],{"class":318},[312,498,338],{"class":318},[312,500,355],{"class":432},[312,502,332],{"class":318},[312,504,335],{"class":318},[312,506,338],{"class":318},[312,508,509],{"class":341},"program",[312,511,332],{"class":318},[312,513,446],{"class":318},[312,515,338],{"class":318},[312,517,451],{"class":432},[312,519,332],{"class":318},[312,521,335],{"class":318},[312,523,338],{"class":318},[312,525,460],{"class":341},[312,527,332],{"class":318},[312,529,446],{"class":318},[312,531,338],{"class":318},[312,533,469],{"class":432},[312,535,332],{"class":318},[312,537,335],{"class":318},[312,539,476],{"class":318},[312,541,338],{"class":318},[312,543,481],{"class":432},[312,545,332],{"class":318},[312,547,335],{"class":318},[312,549,488],{"class":318},[312,551,491],{"class":318},[312,553,555,557,559,561,563,565,567,570,572,574,576,578,580,582,584,587,589,591,593,595,597,599,601],{"class":314,"line":554},9,[312,556,427],{"class":318},[312,558,338],{"class":318},[312,560,355],{"class":432},[312,562,332],{"class":318},[312,564,335],{"class":318},[312,566,338],{"class":318},[312,568,569],{"class":341},"resolved",[312,571,332],{"class":318},[312,573,446],{"class":318},[312,575,338],{"class":318},[312,577,451],{"class":432},[312,579,332],{"class":318},[312,581,335],{"class":318},[312,583,338],{"class":318},[312,585,586],{"class":341},"COLUMN_KIND_BOOLEAN",[312,588,332],{"class":318},[312,590,446],{"class":318},[312,592,338],{"class":318},[312,594,469],{"class":432},[312,596,332],{"class":318},[312,598,335],{"class":318},[312,600,488],{"class":318},[312,602,603],{"class":318}," }\n",[312,605,607],{"class":314,"line":606},10,[312,608,609],{"class":318},"    ]\n",[312,611,613],{"class":314,"line":612},11,[312,614,615],{"class":318},"  }\n",[312,617,619],{"class":314,"line":618},12,[312,620,621],{"class":318},"}\n",[14,623,624,625,628,629,127],{},"Returns ",[24,626,627],{},"{ \"id\": \"\u003Cdataset-uuid>\" }",". Names must be unique per project, sharing\none case-insensitive namespace with saved views; up to 100 datasets are allowed.\nSee ",[123,630,632],{"href":631},"\u002Fdatasets\u002Fschema","Schemas and identity",[299,634,216],{"id":635},"ingestdatasetrows",[303,637,639],{"className":305,"code":638,"language":307,"meta":308,"style":308},"{\n  \"datasetId\": \"\u003Cdataset-uuid>\",\n  \"mode\": \"DATASET_INGEST_MODE_UPSERT\",\n  \"rows\": [\n    {\n      \"fields\": {\n        \"host\": { \"textValue\": \"api.example.com\" },\n        \"program\": { \"textValue\": \"example\" },\n        \"resolved\": { \"booleanValue\": true }\n      }\n    }\n  ]\n}\n",[24,640,641,645,665,685,698,703,717,750,779,804,809,814,819],{"__ignoreMap":308},[312,642,643],{"class":314,"line":315},[312,644,319],{"class":318},[312,646,647,649,652,654,656,658,661,663],{"class":314,"line":322},[312,648,325],{"class":318},[312,650,651],{"class":328},"datasetId",[312,653,332],{"class":318},[312,655,335],{"class":318},[312,657,338],{"class":318},[312,659,660],{"class":341},"\u003Cdataset-uuid>",[312,662,332],{"class":318},[312,664,347],{"class":318},[312,666,667,669,672,674,676,678,681,683],{"class":314,"line":350},[312,668,325],{"class":318},[312,670,671],{"class":328},"mode",[312,673,332],{"class":318},[312,675,335],{"class":318},[312,677,338],{"class":318},[312,679,680],{"class":341},"DATASET_INGEST_MODE_UPSERT",[312,682,332],{"class":318},[312,684,347],{"class":318},[312,686,687,689,692,694,696],{"class":314,"line":371},[312,688,325],{"class":318},[312,690,691],{"class":328},"rows",[312,693,332],{"class":318},[312,695,335],{"class":318},[312,697,421],{"class":318},[312,699,700],{"class":314,"line":392},[312,701,702],{"class":318},"    {\n",[312,704,705,708,711,713,715],{"class":314,"line":407},[312,706,707],{"class":318},"      \"",[312,709,710],{"class":413},"fields",[312,712,332],{"class":318},[312,714,335],{"class":318},[312,716,404],{"class":318},[312,718,719,722,724,726,728,731,733,737,739,741,743,746,748],{"class":314,"line":424},[312,720,721],{"class":318},"        \"",[312,723,441],{"class":432},[312,725,332],{"class":318},[312,727,335],{"class":318},[312,729,730],{"class":318}," {",[312,732,338],{"class":318},[312,734,736],{"class":735},"swJcz","textValue",[312,738,332],{"class":318},[312,740,335],{"class":318},[312,742,338],{"class":318},[312,744,745],{"class":341},"api.example.com",[312,747,332],{"class":318},[312,749,491],{"class":318},[312,751,752,754,756,758,760,762,764,766,768,770,772,775,777],{"class":314,"line":494},[312,753,721],{"class":318},[312,755,509],{"class":432},[312,757,332],{"class":318},[312,759,335],{"class":318},[312,761,730],{"class":318},[312,763,338],{"class":318},[312,765,736],{"class":735},[312,767,332],{"class":318},[312,769,335],{"class":318},[312,771,338],{"class":318},[312,773,774],{"class":341},"example",[312,776,332],{"class":318},[312,778,491],{"class":318},[312,780,781,783,785,787,789,791,793,796,798,800,802],{"class":314,"line":554},[312,782,721],{"class":318},[312,784,569],{"class":432},[312,786,332],{"class":318},[312,788,335],{"class":318},[312,790,730],{"class":318},[312,792,338],{"class":318},[312,794,795],{"class":735},"booleanValue",[312,797,332],{"class":318},[312,799,335],{"class":318},[312,801,488],{"class":318},[312,803,603],{"class":318},[312,805,806],{"class":314,"line":606},[312,807,808],{"class":318},"      }\n",[312,810,811],{"class":314,"line":612},[312,812,813],{"class":318},"    }\n",[312,815,816],{"class":314,"line":618},[312,817,818],{"class":318},"  ]\n",[312,820,822],{"class":314,"line":821},13,[312,823,621],{"class":318},[18,825,826,831,841,849,860],{},[21,827,828,830],{},[24,829,710],{}," is keyed by column name; the service maps values by schema order.",[21,832,833,834,837,838,840],{},"Missing fields become ",[24,835,836],{},"NULL","; a ",[24,839,836],{}," in a non-nullable column fails.",[21,842,843,844,848],{},"Values must match the column kind (see\n",[123,845,847],{"href":846},"\u002Fdatasets\u002Ffilters#value-types","Structured filters"," for the value shape).",[21,850,851,853,854,856,857,127],{},[24,852,671],{}," is ",[24,855,680],{}," (default) or\n",[24,858,859],{},"DATASET_INGEST_MODE_SYNC",[21,861,624,862,127],{},[24,863,864],{},"{ \"rowCount\": \"\u003Cn>\" }",[299,866,228],{"id":867},"deletedatasetrows",[303,869,871],{"className":305,"code":870,"language":307,"meta":308,"style":308},"{\n  \"datasetId\": \"\u003Cdataset-uuid>\",\n  \"mode\": \"DATASET_DELETE_MODE_SOFT\",\n  \"filter\": {\n    \"condition\": {\n      \"column\": \"host\",\n      \"op\": \"FILTER_OP_EQ\",\n      \"values\": [{ \"textValue\": \"api.example.com\" }]\n    }\n  }\n}\n",[24,872,873,877,895,914,927,940,959,979,1010,1014,1018],{"__ignoreMap":308},[312,874,875],{"class":314,"line":315},[312,876,319],{"class":318},[312,878,879,881,883,885,887,889,891,893],{"class":314,"line":322},[312,880,325],{"class":318},[312,882,651],{"class":328},[312,884,332],{"class":318},[312,886,335],{"class":318},[312,888,338],{"class":318},[312,890,660],{"class":341},[312,892,332],{"class":318},[312,894,347],{"class":318},[312,896,897,899,901,903,905,907,910,912],{"class":314,"line":350},[312,898,325],{"class":318},[312,900,671],{"class":328},[312,902,332],{"class":318},[312,904,335],{"class":318},[312,906,338],{"class":318},[312,908,909],{"class":341},"DATASET_DELETE_MODE_SOFT",[312,911,332],{"class":318},[312,913,347],{"class":318},[312,915,916,918,921,923,925],{"class":314,"line":371},[312,917,325],{"class":318},[312,919,920],{"class":328},"filter",[312,922,332],{"class":318},[312,924,335],{"class":318},[312,926,404],{"class":318},[312,928,929,931,934,936,938],{"class":314,"line":392},[312,930,410],{"class":318},[312,932,933],{"class":413},"condition",[312,935,332],{"class":318},[312,937,335],{"class":318},[312,939,404],{"class":318},[312,941,942,944,947,949,951,953,955,957],{"class":314,"line":407},[312,943,707],{"class":318},[312,945,946],{"class":432},"column",[312,948,332],{"class":318},[312,950,335],{"class":318},[312,952,338],{"class":318},[312,954,441],{"class":341},[312,956,332],{"class":318},[312,958,347],{"class":318},[312,960,961,963,966,968,970,972,975,977],{"class":314,"line":424},[312,962,707],{"class":318},[312,964,965],{"class":432},"op",[312,967,332],{"class":318},[312,969,335],{"class":318},[312,971,338],{"class":318},[312,973,974],{"class":341},"FILTER_OP_EQ",[312,976,332],{"class":318},[312,978,347],{"class":318},[312,980,981,983,986,988,990,993,995,997,999,1001,1003,1005,1007],{"class":314,"line":494},[312,982,707],{"class":318},[312,984,985],{"class":432},"values",[312,987,332],{"class":318},[312,989,335],{"class":318},[312,991,992],{"class":318}," [{",[312,994,338],{"class":318},[312,996,736],{"class":735},[312,998,332],{"class":318},[312,1000,335],{"class":318},[312,1002,338],{"class":318},[312,1004,745],{"class":341},[312,1006,332],{"class":318},[312,1008,1009],{"class":318}," }]\n",[312,1011,1012],{"class":314,"line":554},[312,1013,813],{"class":318},[312,1015,1016],{"class":314,"line":606},[312,1017,615],{"class":318},[312,1019,1020],{"class":314,"line":612},[312,1021,621],{"class":318},[14,1023,1024,1026,1027,1029,1030,1033,1034,127],{},[24,1025,920],{}," is required and selects records from the current logical state.\n",[24,1028,909],{}," appends tombstones and requires identity columns;\n",[24,1031,1032],{},"DATASET_DELETE_MODE_HARD"," removes the matching observations from stored files.\nReturns ",[24,1035,1036],{},"{ \"deletedRowCount\": \"\u003Cn>\", \"storageDeltaBytes\": \"\u003Csigned bytes>\" }",[299,1038,240],{"id":1039},"cleardataset",[303,1041,1043],{"className":305,"code":1042,"language":307,"meta":308,"style":308},"{ \"datasetId\": \"\u003Cdataset-uuid>\" }\n",[24,1044,1045],{"__ignoreMap":308},[312,1046,1047,1050,1052,1054,1056,1058,1060,1062,1064],{"class":314,"line":315},[312,1048,1049],{"class":318},"{",[312,1051,338],{"class":318},[312,1053,651],{"class":328},[312,1055,332],{"class":318},[312,1057,335],{"class":318},[312,1059,338],{"class":318},[312,1061,660],{"class":341},[312,1063,332],{"class":318},[312,1065,603],{"class":318},[14,1067,1068,1069,127],{},"Removes every record and stored file. Returns ",[24,1070,1071],{},"{ \"deletedRowCount\": \"\u003Cn>\", \"storageDeltaBytes\": \"\u003Cnegative bytes>\" }",[299,1073,252],{"id":1074},"querydataset",[303,1076,1078],{"className":305,"code":1077,"language":307,"meta":308,"style":308},"{\n  \"datasetId\": \"\u003Cdataset-uuid>\",\n  \"sql\": \"SELECT host, ip FROM dataset WHERE resolved\",\n  \"pageSize\": 100,\n  \"pageToken\": \"\",\n  \"includeHistory\": false,\n  \"ingestedAtFrom\": \"2026-01-01T00:00:00Z\",\n  \"filter\": {\n    \"condition\": {\n      \"column\": \"ip\",\n      \"op\": \"FILTER_OP_IS_NOT_NULL\",\n      \"values\": []\n    }\n  }\n}\n",[24,1079,1080,1084,1102,1122,1138,1154,1168,1188,1200,1212,1231,1250,1263,1267,1272],{"__ignoreMap":308},[312,1081,1082],{"class":314,"line":315},[312,1083,319],{"class":318},[312,1085,1086,1088,1090,1092,1094,1096,1098,1100],{"class":314,"line":322},[312,1087,325],{"class":318},[312,1089,651],{"class":328},[312,1091,332],{"class":318},[312,1093,335],{"class":318},[312,1095,338],{"class":318},[312,1097,660],{"class":341},[312,1099,332],{"class":318},[312,1101,347],{"class":318},[312,1103,1104,1106,1109,1111,1113,1115,1118,1120],{"class":314,"line":350},[312,1105,325],{"class":318},[312,1107,1108],{"class":328},"sql",[312,1110,332],{"class":318},[312,1112,335],{"class":318},[312,1114,338],{"class":318},[312,1116,1117],{"class":341},"SELECT host, ip FROM dataset WHERE resolved",[312,1119,332],{"class":318},[312,1121,347],{"class":318},[312,1123,1124,1126,1129,1131,1133,1136],{"class":314,"line":371},[312,1125,325],{"class":318},[312,1127,1128],{"class":328},"pageSize",[312,1130,332],{"class":318},[312,1132,335],{"class":318},[312,1134,1135],{"class":432}," 100",[312,1137,347],{"class":318},[312,1139,1140,1142,1145,1147,1149,1152],{"class":314,"line":392},[312,1141,325],{"class":318},[312,1143,1144],{"class":328},"pageToken",[312,1146,332],{"class":318},[312,1148,335],{"class":318},[312,1150,1151],{"class":318}," \"\"",[312,1153,347],{"class":318},[312,1155,1156,1158,1161,1163,1165],{"class":314,"line":407},[312,1157,325],{"class":318},[312,1159,1160],{"class":328},"includeHistory",[312,1162,332],{"class":318},[312,1164,335],{"class":318},[312,1166,1167],{"class":318}," false,\n",[312,1169,1170,1172,1175,1177,1179,1181,1184,1186],{"class":314,"line":424},[312,1171,325],{"class":318},[312,1173,1174],{"class":328},"ingestedAtFrom",[312,1176,332],{"class":318},[312,1178,335],{"class":318},[312,1180,338],{"class":318},[312,1182,1183],{"class":341},"2026-01-01T00:00:00Z",[312,1185,332],{"class":318},[312,1187,347],{"class":318},[312,1189,1190,1192,1194,1196,1198],{"class":314,"line":494},[312,1191,325],{"class":318},[312,1193,920],{"class":328},[312,1195,332],{"class":318},[312,1197,335],{"class":318},[312,1199,404],{"class":318},[312,1201,1202,1204,1206,1208,1210],{"class":314,"line":554},[312,1203,410],{"class":318},[312,1205,933],{"class":413},[312,1207,332],{"class":318},[312,1209,335],{"class":318},[312,1211,404],{"class":318},[312,1213,1214,1216,1218,1220,1222,1224,1227,1229],{"class":314,"line":606},[312,1215,707],{"class":318},[312,1217,946],{"class":432},[312,1219,332],{"class":318},[312,1221,335],{"class":318},[312,1223,338],{"class":318},[312,1225,1226],{"class":341},"ip",[312,1228,332],{"class":318},[312,1230,347],{"class":318},[312,1232,1233,1235,1237,1239,1241,1243,1246,1248],{"class":314,"line":612},[312,1234,707],{"class":318},[312,1236,965],{"class":432},[312,1238,332],{"class":318},[312,1240,335],{"class":318},[312,1242,338],{"class":318},[312,1244,1245],{"class":341},"FILTER_OP_IS_NOT_NULL",[312,1247,332],{"class":318},[312,1249,347],{"class":318},[312,1251,1252,1254,1256,1258,1260],{"class":314,"line":618},[312,1253,707],{"class":318},[312,1255,985],{"class":432},[312,1257,332],{"class":318},[312,1259,335],{"class":318},[312,1261,1262],{"class":318}," []\n",[312,1264,1265],{"class":314,"line":821},[312,1266,813],{"class":318},[312,1268,1270],{"class":314,"line":1269},14,[312,1271,615],{"class":318},[312,1273,1275],{"class":314,"line":1274},15,[312,1276,621],{"class":318},[71,1278,1279,1289],{},[74,1280,1281],{},[77,1282,1283,1286],{},[80,1284,1285],{},"Field",[80,1287,1288],{},"Meaning",[87,1290,1291,1307,1316,1328,1337,1353],{},[77,1292,1293,1297],{},[92,1294,1295],{},[24,1296,1108],{},[92,1298,1299,1300,1303,1304,127],{},"One read-only SELECT; a bare ",[24,1301,1302],{},"SELECT *"," becomes ",[24,1305,1306],{},"SELECT * FROM dataset",[77,1308,1309,1313],{},[92,1310,1311],{},[24,1312,1128],{},[92,1314,1315],{},"Default 100, max 1,000.",[77,1317,1318,1322],{},[92,1319,1320],{},[24,1321,1144],{},[92,1323,1324,1325,127],{},"Cursor from ",[24,1326,1327],{},"nextPageToken",[77,1329,1330,1334],{},[92,1331,1332],{},[24,1333,1160],{},[92,1335,1336],{},"Query raw observations instead of current state.",[77,1338,1339,1347],{},[92,1340,1341,1343,1344],{},[24,1342,1174],{}," \u002F ",[24,1345,1346],{},"ingestedAtTo",[92,1348,1349,1350,127],{},"Bound ",[24,1351,1352],{},"__ingested_at",[77,1354,1355,1359],{},[92,1356,1357],{},[24,1358,920],{},[92,1360,1361,1362,127],{},"Typed filter tree; see ",[123,1363,847],{"href":1364},"\u002Fdatasets\u002Ffilters",[14,1366,1367,1368,1371,1372,1374,1375,1377,1378,127],{},"The response contains ",[24,1369,1370],{},"schema.columns",", ",[24,1373,691],{}," (",[24,1376,985],{}," in schema order), and\n",[24,1379,1327],{},[299,1381,268],{"id":1382},"querydatasets",[303,1384,1386],{"className":305,"code":1385,"language":307,"meta":308,"style":308},"{\n  \"projectId\": \"\u003Cproject-uuid>\",\n  \"sql\": \"SELECT s.host, w.status_code FROM subdomains AS s JOIN \\\"web-services\\\" AS w ON s.host = w.host WHERE s.resolved\",\n  \"pageSize\": 100\n}\n",[24,1387,1388,1392,1410,1441,1454],{"__ignoreMap":308},[312,1389,1390],{"class":314,"line":315},[312,1391,319],{"class":318},[312,1393,1394,1396,1398,1400,1402,1404,1406,1408],{"class":314,"line":322},[312,1395,325],{"class":318},[312,1397,329],{"class":328},[312,1399,332],{"class":318},[312,1401,335],{"class":318},[312,1403,338],{"class":318},[312,1405,342],{"class":341},[312,1407,332],{"class":318},[312,1409,347],{"class":318},[312,1411,1412,1414,1416,1418,1420,1422,1425,1429,1432,1434,1437,1439],{"class":314,"line":350},[312,1413,325],{"class":318},[312,1415,1108],{"class":328},[312,1417,332],{"class":318},[312,1419,335],{"class":318},[312,1421,338],{"class":318},[312,1423,1424],{"class":341},"SELECT s.host, w.status_code FROM subdomains AS s JOIN ",[312,1426,1428],{"class":1427},"sTEyZ","\\\"",[312,1430,1431],{"class":341},"web-services",[312,1433,1428],{"class":1427},[312,1435,1436],{"class":341}," AS w ON s.host = w.host WHERE s.resolved",[312,1438,332],{"class":318},[312,1440,347],{"class":318},[312,1442,1443,1445,1447,1449,1451],{"class":314,"line":371},[312,1444,325],{"class":318},[312,1446,1128],{"class":328},[312,1448,332],{"class":318},[312,1450,335],{"class":318},[312,1452,1453],{"class":432}," 100\n",[312,1455,1456],{"class":314,"line":392},[312,1457,621],{"class":318},[14,1459,624,1460,1463,1464,1467,1468,1471],{},[24,1461,1462],{},"{ \"result\": { \"columns\", \"rows\", \"nextPageToken\" } }",". Filter with the\nSQL ",[24,1465,1466],{},"WHERE"," clause; the per-relation ",[24,1469,1470],{},"filters"," field is reserved and not\nsupported by the current execution path. This path has no history mode.\nProject-wide SQL is API-only; the Hub UI's SQL box is scoped to one dataset.",[299,1473,280],{"id":1474},"describedataset",[303,1476,1477],{"className":305,"code":1042,"language":307,"meta":308,"style":308},[24,1478,1479],{"__ignoreMap":308},[312,1480,1481,1483,1485,1487,1489,1491,1493,1495,1497],{"class":314,"line":315},[312,1482,1049],{"class":318},[312,1484,338],{"class":318},[312,1486,651],{"class":328},[312,1488,332],{"class":318},[312,1490,335],{"class":318},[312,1492,338],{"class":318},[312,1494,660],{"class":341},[312,1496,332],{"class":318},[312,1498,603],{"class":318},[14,1500,1501],{},"Returns one entry per schema column with:",[71,1503,1504,1512],{},[74,1505,1506],{},[77,1507,1508,1510],{},[80,1509,1285],{},[80,1511,1288],{},[87,1513,1514,1526,1536],{},[77,1515,1516,1521],{},[92,1517,1518],{},[24,1519,1520],{},"nullCount",[92,1522,1523,1524,127],{},"Rows where the column is ",[24,1525,836],{},[77,1527,1528,1533],{},[92,1529,1530],{},[24,1531,1532],{},"distinctCount",[92,1534,1535],{},"Distinct non-null values.",[77,1537,1538,1543],{},[92,1539,1540],{},[24,1541,1542],{},"topValues",[92,1544,1545],{},"Up to 10 most frequent non-null values, most frequent first.",[14,1547,1548,1551],{},[24,1549,1550],{},"bh dataset describe"," prints the first three top values.",[299,1553,292],{"id":1554},"exportdataset",[303,1556,1558],{"className":305,"code":1557,"language":307,"meta":308,"style":308},"{\n  \"datasetId\": \"\u003Cdataset-uuid>\",\n  \"format\": \"DATASET_EXPORT_FORMAT_CSV\",\n  \"sql\": \"SELECT * FROM dataset\",\n  \"includeHistory\": false\n}\n",[24,1559,1560,1564,1582,1602,1620,1633],{"__ignoreMap":308},[312,1561,1562],{"class":314,"line":315},[312,1563,319],{"class":318},[312,1565,1566,1568,1570,1572,1574,1576,1578,1580],{"class":314,"line":322},[312,1567,325],{"class":318},[312,1569,651],{"class":328},[312,1571,332],{"class":318},[312,1573,335],{"class":318},[312,1575,338],{"class":318},[312,1577,660],{"class":341},[312,1579,332],{"class":318},[312,1581,347],{"class":318},[312,1583,1584,1586,1589,1591,1593,1595,1598,1600],{"class":314,"line":350},[312,1585,325],{"class":318},[312,1587,1588],{"class":328},"format",[312,1590,332],{"class":318},[312,1592,335],{"class":318},[312,1594,338],{"class":318},[312,1596,1597],{"class":341},"DATASET_EXPORT_FORMAT_CSV",[312,1599,332],{"class":318},[312,1601,347],{"class":318},[312,1603,1604,1606,1608,1610,1612,1614,1616,1618],{"class":314,"line":371},[312,1605,325],{"class":318},[312,1607,1108],{"class":328},[312,1609,332],{"class":318},[312,1611,335],{"class":318},[312,1613,338],{"class":318},[312,1615,1306],{"class":341},[312,1617,332],{"class":318},[312,1619,347],{"class":318},[312,1621,1622,1624,1626,1628,1630],{"class":314,"line":392},[312,1623,325],{"class":318},[312,1625,1160],{"class":328},[312,1627,332],{"class":318},[312,1629,335],{"class":318},[312,1631,1632],{"class":318}," false\n",[312,1634,1635],{"class":314,"line":407},[312,1636,621],{"class":318},[71,1638,1639,1652],{},[74,1640,1641],{},[77,1642,1643,1646,1649],{},[80,1644,1645],{},"Format",[80,1647,1648],{},"Enum",[80,1650,1651],{},"Content type",[87,1653,1654,1668,1683],{},[77,1655,1656,1659,1663],{},[92,1657,1658],{},"CSV",[92,1660,1661],{},[24,1662,1597],{},[92,1664,1665],{},[24,1666,1667],{},"text\u002Fcsv",[77,1669,1670,1673,1678],{},[92,1671,1672],{},"JSON Lines",[92,1674,1675],{},[24,1676,1677],{},"DATASET_EXPORT_FORMAT_JSONL",[92,1679,1680],{},[24,1681,1682],{},"application\u002Fx-ndjson",[77,1684,1685,1688,1693],{},[92,1686,1687],{},"JSON array",[92,1689,1690],{},[24,1691,1692],{},"DATASET_EXPORT_FORMAT_JSON",[92,1694,1695],{},[24,1696,1697],{},"application\u002Fjson",[18,1699,1700,1708,1713,1716],{},[21,1701,1702,1704,1705,1707],{},[24,1703,1108],{}," is required; use ",[24,1706,1306],{}," for a full export.",[21,1709,1710,1711,127],{},"Filters and time bounds use the same outer semantics as ",[24,1712,252],{},[21,1714,1715],{},"Exports have no page size or row cap; rows stream to the file.",[21,1717,1718,1719,1722,1723,1726,1727,347,1730,1371,1733,1735,1736,127],{},"The response returns ",[24,1720,1721],{},"url"," (presigned, valid for ",[114,1724,1725],{},"15 minutes","), ",[24,1728,1729],{},"fileName",[24,1731,1732],{},"contentType",[24,1734,63],{},", and ",[24,1737,1738],{},"sizeBytes",[66,1740,1742],{"id":1741},"datasetviewservice","DatasetViewService",[71,1744,1745,1756],{},[74,1746,1747],{},[77,1748,1749,1751,1753],{},[80,1750,139],{},[80,1752,85],{},[80,1754,1755],{},"Notes",[87,1757,1758,1772,1791,1805,1819,1833],{},[77,1759,1760,1765,1769],{},[92,1761,1762],{},[24,1763,1764],{},"CreateDatasetView",[92,1766,1767],{},[24,1768,109],{},[92,1770,1771],{},"Validates SQL, references, and cycles.",[77,1773,1774,1779,1783],{},[92,1775,1776],{},[24,1777,1778],{},"GetDatasetView",[92,1780,1781],{},[24,1782,99],{},[92,1784,624,1785,40,1788,127],{},[24,1786,1787],{},"valid",[24,1789,1790],{},"invalidReason",[77,1792,1793,1798,1802],{},[92,1794,1795],{},[24,1796,1797],{},"ListDatasetViews",[92,1799,1800],{},[24,1801,99],{},[92,1803,1804],{},"Default 50, max 500.",[77,1806,1807,1812,1816],{},[92,1808,1809],{},[24,1810,1811],{},"UpdateDatasetView",[92,1813,1814],{},[24,1815,109],{},[92,1817,1818],{},"Changes name, description, and SQL; resets validity.",[77,1820,1821,1826,1830],{},[92,1822,1823],{},[24,1824,1825],{},"DeleteDatasetView",[92,1827,1828],{},[24,1829,109],{},[92,1831,1832],{},"Invalidates dependent views.",[77,1834,1835,1840,1844],{},[92,1836,1837],{},[24,1838,1839],{},"ExecuteDatasetView",[92,1841,1842],{},[24,1843,99],{},[92,1845,1846],{},"Default 100, max 10,000.",[14,1848,1849,1851,1852,1854,1855,127],{},[24,1850,1839],{}," returns ",[24,1853,1462],{},". Views run over the current state and have no filter,\nhistory, or time-range fields; see ",[123,1856,1858],{"href":1857},"\u002Fdatasets\u002Fviews","Saved views",[66,1860,1862],{"id":1861},"bh-cli","bh CLI",[14,1864,1865,1866,1868],{},"The CLI wraps ",[24,1867,51],{}," for the common read and manage paths:",[303,1870,1874],{"className":1871,"code":1872,"language":1873,"meta":308,"style":308},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# List datasets in a project\nbh dataset list --project-id \"$PROJECT_ID\" --all\n\n# Inspect one dataset and its columns\nbh dataset get --dataset-id \"$DATASET_ID\"\nbh dataset describe --dataset-id \"$DATASET_ID\"\n\n# Create with a schema file (proto JSON)\nbh dataset create \\\n  --project-id \"$PROJECT_ID\" \\\n  subdomains \\\n  --description \"Resolved subdomains per program\" \\\n  --schema-json schema.json\n\n# Rename or change the description\nbh dataset update \\\n  --dataset-id \"$DATASET_ID\" \\\n  --name subdomains-2026 \\\n  --description \"Subdomains discovered in 2026\"\n\n# Query current state or history\nbh dataset query \\\n  --dataset-id \"$DATASET_ID\" \\\n  \"SELECT host, ip FROM dataset WHERE resolved\"\n\nbh dataset query \\\n  --dataset-id \"$DATASET_ID\" \\\n  --include-history \\\n  \"SELECT host, \\\"__ingested_at\\\" FROM dataset\"\n\n# Delete\nbh dataset delete --dataset-id \"$DATASET_ID\"\n","bash",[24,1875,1876,1882,1905,1911,1916,1936,1953,1957,1962,1974,1987,1994,2007,2015,2019,2024,2036,2050,2061,2073,2078,2084,2096,2109,2118,2123,2134,2147,2155,2174,2179,2185],{"__ignoreMap":308},[312,1877,1878],{"class":314,"line":315},[312,1879,1881],{"class":1880},"sHwdD","# List datasets in a project\n",[312,1883,1884,1886,1889,1892,1895,1897,1900,1902],{"class":314,"line":322},[312,1885,47],{"class":413},[312,1887,1888],{"class":341}," dataset",[312,1890,1891],{"class":341}," list",[312,1893,1894],{"class":341}," --project-id",[312,1896,338],{"class":318},[312,1898,1899],{"class":1427},"$PROJECT_ID",[312,1901,332],{"class":318},[312,1903,1904],{"class":341}," --all\n",[312,1906,1907],{"class":314,"line":350},[312,1908,1910],{"emptyLinePlaceholder":1909},true,"\n",[312,1912,1913],{"class":314,"line":371},[312,1914,1915],{"class":1880},"# Inspect one dataset and its columns\n",[312,1917,1918,1920,1922,1925,1928,1930,1933],{"class":314,"line":392},[312,1919,47],{"class":413},[312,1921,1888],{"class":341},[312,1923,1924],{"class":341}," get",[312,1926,1927],{"class":341}," --dataset-id",[312,1929,338],{"class":318},[312,1931,1932],{"class":1427},"$DATASET_ID",[312,1934,1935],{"class":318},"\"\n",[312,1937,1938,1940,1942,1945,1947,1949,1951],{"class":314,"line":407},[312,1939,47],{"class":413},[312,1941,1888],{"class":341},[312,1943,1944],{"class":341}," describe",[312,1946,1927],{"class":341},[312,1948,338],{"class":318},[312,1950,1932],{"class":1427},[312,1952,1935],{"class":318},[312,1954,1955],{"class":314,"line":424},[312,1956,1910],{"emptyLinePlaceholder":1909},[312,1958,1959],{"class":314,"line":494},[312,1960,1961],{"class":1880},"# Create with a schema file (proto JSON)\n",[312,1963,1964,1966,1968,1971],{"class":314,"line":554},[312,1965,47],{"class":413},[312,1967,1888],{"class":341},[312,1969,1970],{"class":341}," create",[312,1972,1973],{"class":1427}," \\\n",[312,1975,1976,1979,1981,1983,1985],{"class":314,"line":606},[312,1977,1978],{"class":341},"  --project-id",[312,1980,338],{"class":318},[312,1982,1899],{"class":1427},[312,1984,332],{"class":318},[312,1986,1973],{"class":1427},[312,1988,1989,1992],{"class":314,"line":612},[312,1990,1991],{"class":341},"  subdomains",[312,1993,1973],{"class":1427},[312,1995,1996,1999,2001,2003,2005],{"class":314,"line":618},[312,1997,1998],{"class":341},"  --description",[312,2000,338],{"class":318},[312,2002,385],{"class":341},[312,2004,332],{"class":318},[312,2006,1973],{"class":1427},[312,2008,2009,2012],{"class":314,"line":821},[312,2010,2011],{"class":341},"  --schema-json",[312,2013,2014],{"class":341}," schema.json\n",[312,2016,2017],{"class":314,"line":1269},[312,2018,1910],{"emptyLinePlaceholder":1909},[312,2020,2021],{"class":314,"line":1274},[312,2022,2023],{"class":1880},"# Rename or change the description\n",[312,2025,2027,2029,2031,2034],{"class":314,"line":2026},16,[312,2028,47],{"class":413},[312,2030,1888],{"class":341},[312,2032,2033],{"class":341}," update",[312,2035,1973],{"class":1427},[312,2037,2039,2042,2044,2046,2048],{"class":314,"line":2038},17,[312,2040,2041],{"class":341},"  --dataset-id",[312,2043,338],{"class":318},[312,2045,1932],{"class":1427},[312,2047,332],{"class":318},[312,2049,1973],{"class":1427},[312,2051,2053,2056,2059],{"class":314,"line":2052},18,[312,2054,2055],{"class":341},"  --name",[312,2057,2058],{"class":341}," subdomains-2026",[312,2060,1973],{"class":1427},[312,2062,2064,2066,2068,2071],{"class":314,"line":2063},19,[312,2065,1998],{"class":341},[312,2067,338],{"class":318},[312,2069,2070],{"class":341},"Subdomains discovered in 2026",[312,2072,1935],{"class":318},[312,2074,2076],{"class":314,"line":2075},20,[312,2077,1910],{"emptyLinePlaceholder":1909},[312,2079,2081],{"class":314,"line":2080},21,[312,2082,2083],{"class":1880},"# Query current state or history\n",[312,2085,2087,2089,2091,2094],{"class":314,"line":2086},22,[312,2088,47],{"class":413},[312,2090,1888],{"class":341},[312,2092,2093],{"class":341}," query",[312,2095,1973],{"class":1427},[312,2097,2099,2101,2103,2105,2107],{"class":314,"line":2098},23,[312,2100,2041],{"class":341},[312,2102,338],{"class":318},[312,2104,1932],{"class":1427},[312,2106,332],{"class":318},[312,2108,1973],{"class":1427},[312,2110,2112,2114,2116],{"class":314,"line":2111},24,[312,2113,325],{"class":318},[312,2115,1117],{"class":341},[312,2117,1935],{"class":318},[312,2119,2121],{"class":314,"line":2120},25,[312,2122,1910],{"emptyLinePlaceholder":1909},[312,2124,2126,2128,2130,2132],{"class":314,"line":2125},26,[312,2127,47],{"class":413},[312,2129,1888],{"class":341},[312,2131,2093],{"class":341},[312,2133,1973],{"class":1427},[312,2135,2137,2139,2141,2143,2145],{"class":314,"line":2136},27,[312,2138,2041],{"class":341},[312,2140,338],{"class":318},[312,2142,1932],{"class":1427},[312,2144,332],{"class":318},[312,2146,1973],{"class":1427},[312,2148,2150,2153],{"class":314,"line":2149},28,[312,2151,2152],{"class":341},"  --include-history",[312,2154,1973],{"class":1427},[312,2156,2158,2160,2163,2165,2167,2169,2172],{"class":314,"line":2157},29,[312,2159,325],{"class":318},[312,2161,2162],{"class":341},"SELECT host, ",[312,2164,1428],{"class":1427},[312,2166,1352],{"class":341},[312,2168,1428],{"class":1427},[312,2170,2171],{"class":341}," FROM dataset",[312,2173,1935],{"class":318},[312,2175,2177],{"class":314,"line":2176},30,[312,2178,1910],{"emptyLinePlaceholder":1909},[312,2180,2182],{"class":314,"line":2181},31,[312,2183,2184],{"class":1880},"# Delete\n",[312,2186,2188,2190,2192,2195,2197,2199,2201],{"class":314,"line":2187},32,[312,2189,47],{"class":413},[312,2191,1888],{"class":341},[312,2193,2194],{"class":341}," delete",[312,2196,1927],{"class":341},[312,2198,338],{"class":318},[312,2200,1932],{"class":1427},[312,2202,1935],{"class":318},[14,2204,2205,2208,2209,2212,2213,2216,2217,2219],{},[24,2206,2207],{},"bh dataset query"," prints a ",[24,2210,2211],{},"next page token"," line when more rows are available\nand accepts ",[24,2214,2215],{},"--page-size"," (default 100). It has no page-token flag; use the API\n(",[24,2218,252],{},") to continue past the first page.",[14,2221,2222],{},"There are no CLI commands for project-wide SQL, saved views, exports, or row\ningestion — use the API for those.",[66,2224,2226],{"id":2225},"errors","Errors",[71,2228,2229,2239],{},[74,2230,2231],{},[77,2232,2233,2236],{},[80,2234,2235],{},"Connect code",[80,2237,2238],{},"Cause",[87,2240,2241,2251,2265,2275,2285,2295],{},[77,2242,2243,2248],{},[92,2244,2245],{},[24,2246,2247],{},"UNAUTHENTICATED",[92,2249,2250],{},"Missing or invalid token.",[77,2252,2253,2258],{},[92,2254,2255],{},[24,2256,2257],{},"PERMISSION_DENIED",[92,2259,2260,2261,1343,2263,127],{},"The PAT lacks ",[24,2262,99],{},[24,2264,109],{},[77,2266,2267,2272],{},[92,2268,2269],{},[24,2270,2271],{},"NOT_FOUND",[92,2273,2274],{},"Unknown dataset or view, or one outside the caller's projects.",[77,2276,2277,2282],{},[92,2278,2279],{},[24,2280,2281],{},"ALREADY_EXISTS",[92,2283,2284],{},"Dataset name already used in the project.",[77,2286,2287,2292],{},[92,2288,2289],{},[24,2290,2291],{},"INVALID_ARGUMENT",[92,2293,2294],{},"Invalid schema, SQL, filter, id, or page token; a view cannot be evaluated.",[77,2296,2297,2302],{},[92,2298,2299],{},[24,2300,2301],{},"RESOURCE_EXHAUSTED",[92,2303,2304],{},"Too many concurrent queries or too many per minute.",[66,2306,2308],{"id":2307},"related","Related",[18,2310,2311,2316,2323,2328,2333],{},[21,2312,2313,2315],{},[123,2314,632],{"href":631}," — column kinds and identity.",[21,2317,2318,2322],{},[123,2319,2321],{"href":2320},"\u002Fdatasets\u002Fsql","SQL reference"," — query language and limits.",[21,2324,2325,2327],{},[123,2326,847],{"href":1364}," — filter AST and value types.",[21,2329,2330,2332],{},[123,2331,1858],{"href":1857}," — view semantics.",[21,2334,2335,2337],{},[123,2336,126],{"href":125}," — scope names.",[2339,2340,2341],"style",{},"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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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}",{"title":308,"searchDepth":392,"depth":371,"links":2343},[2344,2345,2355,2356,2357,2358],{"id":68,"depth":322,"text":69},{"id":130,"depth":322,"text":51,"children":2346},[2347,2348,2349,2350,2351,2352,2353,2354],{"id":301,"depth":350,"text":154},{"id":635,"depth":350,"text":216},{"id":867,"depth":350,"text":228},{"id":1039,"depth":350,"text":240},{"id":1074,"depth":350,"text":252},{"id":1382,"depth":350,"text":268},{"id":1474,"depth":350,"text":280},{"id":1554,"depth":350,"text":292},{"id":1741,"depth":322,"text":1742},{"id":1861,"depth":322,"text":1862},{"id":2225,"depth":322,"text":2226},{"id":2307,"depth":322,"text":2308},"DatasetService and DatasetViewService RPCs, request and response shapes, pagination, exports, describe, scopes, and the bh dataset commands.","md",{},"\u002Fdatasets\u002Fapi-cli",null,{"title":5,"description":2359},{"loc":2362},"04.datasets\u002F7.api-cli","Irb5ywAgasT8pP53L_bbuPh6LVz3HkXt7avMBg7UsPI",[2369,2432,2447,2466,2493,2509,2521,2532,2543,2554,2578,2596,2616,2627,2638],{"title":2370,"path":2371,"stem":2372,"children":2373},"Workflows","\u002Fworkflows","01.workflows",[2374,2376,2380,2384,2388,2392,2396,2400,2404,2408,2412,2416,2420,2424,2428],{"title":2370,"path":2371,"stem":2375},"01.workflows\u002Findex",{"title":2377,"path":2378,"stem":2379},"Workflow Quick Reference","\u002Fworkflows\u002Fquick-reference","01.workflows\u002F00.quick-reference",{"title":2381,"path":2382,"stem":2383},"Workflows Overview","\u002Fworkflows\u002Foverview","01.workflows\u002F01.overview",{"title":2385,"path":2386,"stem":2387},"Workflow Syntax Reference","\u002Fworkflows\u002Fsyntax-reference","01.workflows\u002F02.syntax-reference",{"title":2389,"path":2390,"stem":2391},"Steps","\u002Fworkflows\u002Fsteps","01.workflows\u002F03.steps",{"title":2393,"path":2394,"stem":2395},"Step Outputs","\u002Fworkflows\u002Fstep-outputs","01.workflows\u002F04.step-outputs",{"title":2397,"path":2398,"stem":2399},"Concurrency","\u002Fworkflows\u002Fconcurrency","01.workflows\u002F05.concurrency",{"title":2401,"path":2402,"stem":2403},"Transforms","\u002Fworkflows\u002Ftransforms","01.workflows\u002F06.transforms",{"title":2405,"path":2406,"stem":2407},"For Each","\u002Fworkflows\u002Ffor-each","01.workflows\u002F07.for-each",{"title":2409,"path":2410,"stem":2411},"Modules","\u002Fworkflows\u002Fmodules","01.workflows\u002F08.modules",{"title":2413,"path":2414,"stem":2415},"Agents","\u002Fworkflows\u002Fagents","01.workflows\u002F09.agents",{"title":2417,"path":2418,"stem":2419},"Decisions","\u002Fworkflows\u002Fdecisions","01.workflows\u002F10.decisions",{"title":2421,"path":2422,"stem":2423},"Configuration References","\u002Fworkflows\u002Fconfig","01.workflows\u002F11.config",{"title":2425,"path":2426,"stem":2427},"Comparison With Other Automation Systems","\u002Fworkflows\u002Fcomparison","01.workflows\u002F12.comparison",{"title":2429,"path":2430,"stem":2431},"Generate with AI","\u002Fworkflows\u002Fai-generation","01.workflows\u002F13.ai-generation",{"title":120,"path":2433,"stem":2434,"children":2435},"\u002Fprojects","02.projects",[2436,2439,2443],{"title":2437,"path":2433,"stem":2438},"Projects & Runs","02.projects\u002Findex",{"title":2440,"path":2441,"stem":2442},"Projects Overview","\u002Fprojects\u002Foverview","02.projects\u002F1.overview",{"title":2444,"path":2445,"stem":2446},"Runs & Artifacts","\u002Fprojects\u002Fruns-artifacts","02.projects\u002F2.runs-artifacts",{"title":2448,"path":2449,"stem":2450,"children":2451},"Runners","\u002Frunners","03.runners",[2452,2454,2458,2462],{"title":2448,"path":2449,"stem":2453},"03.runners\u002Findex",{"title":2455,"path":2456,"stem":2457},"Runner Overview","\u002Frunners\u002Foverview","03.runners\u002F1.overview",{"title":2459,"path":2460,"stem":2461},"Getting Started with Runners","\u002Frunners\u002Fgetting-started","03.runners\u002F2.getting-started",{"title":2463,"path":2464,"stem":2465},"Custom Runner Images","\u002Frunners\u002Fcustom-image","03.runners\u002F3.custom-image",{"title":116,"path":2467,"stem":2468,"children":2469},"\u002Fdatasets","04.datasets",[2470,2472,2476,2479,2483,2486,2489,2492],{"title":116,"path":2467,"stem":2471},"04.datasets\u002Findex",{"title":2473,"path":2474,"stem":2475},"Datasets Overview","\u002Fdatasets\u002Foverview","04.datasets\u002F1.overview",{"title":2477,"path":631,"stem":2478},"Dataset Schemas and Identity","04.datasets\u002F2.schema",{"title":2480,"path":2481,"stem":2482},"Pushing and Reading Dataset Rows","\u002Fdatasets\u002Fworkflows","04.datasets\u002F3.workflows",{"title":2484,"path":2320,"stem":2485},"Dataset SQL Reference","04.datasets\u002F4.sql",{"title":2487,"path":1364,"stem":2488},"Dataset Structured Filters","04.datasets\u002F5.filters",{"title":2490,"path":1857,"stem":2491},"Dataset Saved Views","04.datasets\u002F6.views",{"title":5,"path":2362,"stem":2366},{"title":2494,"path":2495,"stem":2496,"children":2497},"Agent","\u002Fagent","05.agent",[2498,2501,2505],{"title":2499,"path":2495,"stem":2500},"BH Agent","05.agent\u002Findex",{"title":2502,"path":2503,"stem":2504},"BH Agent Overview","\u002Fagent\u002Foverview","05.agent\u002F1.overview",{"title":2506,"path":2507,"stem":2508},"MCP servers","\u002Fagent\u002Fmcp-servers","05.agent\u002F2.mcp-servers",{"title":2510,"path":2511,"stem":2512,"children":2513},"Bhlast","\u002Fbhlast","06.bhlast",[2514,2517],{"title":2515,"path":2511,"stem":2516},"Bhlast Servers","06.bhlast\u002Findex",{"title":2518,"path":2519,"stem":2520},"Bhlast servers overview","\u002Fbhlast\u002Foverview","06.bhlast\u002F1.overview",{"title":2522,"path":2523,"stem":2524,"children":2525},"Notifications","\u002Fnotifications","07.notifications",[2526,2528],{"title":2522,"path":2523,"stem":2527},"07.notifications\u002Findex",{"title":2529,"path":2530,"stem":2531},"Notifications Overview","\u002Fnotifications\u002Foverview","07.notifications\u002F1.overview",{"title":2533,"path":2534,"stem":2535,"children":2536},"Blob Storage","\u002Fblob-storage","08.blob-storage",[2537,2539],{"title":2533,"path":2534,"stem":2538},"08.blob-storage\u002Findex",{"title":2540,"path":2541,"stem":2542},"Blob Storage Overview","\u002Fblob-storage\u002Foverview","08.blob-storage\u002F1.overview",{"title":2544,"path":2545,"stem":2546,"children":2547},"Payloads","\u002Fpayloads","09.payloads",[2548,2550],{"title":2544,"path":2545,"stem":2549},"09.payloads\u002Findex",{"title":2551,"path":2552,"stem":2553},"Payloads overview","\u002Fpayloads\u002Foverview","09.payloads\u002F1.overview",{"title":2555,"path":2556,"stem":2557,"children":2558},"Cve Watcher","\u002Fcve-watcher","10.cve-watcher",[2559,2562,2566,2570,2574],{"title":2560,"path":2556,"stem":2561},"CVE Watcher","10.cve-watcher\u002Findex",{"title":2563,"path":2564,"stem":2565},"CVE Watcher Overview","\u002Fcve-watcher\u002Foverview","10.cve-watcher\u002F1.overview",{"title":2567,"path":2568,"stem":2569},"CVE Watcher Search and Filters","\u002Fcve-watcher\u002Fsearch","10.cve-watcher\u002F2.search",{"title":2571,"path":2572,"stem":2573},"CVE Watcher Push Notifications","\u002Fcve-watcher\u002Fnotifications","10.cve-watcher\u002F3.notifications",{"title":2575,"path":2576,"stem":2577},"CVE Watcher API and Scopes","\u002Fcve-watcher\u002Fapi","10.cve-watcher\u002F4.api",{"title":2579,"path":2580,"stem":2581,"children":2582},"Developer","\u002Fdeveloper","11.developer",[2583,2585,2589,2592],{"title":2579,"path":2580,"stem":2584},"11.developer\u002Findex",{"title":2586,"path":2587,"stem":2588},"Developer Overview","\u002Fdeveloper\u002Foverview","11.developer\u002F1.overview",{"title":2590,"path":125,"stem":2591},"Personal Access Token Scopes","11.developer\u002F2.scopes",{"title":2593,"path":2594,"stem":2595},"Personal Access Tokens","\u002Fdeveloper\u002Fpersonal-access-tokens","11.developer\u002F3.personal-access-tokens",{"title":2597,"path":2598,"stem":2599,"children":2600},"Bh","\u002Fbh","12.bh",[2601,2604,2608,2612],{"title":2602,"path":2598,"stem":2603},"BH CLI","12.bh\u002Findex",{"title":2605,"path":2606,"stem":2607},"BH CLI Overview","\u002Fbh\u002Foverview","12.bh\u002F1.overview",{"title":2609,"path":2610,"stem":2611},"BH CLI Commands","\u002Fbh\u002Fcommands","12.bh\u002F2.commands",{"title":2613,"path":2614,"stem":2615},"BH CLI Examples","\u002Fbh\u002Fexamples","12.bh\u002F3.examples",{"title":2617,"path":2618,"stem":2619,"children":2620},"Billing","\u002Fbilling","13.billing",[2621,2623],{"title":2617,"path":2618,"stem":2622},"13.billing\u002Findex",{"title":2624,"path":2625,"stem":2626},"Billing Overview","\u002Fbilling\u002Foverview","13.billing\u002F1.overview",{"title":2628,"path":2629,"stem":2630,"children":2631},"Tools","\u002Ftools","14.tools",[2632,2634],{"title":2628,"path":2629,"stem":2633},"14.tools\u002Findex",{"title":2635,"path":2636,"stem":2637},"Cookie Lab","\u002Ftools\u002Fcookie-lab","14.tools\u002F1.cookie-lab",{"title":2639,"path":2640,"stem":2641,"children":2642},"Site Policies","\u002Fsite-policies","99.site-policies",[2643,2645,2658,2662,2666,2670,2674,2678,2682],{"title":2639,"path":2640,"stem":2644},"99.site-policies\u002Findex",{"title":2646,"path":2647,"stem":2648,"children":2649},"Privacy Policy","\u002Fsite-policies\u002Fprivacy-policy","99.site-policies\u002F1.privacy-policy",[2650,2654],{"title":2651,"path":2652,"stem":2653},"Company Processors","\u002Fsite-policies\u002Fprivacy-policy\u002Fcompany-processors","99.site-policies\u002Fprivacy-policy\u002F1.company-processors",{"title":2655,"path":2656,"stem":2657},"Data Export Instructions","\u002Fsite-policies\u002Fprivacy-policy\u002Fdata-export-instructions","99.site-policies\u002Fprivacy-policy\u002F2.data-export-instructions",{"title":2659,"path":2660,"stem":2661},"Terms of Service","\u002Fsite-policies\u002Fterms-of-service","99.site-policies\u002F2.terms-of-service",{"title":2663,"path":2664,"stem":2665},"California Resident Notice at Collection","\u002Fsite-policies\u002Fccpa","99.site-policies\u002F3.ccpa",{"title":2667,"path":2668,"stem":2669},"Cancellation Policy","\u002Fsite-policies\u002Fcancellation-policy","99.site-policies\u002F4.cancellation-policy",{"title":2671,"path":2672,"stem":2673},"Refund Policy","\u002Fsite-policies\u002Frefund-policy","99.site-policies\u002F5.refund-policy",{"title":2675,"path":2676,"stem":2677},"Taxes on Services","\u002Fsite-policies\u002Ftaxes-on-services","99.site-policies\u002F6.taxes-on-services",{"title":2679,"path":2680,"stem":2681},"Disclaimer","\u002Fsite-policies\u002Fdisclaimer","99.site-policies\u002F7.disclaimer",{"title":2683,"path":2684,"stem":2685,"children":2686},"Security","\u002Fsite-policies\u002Fsecurity","99.site-policies\u002Fsecurity\u002Findex",[2687,2688,2692],{"title":2683,"path":2684,"stem":2685},{"title":2689,"path":2690,"stem":2691},"Security Overview","\u002Fsite-policies\u002Fsecurity\u002Fsecurity-overview","99.site-policies\u002Fsecurity\u002F1.security-overview",{"title":2693,"path":2694,"stem":2695},"Security Response","\u002Fsite-policies\u002Fsecurity\u002Fsecurity-response","99.site-policies\u002Fsecurity\u002F2.security-response",1794410312376]