[{"data":1,"prerenderedAt":1034},["ShallowReactive",2],{"docs:\u002Fguide\u002Fdashboard":3},{"page":4,"untranslated":1033,"translated":1033},{"id":5,"title":6,"body":7,"description":1024,"extension":1025,"meta":1026,"navigation":72,"path":1027,"publishedAt":1028,"seo":1029,"stem":1030,"updatedAt":1031,"__hash__":1032},"docs_ja\u002Fguide\u002Fdashboard.md","ダッシュボードと認証",{"type":8,"value":9,"toc":1003},"minimark",[10,13,25,30,35,148,155,159,177,187,191,197,259,312,315,365,504,507,522,548,599,602,631,716,743,746,765,772,775,781,784,793,796,817,820,832,835,838,856,862,865,887,901,904,929,933,944,956,962,974,986,999],[11,12,6],"h1",{"id":6},[14,15,17],"callout",{"type":16},"warning",[18,19,20,24],"p",{},[21,22,23],"code",{},"auth","を指定しない場合、REST APIとダッシュボードへのすべてのリクエストに404で応答します。",[26,27,29],"h2",{"id":28},"bearerauth","bearerAuth",[18,31,32,34],{},[21,33,29],{},"は、単一のトークンを用いてリクエストを認証します。",[36,37,42],"pre",{"className":38,"code":39,"language":40,"meta":41,"style":41},"language-ts shiki shiki-themes github-light github-dark","import { bearerAuth, defineTsumugi } from 'tsumugi';\n\nconst tsumugi = defineTsumugi({\n  performers,\n  auth: bearerAuth((env: Env) => env.TSUMUGI_TOKEN, { cookie: 'tsumugi_token' }),\n});\n","ts","",[21,43,44,67,74,94,100,142],{"__ignoreMap":41},[45,46,49,53,57,60,64],"span",{"class":47,"line":48},"line",1,[45,50,52],{"class":51},"szBVR","import",[45,54,56],{"class":55},"sVt8B"," { bearerAuth, defineTsumugi } ",[45,58,59],{"class":51},"from",[45,61,63],{"class":62},"sZZnC"," 'tsumugi'",[45,65,66],{"class":55},";\n",[45,68,70],{"class":47,"line":69},2,[45,71,73],{"emptyLinePlaceholder":72},true,"\n",[45,75,77,80,84,87,91],{"class":47,"line":76},3,[45,78,79],{"class":51},"const",[45,81,83],{"class":82},"sj4cs"," tsumugi",[45,85,86],{"class":51}," =",[45,88,90],{"class":89},"sScJk"," defineTsumugi",[45,92,93],{"class":55},"({\n",[45,95,97],{"class":47,"line":96},4,[45,98,99],{"class":55},"  performers,\n",[45,101,103,106,108,111,115,118,121,124,127,130,133,136,139],{"class":47,"line":102},5,[45,104,105],{"class":55},"  auth: ",[45,107,29],{"class":89},[45,109,110],{"class":55},"((",[45,112,114],{"class":113},"s4XuR","env",[45,116,117],{"class":51},":",[45,119,120],{"class":89}," Env",[45,122,123],{"class":55},") ",[45,125,126],{"class":51},"=>",[45,128,129],{"class":55}," env.",[45,131,132],{"class":82},"TSUMUGI_TOKEN",[45,134,135],{"class":55},", { cookie: ",[45,137,138],{"class":62},"'tsumugi_token'",[45,140,141],{"class":55}," }),\n",[45,143,145],{"class":47,"line":144},6,[45,146,147],{"class":55},"});\n",[18,149,150,151,154],{},"トークンは、上の例のように関数でSecretから取得してください。",[152,153],"br",{},"\n文字列で直接記述すると、リポジトリとバンドルの両方にトークンが含まれるため、セキュリティ上のリスクが生じます。",[156,157,158],"h3",{"id":158},"cookie",[18,160,161,163,164,167,168,170,171,173,174,176],{},[21,162,158],{},"オプションを指定すると、",[21,165,166],{},"Authorization","ヘッダに加えて、指定した名前のcookieに含まれるトークンも検証されます。",[152,169],{},"\nブラウザは最初のHTML取得時に",[21,172,166],{},"ヘッダを付与しません。",[152,175],{},"\nダッシュボードを開くには、この設定が必ず必要です。",[18,178,179,180,182,183,186],{},"cookieによる認証は、CSRFの対象になる可能性があります。",[152,181],{},"\ncookieを発行する側では、",[21,184,185],{},"SameSite=Strict","を明示的に指定してください。",[26,188,190],{"id":189},"cloudflare-access","Cloudflare Access",[18,192,193,196],{},[21,194,195],{},"cloudflareAccess","を指定すると、Cloudflare Accessが発行したJWTを検証します。",[36,198,200],{"className":38,"code":199,"language":40,"meta":41,"style":41},"import { cloudflareAccess, defineTsumugi } from 'tsumugi';\n\nconst tsumugi = defineTsumugi({\n  performers,\n  auth: cloudflareAccess({ teamDomain: 'example', aud: 'audience tag' }),\n});\n",[21,201,202,215,219,231,235,255],{"__ignoreMap":41},[45,203,204,206,209,211,213],{"class":47,"line":48},[45,205,52],{"class":51},[45,207,208],{"class":55}," { cloudflareAccess, defineTsumugi } ",[45,210,59],{"class":51},[45,212,63],{"class":62},[45,214,66],{"class":55},[45,216,217],{"class":47,"line":69},[45,218,73],{"emptyLinePlaceholder":72},[45,220,221,223,225,227,229],{"class":47,"line":76},[45,222,79],{"class":51},[45,224,83],{"class":82},[45,226,86],{"class":51},[45,228,90],{"class":89},[45,230,93],{"class":55},[45,232,233],{"class":47,"line":96},[45,234,99],{"class":55},[45,236,237,239,241,244,247,250,253],{"class":47,"line":102},[45,238,105],{"class":55},[45,240,195],{"class":89},[45,242,243],{"class":55},"({ teamDomain: ",[45,245,246],{"class":62},"'example'",[45,248,249],{"class":55},", aud: ",[45,251,252],{"class":62},"'audience tag'",[45,254,141],{"class":55},[45,256,257],{"class":47,"line":144},[45,258,147],{"class":55},[260,261,262,275],"table",{},[263,264,265],"thead",{},[266,267,268,272],"tr",{},[269,270,271],"th",{},"名前",[269,273,274],{},"内容",[276,277,278,292,302],"tbody",{},[266,279,280,286],{},[281,282,283],"td",{},[21,284,285],{},"teamDomain",[281,287,288,291],{},[21,289,290],{},"\u003Cteam>.cloudflareaccess.com","のteam部分",[266,293,294,299],{},[281,295,296],{},[21,297,298],{},"aud",[281,300,301],{},"Accessアプリケーションのaudience tag",[266,303,304,309],{},[281,305,306],{},[21,307,308],{},"cacheTtlMs",[281,310,311],{},"JWKSの再取得間隔。既定は1時間",[26,313,314],{"id":314},"独自の認証",[18,316,317,318,320,321,323,324,327,328,330,331,333,334,337,338,330,341,343,344,346,347,343,349,351,352,354,355,357,358,361,362,364],{},"独自の認証を実装するには、",[21,319,23],{},"オプションに関数を指定します。",[152,322],{},"\nこの関数の引数は",[21,325,326],{},"request","と",[21,329,114],{},"です。",[152,332],{},"\nこの関数の戻り値は",[21,335,336],{},"Response","または",[21,339,340],{},"undefined",[152,342],{},"\n戻り値が",[21,345,340],{},"の場合、認証は成功し、Tsumugiはリクエストの処理を続けます。",[152,348],{},[21,350,336],{},"の場合、認証は失敗し、Tsumugiはその",[21,353,336],{},"で応答して処理を終えます。",[152,356],{},"\nたとえば、",[21,359,360],{},"findSession","でセッションを確認し、存在しない場合は401の",[21,363,336],{},"を戻り値とする実装が可能です。",[36,366,368],{"className":38,"code":367,"language":40,"meta":41,"style":41},"import { defineTsumugi } from 'tsumugi';\n\nconst tsumugi = defineTsumugi({\n  performers,\n  auth: async (request, env: Env) => {\n    const session = await findSession(request, env);\n    return session ? undefined : Response.json({ error: 'unauthorized' }, { status: 401 });\n  },\n});\n",[21,369,370,383,387,399,403,435,454,493,499],{"__ignoreMap":41},[45,371,372,374,377,379,381],{"class":47,"line":48},[45,373,52],{"class":51},[45,375,376],{"class":55}," { defineTsumugi } ",[45,378,59],{"class":51},[45,380,63],{"class":62},[45,382,66],{"class":55},[45,384,385],{"class":47,"line":69},[45,386,73],{"emptyLinePlaceholder":72},[45,388,389,391,393,395,397],{"class":47,"line":76},[45,390,79],{"class":51},[45,392,83],{"class":82},[45,394,86],{"class":51},[45,396,90],{"class":89},[45,398,93],{"class":55},[45,400,401],{"class":47,"line":96},[45,402,99],{"class":55},[45,404,405,408,411,414,417,419,422,424,426,428,430,432],{"class":47,"line":102},[45,406,407],{"class":89},"  auth",[45,409,410],{"class":55},": ",[45,412,413],{"class":51},"async",[45,415,416],{"class":55}," (",[45,418,326],{"class":113},[45,420,421],{"class":55},", ",[45,423,114],{"class":113},[45,425,117],{"class":51},[45,427,120],{"class":89},[45,429,123],{"class":55},[45,431,126],{"class":51},[45,433,434],{"class":55}," {\n",[45,436,437,440,443,445,448,451],{"class":47,"line":144},[45,438,439],{"class":51},"    const",[45,441,442],{"class":82}," session",[45,444,86],{"class":51},[45,446,447],{"class":51}," await",[45,449,450],{"class":89}," findSession",[45,452,453],{"class":55},"(request, env);\n",[45,455,457,460,463,466,469,472,475,478,481,484,487,490],{"class":47,"line":456},7,[45,458,459],{"class":51},"    return",[45,461,462],{"class":55}," session ",[45,464,465],{"class":51},"?",[45,467,468],{"class":82}," undefined",[45,470,471],{"class":51}," :",[45,473,474],{"class":55}," Response.",[45,476,477],{"class":89},"json",[45,479,480],{"class":55},"({ error: ",[45,482,483],{"class":62},"'unauthorized'",[45,485,486],{"class":55}," }, { status: ",[45,488,489],{"class":82},"401",[45,491,492],{"class":55}," });\n",[45,494,496],{"class":47,"line":495},8,[45,497,498],{"class":55},"  },\n",[45,500,502],{"class":47,"line":501},9,[45,503,147],{"class":55},[26,505,506],{"id":506},"認証しない構成",[14,508,510],{"type":509},"danger",[18,511,512,515,516,518,519,521],{},[21,513,514],{},"unsafeNoAuth","を指定すると、REST APIとダッシュボードは認証を要求しません。",[152,517],{},"\nWorkerにアクセスできるすべての利用者が、payloadを含むジョブの内容を閲覧し、ジョブを投入, 取り消し, 再実行できます。",[152,520],{},"\n公開環境では使用しないでください。",[18,523,524,526,527,529,530,533,534,536,537,539,540,542,543,545,547],{},[21,525,514],{},"は、Tsumugiより前段で認証している場合に限って使用します。",[152,528],{},"\nCloudflare Accessをルート全体に適用している構成や、",[21,531,532],{},"wrangler dev","での動作確認が該当します。",[152,535],{},"\n認証しない場合は、",[21,538,23],{},"を省略せず、",[21,541,514],{},"を明示してください。",[152,544],{},[21,546,514],{},"を指定している間、ログに警告が出力されます。",[36,549,551],{"className":38,"code":550,"language":40,"meta":41,"style":41},"import { defineTsumugi, unsafeNoAuth } from 'tsumugi';\n\nconst tsumugi = defineTsumugi({\n  performers,\n  auth: unsafeNoAuth(),\n});\n",[21,552,553,566,570,582,586,595],{"__ignoreMap":41},[45,554,555,557,560,562,564],{"class":47,"line":48},[45,556,52],{"class":51},[45,558,559],{"class":55}," { defineTsumugi, unsafeNoAuth } ",[45,561,59],{"class":51},[45,563,63],{"class":62},[45,565,66],{"class":55},[45,567,568],{"class":47,"line":69},[45,569,73],{"emptyLinePlaceholder":72},[45,571,572,574,576,578,580],{"class":47,"line":76},[45,573,79],{"class":51},[45,575,83],{"class":82},[45,577,86],{"class":51},[45,579,90],{"class":89},[45,581,93],{"class":55},[45,583,584],{"class":47,"line":96},[45,585,99],{"class":55},[45,587,588,590,592],{"class":47,"line":102},[45,589,105],{"class":55},[45,591,514],{"class":89},[45,593,594],{"class":55},"(),\n",[45,596,597],{"class":47,"line":144},[45,598,147],{"class":55},[26,600,601],{"id":601},"ダッシュボードの有効化",[18,603,604,607,608,611,612,607,615,618,619,622,623,625,627,628,630],{},[21,605,606],{},"tsumugi\u002Fui","の",[21,609,610],{},"ui()","を",[21,613,614],{},"defineTsumugi",[21,616,617],{},"ui","に渡すと、",[21,620,621],{},"\u002Fapi","以外のパスへのGETリクエストに対してダッシュボードのHTMLで応答します。",[152,624],{},[21,626,617],{},"を指定しない場合、ダッシュボードはバンドルに含まれません。",[152,629],{},"\nAPIが401で応答すると、ダッシュボードはトークンの入力欄を表示します。",[36,632,634],{"className":38,"code":633,"language":40,"meta":41,"style":41},"import { ui } from 'tsumugi\u002Fui';\n\nconst tsumugi = defineTsumugi({\n  performers,\n  auth: bearerAuth((env: Env) => env.TSUMUGI_TOKEN, { cookie: 'tsumugi_token' }),\n  ui: ui({ tokenCookie: 'tsumugi_token' }),\n});\n",[21,635,636,650,654,666,670,698,712],{"__ignoreMap":41},[45,637,638,640,643,645,648],{"class":47,"line":48},[45,639,52],{"class":51},[45,641,642],{"class":55}," { ui } ",[45,644,59],{"class":51},[45,646,647],{"class":62}," 'tsumugi\u002Fui'",[45,649,66],{"class":55},[45,651,652],{"class":47,"line":69},[45,653,73],{"emptyLinePlaceholder":72},[45,655,656,658,660,662,664],{"class":47,"line":76},[45,657,79],{"class":51},[45,659,83],{"class":82},[45,661,86],{"class":51},[45,663,90],{"class":89},[45,665,93],{"class":55},[45,667,668],{"class":47,"line":96},[45,669,99],{"class":55},[45,671,672,674,676,678,680,682,684,686,688,690,692,694,696],{"class":47,"line":102},[45,673,105],{"class":55},[45,675,29],{"class":89},[45,677,110],{"class":55},[45,679,114],{"class":113},[45,681,117],{"class":51},[45,683,120],{"class":89},[45,685,123],{"class":55},[45,687,126],{"class":51},[45,689,129],{"class":55},[45,691,132],{"class":82},[45,693,135],{"class":55},[45,695,138],{"class":62},[45,697,141],{"class":55},[45,699,700,703,705,708,710],{"class":47,"line":144},[45,701,702],{"class":55},"  ui: ",[45,704,617],{"class":89},[45,706,707],{"class":55},"({ tokenCookie: ",[45,709,138],{"class":62},[45,711,141],{"class":55},[45,713,714],{"class":47,"line":456},[45,715,147],{"class":55},[260,717,718,726],{},[263,719,720],{},[266,721,722,724],{},[269,723,271],{},[269,725,274],{},[276,727,728],{},[266,729,730,735],{},[281,731,732],{},[21,733,734],{},"tokenCookie",[281,736,737,738,607,740,742],{},"トークンを保存するcookieの名前。",[21,739,29],{},[21,741,158],{},"と同じ値",[26,744,745],{"id":745},"ジョブの一覧",[18,747,748,749,751,752,421,755,758,759,761,762,764],{},"ジョブの一覧では、状態, binding, 作成日時の範囲でフィルタし、ページングと列ごとの並べ替えを操作します。",[152,750],{},"\nジョブID, ",[21,753,754],{},"uniqueKey",[21,756,757],{},"concurrencyKey","による検索機能も備えています。",[152,760],{},"\nジョブの詳細ページには、試行履歴, 進捗, ログ, トレース情報が表示されます。",[152,763],{},"\n手動のリトライと取り消し, 選択したジョブの一括リトライと一括取り消し, ジョブの投入も、ジョブの一覧ページで操作します。",[18,766,767],{},[768,769],"img",{"alt":770,"src":771},"ジョブの一覧ページ","\u002Fdashboard-jobs.jpg",[156,773,774],{"id":774},"検索",[18,776,777,778,780],{},"検索欄に入力した値は、完全一致で検索されます。",[152,779],{},"\nジョブIDの形式に一致する値を入力した場合、そのジョブの詳細が表示されます。",[156,782,783],{"id":783},"一括操作",[18,785,786,787,789,790,792],{},"行の左端のチェックボックスで、ジョブを選択します。",[152,788],{},"\n見出し行のチェックボックスは、表示中のすべての行を選択します。",[152,791],{},"\n1件以上を選択すると、選択したジョブをまとめてリトライまたは取り消すメニューが表示されます。",[156,794,795],{"id":795},"表示の設定",[18,797,798,799,801,802,804,805,807,808,810,811,813,814,816],{},"表示の設定は、ブラウザに保存され、次回以降も適用されます。",[152,800],{},"\n更新間隔は、Off, 1s, 3s, 10s, 30s, 1mから選択し、既定値は3秒です。",[152,803],{},"\n列の表示は、ID, Started at, Updated at, Attempts, Processing timeを切り替え可能です。",[152,806],{},"\nBindingとStatusは、常に表示されます。",[152,809],{},"\n1ページの件数は、10, 20, 30, 50から選択します。",[152,812],{},"\n言語は、サイドバーの下部で日本語とEnglishを切り替えます。",[152,815],{},"\n初回は、ブラウザの言語設定に従います。",[156,818,819],{"id":819},"時刻の表示",[18,821,822,823,825,826,828,829,831],{},"定期実行の時刻は、各スケジュールのタイムゾーンで表示されます。",[152,824],{},"\nその他の時刻は、ブラウザのIANAタイムゾーンで表示されます。",[152,827],{},"\nすべての時刻に、IANAタイムゾーンとGMTオフセットが併記されます。",[152,830],{},"\n作成日時の範囲は、ブラウザのローカル日付の年月日で指定します。",[26,833,834],{"id":834},"ジョブの詳細",[156,836,837],{"id":837},"試行履歴",[18,839,840,841,843,844,849,850,852,853,855],{},"試行ごとの開始時刻, 終了時刻, エラーがジョブの詳細に表示されます。",[152,842],{},"\n保存される件数とエラー本文の長さの上限は、",[845,846,848],"a",{"href":847},"\u002Fguide\u002Fperformer#%E5%A4%B1%E6%95%97%E3%81%A8%E3%83%AA%E3%83%88%E3%83%A9%E3%82%A4","失敗とリトライ","を参照してください。",[152,851],{},"\n試行履歴はジョブの詳細のレスポンスにのみ含まれ、一覧のレスポンスには含まれません。",[152,854],{},"\n1回目で成功した試行は履歴に記録されません。",[18,857,858],{},[768,859],{"alt":860,"src":861},"試行履歴の表示","\u002Fdashboard-attempts.jpg",[156,863,864],{"id":864},"ログとトレース情報",[18,866,867,870,871,873,874,876,877,879,880,849,884,886],{},[21,868,869],{},"ctx.log()","で保存したメッセージは、受信順にジョブの詳細に表示されます。",[152,872],{},"\n各ログには、試行回数, 記録時刻, 本文が含まれます。",[152,875],{},"\n実行中のジョブのログも表示されますが、表示まで時間を要する可能性があります。",[152,878],{},"\n保存される件数, 本文の長さ, 保存間隔の上限は、",[845,881,883],{"href":882},"\u002Fguide\u002Fperformer#%E3%83%AD%E3%82%B0","ログ",[152,885],{},"\nログの保持期間は、ジョブの保持期間と同一です。",[18,888,889,890,893,894,896,897,849],{},"投入時に",[21,891,892],{},"traceparent","を指定したジョブでは、その値がジョブの詳細に表示されます。",[152,895],{},"\nperformerでの利用方法は、",[845,898,900],{"href":899},"\u002Fguide\u002Fperformer#%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B9%E6%83%85%E5%A0%B1","トレース情報",[156,902,903],{"id":903},"リトライ可否の表示",[18,905,906,907,910,911,913,915,916,337,919,922,923,925,926,928],{},"一覧の各行には、",[21,908,909],{},"retryable","が含まれます。",[152,912],{},[21,914,909],{},"は、ジョブが",[21,917,918],{},"FAILED",[21,920,921],{},"STALLED","であり、かつ保持期間内であるかどうかを示す指標です。",[152,924],{},"\nリトライの成功は保証されません。",[152,927],{},"\n保持期間を過ぎたジョブに対するリトライ要求には、REST APIが410で応答します。",[26,930,932],{"id":931},"runs","Runs",[18,934,935,938,939,941,943],{},[21,936,937],{},"flows","を設定している場合、サイドバーにRunsの項目が表示されます。",[152,940],{},[21,942,937],{},"が空の場合、表示されません。",[18,945,946,947,949,950,952,953,955],{},"Runの一覧は、Flow, 状態, ノードの進捗を表示します。",[152,948],{},"\nFlowまたは状態を指定すると、一致するRunに限って一覧に表示されます。",[152,951],{},"\n行を選択すると、詳細パネルが開きます。",[152,954],{},"\n詳細パネルは、グラフとウォーターフォールの2種類の表示を提供します。",[18,957,958],{},[768,959],{"alt":960,"src":961},"Runのウォーターフォール","\u002Fdashboard-run.jpg",[18,963,964,965,967,968,970,971,973],{},"ウォーターフォールは、各ノードの実行時間を時間軸上に並べた表示です。",[152,966],{},"\nグラフは、ノードの依存関係, 各ノードの状態, fan-outのノードの子ノードの進捗を表示します。",[152,969],{},"\n子ノードは24件まで表示され、超過分は状態ごとの件数で示されます。",[152,972],{},"\nウォーターフォールの行やグラフのノードを選択すると、そのジョブの詳細が開きます。",[18,975,976,977,979,980,982,983,985],{},"subflowとして開始されたRunの詳細には、親のRunのIDがリンクで表示されます。",[152,978],{},"\nこのリンクを選択すると、親のRunの詳細が開きます。",[152,981],{},"\nグラフ上のsubflowのノードには、子のRunの詳細を開くボタンがあります。",[152,984],{},"\nウォーターフォールのsubflowの行を選択しても、子のRunの詳細が開きます。",[18,987,988,989,991,992,994,995,998],{},"Runの開始, 再開, 取り消しは、Runsのページで操作します。",[152,990],{},"\n再開の対象は",[21,993,918],{},"のRun, 取り消しの対象は",[21,996,997],{},"RUNNING","のRunです。",[1000,1001,1002],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":41,"searchDepth":76,"depth":76,"links":1004},[1005,1008,1009,1010,1011,1012,1018,1023],{"id":28,"depth":69,"text":29,"children":1006},[1007],{"id":158,"depth":76,"text":158},{"id":189,"depth":69,"text":190},{"id":314,"depth":69,"text":314},{"id":506,"depth":69,"text":506},{"id":601,"depth":69,"text":601},{"id":745,"depth":69,"text":745,"children":1013},[1014,1015,1016,1017],{"id":774,"depth":76,"text":774},{"id":783,"depth":76,"text":783},{"id":795,"depth":76,"text":795},{"id":819,"depth":76,"text":819},{"id":834,"depth":69,"text":834,"children":1019},[1020,1021,1022],{"id":837,"depth":76,"text":837},{"id":864,"depth":76,"text":864},{"id":903,"depth":76,"text":903},{"id":931,"depth":69,"text":932},"REST APIとダッシュボードの認証の設定と、ダッシュボードでのジョブとRunの参照, 検索, 一括操作について","md",{},"\u002Fguide\u002Fdashboard","2026-07-22",{"title":6,"description":1024},"guide\u002Fdashboard","2026-10-30","vpgToD99wt-6jW3p4J4IDCtQb09DWzTWIaTHk_kaL9w",false,1794027571411]