[{"data":1,"prerenderedAt":2075},["ShallowReactive",2],{"navigation_docs":3,"-guides-create-many-projects-at-once":114,"-guides-create-many-projects-at-once-surround":2070},[4,23,85,99],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","\u002Fgetting-started","1.getting-started",[9,13,18],{"title":10,"path":6,"stem":11,"icon":12},"Getting started","1.getting-started\u002Findex","i-lucide-rocket",{"title":14,"path":15,"stem":16,"icon":17},"Try the demo","\u002Fgetting-started\u002Ftry-the-demo","1.getting-started\u002F1.try-the-demo","i-lucide-monitor-play",{"title":19,"path":20,"stem":21,"icon":22},"Quickstart","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F2.quickstart","i-lucide-play",{"title":24,"path":25,"stem":26,"children":27},"Guides","\u002Fguides","2.guides",[28,31,37,42,47,53,58,63,68,74,80],{"title":24,"path":25,"stem":29,"icon":30},"2.guides\u002Findex","i-lucide-map",{"title":32,"path":33,"stem":34,"icon":35,"group":36},"Connect a GitHub repository","\u002Fguides\u002Fconnect-a-github-repository","2.guides\u002F01.connect-a-github-repository","i-lucide-git-branch","Connect a project",{"title":38,"path":39,"stem":40,"icon":41,"group":36},"Analyze a project without GitHub","\u002Fguides\u002Fanalyze-a-project-without-github","2.guides\u002F02.analyze-a-project-without-github","i-lucide-upload",{"title":43,"path":44,"stem":45,"icon":46,"group":36},"Exclude dependency scopes","\u002Fguides\u002Fexclude-dependency-scopes","2.guides\u002F04.exclude-dependency-scopes","i-lucide-filter",{"title":48,"path":49,"stem":50,"icon":51,"group":52},"Scan from GitHub Actions","\u002Fguides\u002Fscan-from-github-actions","2.guides\u002F05.scan-from-github-actions","i-lucide-workflow","Automate",{"title":54,"path":55,"stem":56,"icon":57,"group":52},"Scan from another CI","\u002Fguides\u002Fscan-from-another-ci","2.guides\u002F06.scan-from-another-ci","i-lucide-square-terminal",{"title":59,"path":60,"stem":61,"icon":62,"group":52},"Manage API keys","\u002Fguides\u002Fmanage-api-keys","2.guides\u002F07.manage-api-keys","i-lucide-key-round",{"title":64,"path":65,"stem":66,"icon":67,"group":52},"Create many projects at once","\u002Fguides\u002Fcreate-many-projects-at-once","2.guides\u002F08.create-many-projects-at-once","i-lucide-layers",{"title":69,"path":70,"stem":71,"icon":72,"group":73},"Export reports and SBOMs","\u002Fguides\u002Fexport-reports-and-sboms","2.guides\u002F11.export-reports-and-sboms","i-lucide-download","Act on the results",{"title":75,"path":76,"stem":77,"icon":78,"group":79},"Organizations and plans","\u002Fguides\u002Forganizations-and-plans","2.guides\u002F13.organizations-and-plans","i-lucide-building-2","Organization and team",{"title":81,"path":82,"stem":83,"icon":84,"group":79},"Invite your team","\u002Fguides\u002Finvite-your-team","2.guides\u002F14.invite-your-team","i-lucide-users",{"title":86,"path":87,"stem":88,"children":89},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[90,94],{"title":91,"path":87,"stem":92,"icon":93},"Core concepts","3.core-concepts\u002Findex","i-lucide-lightbulb",{"title":95,"path":96,"stem":97,"icon":98},"The health score","\u002Fcore-concepts\u002Fhealth-score","3.core-concepts\u002F1.health-score","i-lucide-gauge",{"title":100,"path":101,"stem":102,"children":103},"Reference","\u002Freference","5.reference",[104,107],{"title":100,"path":101,"stem":105,"icon":106},"5.reference\u002Findex","i-lucide-book-marked",{"title":108,"path":109,"stem":110,"children":111,"icon":113},"Supported ecosystems","\u002Freference\u002Fecosystems","5.reference\u002F1.ecosystems\u002Findex",[112],{"title":108,"path":109,"stem":110,"icon":113},"i-lucide-package",{"id":115,"title":64,"body":116,"description":2063,"extension":2064,"links":2065,"meta":2066,"navigation":2067,"path":65,"seo":2068,"stem":66,"__hash__":2069},"docs\u002F2.guides\u002F08.create-many-projects-at-once.md",{"type":117,"value":118,"toc":2046},"minimark",[119,132,139,144,152,155,159,203,208,215,234,240,246,254,258,306,672,675,780,783,786,790,802,950,955,958,1009,1019,1023,1423,1430,1435,1509,1515,1519,1526,1529,1535,1539,1549,1552,1564,1577,1581,1584,1809,1815,1819,1838,1853,1857,1864,1869,1872,2036,2042],[120,121,122,123,127,128,131],"p",{},"Creating projects manually in the interface is fine for a handful.\nFor a large portfolio, that can mean an hour of clicking.\nOne request creates them all and returns the\n",[124,125,126],"code",{},"name"," to ",[124,129,130],{},"uuid"," table you paste into your CI variables.",[120,133,134,135,138],{},"This endpoint replaces the creation step, nothing else. The plan, the key and the\nscan job in each pipeline stay the same. If you have never set up a CI upload\nproject, do one by hand first with\n",[136,137,38],"a",{"href":39},": it\nshows you what the batch produces.",[140,141,143],"h2",{"id":142},"what-it-creates-and-what-it-does-not","What it creates, and what it does not",[120,145,146,147,151],{},"It creates ",[148,149,150],"strong",{},"CI upload projects"," only, the ones with no GitHub repository\nattached. Projects linked to GitHub can only be created in the interface, since\ncreating one verifies your access to the repository and this endpoint cannot do\nthat.",[120,153,154],{},"It does not remove the per project configuration. Each pipeline still needs its\nown project UUID.",[140,156,158],{"id":157},"what-you-need","What you need",[160,161,162,170,192],"ul",{},[163,164,165,166,169],"li",{},"The ",[148,167,168],{},"Pro plan",". A CI upload project is always private.",[163,171,172,173,176,177,180,181,184,185,188,189,191],{},"One ",[148,174,175],{},"available private slot for every project the batch creates",". Open your\norganization settings, ",[148,178,179],{},"Plan"," tab, ",[148,182,183],{},"Private slots",", and compare the\n",[148,186,187],{},"Available"," count with the number of projects you are about to create.\n",[136,190,75],{"href":76}," explains what\noccupies a slot and what buying one bills you.",[163,193,194,195,198,199,202],{},"An ",[148,196,197],{},"organization API key"," (",[124,200,201],{},"dt_org_...",") allowed to create projects.",[204,205,207],"h3",{"id":206},"a-key-that-can-create-projects","A key that can create projects",[120,209,210,211,214],{},"The permission is never implicit. A scan key cannot create projects and gets a\n",[124,212,213],{},"403",". You grant this permission when you create the key, and an existing key\ncan never gain it later.",[120,216,217,218,221,222,225,226,229,230,233],{},"In your organization settings, go to ",[148,219,220],{},"API keys",", click ",[148,223,224],{},"New key",", and check ",[148,227,228],{},"Allow this key to create projects",". Keys with this permission show a ",[148,231,232],{},"Can create projects"," label in the list.",[120,235,236,237,239],{},"You must be an owner or admin of the organization to create a key. The key is shown only once. See\n",[136,238,59],{"href":60},".",[241,242],"u-color-mode-image",{"alt":243,"dark":244,"light":245},"Organization key creation form, with an expiration of 1 day and the option allowing the key to create projects checked","\u002Fimages\u002Fdocs\u002Fguides\u002Fcreate-many-projects-at-once-2-key-permission-dark.webp","\u002Fimages\u002Fdocs\u002Fguides\u002Fcreate-many-projects-at-once-2-key-permission-light.webp",[247,248,249,250,253],"tip",{},"An organization key usually lives in a shared CI variable that every pipeline\nreads. Create a dedicated key for the provisioning run, set its expiration to\n",[148,251,252],{},"1 day",", and let your pipelines keep scanning with a separate key that has scan\npermission only. Revoke the provisioning key once the projects exist, and if you\nforget, it expires automatically.",[140,255,257],{"id":256},"send-the-batch","Send the batch",[259,260,265],"pre",{"className":261,"code":262,"language":263,"meta":264,"style":264},"language-http shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","POST https:\u002F\u002Fapi.deptools.io\u002Fv1\u002Fprojects\u002Fbulk\nAuthorization: Bearer dt_org_...\nContent-Type: application\u002Fjson\n","http","",[124,266,267,280,295],{"__ignoreMap":264},[268,269,272,276],"span",{"class":270,"line":271},"line",1,[268,273,275],{"class":274},"s7zQu","POST",[268,277,279],{"class":278},"sTEyZ"," https:\u002F\u002Fapi.deptools.io\u002Fv1\u002Fprojects\u002Fbulk\n",[268,281,283,287,291],{"class":270,"line":282},2,[268,284,286],{"class":285},"swJcz","Authorization",[268,288,290],{"class":289},"sbssI",":",[268,292,294],{"class":293},"sfazB"," Bearer dt_org_...\n",[268,296,298,301,303],{"class":270,"line":297},3,[268,299,300],{"class":285},"Content-Type",[268,302,290],{"class":289},[268,304,305],{"class":293}," application\u002Fjson\n",[259,307,311],{"className":308,"code":309,"language":310,"meta":264,"style":264},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"projects\": [\n    { \"name\": \"backend\", \"build_system\": \"NPM\", \"branch\": \"main\", \"excluded_scopes\": [\"dev\"] },\n    { \"name\": \"legacy\", \"build_system\": \"MAVEN\", \"subfolder\": \"modules\u002Fworker\"},\n    { \"name\": \"payments\", \"build_system\": \"GRADLE\", \"excluded_scopes\": [\"test\"] },\n    { \"name\": \"billing\", \"build_system\": \"SBT\", \"excluded_scopes\": [\"test\"] },\n    { \"name\": \"storefront\", \"build_system\": \"COMPOSER\", \"excluded_scopes\": [\"require-dev\"] }\n  ]\n}\n","json",[124,312,313,319,336,422,480,540,599,660,666],{"__ignoreMap":264},[268,314,315],{"class":270,"line":271},[268,316,318],{"class":317},"sMK4o","{\n",[268,320,321,324,328,331,333],{"class":270,"line":282},[268,322,323],{"class":317},"  \"",[268,325,327],{"class":326},"spNyl","projects",[268,329,330],{"class":317},"\"",[268,332,290],{"class":317},[268,334,335],{"class":317}," [\n",[268,337,338,341,344,347,349,351,353,356,358,361,363,366,368,370,372,375,377,379,381,384,386,388,390,393,395,397,399,402,404,406,409,411,414,416,419],{"class":270,"line":297},[268,339,340],{"class":317},"    {",[268,342,343],{"class":317}," \"",[268,345,126],{"class":346},"sBMFI",[268,348,330],{"class":317},[268,350,290],{"class":317},[268,352,343],{"class":317},[268,354,355],{"class":293},"backend",[268,357,330],{"class":317},[268,359,360],{"class":317},",",[268,362,343],{"class":317},[268,364,365],{"class":346},"build_system",[268,367,330],{"class":317},[268,369,290],{"class":317},[268,371,343],{"class":317},[268,373,374],{"class":293},"NPM",[268,376,330],{"class":317},[268,378,360],{"class":317},[268,380,343],{"class":317},[268,382,383],{"class":346},"branch",[268,385,330],{"class":317},[268,387,290],{"class":317},[268,389,343],{"class":317},[268,391,392],{"class":293},"main",[268,394,330],{"class":317},[268,396,360],{"class":317},[268,398,343],{"class":317},[268,400,401],{"class":346},"excluded_scopes",[268,403,330],{"class":317},[268,405,290],{"class":317},[268,407,408],{"class":317}," [",[268,410,330],{"class":317},[268,412,413],{"class":293},"dev",[268,415,330],{"class":317},[268,417,418],{"class":317},"]",[268,420,421],{"class":317}," },\n",[268,423,425,427,429,431,433,435,437,440,442,444,446,448,450,452,454,457,459,461,463,466,468,470,472,475,477],{"class":270,"line":424},4,[268,426,340],{"class":317},[268,428,343],{"class":317},[268,430,126],{"class":346},[268,432,330],{"class":317},[268,434,290],{"class":317},[268,436,343],{"class":317},[268,438,439],{"class":293},"legacy",[268,441,330],{"class":317},[268,443,360],{"class":317},[268,445,343],{"class":317},[268,447,365],{"class":346},[268,449,330],{"class":317},[268,451,290],{"class":317},[268,453,343],{"class":317},[268,455,456],{"class":293},"MAVEN",[268,458,330],{"class":317},[268,460,360],{"class":317},[268,462,343],{"class":317},[268,464,465],{"class":346},"subfolder",[268,467,330],{"class":317},[268,469,290],{"class":317},[268,471,343],{"class":317},[268,473,474],{"class":293},"modules\u002Fworker",[268,476,330],{"class":317},[268,478,479],{"class":317},"},\n",[268,481,483,485,487,489,491,493,495,498,500,502,504,506,508,510,512,515,517,519,521,523,525,527,529,531,534,536,538],{"class":270,"line":482},5,[268,484,340],{"class":317},[268,486,343],{"class":317},[268,488,126],{"class":346},[268,490,330],{"class":317},[268,492,290],{"class":317},[268,494,343],{"class":317},[268,496,497],{"class":293},"payments",[268,499,330],{"class":317},[268,501,360],{"class":317},[268,503,343],{"class":317},[268,505,365],{"class":346},[268,507,330],{"class":317},[268,509,290],{"class":317},[268,511,343],{"class":317},[268,513,514],{"class":293},"GRADLE",[268,516,330],{"class":317},[268,518,360],{"class":317},[268,520,343],{"class":317},[268,522,401],{"class":346},[268,524,330],{"class":317},[268,526,290],{"class":317},[268,528,408],{"class":317},[268,530,330],{"class":317},[268,532,533],{"class":293},"test",[268,535,330],{"class":317},[268,537,418],{"class":317},[268,539,421],{"class":317},[268,541,543,545,547,549,551,553,555,558,560,562,564,566,568,570,572,575,577,579,581,583,585,587,589,591,593,595,597],{"class":270,"line":542},6,[268,544,340],{"class":317},[268,546,343],{"class":317},[268,548,126],{"class":346},[268,550,330],{"class":317},[268,552,290],{"class":317},[268,554,343],{"class":317},[268,556,557],{"class":293},"billing",[268,559,330],{"class":317},[268,561,360],{"class":317},[268,563,343],{"class":317},[268,565,365],{"class":346},[268,567,330],{"class":317},[268,569,290],{"class":317},[268,571,343],{"class":317},[268,573,574],{"class":293},"SBT",[268,576,330],{"class":317},[268,578,360],{"class":317},[268,580,343],{"class":317},[268,582,401],{"class":346},[268,584,330],{"class":317},[268,586,290],{"class":317},[268,588,408],{"class":317},[268,590,330],{"class":317},[268,592,533],{"class":293},[268,594,330],{"class":317},[268,596,418],{"class":317},[268,598,421],{"class":317},[268,600,602,604,606,608,610,612,614,617,619,621,623,625,627,629,631,634,636,638,640,642,644,646,648,650,653,655,657],{"class":270,"line":601},7,[268,603,340],{"class":317},[268,605,343],{"class":317},[268,607,126],{"class":346},[268,609,330],{"class":317},[268,611,290],{"class":317},[268,613,343],{"class":317},[268,615,616],{"class":293},"storefront",[268,618,330],{"class":317},[268,620,360],{"class":317},[268,622,343],{"class":317},[268,624,365],{"class":346},[268,626,330],{"class":317},[268,628,290],{"class":317},[268,630,343],{"class":317},[268,632,633],{"class":293},"COMPOSER",[268,635,330],{"class":317},[268,637,360],{"class":317},[268,639,343],{"class":317},[268,641,401],{"class":346},[268,643,330],{"class":317},[268,645,290],{"class":317},[268,647,408],{"class":317},[268,649,330],{"class":317},[268,651,652],{"class":293},"require-dev",[268,654,330],{"class":317},[268,656,418],{"class":317},[268,658,659],{"class":317}," }\n",[268,661,663],{"class":270,"line":662},8,[268,664,665],{"class":317},"  ]\n",[268,667,669],{"class":270,"line":668},9,[268,670,671],{"class":317},"}\n",[120,673,674],{},"Each entry carries exactly the fields of the upload form in the interface:",[676,677,678,694],"table",{},[679,680,681],"thead",{},[682,683,684,688,691],"tr",{},[685,686,687],"th",{},"Field",[685,689,690],{},"Required",[685,692,693],{},"Description",[695,696,697,710,736,752,767],"tbody",{},[682,698,699,704,707],{},[700,701,702],"td",{},[124,703,126],{},[700,705,706],{},"yes",[700,708,709],{},"1 to 255 characters. Leading and trailing spaces are removed",[682,711,712,716,718],{},[700,713,714],{},[124,715,365],{},[700,717,706],{},[700,719,720,722,723,722,725,722,727,729,730,732,733],{},[124,721,456],{},", ",[124,724,514],{},[124,726,574],{},[124,728,374],{}," or ",[124,731,633],{},". ",[148,734,735],{},"Fixed at creation",[682,737,738,742,745],{},[700,739,740],{},[124,741,383],{},[700,743,744],{},"no",[700,746,747,748,751],{},"A label displayed in the interface, not a branch Deptools reads. Defaults to ",[124,749,750],{},"default",", editable later",[682,753,754,758,760],{},[700,755,756],{},[124,757,465],{},[700,759,744],{},[700,761,762,763,766],{},"The module to analyze, for example ",[124,764,765],{},"services\u002Fapi",". Empty or absent analyzes the repository root. Editable later",[682,768,769,773,775],{},[700,770,771],{},[124,772,401],{},[700,774,744],{},[700,776,777,778],{},"The scope keys to keep out of the analysis, taken from the table below. Absent excludes nothing. ",[148,779,735],{},[120,781,782],{},"Send 1 to 100 entries per request, and split anything larger into several batches.",[120,784,785],{},"Projects are always created in the organization the key belongs to. This endpoint\ncannot target another one.",[204,787,789],{"id":788},"scope-keys-per-build-system","Scope keys per build system",[120,791,792,793,795,796,798,799,801],{},"Every scope has a key, and ",[124,794,401],{}," takes the key, never the label the\ninterface shows. The vocabulary is not the same across build systems: the\ndevelopment block is ",[124,797,413],{}," on npm and ",[124,800,652],{}," on Composer.",[676,803,804,818],{},[679,805,806],{},[682,807,808,812,815],{},[685,809,810],{},[124,811,365],{},[685,813,814],{},"Scope keys, with the label shown in the interface",[685,816,817],{},"Same as the interface default",[695,819,820,852,882,904,930],{},[682,821,822,826,847],{},[700,823,824],{},[124,825,456],{},[700,827,828,830,831,834,835,838,839,842,843,846],{},[124,829,533],{}," (Test), ",[124,832,833],{},"provided"," (Provided), ",[124,836,837],{},"optional"," (Optional), ",[124,840,841],{},"runtime"," (Runtime), ",[124,844,845],{},"compile"," (Compile)",[700,848,849],{},[124,850,851],{},"[\"test\"]",[682,853,854,858,878],{},[700,855,856],{},[124,857,514],{},[700,859,860,830,862,865,866,869,870,873,874,838,876,846],{},[124,861,533],{},[124,863,864],{},"annotationProcessor"," (Annotation Processor), ",[124,867,868],{},"compileOnly"," (Compile Only), ",[124,871,872],{},"runtimeOnly"," (Runtime Only), ",[124,875,837],{},[124,877,845],{},[700,879,880],{},[124,881,851],{},[682,883,884,888,900],{},[700,885,886],{},[124,887,574],{},[700,889,890,830,892,834,894,838,896,842,898,846],{},[124,891,533],{},[124,893,833],{},[124,895,837],{},[124,897,841],{},[124,899,845],{},[700,901,902],{},[124,903,851],{},[682,905,906,910,925],{},[700,907,908],{},[124,909,374],{},[700,911,912,914,915,838,917,920,921,924],{},[124,913,413],{}," (Development), ",[124,916,837],{},[124,918,919],{},"peer"," (Peer), ",[124,922,923],{},"prod"," (Production)",[700,926,927],{},[124,928,929],{},"[\"dev\"]",[682,931,932,936,945],{},[700,933,934],{},[124,935,633],{},[700,937,938,940,941,944],{},[124,939,652],{}," (Require Dev), ",[124,942,943],{},"require"," (Require)",[700,946,947],{},[124,948,949],{},"[\"require-dev\"]",[120,951,952,954],{},[136,953,43],{"href":44}," explains what each\nkey covers and which ones are worth excluding.",[120,956,957],{},"Three rules apply to every key:",[160,959,960,980,994],{},[163,961,962,965,966,969,970,973,974,976,977,979],{},[148,963,964],{},"Keys are case sensitive."," ",[124,967,968],{},"Test"," is refused with a ",[124,971,972],{},"422",", and the whole\nbatch with it. Watch the camelCase keys of Gradle and the hyphen of\n",[124,975,652],{},", since ",[124,978,365],{}," right next to them is uppercase.",[163,981,982,987,988,990,991,993],{},[148,983,984,986],{},[124,985,533],{}," works on every build system."," It always means the test block, so it\nstands for ",[124,989,413],{}," on npm and for ",[124,992,652],{}," on Composer. Write it if you\ngenerate your file from a script and would rather not carry this table.",[163,995,996,999,1001,1002,1004,1005,1008],{},[148,997,998],{},"A key from another build system is accepted and filters nothing.",[124,1000,864],{}," on an ",[124,1003,374],{}," entry returns a ",[124,1006,1007],{},"200"," and has no effect.\nNothing warns you, so read the table before you send 100 entries.",[1010,1011,1012,1018],"warning",{},[148,1013,1014,1015,1017],{},"Omitting ",[124,1016,401],{}," excludes nothing."," The interface form excludes your\ntest scope for you, this endpoint does not. A batch sent without the field\nanalyzes the test and development dependencies of every project it creates.\nNothing fixes that afterwards, since the selection is fixed at creation. Delete\nthe projects and create them again.",[140,1020,1022],{"id":1021},"read-the-response","Read the response",[259,1024,1026],{"className":308,"code":1025,"language":310,"meta":264,"style":264},"{\n  \"projects\": [\n    { \"name\": \"backend\", \"uuid\": \"3f2b...\", \"created\": true },\n    { \"name\": \"legacy\", \"uuid\": \"c04e...\", \"created\": false },\n    { \"name\": \"payments\", \"uuid\": \"1b95...\", \"created\": true },\n    { \"name\": \"billing\", \"uuid\": \"9a71...\", \"created\": true },\n    { \"name\": \"storefront\", \"uuid\": \"7d38...\", \"created\": true }\n  ],\n  \"slots\": {\n    \"occupied\": 30,\n    \"included\": 5,\n    \"extra\": 25,\n    \"capacity\": 30,\n    \"available\": 0,\n    \"overAllocated\": false\n  }\n}\n",[124,1027,1028,1032,1044,1095,1145,1194,1243,1292,1297,1311,1330,1347,1364,1380,1397,1412,1418],{"__ignoreMap":264},[268,1029,1030],{"class":270,"line":271},[268,1031,318],{"class":317},[268,1033,1034,1036,1038,1040,1042],{"class":270,"line":282},[268,1035,323],{"class":317},[268,1037,327],{"class":326},[268,1039,330],{"class":317},[268,1041,290],{"class":317},[268,1043,335],{"class":317},[268,1045,1046,1048,1050,1052,1054,1056,1058,1060,1062,1064,1066,1068,1070,1072,1074,1077,1079,1081,1083,1086,1088,1090,1093],{"class":270,"line":297},[268,1047,340],{"class":317},[268,1049,343],{"class":317},[268,1051,126],{"class":346},[268,1053,330],{"class":317},[268,1055,290],{"class":317},[268,1057,343],{"class":317},[268,1059,355],{"class":293},[268,1061,330],{"class":317},[268,1063,360],{"class":317},[268,1065,343],{"class":317},[268,1067,130],{"class":346},[268,1069,330],{"class":317},[268,1071,290],{"class":317},[268,1073,343],{"class":317},[268,1075,1076],{"class":293},"3f2b...",[268,1078,330],{"class":317},[268,1080,360],{"class":317},[268,1082,343],{"class":317},[268,1084,1085],{"class":346},"created",[268,1087,330],{"class":317},[268,1089,290],{"class":317},[268,1091,1092],{"class":317}," true",[268,1094,421],{"class":317},[268,1096,1097,1099,1101,1103,1105,1107,1109,1111,1113,1115,1117,1119,1121,1123,1125,1128,1130,1132,1134,1136,1138,1140,1143],{"class":270,"line":424},[268,1098,340],{"class":317},[268,1100,343],{"class":317},[268,1102,126],{"class":346},[268,1104,330],{"class":317},[268,1106,290],{"class":317},[268,1108,343],{"class":317},[268,1110,439],{"class":293},[268,1112,330],{"class":317},[268,1114,360],{"class":317},[268,1116,343],{"class":317},[268,1118,130],{"class":346},[268,1120,330],{"class":317},[268,1122,290],{"class":317},[268,1124,343],{"class":317},[268,1126,1127],{"class":293},"c04e...",[268,1129,330],{"class":317},[268,1131,360],{"class":317},[268,1133,343],{"class":317},[268,1135,1085],{"class":346},[268,1137,330],{"class":317},[268,1139,290],{"class":317},[268,1141,1142],{"class":317}," false",[268,1144,421],{"class":317},[268,1146,1147,1149,1151,1153,1155,1157,1159,1161,1163,1165,1167,1169,1171,1173,1175,1178,1180,1182,1184,1186,1188,1190,1192],{"class":270,"line":482},[268,1148,340],{"class":317},[268,1150,343],{"class":317},[268,1152,126],{"class":346},[268,1154,330],{"class":317},[268,1156,290],{"class":317},[268,1158,343],{"class":317},[268,1160,497],{"class":293},[268,1162,330],{"class":317},[268,1164,360],{"class":317},[268,1166,343],{"class":317},[268,1168,130],{"class":346},[268,1170,330],{"class":317},[268,1172,290],{"class":317},[268,1174,343],{"class":317},[268,1176,1177],{"class":293},"1b95...",[268,1179,330],{"class":317},[268,1181,360],{"class":317},[268,1183,343],{"class":317},[268,1185,1085],{"class":346},[268,1187,330],{"class":317},[268,1189,290],{"class":317},[268,1191,1092],{"class":317},[268,1193,421],{"class":317},[268,1195,1196,1198,1200,1202,1204,1206,1208,1210,1212,1214,1216,1218,1220,1222,1224,1227,1229,1231,1233,1235,1237,1239,1241],{"class":270,"line":542},[268,1197,340],{"class":317},[268,1199,343],{"class":317},[268,1201,126],{"class":346},[268,1203,330],{"class":317},[268,1205,290],{"class":317},[268,1207,343],{"class":317},[268,1209,557],{"class":293},[268,1211,330],{"class":317},[268,1213,360],{"class":317},[268,1215,343],{"class":317},[268,1217,130],{"class":346},[268,1219,330],{"class":317},[268,1221,290],{"class":317},[268,1223,343],{"class":317},[268,1225,1226],{"class":293},"9a71...",[268,1228,330],{"class":317},[268,1230,360],{"class":317},[268,1232,343],{"class":317},[268,1234,1085],{"class":346},[268,1236,330],{"class":317},[268,1238,290],{"class":317},[268,1240,1092],{"class":317},[268,1242,421],{"class":317},[268,1244,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1276,1278,1280,1282,1284,1286,1288,1290],{"class":270,"line":601},[268,1246,340],{"class":317},[268,1248,343],{"class":317},[268,1250,126],{"class":346},[268,1252,330],{"class":317},[268,1254,290],{"class":317},[268,1256,343],{"class":317},[268,1258,616],{"class":293},[268,1260,330],{"class":317},[268,1262,360],{"class":317},[268,1264,343],{"class":317},[268,1266,130],{"class":346},[268,1268,330],{"class":317},[268,1270,290],{"class":317},[268,1272,343],{"class":317},[268,1274,1275],{"class":293},"7d38...",[268,1277,330],{"class":317},[268,1279,360],{"class":317},[268,1281,343],{"class":317},[268,1283,1085],{"class":346},[268,1285,330],{"class":317},[268,1287,290],{"class":317},[268,1289,1092],{"class":317},[268,1291,659],{"class":317},[268,1293,1294],{"class":270,"line":662},[268,1295,1296],{"class":317},"  ],\n",[268,1298,1299,1301,1304,1306,1308],{"class":270,"line":668},[268,1300,323],{"class":317},[268,1302,1303],{"class":326},"slots",[268,1305,330],{"class":317},[268,1307,290],{"class":317},[268,1309,1310],{"class":317}," {\n",[268,1312,1314,1317,1320,1322,1324,1327],{"class":270,"line":1313},10,[268,1315,1316],{"class":317},"    \"",[268,1318,1319],{"class":346},"occupied",[268,1321,330],{"class":317},[268,1323,290],{"class":317},[268,1325,1326],{"class":289}," 30",[268,1328,1329],{"class":317},",\n",[268,1331,1333,1335,1338,1340,1342,1345],{"class":270,"line":1332},11,[268,1334,1316],{"class":317},[268,1336,1337],{"class":346},"included",[268,1339,330],{"class":317},[268,1341,290],{"class":317},[268,1343,1344],{"class":289}," 5",[268,1346,1329],{"class":317},[268,1348,1350,1352,1355,1357,1359,1362],{"class":270,"line":1349},12,[268,1351,1316],{"class":317},[268,1353,1354],{"class":346},"extra",[268,1356,330],{"class":317},[268,1358,290],{"class":317},[268,1360,1361],{"class":289}," 25",[268,1363,1329],{"class":317},[268,1365,1367,1369,1372,1374,1376,1378],{"class":270,"line":1366},13,[268,1368,1316],{"class":317},[268,1370,1371],{"class":346},"capacity",[268,1373,330],{"class":317},[268,1375,290],{"class":317},[268,1377,1326],{"class":289},[268,1379,1329],{"class":317},[268,1381,1383,1385,1388,1390,1392,1395],{"class":270,"line":1382},14,[268,1384,1316],{"class":317},[268,1386,1387],{"class":346},"available",[268,1389,330],{"class":317},[268,1391,290],{"class":317},[268,1393,1394],{"class":289}," 0",[268,1396,1329],{"class":317},[268,1398,1400,1402,1405,1407,1409],{"class":270,"line":1399},15,[268,1401,1316],{"class":317},[268,1403,1404],{"class":346},"overAllocated",[268,1406,330],{"class":317},[268,1408,290],{"class":317},[268,1410,1411],{"class":317}," false\n",[268,1413,1415],{"class":270,"line":1414},16,[268,1416,1417],{"class":317},"  }\n",[268,1419,1421],{"class":270,"line":1420},17,[268,1422,671],{"class":317},[120,1424,1425,1426,1429],{},"The response lists ",[148,1427,1428],{},"every"," entry you sent, in the same order, whether the\nproject was just created or already existed. You can therefore join it to your\nown file line by line. Names come back as you wrote them, minus the leading and\ntrailing spaces.",[120,1431,1432,1434],{},[124,1433,1303],{}," reports your private slots once the batch is applied, so it tells you\nwhat the batch cost:",[676,1436,1437,1446],{},[679,1438,1439],{},[682,1440,1441,1443],{},[685,1442,687],{},[685,1444,1445],{},"Meaning",[695,1447,1448,1457,1466,1475,1488,1497],{},[682,1449,1450,1454],{},[700,1451,1452],{},[124,1453,1319],{},[700,1455,1456],{},"Private projects that exist right now",[682,1458,1459,1463],{},[700,1460,1461],{},[124,1462,1337],{},[700,1464,1465],{},"Slots bundled with the plan, 5 on Pro",[682,1467,1468,1472],{},[700,1469,1470],{},[124,1471,1354],{},[700,1473,1474],{},"Slots bought on top of the plan",[682,1476,1477,1481],{},[700,1478,1479],{},[124,1480,1371],{},[700,1482,1483,1485,1486],{},[124,1484,1337],{}," plus ",[124,1487,1354],{},[682,1489,1490,1494],{},[700,1491,1492],{},[124,1493,1387],{},[700,1495,1496],{},"Slots you can still use, never negative",[682,1498,1499,1503],{},[700,1500,1501],{},[124,1502,1404],{},[700,1504,1505,1508],{},[124,1506,1507],{},"true"," when more private projects exist than the capacity allows",[120,1510,1511,1512,1514],{},"The response also includes ",[124,1513,1303],{}," when the batch is refused. There it reports\nthe state the batch started from, since no projects were created.",[140,1516,1518],{"id":1517},"replaying-the-same-batch-is-safe","Replaying the same batch is safe",[120,1520,1521,1522,1525],{},"The endpoint finds or creates. An entry whose name already exists in the organization\nreturns the existing project's UUID with ",[124,1523,1524],{},"created: false",", inserts nothing and\nuses no slot.",[120,1527,1528],{},"This makes retries safe. If your request times out, if your install script stops\nhalfway, if you no longer know where you stopped, retry the same file. You get\nthe complete table, the same UUIDs,\nand nothing is duplicated or billed twice. A replay is never refused for missing\nslots, even in an organization that has none free.",[120,1530,1531,1532,1534],{},"So ",[124,1533,1524],{}," is not an error. On a replay it is the normal case.",[204,1536,1538],{"id":1537},"names-match-ignoring-case-and-spaces","Names match ignoring case and spaces",[120,1540,1541,1544,1545,1548],{},[124,1542,1543],{},"Backend-API"," and ",[124,1546,1547],{},"backend-api"," are the same project to this endpoint, and so are a\nname with surrounding spaces and the same name without them. Without that,\nreplaying your file with one capital letter changed would create a second, nearly\nidentical project you never asked for.",[120,1550,1551],{},"Two consequences:",[160,1553,1554,1557],{},[163,1555,1556],{},"two entries of the same file that differ only by case are refused as a\nduplicate;",[163,1558,1559,1560,1563],{},"the response gives you the name ",[148,1561,1562],{},"as you sent it",", even when the stored\nproject spells it differently, so you can always join it back to your file.",[120,1565,1566,1567,1570,1571,1573,1574,1576],{},"The rest of Deptools stays case sensitive. An organization can hold ",[124,1568,1569],{},"Name"," and\n",[124,1572,126],{}," as two distinct projects, created in the interface. In that case, an entry\nasking for ",[124,1575,126],{}," returns the project whose name matches exactly, and the oldest\nof the two if neither matches.",[140,1578,1580],{"id":1579},"the-batch-is-all-or-nothing","The batch is all or nothing",[120,1582,1583],{},"Capacity is checked before the first write. If there are not enough slots for the entire batch, no project is created and the response tells you how many to buy:",[259,1585,1587],{"className":308,"code":1586,"language":310,"meta":264,"style":264},"{\n  \"errors\": [\n    {\n      \"message\": \"30 projects to create, 12 free private slots: buy 18 more to run this batch. Nothing was created.\",\n      \"code\": \"NO_FREE_SLOT\",\n      \"needed\": 30,\n      \"available\": 12,\n      \"missing\": 18\n    }\n  ],\n  \"slots\": {\n    \"occupied\": 18,\n    \"included\": 5,\n    \"extra\": 25,\n    \"capacity\": 30,\n    \"available\": 12,\n    \"overAllocated\": false\n  }\n}\n",[124,1588,1589,1593,1606,1611,1632,1651,1666,1681,1695,1700,1704,1716,1731,1745,1759,1773,1787,1799,1804],{"__ignoreMap":264},[268,1590,1591],{"class":270,"line":271},[268,1592,318],{"class":317},[268,1594,1595,1597,1600,1602,1604],{"class":270,"line":282},[268,1596,323],{"class":317},[268,1598,1599],{"class":326},"errors",[268,1601,330],{"class":317},[268,1603,290],{"class":317},[268,1605,335],{"class":317},[268,1607,1608],{"class":270,"line":297},[268,1609,1610],{"class":317},"    {\n",[268,1612,1613,1616,1619,1621,1623,1625,1628,1630],{"class":270,"line":424},[268,1614,1615],{"class":317},"      \"",[268,1617,1618],{"class":346},"message",[268,1620,330],{"class":317},[268,1622,290],{"class":317},[268,1624,343],{"class":317},[268,1626,1627],{"class":293},"30 projects to create, 12 free private slots: buy 18 more to run this batch. Nothing was created.",[268,1629,330],{"class":317},[268,1631,1329],{"class":317},[268,1633,1634,1636,1638,1640,1642,1644,1647,1649],{"class":270,"line":482},[268,1635,1615],{"class":317},[268,1637,124],{"class":346},[268,1639,330],{"class":317},[268,1641,290],{"class":317},[268,1643,343],{"class":317},[268,1645,1646],{"class":293},"NO_FREE_SLOT",[268,1648,330],{"class":317},[268,1650,1329],{"class":317},[268,1652,1653,1655,1658,1660,1662,1664],{"class":270,"line":542},[268,1654,1615],{"class":317},[268,1656,1657],{"class":346},"needed",[268,1659,330],{"class":317},[268,1661,290],{"class":317},[268,1663,1326],{"class":289},[268,1665,1329],{"class":317},[268,1667,1668,1670,1672,1674,1676,1679],{"class":270,"line":601},[268,1669,1615],{"class":317},[268,1671,1387],{"class":346},[268,1673,330],{"class":317},[268,1675,290],{"class":317},[268,1677,1678],{"class":289}," 12",[268,1680,1329],{"class":317},[268,1682,1683,1685,1688,1690,1692],{"class":270,"line":662},[268,1684,1615],{"class":317},[268,1686,1687],{"class":346},"missing",[268,1689,330],{"class":317},[268,1691,290],{"class":317},[268,1693,1694],{"class":289}," 18\n",[268,1696,1697],{"class":270,"line":668},[268,1698,1699],{"class":317},"    }\n",[268,1701,1702],{"class":270,"line":1313},[268,1703,1296],{"class":317},[268,1705,1706,1708,1710,1712,1714],{"class":270,"line":1332},[268,1707,323],{"class":317},[268,1709,1303],{"class":326},[268,1711,330],{"class":317},[268,1713,290],{"class":317},[268,1715,1310],{"class":317},[268,1717,1718,1720,1722,1724,1726,1729],{"class":270,"line":1349},[268,1719,1316],{"class":317},[268,1721,1319],{"class":346},[268,1723,330],{"class":317},[268,1725,290],{"class":317},[268,1727,1728],{"class":289}," 18",[268,1730,1329],{"class":317},[268,1732,1733,1735,1737,1739,1741,1743],{"class":270,"line":1366},[268,1734,1316],{"class":317},[268,1736,1337],{"class":346},[268,1738,330],{"class":317},[268,1740,290],{"class":317},[268,1742,1344],{"class":289},[268,1744,1329],{"class":317},[268,1746,1747,1749,1751,1753,1755,1757],{"class":270,"line":1382},[268,1748,1316],{"class":317},[268,1750,1354],{"class":346},[268,1752,330],{"class":317},[268,1754,290],{"class":317},[268,1756,1361],{"class":289},[268,1758,1329],{"class":317},[268,1760,1761,1763,1765,1767,1769,1771],{"class":270,"line":1399},[268,1762,1316],{"class":317},[268,1764,1371],{"class":346},[268,1766,330],{"class":317},[268,1768,290],{"class":317},[268,1770,1326],{"class":289},[268,1772,1329],{"class":317},[268,1774,1775,1777,1779,1781,1783,1785],{"class":270,"line":1414},[268,1776,1316],{"class":317},[268,1778,1387],{"class":346},[268,1780,330],{"class":317},[268,1782,290],{"class":317},[268,1784,1678],{"class":289},[268,1786,1329],{"class":317},[268,1788,1789,1791,1793,1795,1797],{"class":270,"line":1420},[268,1790,1316],{"class":317},[268,1792,1404],{"class":346},[268,1794,330],{"class":317},[268,1796,290],{"class":317},[268,1798,1411],{"class":317},[268,1800,1802],{"class":270,"line":1801},18,[268,1803,1417],{"class":317},[268,1805,1807],{"class":270,"line":1806},19,[268,1808,671],{"class":317},[120,1810,1811,1812,1814],{},"Only the projects that do not exist yet count toward ",[124,1813,1657],{},", so a batch of 30\nentries where 20 already exist needs 10 slots. Buy the missing slots and retry\nthe same file.",[140,1816,1818],{"id":1817},"two-things-to-check-before-you-run-it","Two things to check before you run it",[120,1820,1821,1824,1825,1827,1828,1830,1831,1833,1834,1837],{},[148,1822,1823],{},"A name already taken by a GitHub project returns that project's UUID.","\nProject names are unique inside an organization, all types together, and this\nendpoint does not tell them apart. If your organization already holds a GitHub\nproject named ",[124,1826,1547],{}," and your file asks for ",[124,1829,1547],{},", you get its\nUUID with ",[124,1832,1524],{},". Your pipeline is then refused with ",[124,1835,1836],{},"This project is linked to a Git repository: the scan endpoint takes no request body."," This is the\none case where the table you get back is not directly usable. Check the names\nfirst, or prefix the ones in your batch.",[120,1839,1840,1843,1844,1846,1847,1849,1850,1852],{},[148,1841,1842],{},"An existing project is returned as it is, never updated."," If you fix the\n",[124,1845,365],{},", the ",[124,1848,465],{}," or the ",[124,1851,401],{}," of an entry and replay,\nnothing changes on the existing project. The subfolder and the branch are\neditable in the project settings. The build system and the scope keys are not: to\nchange them, delete the project and create it again. The freed slot stays paid\nand reusable, so that costs nothing.",[140,1854,1856],{"id":1855},"after-the-batch","After the batch",[120,1858,1859,1860,1863],{},"The projects appear in the interface immediately, with ",[148,1861,1862],{},"no analysis",". That is\nexpected: there are no files yet. The first analysis comes from the first CI\npush, exactly like an upload project created in the interface. A freshly\nprovisioned portfolio therefore shows nothing but empty cards until your\npipelines run.",[120,1865,1866,1867,239],{},"Now distribute the UUIDs to your pipelines and add the scan job, described in\n",[136,1868,54],{"href":55},[140,1870,1871],{"id":1599},"Errors",[676,1873,1874,1886],{},[679,1875,1876],{},[682,1877,1878,1881,1884],{},[685,1879,1880],{},"HTTP",[685,1882,1883],{},"Code",[685,1885,1445],{},[695,1887,1888,1898,1910,1930,1939,1955,1967,1980,1995,2011,2026],{},[682,1889,1890,1893,1895],{},[700,1891,1892],{},"401",[700,1894],{},[700,1896,1897],{},"Key missing or invalid",[682,1899,1900,1902,1907],{},[700,1901,1892],{},[700,1903,1904],{},[124,1905,1906],{},"API_KEY_EXPIRED",[700,1908,1909],{},"Key expired",[682,1911,1912,1915,1919],{},[700,1913,1914],{},"402",[700,1916,1917],{},[124,1918,1646],{},[700,1920,1921,1922,722,1924,722,1926,1544,1928],{},"Not enough private slots available. The body carries ",[124,1923,1657],{},[124,1925,1387],{},[124,1927,1687],{},[124,1929,1303],{},[682,1931,1932,1934,1936],{},[700,1933,213],{},[700,1935],{},[700,1937,1938],{},"The key does not have the permission to create projects",[682,1940,1941,1943,1948],{},[700,1942,213],{},[700,1944,1945],{},[124,1946,1947],{},"ORGANIZATION_KEY_REQUIRED",[700,1949,1950,1951,1954],{},"Project scoped key (",[124,1952,1953],{},"dt_proj_...","). This endpoint needs an organization key",[682,1956,1957,1959,1964],{},[700,1958,213],{},[700,1960,1961],{},[124,1962,1963],{},"PRO_PLAN_REQUIRED",[700,1965,1966],{},"The organization is not on the Pro plan. Free and Open Source Max cannot hold private projects",[682,1968,1969,1972,1977],{},[700,1970,1971],{},"409",[700,1973,1974],{},[124,1975,1976],{},"NAME_CONFLICT",[700,1978,1979],{},"A project of the same name was created elsewhere at the same moment. No projects were created, retry the same file",[682,1981,1982,1984,1989],{},[700,1983,972],{},[700,1985,1986],{},[124,1987,1988],{},"DUPLICATE_NAMES_IN_BATCH",[700,1990,1991,1992],{},"Two entries of your file carry the same name. The body lists them in ",[124,1993,1994],{},"names",[682,1996,1997,1999,2004],{},[700,1998,972],{},[700,2000,2001],{},[124,2002,2003],{},"GITHUB_PROJECTS_NOT_SUPPORTED",[700,2005,2006,2007,2010],{},"An entry carries a ",[124,2008,2009],{},"repository"," field. This endpoint creates upload projects only",[682,2012,2013,2015,2017],{},[700,2014,972],{},[700,2016],{},[700,2018,2019,2020,2022,2023,2025],{},"Invalid body: empty batch, more than 100 entries, ",[124,2021,365],{}," missing or unknown, empty ",[124,2024,126],{},", unknown or miscased scope key",[682,2027,2028,2031,2033],{},[700,2029,2030],{},"429",[700,2032],{},[700,2034,2035],{},"The limit of 10 requests per hour is reached",[120,2037,2038,2041],{},[148,2039,2040],{},"None"," of these responses leaves a project behind. Whatever the error, your\norganization stays exactly as it was, since a batch is never half applied.\nCorrect what the message says and retry the same file.",[2043,2044,2045],"style",{},"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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .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}",{"title":264,"searchDepth":282,"depth":282,"links":2047},[2048,2049,2052,2055,2056,2059,2060,2061,2062],{"id":142,"depth":282,"text":143},{"id":157,"depth":282,"text":158,"children":2050},[2051],{"id":206,"depth":297,"text":207},{"id":256,"depth":282,"text":257,"children":2053},[2054],{"id":788,"depth":297,"text":789},{"id":1021,"depth":282,"text":1022},{"id":1517,"depth":282,"text":1518,"children":2057},[2058],{"id":1537,"depth":297,"text":1538},{"id":1579,"depth":282,"text":1580},{"id":1817,"depth":282,"text":1818},{"id":1855,"depth":282,"text":1856},{"id":1599,"depth":282,"text":1871},"Provision a whole portfolio of CI upload projects in one API request, and get back the name to UUID mapping your pipelines need.","md",null,{},{"icon":67,"group":52},{"title":64,"description":2063},"lRcCncJC4TQ_K2pHeEsGvZXe8yhFe49hTXBPhLRMnLk",[2071,2073],{"title":59,"path":60,"stem":61,"description":2072,"icon":62,"group":52,"children":-1},"Create, store and revoke the project and organization keys used by your pipelines.",{"title":69,"path":70,"stem":71,"description":2074,"icon":72,"group":73,"children":-1},"Produce a CSV audit report, a CycloneDX or SPDX SBOM, and graph exports.",1787263157478]