@ubiquity-os/plugin-sdk 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,3492 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/index.ts
31
+ var src_exports = {};
32
+ __export(src_exports, {
33
+ BOT_USER_ID: () => BOT_USER_ID,
34
+ CONFIG_FULL_PATH: () => CONFIG_FULL_PATH,
35
+ CONFIG_ORG_REPO: () => CONFIG_ORG_REPO,
36
+ DEV_CONFIG_FULL_PATH: () => DEV_CONFIG_FULL_PATH,
37
+ KERNEL_APP_ID: () => KERNEL_APP_ID,
38
+ KERNEL_PUBLIC_KEY: () => KERNEL_PUBLIC_KEY,
39
+ createActionsPlugin: () => createActionsPlugin,
40
+ createPlugin: () => createPlugin,
41
+ postComment: () => postComment
42
+ });
43
+ module.exports = __toCommonJS(src_exports);
44
+
45
+ // src/server.ts
46
+ var import_typebox = require("@sinclair/typebox");
47
+ var import_value = require("@sinclair/typebox/value");
48
+ var import_ubiquity_os_logger = require("@ubiquity-os/ubiquity-os-logger");
49
+ var import_hono = require("hono");
50
+ var import_adapter = require("hono/adapter");
51
+ var import_http_exception = require("hono/http-exception");
52
+
53
+ // src/util.ts
54
+ function sanitizeMetadata(obj) {
55
+ return JSON.stringify(obj, null, 2).replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/--/g, "&#45;&#45;");
56
+ }
57
+
58
+ // src/comment.ts
59
+ var HEADER_NAME = "Ubiquity";
60
+ async function postComment(context2, message) {
61
+ if ("issue" in context2.payload && context2.payload.repository?.owner?.login) {
62
+ const metadata = createStructuredMetadata(message.metadata?.name, message);
63
+ await context2.octokit.rest.issues.createComment({
64
+ owner: context2.payload.repository.owner.login,
65
+ repo: context2.payload.repository.name,
66
+ issue_number: context2.payload.issue.number,
67
+ body: [message.logMessage.diff, metadata].join("\n")
68
+ });
69
+ } else {
70
+ context2.logger.info("Cannot post comment because issue is not found in the payload");
71
+ }
72
+ }
73
+ function createStructuredMetadata(className, logReturn) {
74
+ const logMessage = logReturn.logMessage;
75
+ const metadata = logReturn.metadata;
76
+ const jsonPretty = sanitizeMetadata(metadata);
77
+ const stack = logReturn.metadata?.stack;
78
+ const stackLine = (Array.isArray(stack) ? stack.join("\n") : stack)?.split("\n")[2] ?? "";
79
+ const caller = stackLine.match(/at (\S+)/)?.[1] ?? "";
80
+ const ubiquityMetadataHeader = `<!-- ${HEADER_NAME} - ${className} - ${caller} - ${metadata?.revision}`;
81
+ let metadataSerialized;
82
+ const metadataSerializedVisible = ["```json", jsonPretty, "```"].join("\n");
83
+ const metadataSerializedHidden = [ubiquityMetadataHeader, jsonPretty, "-->"].join("\n");
84
+ if (logMessage?.type === "fatal") {
85
+ metadataSerialized = [metadataSerializedVisible, metadataSerializedHidden].join("\n");
86
+ } else {
87
+ metadataSerialized = metadataSerializedHidden;
88
+ }
89
+ return `
90
+ ${metadataSerialized}
91
+ `;
92
+ }
93
+
94
+ // src/types/config.ts
95
+ var CONFIG_FULL_PATH = ".github/.ubiquity-os.config.yml";
96
+ var DEV_CONFIG_FULL_PATH = ".github/.ubiquity-os.config.dev.yml";
97
+ var CONFIG_ORG_REPO = ".ubiquity-os";
98
+
99
+ // src/constants.ts
100
+ var KERNEL_PUBLIC_KEY = `-----BEGIN PUBLIC KEY-----
101
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs96DOU+JqM8SyNXOB6u3
102
+ uBKIFiyrcST/LZTYN6y7LeJlyCuGPqSDrWCfjU9Ph5PLf9TWiNmeM8DGaOpwEFC7
103
+ U3NRxOSglo4plnQ5zRwIHHXvxyK400sQP2oISXymISuBQWjEIqkC9DybQrKwNzf+
104
+ I0JHWPqmwMIw26UvVOtXGOOWBqTkk+N2+/9f8eDIJP5QQVwwszc8s1rXOsLMlVIf
105
+ wShw7GO4E2jyK8TSJKpyjV8eb1JJMDwFhPiRrtZfQJUtDf2mV/67shQww61BH2Y/
106
+ Plnalo58kWIbkqZoq1yJrL5sFb73osM5+vADTXVn79bkvea7W19nSkdMiarYt4Hq
107
+ JQIDAQAB
108
+ -----END PUBLIC KEY-----
109
+ `;
110
+ var KERNEL_APP_ID = 975031;
111
+ var BOT_USER_ID = 178941584;
112
+
113
+ // node_modules/universal-user-agent/index.js
114
+ function getUserAgent() {
115
+ if (typeof navigator === "object" && "userAgent" in navigator) {
116
+ return navigator.userAgent;
117
+ }
118
+ if (typeof process === "object" && process.version !== void 0) {
119
+ return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;
120
+ }
121
+ return "<environment undetectable>";
122
+ }
123
+
124
+ // node_modules/before-after-hook/lib/register.js
125
+ function register(state, name, method, options) {
126
+ if (typeof method !== "function") {
127
+ throw new Error("method for before hook must be a function");
128
+ }
129
+ if (!options) {
130
+ options = {};
131
+ }
132
+ if (Array.isArray(name)) {
133
+ return name.reverse().reduce((callback, name2) => {
134
+ return register.bind(null, state, name2, callback, options);
135
+ }, method)();
136
+ }
137
+ return Promise.resolve().then(() => {
138
+ if (!state.registry[name]) {
139
+ return method(options);
140
+ }
141
+ return state.registry[name].reduce((method2, registered) => {
142
+ return registered.hook.bind(null, method2, options);
143
+ }, method)();
144
+ });
145
+ }
146
+
147
+ // node_modules/before-after-hook/lib/add.js
148
+ function addHook(state, kind, name, hook2) {
149
+ const orig = hook2;
150
+ if (!state.registry[name]) {
151
+ state.registry[name] = [];
152
+ }
153
+ if (kind === "before") {
154
+ hook2 = (method, options) => {
155
+ return Promise.resolve().then(orig.bind(null, options)).then(method.bind(null, options));
156
+ };
157
+ }
158
+ if (kind === "after") {
159
+ hook2 = (method, options) => {
160
+ let result;
161
+ return Promise.resolve().then(method.bind(null, options)).then((result_) => {
162
+ result = result_;
163
+ return orig(result, options);
164
+ }).then(() => {
165
+ return result;
166
+ });
167
+ };
168
+ }
169
+ if (kind === "error") {
170
+ hook2 = (method, options) => {
171
+ return Promise.resolve().then(method.bind(null, options)).catch((error) => {
172
+ return orig(error, options);
173
+ });
174
+ };
175
+ }
176
+ state.registry[name].push({
177
+ hook: hook2,
178
+ orig
179
+ });
180
+ }
181
+
182
+ // node_modules/before-after-hook/lib/remove.js
183
+ function removeHook(state, name, method) {
184
+ if (!state.registry[name]) {
185
+ return;
186
+ }
187
+ const index = state.registry[name].map((registered) => {
188
+ return registered.orig;
189
+ }).indexOf(method);
190
+ if (index === -1) {
191
+ return;
192
+ }
193
+ state.registry[name].splice(index, 1);
194
+ }
195
+
196
+ // node_modules/before-after-hook/index.js
197
+ var bind = Function.bind;
198
+ var bindable = bind.bind(bind);
199
+ function bindApi(hook2, state, name) {
200
+ const removeHookRef = bindable(removeHook, null).apply(
201
+ null,
202
+ name ? [state, name] : [state]
203
+ );
204
+ hook2.api = { remove: removeHookRef };
205
+ hook2.remove = removeHookRef;
206
+ ["before", "error", "after", "wrap"].forEach((kind) => {
207
+ const args = name ? [state, kind, name] : [state, kind];
208
+ hook2[kind] = hook2.api[kind] = bindable(addHook, null).apply(null, args);
209
+ });
210
+ }
211
+ function Singular() {
212
+ const singularHookName = Symbol("Singular");
213
+ const singularHookState = {
214
+ registry: {}
215
+ };
216
+ const singularHook = register.bind(null, singularHookState, singularHookName);
217
+ bindApi(singularHook, singularHookState, singularHookName);
218
+ return singularHook;
219
+ }
220
+ function Collection() {
221
+ const state = {
222
+ registry: {}
223
+ };
224
+ const hook2 = register.bind(null, state);
225
+ bindApi(hook2, state);
226
+ return hook2;
227
+ }
228
+ var before_after_hook_default = { Singular, Collection };
229
+
230
+ // node_modules/@octokit/endpoint/dist-bundle/index.js
231
+ var VERSION = "0.0.0-development";
232
+ var userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;
233
+ var DEFAULTS = {
234
+ method: "GET",
235
+ baseUrl: "https://api.github.com",
236
+ headers: {
237
+ accept: "application/vnd.github.v3+json",
238
+ "user-agent": userAgent
239
+ },
240
+ mediaType: {
241
+ format: ""
242
+ }
243
+ };
244
+ function lowercaseKeys(object) {
245
+ if (!object) {
246
+ return {};
247
+ }
248
+ return Object.keys(object).reduce((newObj, key) => {
249
+ newObj[key.toLowerCase()] = object[key];
250
+ return newObj;
251
+ }, {});
252
+ }
253
+ function isPlainObject(value) {
254
+ if (typeof value !== "object" || value === null)
255
+ return false;
256
+ if (Object.prototype.toString.call(value) !== "[object Object]")
257
+ return false;
258
+ const proto = Object.getPrototypeOf(value);
259
+ if (proto === null)
260
+ return true;
261
+ const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
262
+ return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
263
+ }
264
+ function mergeDeep(defaults, options) {
265
+ const result = Object.assign({}, defaults);
266
+ Object.keys(options).forEach((key) => {
267
+ if (isPlainObject(options[key])) {
268
+ if (!(key in defaults))
269
+ Object.assign(result, { [key]: options[key] });
270
+ else
271
+ result[key] = mergeDeep(defaults[key], options[key]);
272
+ } else {
273
+ Object.assign(result, { [key]: options[key] });
274
+ }
275
+ });
276
+ return result;
277
+ }
278
+ function removeUndefinedProperties(obj) {
279
+ for (const key in obj) {
280
+ if (obj[key] === void 0) {
281
+ delete obj[key];
282
+ }
283
+ }
284
+ return obj;
285
+ }
286
+ function merge(defaults, route, options) {
287
+ if (typeof route === "string") {
288
+ let [method, url] = route.split(" ");
289
+ options = Object.assign(url ? { method, url } : { url: method }, options);
290
+ } else {
291
+ options = Object.assign({}, route);
292
+ }
293
+ options.headers = lowercaseKeys(options.headers);
294
+ removeUndefinedProperties(options);
295
+ removeUndefinedProperties(options.headers);
296
+ const mergedOptions = mergeDeep(defaults || {}, options);
297
+ if (options.url === "/graphql") {
298
+ if (defaults && defaults.mediaType.previews?.length) {
299
+ mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(
300
+ (preview) => !mergedOptions.mediaType.previews.includes(preview)
301
+ ).concat(mergedOptions.mediaType.previews);
302
+ }
303
+ mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, ""));
304
+ }
305
+ return mergedOptions;
306
+ }
307
+ function addQueryParameters(url, parameters) {
308
+ const separator = /\?/.test(url) ? "&" : "?";
309
+ const names = Object.keys(parameters);
310
+ if (names.length === 0) {
311
+ return url;
312
+ }
313
+ return url + separator + names.map((name) => {
314
+ if (name === "q") {
315
+ return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+");
316
+ }
317
+ return `${name}=${encodeURIComponent(parameters[name])}`;
318
+ }).join("&");
319
+ }
320
+ var urlVariableRegex = /\{[^}]+\}/g;
321
+ function removeNonChars(variableName) {
322
+ return variableName.replace(/^\W+|\W+$/g, "").split(/,/);
323
+ }
324
+ function extractUrlVariableNames(url) {
325
+ const matches = url.match(urlVariableRegex);
326
+ if (!matches) {
327
+ return [];
328
+ }
329
+ return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
330
+ }
331
+ function omit(object, keysToOmit) {
332
+ const result = { __proto__: null };
333
+ for (const key of Object.keys(object)) {
334
+ if (keysToOmit.indexOf(key) === -1) {
335
+ result[key] = object[key];
336
+ }
337
+ }
338
+ return result;
339
+ }
340
+ function encodeReserved(str) {
341
+ return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {
342
+ if (!/%[0-9A-Fa-f]/.test(part)) {
343
+ part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]");
344
+ }
345
+ return part;
346
+ }).join("");
347
+ }
348
+ function encodeUnreserved(str) {
349
+ return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
350
+ return "%" + c.charCodeAt(0).toString(16).toUpperCase();
351
+ });
352
+ }
353
+ function encodeValue(operator, value, key) {
354
+ value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
355
+ if (key) {
356
+ return encodeUnreserved(key) + "=" + value;
357
+ } else {
358
+ return value;
359
+ }
360
+ }
361
+ function isDefined(value) {
362
+ return value !== void 0 && value !== null;
363
+ }
364
+ function isKeyOperator(operator) {
365
+ return operator === ";" || operator === "&" || operator === "?";
366
+ }
367
+ function getValues(context2, operator, key, modifier) {
368
+ var value = context2[key], result = [];
369
+ if (isDefined(value) && value !== "") {
370
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
371
+ value = value.toString();
372
+ if (modifier && modifier !== "*") {
373
+ value = value.substring(0, parseInt(modifier, 10));
374
+ }
375
+ result.push(
376
+ encodeValue(operator, value, isKeyOperator(operator) ? key : "")
377
+ );
378
+ } else {
379
+ if (modifier === "*") {
380
+ if (Array.isArray(value)) {
381
+ value.filter(isDefined).forEach(function(value2) {
382
+ result.push(
383
+ encodeValue(operator, value2, isKeyOperator(operator) ? key : "")
384
+ );
385
+ });
386
+ } else {
387
+ Object.keys(value).forEach(function(k) {
388
+ if (isDefined(value[k])) {
389
+ result.push(encodeValue(operator, value[k], k));
390
+ }
391
+ });
392
+ }
393
+ } else {
394
+ const tmp = [];
395
+ if (Array.isArray(value)) {
396
+ value.filter(isDefined).forEach(function(value2) {
397
+ tmp.push(encodeValue(operator, value2));
398
+ });
399
+ } else {
400
+ Object.keys(value).forEach(function(k) {
401
+ if (isDefined(value[k])) {
402
+ tmp.push(encodeUnreserved(k));
403
+ tmp.push(encodeValue(operator, value[k].toString()));
404
+ }
405
+ });
406
+ }
407
+ if (isKeyOperator(operator)) {
408
+ result.push(encodeUnreserved(key) + "=" + tmp.join(","));
409
+ } else if (tmp.length !== 0) {
410
+ result.push(tmp.join(","));
411
+ }
412
+ }
413
+ }
414
+ } else {
415
+ if (operator === ";") {
416
+ if (isDefined(value)) {
417
+ result.push(encodeUnreserved(key));
418
+ }
419
+ } else if (value === "" && (operator === "&" || operator === "?")) {
420
+ result.push(encodeUnreserved(key) + "=");
421
+ } else if (value === "") {
422
+ result.push("");
423
+ }
424
+ }
425
+ return result;
426
+ }
427
+ function parseUrl(template) {
428
+ return {
429
+ expand: expand.bind(null, template)
430
+ };
431
+ }
432
+ function expand(template, context2) {
433
+ var operators = ["+", "#", ".", "/", ";", "?", "&"];
434
+ template = template.replace(
435
+ /\{([^\{\}]+)\}|([^\{\}]+)/g,
436
+ function(_, expression, literal) {
437
+ if (expression) {
438
+ let operator = "";
439
+ const values = [];
440
+ if (operators.indexOf(expression.charAt(0)) !== -1) {
441
+ operator = expression.charAt(0);
442
+ expression = expression.substr(1);
443
+ }
444
+ expression.split(/,/g).forEach(function(variable) {
445
+ var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
446
+ values.push(getValues(context2, operator, tmp[1], tmp[2] || tmp[3]));
447
+ });
448
+ if (operator && operator !== "+") {
449
+ var separator = ",";
450
+ if (operator === "?") {
451
+ separator = "&";
452
+ } else if (operator !== "#") {
453
+ separator = operator;
454
+ }
455
+ return (values.length !== 0 ? operator : "") + values.join(separator);
456
+ } else {
457
+ return values.join(",");
458
+ }
459
+ } else {
460
+ return encodeReserved(literal);
461
+ }
462
+ }
463
+ );
464
+ if (template === "/") {
465
+ return template;
466
+ } else {
467
+ return template.replace(/\/$/, "");
468
+ }
469
+ }
470
+ function parse(options) {
471
+ let method = options.method.toUpperCase();
472
+ let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
473
+ let headers = Object.assign({}, options.headers);
474
+ let body;
475
+ let parameters = omit(options, [
476
+ "method",
477
+ "baseUrl",
478
+ "url",
479
+ "headers",
480
+ "request",
481
+ "mediaType"
482
+ ]);
483
+ const urlVariableNames = extractUrlVariableNames(url);
484
+ url = parseUrl(url).expand(parameters);
485
+ if (!/^http/.test(url)) {
486
+ url = options.baseUrl + url;
487
+ }
488
+ const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl");
489
+ const remainingParameters = omit(parameters, omittedParameters);
490
+ const isBinaryRequest = /application\/octet-stream/i.test(headers.accept);
491
+ if (!isBinaryRequest) {
492
+ if (options.mediaType.format) {
493
+ headers.accept = headers.accept.split(/,/).map(
494
+ (format) => format.replace(
495
+ /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,
496
+ `application/vnd$1$2.${options.mediaType.format}`
497
+ )
498
+ ).join(",");
499
+ }
500
+ if (url.endsWith("/graphql")) {
501
+ if (options.mediaType.previews?.length) {
502
+ const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || [];
503
+ headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {
504
+ const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
505
+ return `application/vnd.github.${preview}-preview${format}`;
506
+ }).join(",");
507
+ }
508
+ }
509
+ }
510
+ if (["GET", "HEAD"].includes(method)) {
511
+ url = addQueryParameters(url, remainingParameters);
512
+ } else {
513
+ if ("data" in remainingParameters) {
514
+ body = remainingParameters.data;
515
+ } else {
516
+ if (Object.keys(remainingParameters).length) {
517
+ body = remainingParameters;
518
+ }
519
+ }
520
+ }
521
+ if (!headers["content-type"] && typeof body !== "undefined") {
522
+ headers["content-type"] = "application/json; charset=utf-8";
523
+ }
524
+ if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
525
+ body = "";
526
+ }
527
+ return Object.assign(
528
+ { method, url, headers },
529
+ typeof body !== "undefined" ? { body } : null,
530
+ options.request ? { request: options.request } : null
531
+ );
532
+ }
533
+ function endpointWithDefaults(defaults, route, options) {
534
+ return parse(merge(defaults, route, options));
535
+ }
536
+ function withDefaults(oldDefaults, newDefaults) {
537
+ const DEFAULTS2 = merge(oldDefaults, newDefaults);
538
+ const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);
539
+ return Object.assign(endpoint2, {
540
+ DEFAULTS: DEFAULTS2,
541
+ defaults: withDefaults.bind(null, DEFAULTS2),
542
+ merge: merge.bind(null, DEFAULTS2),
543
+ parse
544
+ });
545
+ }
546
+ var endpoint = withDefaults(null, DEFAULTS);
547
+
548
+ // node_modules/@octokit/request-error/dist-src/index.js
549
+ var RequestError = class extends Error {
550
+ name;
551
+ /**
552
+ * http status code
553
+ */
554
+ status;
555
+ /**
556
+ * Request options that lead to the error.
557
+ */
558
+ request;
559
+ /**
560
+ * Response object if a response was received
561
+ */
562
+ response;
563
+ constructor(message, statusCode, options) {
564
+ super(message);
565
+ this.name = "HttpError";
566
+ this.status = Number.parseInt(statusCode);
567
+ if (Number.isNaN(this.status)) {
568
+ this.status = 0;
569
+ }
570
+ if ("response" in options) {
571
+ this.response = options.response;
572
+ }
573
+ const requestCopy = Object.assign({}, options.request);
574
+ if (options.request.headers.authorization) {
575
+ requestCopy.headers = Object.assign({}, options.request.headers, {
576
+ authorization: options.request.headers.authorization.replace(
577
+ / .*$/,
578
+ " [REDACTED]"
579
+ )
580
+ });
581
+ }
582
+ requestCopy.url = requestCopy.url.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]").replace(/\baccess_token=\w+/g, "access_token=[REDACTED]");
583
+ this.request = requestCopy;
584
+ }
585
+ };
586
+
587
+ // node_modules/@octokit/request/dist-bundle/index.js
588
+ var VERSION2 = "0.0.0-development";
589
+ var defaults_default = {
590
+ headers: {
591
+ "user-agent": `octokit-request.js/${VERSION2} ${getUserAgent()}`
592
+ }
593
+ };
594
+ function isPlainObject2(value) {
595
+ if (typeof value !== "object" || value === null) return false;
596
+ if (Object.prototype.toString.call(value) !== "[object Object]") return false;
597
+ const proto = Object.getPrototypeOf(value);
598
+ if (proto === null) return true;
599
+ const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
600
+ return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
601
+ }
602
+ async function fetchWrapper(requestOptions) {
603
+ const fetch = requestOptions.request?.fetch || globalThis.fetch;
604
+ if (!fetch) {
605
+ throw new Error(
606
+ "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing"
607
+ );
608
+ }
609
+ const log = requestOptions.request?.log || console;
610
+ const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false;
611
+ const body = isPlainObject2(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(requestOptions.body) : requestOptions.body;
612
+ const requestHeaders = Object.fromEntries(
613
+ Object.entries(requestOptions.headers).map(([name, value]) => [
614
+ name,
615
+ String(value)
616
+ ])
617
+ );
618
+ let fetchResponse;
619
+ try {
620
+ fetchResponse = await fetch(requestOptions.url, {
621
+ method: requestOptions.method,
622
+ body,
623
+ redirect: requestOptions.request?.redirect,
624
+ headers: requestHeaders,
625
+ signal: requestOptions.request?.signal,
626
+ // duplex must be set if request.body is ReadableStream or Async Iterables.
627
+ // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.
628
+ ...requestOptions.body && { duplex: "half" }
629
+ });
630
+ } catch (error) {
631
+ let message = "Unknown Error";
632
+ if (error instanceof Error) {
633
+ if (error.name === "AbortError") {
634
+ error.status = 500;
635
+ throw error;
636
+ }
637
+ message = error.message;
638
+ if (error.name === "TypeError" && "cause" in error) {
639
+ if (error.cause instanceof Error) {
640
+ message = error.cause.message;
641
+ } else if (typeof error.cause === "string") {
642
+ message = error.cause;
643
+ }
644
+ }
645
+ }
646
+ const requestError = new RequestError(message, 500, {
647
+ request: requestOptions
648
+ });
649
+ requestError.cause = error;
650
+ throw requestError;
651
+ }
652
+ const status = fetchResponse.status;
653
+ const url = fetchResponse.url;
654
+ const responseHeaders = {};
655
+ for (const [key, value] of fetchResponse.headers) {
656
+ responseHeaders[key] = value;
657
+ }
658
+ const octokitResponse = {
659
+ url,
660
+ status,
661
+ headers: responseHeaders,
662
+ data: ""
663
+ };
664
+ if ("deprecation" in responseHeaders) {
665
+ const matches = responseHeaders.link && responseHeaders.link.match(/<([^>]+)>; rel="deprecation"/);
666
+ const deprecationLink = matches && matches.pop();
667
+ log.warn(
668
+ `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`
669
+ );
670
+ }
671
+ if (status === 204 || status === 205) {
672
+ return octokitResponse;
673
+ }
674
+ if (requestOptions.method === "HEAD") {
675
+ if (status < 400) {
676
+ return octokitResponse;
677
+ }
678
+ throw new RequestError(fetchResponse.statusText, status, {
679
+ response: octokitResponse,
680
+ request: requestOptions
681
+ });
682
+ }
683
+ if (status === 304) {
684
+ octokitResponse.data = await getResponseData(fetchResponse);
685
+ throw new RequestError("Not modified", status, {
686
+ response: octokitResponse,
687
+ request: requestOptions
688
+ });
689
+ }
690
+ if (status >= 400) {
691
+ octokitResponse.data = await getResponseData(fetchResponse);
692
+ throw new RequestError(toErrorMessage(octokitResponse.data), status, {
693
+ response: octokitResponse,
694
+ request: requestOptions
695
+ });
696
+ }
697
+ octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body;
698
+ return octokitResponse;
699
+ }
700
+ async function getResponseData(response) {
701
+ const contentType = response.headers.get("content-type");
702
+ if (/application\/json/.test(contentType)) {
703
+ return response.json().catch(() => response.text()).catch(() => "");
704
+ }
705
+ if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) {
706
+ return response.text();
707
+ }
708
+ return response.arrayBuffer();
709
+ }
710
+ function toErrorMessage(data) {
711
+ if (typeof data === "string") {
712
+ return data;
713
+ }
714
+ if (data instanceof ArrayBuffer) {
715
+ return "Unknown error";
716
+ }
717
+ if ("message" in data) {
718
+ const suffix = "documentation_url" in data ? ` - ${data.documentation_url}` : "";
719
+ return Array.isArray(data.errors) ? `${data.message}: ${data.errors.map((v) => JSON.stringify(v)).join(", ")}${suffix}` : `${data.message}${suffix}`;
720
+ }
721
+ return `Unknown error: ${JSON.stringify(data)}`;
722
+ }
723
+ function withDefaults2(oldEndpoint, newDefaults) {
724
+ const endpoint2 = oldEndpoint.defaults(newDefaults);
725
+ const newApi = function(route, parameters) {
726
+ const endpointOptions = endpoint2.merge(route, parameters);
727
+ if (!endpointOptions.request || !endpointOptions.request.hook) {
728
+ return fetchWrapper(endpoint2.parse(endpointOptions));
729
+ }
730
+ const request2 = (route2, parameters2) => {
731
+ return fetchWrapper(
732
+ endpoint2.parse(endpoint2.merge(route2, parameters2))
733
+ );
734
+ };
735
+ Object.assign(request2, {
736
+ endpoint: endpoint2,
737
+ defaults: withDefaults2.bind(null, endpoint2)
738
+ });
739
+ return endpointOptions.request.hook(request2, endpointOptions);
740
+ };
741
+ return Object.assign(newApi, {
742
+ endpoint: endpoint2,
743
+ defaults: withDefaults2.bind(null, endpoint2)
744
+ });
745
+ }
746
+ var request = withDefaults2(endpoint, defaults_default);
747
+
748
+ // node_modules/@octokit/graphql/dist-bundle/index.js
749
+ var VERSION3 = "0.0.0-development";
750
+ function _buildMessageForResponseErrors(data) {
751
+ return `Request failed due to following response errors:
752
+ ` + data.errors.map((e) => ` - ${e.message}`).join("\n");
753
+ }
754
+ var GraphqlResponseError = class extends Error {
755
+ constructor(request2, headers, response) {
756
+ super(_buildMessageForResponseErrors(response));
757
+ this.request = request2;
758
+ this.headers = headers;
759
+ this.response = response;
760
+ this.errors = response.errors;
761
+ this.data = response.data;
762
+ if (Error.captureStackTrace) {
763
+ Error.captureStackTrace(this, this.constructor);
764
+ }
765
+ }
766
+ name = "GraphqlResponseError";
767
+ errors;
768
+ data;
769
+ };
770
+ var NON_VARIABLE_OPTIONS = [
771
+ "method",
772
+ "baseUrl",
773
+ "url",
774
+ "headers",
775
+ "request",
776
+ "query",
777
+ "mediaType"
778
+ ];
779
+ var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"];
780
+ var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/;
781
+ function graphql(request2, query, options) {
782
+ if (options) {
783
+ if (typeof query === "string" && "query" in options) {
784
+ return Promise.reject(
785
+ new Error(`[@octokit/graphql] "query" cannot be used as variable name`)
786
+ );
787
+ }
788
+ for (const key in options) {
789
+ if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))
790
+ continue;
791
+ return Promise.reject(
792
+ new Error(
793
+ `[@octokit/graphql] "${key}" cannot be used as variable name`
794
+ )
795
+ );
796
+ }
797
+ }
798
+ const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query;
799
+ const requestOptions = Object.keys(
800
+ parsedOptions
801
+ ).reduce((result, key) => {
802
+ if (NON_VARIABLE_OPTIONS.includes(key)) {
803
+ result[key] = parsedOptions[key];
804
+ return result;
805
+ }
806
+ if (!result.variables) {
807
+ result.variables = {};
808
+ }
809
+ result.variables[key] = parsedOptions[key];
810
+ return result;
811
+ }, {});
812
+ const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl;
813
+ if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {
814
+ requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql");
815
+ }
816
+ return request2(requestOptions).then((response) => {
817
+ if (response.data.errors) {
818
+ const headers = {};
819
+ for (const key of Object.keys(response.headers)) {
820
+ headers[key] = response.headers[key];
821
+ }
822
+ throw new GraphqlResponseError(
823
+ requestOptions,
824
+ headers,
825
+ response.data
826
+ );
827
+ }
828
+ return response.data.data;
829
+ });
830
+ }
831
+ function withDefaults3(request2, newDefaults) {
832
+ const newRequest = request2.defaults(newDefaults);
833
+ const newApi = (query, options) => {
834
+ return graphql(newRequest, query, options);
835
+ };
836
+ return Object.assign(newApi, {
837
+ defaults: withDefaults3.bind(null, newRequest),
838
+ endpoint: newRequest.endpoint
839
+ });
840
+ }
841
+ var graphql2 = withDefaults3(request, {
842
+ headers: {
843
+ "user-agent": `octokit-graphql.js/${VERSION3} ${getUserAgent()}`
844
+ },
845
+ method: "POST",
846
+ url: "/graphql"
847
+ });
848
+ function withCustomRequest(customRequest) {
849
+ return withDefaults3(customRequest, {
850
+ method: "POST",
851
+ url: "/graphql"
852
+ });
853
+ }
854
+
855
+ // node_modules/@octokit/auth-token/dist-bundle/index.js
856
+ var REGEX_IS_INSTALLATION_LEGACY = /^v1\./;
857
+ var REGEX_IS_INSTALLATION = /^ghs_/;
858
+ var REGEX_IS_USER_TO_SERVER = /^ghu_/;
859
+ async function auth(token) {
860
+ const isApp = token.split(/\./).length === 3;
861
+ const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);
862
+ const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);
863
+ const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth";
864
+ return {
865
+ type: "token",
866
+ token,
867
+ tokenType
868
+ };
869
+ }
870
+ function withAuthorizationPrefix(token) {
871
+ if (token.split(/\./).length === 3) {
872
+ return `bearer ${token}`;
873
+ }
874
+ return `token ${token}`;
875
+ }
876
+ async function hook(token, request2, route, parameters) {
877
+ const endpoint2 = request2.endpoint.merge(
878
+ route,
879
+ parameters
880
+ );
881
+ endpoint2.headers.authorization = withAuthorizationPrefix(token);
882
+ return request2(endpoint2);
883
+ }
884
+ var createTokenAuth = function createTokenAuth2(token) {
885
+ if (!token) {
886
+ throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");
887
+ }
888
+ if (typeof token !== "string") {
889
+ throw new Error(
890
+ "[@octokit/auth-token] Token passed to createTokenAuth is not a string"
891
+ );
892
+ }
893
+ token = token.replace(/^(token|bearer) +/i, "");
894
+ return Object.assign(auth.bind(null, token), {
895
+ hook: hook.bind(null, token)
896
+ });
897
+ };
898
+
899
+ // node_modules/@octokit/core/dist-src/version.js
900
+ var VERSION4 = "6.1.2";
901
+
902
+ // node_modules/@octokit/core/dist-src/index.js
903
+ var noop = () => {
904
+ };
905
+ var consoleWarn = console.warn.bind(console);
906
+ var consoleError = console.error.bind(console);
907
+ var userAgentTrail = `octokit-core.js/${VERSION4} ${getUserAgent()}`;
908
+ var Octokit = class {
909
+ static VERSION = VERSION4;
910
+ static defaults(defaults) {
911
+ const OctokitWithDefaults = class extends this {
912
+ constructor(...args) {
913
+ const options = args[0] || {};
914
+ if (typeof defaults === "function") {
915
+ super(defaults(options));
916
+ return;
917
+ }
918
+ super(
919
+ Object.assign(
920
+ {},
921
+ defaults,
922
+ options,
923
+ options.userAgent && defaults.userAgent ? {
924
+ userAgent: `${options.userAgent} ${defaults.userAgent}`
925
+ } : null
926
+ )
927
+ );
928
+ }
929
+ };
930
+ return OctokitWithDefaults;
931
+ }
932
+ static plugins = [];
933
+ /**
934
+ * Attach a plugin (or many) to your Octokit instance.
935
+ *
936
+ * @example
937
+ * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)
938
+ */
939
+ static plugin(...newPlugins) {
940
+ const currentPlugins = this.plugins;
941
+ const NewOctokit = class extends this {
942
+ static plugins = currentPlugins.concat(
943
+ newPlugins.filter((plugin) => !currentPlugins.includes(plugin))
944
+ );
945
+ };
946
+ return NewOctokit;
947
+ }
948
+ constructor(options = {}) {
949
+ const hook2 = new before_after_hook_default.Collection();
950
+ const requestDefaults = {
951
+ baseUrl: request.endpoint.DEFAULTS.baseUrl,
952
+ headers: {},
953
+ request: Object.assign({}, options.request, {
954
+ // @ts-ignore internal usage only, no need to type
955
+ hook: hook2.bind(null, "request")
956
+ }),
957
+ mediaType: {
958
+ previews: [],
959
+ format: ""
960
+ }
961
+ };
962
+ requestDefaults.headers["user-agent"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;
963
+ if (options.baseUrl) {
964
+ requestDefaults.baseUrl = options.baseUrl;
965
+ }
966
+ if (options.previews) {
967
+ requestDefaults.mediaType.previews = options.previews;
968
+ }
969
+ if (options.timeZone) {
970
+ requestDefaults.headers["time-zone"] = options.timeZone;
971
+ }
972
+ this.request = request.defaults(requestDefaults);
973
+ this.graphql = withCustomRequest(this.request).defaults(requestDefaults);
974
+ this.log = Object.assign(
975
+ {
976
+ debug: noop,
977
+ info: noop,
978
+ warn: consoleWarn,
979
+ error: consoleError
980
+ },
981
+ options.log
982
+ );
983
+ this.hook = hook2;
984
+ if (!options.authStrategy) {
985
+ if (!options.auth) {
986
+ this.auth = async () => ({
987
+ type: "unauthenticated"
988
+ });
989
+ } else {
990
+ const auth2 = createTokenAuth(options.auth);
991
+ hook2.wrap("request", auth2.hook);
992
+ this.auth = auth2;
993
+ }
994
+ } else {
995
+ const { authStrategy, ...otherOptions } = options;
996
+ const auth2 = authStrategy(
997
+ Object.assign(
998
+ {
999
+ request: this.request,
1000
+ log: this.log,
1001
+ // we pass the current octokit instance as well as its constructor options
1002
+ // to allow for authentication strategies that return a new octokit instance
1003
+ // that shares the same internal state as the current one. The original
1004
+ // requirement for this was the "event-octokit" authentication strategy
1005
+ // of https://github.com/probot/octokit-auth-probot.
1006
+ octokit: this,
1007
+ octokitOptions: otherOptions
1008
+ },
1009
+ options.auth
1010
+ )
1011
+ );
1012
+ hook2.wrap("request", auth2.hook);
1013
+ this.auth = auth2;
1014
+ }
1015
+ const classConstructor = this.constructor;
1016
+ for (let i = 0; i < classConstructor.plugins.length; ++i) {
1017
+ Object.assign(this, classConstructor.plugins[i](this, options));
1018
+ }
1019
+ }
1020
+ // assigned during constructor
1021
+ request;
1022
+ graphql;
1023
+ log;
1024
+ hook;
1025
+ // TODO: type `octokit.auth` based on passed options.authStrategy
1026
+ auth;
1027
+ };
1028
+
1029
+ // node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js
1030
+ var VERSION5 = "0.0.0-development";
1031
+ function normalizePaginatedListResponse(response) {
1032
+ if (!response.data) {
1033
+ return {
1034
+ ...response,
1035
+ data: []
1036
+ };
1037
+ }
1038
+ const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data);
1039
+ if (!responseNeedsNormalization) return response;
1040
+ const incompleteResults = response.data.incomplete_results;
1041
+ const repositorySelection = response.data.repository_selection;
1042
+ const totalCount = response.data.total_count;
1043
+ delete response.data.incomplete_results;
1044
+ delete response.data.repository_selection;
1045
+ delete response.data.total_count;
1046
+ const namespaceKey = Object.keys(response.data)[0];
1047
+ const data = response.data[namespaceKey];
1048
+ response.data = data;
1049
+ if (typeof incompleteResults !== "undefined") {
1050
+ response.data.incomplete_results = incompleteResults;
1051
+ }
1052
+ if (typeof repositorySelection !== "undefined") {
1053
+ response.data.repository_selection = repositorySelection;
1054
+ }
1055
+ response.data.total_count = totalCount;
1056
+ return response;
1057
+ }
1058
+ function iterator(octokit, route, parameters) {
1059
+ const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);
1060
+ const requestMethod = typeof route === "function" ? route : octokit.request;
1061
+ const method = options.method;
1062
+ const headers = options.headers;
1063
+ let url = options.url;
1064
+ return {
1065
+ [Symbol.asyncIterator]: () => ({
1066
+ async next() {
1067
+ if (!url) return { done: true };
1068
+ try {
1069
+ const response = await requestMethod({ method, url, headers });
1070
+ const normalizedResponse = normalizePaginatedListResponse(response);
1071
+ url = ((normalizedResponse.headers.link || "").match(
1072
+ /<([^>]+)>;\s*rel="next"/
1073
+ ) || [])[1];
1074
+ return { value: normalizedResponse };
1075
+ } catch (error) {
1076
+ if (error.status !== 409) throw error;
1077
+ url = "";
1078
+ return {
1079
+ value: {
1080
+ status: 200,
1081
+ headers: {},
1082
+ data: []
1083
+ }
1084
+ };
1085
+ }
1086
+ }
1087
+ })
1088
+ };
1089
+ }
1090
+ function paginate(octokit, route, parameters, mapFn) {
1091
+ if (typeof parameters === "function") {
1092
+ mapFn = parameters;
1093
+ parameters = void 0;
1094
+ }
1095
+ return gather(
1096
+ octokit,
1097
+ [],
1098
+ iterator(octokit, route, parameters)[Symbol.asyncIterator](),
1099
+ mapFn
1100
+ );
1101
+ }
1102
+ function gather(octokit, results, iterator2, mapFn) {
1103
+ return iterator2.next().then((result) => {
1104
+ if (result.done) {
1105
+ return results;
1106
+ }
1107
+ let earlyExit = false;
1108
+ function done() {
1109
+ earlyExit = true;
1110
+ }
1111
+ results = results.concat(
1112
+ mapFn ? mapFn(result.value, done) : result.value.data
1113
+ );
1114
+ if (earlyExit) {
1115
+ return results;
1116
+ }
1117
+ return gather(octokit, results, iterator2, mapFn);
1118
+ });
1119
+ }
1120
+ var composePaginateRest = Object.assign(paginate, {
1121
+ iterator
1122
+ });
1123
+ function paginateRest(octokit) {
1124
+ return {
1125
+ paginate: Object.assign(paginate.bind(null, octokit), {
1126
+ iterator: iterator.bind(null, octokit)
1127
+ })
1128
+ };
1129
+ }
1130
+ paginateRest.VERSION = VERSION5;
1131
+
1132
+ // node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js
1133
+ var VERSION6 = "13.2.6";
1134
+
1135
+ // node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js
1136
+ var Endpoints = {
1137
+ actions: {
1138
+ addCustomLabelsToSelfHostedRunnerForOrg: [
1139
+ "POST /orgs/{org}/actions/runners/{runner_id}/labels"
1140
+ ],
1141
+ addCustomLabelsToSelfHostedRunnerForRepo: [
1142
+ "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
1143
+ ],
1144
+ addSelectedRepoToOrgSecret: [
1145
+ "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"
1146
+ ],
1147
+ addSelectedRepoToOrgVariable: [
1148
+ "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"
1149
+ ],
1150
+ approveWorkflowRun: [
1151
+ "POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"
1152
+ ],
1153
+ cancelWorkflowRun: [
1154
+ "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"
1155
+ ],
1156
+ createEnvironmentVariable: [
1157
+ "POST /repos/{owner}/{repo}/environments/{environment_name}/variables"
1158
+ ],
1159
+ createOrUpdateEnvironmentSecret: [
1160
+ "PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"
1161
+ ],
1162
+ createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"],
1163
+ createOrUpdateRepoSecret: [
1164
+ "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"
1165
+ ],
1166
+ createOrgVariable: ["POST /orgs/{org}/actions/variables"],
1167
+ createRegistrationTokenForOrg: [
1168
+ "POST /orgs/{org}/actions/runners/registration-token"
1169
+ ],
1170
+ createRegistrationTokenForRepo: [
1171
+ "POST /repos/{owner}/{repo}/actions/runners/registration-token"
1172
+ ],
1173
+ createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"],
1174
+ createRemoveTokenForRepo: [
1175
+ "POST /repos/{owner}/{repo}/actions/runners/remove-token"
1176
+ ],
1177
+ createRepoVariable: ["POST /repos/{owner}/{repo}/actions/variables"],
1178
+ createWorkflowDispatch: [
1179
+ "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"
1180
+ ],
1181
+ deleteActionsCacheById: [
1182
+ "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"
1183
+ ],
1184
+ deleteActionsCacheByKey: [
1185
+ "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"
1186
+ ],
1187
+ deleteArtifact: [
1188
+ "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"
1189
+ ],
1190
+ deleteEnvironmentSecret: [
1191
+ "DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"
1192
+ ],
1193
+ deleteEnvironmentVariable: [
1194
+ "DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"
1195
+ ],
1196
+ deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"],
1197
+ deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"],
1198
+ deleteRepoSecret: [
1199
+ "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"
1200
+ ],
1201
+ deleteRepoVariable: [
1202
+ "DELETE /repos/{owner}/{repo}/actions/variables/{name}"
1203
+ ],
1204
+ deleteSelfHostedRunnerFromOrg: [
1205
+ "DELETE /orgs/{org}/actions/runners/{runner_id}"
1206
+ ],
1207
+ deleteSelfHostedRunnerFromRepo: [
1208
+ "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"
1209
+ ],
1210
+ deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],
1211
+ deleteWorkflowRunLogs: [
1212
+ "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"
1213
+ ],
1214
+ disableSelectedRepositoryGithubActionsOrganization: [
1215
+ "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"
1216
+ ],
1217
+ disableWorkflow: [
1218
+ "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"
1219
+ ],
1220
+ downloadArtifact: [
1221
+ "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"
1222
+ ],
1223
+ downloadJobLogsForWorkflowRun: [
1224
+ "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"
1225
+ ],
1226
+ downloadWorkflowRunAttemptLogs: [
1227
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"
1228
+ ],
1229
+ downloadWorkflowRunLogs: [
1230
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"
1231
+ ],
1232
+ enableSelectedRepositoryGithubActionsOrganization: [
1233
+ "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"
1234
+ ],
1235
+ enableWorkflow: [
1236
+ "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"
1237
+ ],
1238
+ forceCancelWorkflowRun: [
1239
+ "POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"
1240
+ ],
1241
+ generateRunnerJitconfigForOrg: [
1242
+ "POST /orgs/{org}/actions/runners/generate-jitconfig"
1243
+ ],
1244
+ generateRunnerJitconfigForRepo: [
1245
+ "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"
1246
+ ],
1247
+ getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"],
1248
+ getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"],
1249
+ getActionsCacheUsageByRepoForOrg: [
1250
+ "GET /orgs/{org}/actions/cache/usage-by-repository"
1251
+ ],
1252
+ getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"],
1253
+ getAllowedActionsOrganization: [
1254
+ "GET /orgs/{org}/actions/permissions/selected-actions"
1255
+ ],
1256
+ getAllowedActionsRepository: [
1257
+ "GET /repos/{owner}/{repo}/actions/permissions/selected-actions"
1258
+ ],
1259
+ getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
1260
+ getCustomOidcSubClaimForRepo: [
1261
+ "GET /repos/{owner}/{repo}/actions/oidc/customization/sub"
1262
+ ],
1263
+ getEnvironmentPublicKey: [
1264
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key"
1265
+ ],
1266
+ getEnvironmentSecret: [
1267
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"
1268
+ ],
1269
+ getEnvironmentVariable: [
1270
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"
1271
+ ],
1272
+ getGithubActionsDefaultWorkflowPermissionsOrganization: [
1273
+ "GET /orgs/{org}/actions/permissions/workflow"
1274
+ ],
1275
+ getGithubActionsDefaultWorkflowPermissionsRepository: [
1276
+ "GET /repos/{owner}/{repo}/actions/permissions/workflow"
1277
+ ],
1278
+ getGithubActionsPermissionsOrganization: [
1279
+ "GET /orgs/{org}/actions/permissions"
1280
+ ],
1281
+ getGithubActionsPermissionsRepository: [
1282
+ "GET /repos/{owner}/{repo}/actions/permissions"
1283
+ ],
1284
+ getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],
1285
+ getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"],
1286
+ getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"],
1287
+ getOrgVariable: ["GET /orgs/{org}/actions/variables/{name}"],
1288
+ getPendingDeploymentsForRun: [
1289
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"
1290
+ ],
1291
+ getRepoPermissions: [
1292
+ "GET /repos/{owner}/{repo}/actions/permissions",
1293
+ {},
1294
+ { renamed: ["actions", "getGithubActionsPermissionsRepository"] }
1295
+ ],
1296
+ getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"],
1297
+ getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
1298
+ getRepoVariable: ["GET /repos/{owner}/{repo}/actions/variables/{name}"],
1299
+ getReviewsForRun: [
1300
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"
1301
+ ],
1302
+ getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"],
1303
+ getSelfHostedRunnerForRepo: [
1304
+ "GET /repos/{owner}/{repo}/actions/runners/{runner_id}"
1305
+ ],
1306
+ getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],
1307
+ getWorkflowAccessToRepository: [
1308
+ "GET /repos/{owner}/{repo}/actions/permissions/access"
1309
+ ],
1310
+ getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],
1311
+ getWorkflowRunAttempt: [
1312
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"
1313
+ ],
1314
+ getWorkflowRunUsage: [
1315
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"
1316
+ ],
1317
+ getWorkflowUsage: [
1318
+ "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"
1319
+ ],
1320
+ listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"],
1321
+ listEnvironmentSecrets: [
1322
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets"
1323
+ ],
1324
+ listEnvironmentVariables: [
1325
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/variables"
1326
+ ],
1327
+ listJobsForWorkflowRun: [
1328
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"
1329
+ ],
1330
+ listJobsForWorkflowRunAttempt: [
1331
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"
1332
+ ],
1333
+ listLabelsForSelfHostedRunnerForOrg: [
1334
+ "GET /orgs/{org}/actions/runners/{runner_id}/labels"
1335
+ ],
1336
+ listLabelsForSelfHostedRunnerForRepo: [
1337
+ "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
1338
+ ],
1339
+ listOrgSecrets: ["GET /orgs/{org}/actions/secrets"],
1340
+ listOrgVariables: ["GET /orgs/{org}/actions/variables"],
1341
+ listRepoOrganizationSecrets: [
1342
+ "GET /repos/{owner}/{repo}/actions/organization-secrets"
1343
+ ],
1344
+ listRepoOrganizationVariables: [
1345
+ "GET /repos/{owner}/{repo}/actions/organization-variables"
1346
+ ],
1347
+ listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"],
1348
+ listRepoVariables: ["GET /repos/{owner}/{repo}/actions/variables"],
1349
+ listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"],
1350
+ listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"],
1351
+ listRunnerApplicationsForRepo: [
1352
+ "GET /repos/{owner}/{repo}/actions/runners/downloads"
1353
+ ],
1354
+ listSelectedReposForOrgSecret: [
1355
+ "GET /orgs/{org}/actions/secrets/{secret_name}/repositories"
1356
+ ],
1357
+ listSelectedReposForOrgVariable: [
1358
+ "GET /orgs/{org}/actions/variables/{name}/repositories"
1359
+ ],
1360
+ listSelectedRepositoriesEnabledGithubActionsOrganization: [
1361
+ "GET /orgs/{org}/actions/permissions/repositories"
1362
+ ],
1363
+ listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"],
1364
+ listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"],
1365
+ listWorkflowRunArtifacts: [
1366
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"
1367
+ ],
1368
+ listWorkflowRuns: [
1369
+ "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"
1370
+ ],
1371
+ listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"],
1372
+ reRunJobForWorkflowRun: [
1373
+ "POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"
1374
+ ],
1375
+ reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],
1376
+ reRunWorkflowFailedJobs: [
1377
+ "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"
1378
+ ],
1379
+ removeAllCustomLabelsFromSelfHostedRunnerForOrg: [
1380
+ "DELETE /orgs/{org}/actions/runners/{runner_id}/labels"
1381
+ ],
1382
+ removeAllCustomLabelsFromSelfHostedRunnerForRepo: [
1383
+ "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
1384
+ ],
1385
+ removeCustomLabelFromSelfHostedRunnerForOrg: [
1386
+ "DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"
1387
+ ],
1388
+ removeCustomLabelFromSelfHostedRunnerForRepo: [
1389
+ "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"
1390
+ ],
1391
+ removeSelectedRepoFromOrgSecret: [
1392
+ "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"
1393
+ ],
1394
+ removeSelectedRepoFromOrgVariable: [
1395
+ "DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"
1396
+ ],
1397
+ reviewCustomGatesForRun: [
1398
+ "POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"
1399
+ ],
1400
+ reviewPendingDeploymentsForRun: [
1401
+ "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"
1402
+ ],
1403
+ setAllowedActionsOrganization: [
1404
+ "PUT /orgs/{org}/actions/permissions/selected-actions"
1405
+ ],
1406
+ setAllowedActionsRepository: [
1407
+ "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"
1408
+ ],
1409
+ setCustomLabelsForSelfHostedRunnerForOrg: [
1410
+ "PUT /orgs/{org}/actions/runners/{runner_id}/labels"
1411
+ ],
1412
+ setCustomLabelsForSelfHostedRunnerForRepo: [
1413
+ "PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
1414
+ ],
1415
+ setCustomOidcSubClaimForRepo: [
1416
+ "PUT /repos/{owner}/{repo}/actions/oidc/customization/sub"
1417
+ ],
1418
+ setGithubActionsDefaultWorkflowPermissionsOrganization: [
1419
+ "PUT /orgs/{org}/actions/permissions/workflow"
1420
+ ],
1421
+ setGithubActionsDefaultWorkflowPermissionsRepository: [
1422
+ "PUT /repos/{owner}/{repo}/actions/permissions/workflow"
1423
+ ],
1424
+ setGithubActionsPermissionsOrganization: [
1425
+ "PUT /orgs/{org}/actions/permissions"
1426
+ ],
1427
+ setGithubActionsPermissionsRepository: [
1428
+ "PUT /repos/{owner}/{repo}/actions/permissions"
1429
+ ],
1430
+ setSelectedReposForOrgSecret: [
1431
+ "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"
1432
+ ],
1433
+ setSelectedReposForOrgVariable: [
1434
+ "PUT /orgs/{org}/actions/variables/{name}/repositories"
1435
+ ],
1436
+ setSelectedRepositoriesEnabledGithubActionsOrganization: [
1437
+ "PUT /orgs/{org}/actions/permissions/repositories"
1438
+ ],
1439
+ setWorkflowAccessToRepository: [
1440
+ "PUT /repos/{owner}/{repo}/actions/permissions/access"
1441
+ ],
1442
+ updateEnvironmentVariable: [
1443
+ "PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"
1444
+ ],
1445
+ updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"],
1446
+ updateRepoVariable: [
1447
+ "PATCH /repos/{owner}/{repo}/actions/variables/{name}"
1448
+ ]
1449
+ },
1450
+ activity: {
1451
+ checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"],
1452
+ deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"],
1453
+ deleteThreadSubscription: [
1454
+ "DELETE /notifications/threads/{thread_id}/subscription"
1455
+ ],
1456
+ getFeeds: ["GET /feeds"],
1457
+ getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"],
1458
+ getThread: ["GET /notifications/threads/{thread_id}"],
1459
+ getThreadSubscriptionForAuthenticatedUser: [
1460
+ "GET /notifications/threads/{thread_id}/subscription"
1461
+ ],
1462
+ listEventsForAuthenticatedUser: ["GET /users/{username}/events"],
1463
+ listNotificationsForAuthenticatedUser: ["GET /notifications"],
1464
+ listOrgEventsForAuthenticatedUser: [
1465
+ "GET /users/{username}/events/orgs/{org}"
1466
+ ],
1467
+ listPublicEvents: ["GET /events"],
1468
+ listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"],
1469
+ listPublicEventsForUser: ["GET /users/{username}/events/public"],
1470
+ listPublicOrgEvents: ["GET /orgs/{org}/events"],
1471
+ listReceivedEventsForUser: ["GET /users/{username}/received_events"],
1472
+ listReceivedPublicEventsForUser: [
1473
+ "GET /users/{username}/received_events/public"
1474
+ ],
1475
+ listRepoEvents: ["GET /repos/{owner}/{repo}/events"],
1476
+ listRepoNotificationsForAuthenticatedUser: [
1477
+ "GET /repos/{owner}/{repo}/notifications"
1478
+ ],
1479
+ listReposStarredByAuthenticatedUser: ["GET /user/starred"],
1480
+ listReposStarredByUser: ["GET /users/{username}/starred"],
1481
+ listReposWatchedByUser: ["GET /users/{username}/subscriptions"],
1482
+ listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"],
1483
+ listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"],
1484
+ listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"],
1485
+ markNotificationsAsRead: ["PUT /notifications"],
1486
+ markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"],
1487
+ markThreadAsDone: ["DELETE /notifications/threads/{thread_id}"],
1488
+ markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"],
1489
+ setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"],
1490
+ setThreadSubscription: [
1491
+ "PUT /notifications/threads/{thread_id}/subscription"
1492
+ ],
1493
+ starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"],
1494
+ unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"]
1495
+ },
1496
+ apps: {
1497
+ addRepoToInstallation: [
1498
+ "PUT /user/installations/{installation_id}/repositories/{repository_id}",
1499
+ {},
1500
+ { renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] }
1501
+ ],
1502
+ addRepoToInstallationForAuthenticatedUser: [
1503
+ "PUT /user/installations/{installation_id}/repositories/{repository_id}"
1504
+ ],
1505
+ checkToken: ["POST /applications/{client_id}/token"],
1506
+ createFromManifest: ["POST /app-manifests/{code}/conversions"],
1507
+ createInstallationAccessToken: [
1508
+ "POST /app/installations/{installation_id}/access_tokens"
1509
+ ],
1510
+ deleteAuthorization: ["DELETE /applications/{client_id}/grant"],
1511
+ deleteInstallation: ["DELETE /app/installations/{installation_id}"],
1512
+ deleteToken: ["DELETE /applications/{client_id}/token"],
1513
+ getAuthenticated: ["GET /app"],
1514
+ getBySlug: ["GET /apps/{app_slug}"],
1515
+ getInstallation: ["GET /app/installations/{installation_id}"],
1516
+ getOrgInstallation: ["GET /orgs/{org}/installation"],
1517
+ getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"],
1518
+ getSubscriptionPlanForAccount: [
1519
+ "GET /marketplace_listing/accounts/{account_id}"
1520
+ ],
1521
+ getSubscriptionPlanForAccountStubbed: [
1522
+ "GET /marketplace_listing/stubbed/accounts/{account_id}"
1523
+ ],
1524
+ getUserInstallation: ["GET /users/{username}/installation"],
1525
+ getWebhookConfigForApp: ["GET /app/hook/config"],
1526
+ getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"],
1527
+ listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"],
1528
+ listAccountsForPlanStubbed: [
1529
+ "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"
1530
+ ],
1531
+ listInstallationReposForAuthenticatedUser: [
1532
+ "GET /user/installations/{installation_id}/repositories"
1533
+ ],
1534
+ listInstallationRequestsForAuthenticatedApp: [
1535
+ "GET /app/installation-requests"
1536
+ ],
1537
+ listInstallations: ["GET /app/installations"],
1538
+ listInstallationsForAuthenticatedUser: ["GET /user/installations"],
1539
+ listPlans: ["GET /marketplace_listing/plans"],
1540
+ listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"],
1541
+ listReposAccessibleToInstallation: ["GET /installation/repositories"],
1542
+ listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"],
1543
+ listSubscriptionsForAuthenticatedUserStubbed: [
1544
+ "GET /user/marketplace_purchases/stubbed"
1545
+ ],
1546
+ listWebhookDeliveries: ["GET /app/hook/deliveries"],
1547
+ redeliverWebhookDelivery: [
1548
+ "POST /app/hook/deliveries/{delivery_id}/attempts"
1549
+ ],
1550
+ removeRepoFromInstallation: [
1551
+ "DELETE /user/installations/{installation_id}/repositories/{repository_id}",
1552
+ {},
1553
+ { renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] }
1554
+ ],
1555
+ removeRepoFromInstallationForAuthenticatedUser: [
1556
+ "DELETE /user/installations/{installation_id}/repositories/{repository_id}"
1557
+ ],
1558
+ resetToken: ["PATCH /applications/{client_id}/token"],
1559
+ revokeInstallationAccessToken: ["DELETE /installation/token"],
1560
+ scopeToken: ["POST /applications/{client_id}/token/scoped"],
1561
+ suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"],
1562
+ unsuspendInstallation: [
1563
+ "DELETE /app/installations/{installation_id}/suspended"
1564
+ ],
1565
+ updateWebhookConfigForApp: ["PATCH /app/hook/config"]
1566
+ },
1567
+ billing: {
1568
+ getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"],
1569
+ getGithubActionsBillingUser: [
1570
+ "GET /users/{username}/settings/billing/actions"
1571
+ ],
1572
+ getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"],
1573
+ getGithubPackagesBillingUser: [
1574
+ "GET /users/{username}/settings/billing/packages"
1575
+ ],
1576
+ getSharedStorageBillingOrg: [
1577
+ "GET /orgs/{org}/settings/billing/shared-storage"
1578
+ ],
1579
+ getSharedStorageBillingUser: [
1580
+ "GET /users/{username}/settings/billing/shared-storage"
1581
+ ]
1582
+ },
1583
+ checks: {
1584
+ create: ["POST /repos/{owner}/{repo}/check-runs"],
1585
+ createSuite: ["POST /repos/{owner}/{repo}/check-suites"],
1586
+ get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],
1587
+ getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],
1588
+ listAnnotations: [
1589
+ "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"
1590
+ ],
1591
+ listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],
1592
+ listForSuite: [
1593
+ "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"
1594
+ ],
1595
+ listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],
1596
+ rerequestRun: [
1597
+ "POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"
1598
+ ],
1599
+ rerequestSuite: [
1600
+ "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"
1601
+ ],
1602
+ setSuitesPreferences: [
1603
+ "PATCH /repos/{owner}/{repo}/check-suites/preferences"
1604
+ ],
1605
+ update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]
1606
+ },
1607
+ codeScanning: {
1608
+ deleteAnalysis: [
1609
+ "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"
1610
+ ],
1611
+ getAlert: [
1612
+ "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}",
1613
+ {},
1614
+ { renamedParameters: { alert_id: "alert_number" } }
1615
+ ],
1616
+ getAnalysis: [
1617
+ "GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"
1618
+ ],
1619
+ getCodeqlDatabase: [
1620
+ "GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"
1621
+ ],
1622
+ getDefaultSetup: ["GET /repos/{owner}/{repo}/code-scanning/default-setup"],
1623
+ getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],
1624
+ listAlertInstances: [
1625
+ "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"
1626
+ ],
1627
+ listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"],
1628
+ listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"],
1629
+ listAlertsInstances: [
1630
+ "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",
1631
+ {},
1632
+ { renamed: ["codeScanning", "listAlertInstances"] }
1633
+ ],
1634
+ listCodeqlDatabases: [
1635
+ "GET /repos/{owner}/{repo}/code-scanning/codeql/databases"
1636
+ ],
1637
+ listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"],
1638
+ updateAlert: [
1639
+ "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"
1640
+ ],
1641
+ updateDefaultSetup: [
1642
+ "PATCH /repos/{owner}/{repo}/code-scanning/default-setup"
1643
+ ],
1644
+ uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"]
1645
+ },
1646
+ codesOfConduct: {
1647
+ getAllCodesOfConduct: ["GET /codes_of_conduct"],
1648
+ getConductCode: ["GET /codes_of_conduct/{key}"]
1649
+ },
1650
+ codespaces: {
1651
+ addRepositoryForSecretForAuthenticatedUser: [
1652
+ "PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"
1653
+ ],
1654
+ addSelectedRepoToOrgSecret: [
1655
+ "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"
1656
+ ],
1657
+ checkPermissionsForDevcontainer: [
1658
+ "GET /repos/{owner}/{repo}/codespaces/permissions_check"
1659
+ ],
1660
+ codespaceMachinesForAuthenticatedUser: [
1661
+ "GET /user/codespaces/{codespace_name}/machines"
1662
+ ],
1663
+ createForAuthenticatedUser: ["POST /user/codespaces"],
1664
+ createOrUpdateOrgSecret: [
1665
+ "PUT /orgs/{org}/codespaces/secrets/{secret_name}"
1666
+ ],
1667
+ createOrUpdateRepoSecret: [
1668
+ "PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"
1669
+ ],
1670
+ createOrUpdateSecretForAuthenticatedUser: [
1671
+ "PUT /user/codespaces/secrets/{secret_name}"
1672
+ ],
1673
+ createWithPrForAuthenticatedUser: [
1674
+ "POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"
1675
+ ],
1676
+ createWithRepoForAuthenticatedUser: [
1677
+ "POST /repos/{owner}/{repo}/codespaces"
1678
+ ],
1679
+ deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"],
1680
+ deleteFromOrganization: [
1681
+ "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"
1682
+ ],
1683
+ deleteOrgSecret: ["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"],
1684
+ deleteRepoSecret: [
1685
+ "DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"
1686
+ ],
1687
+ deleteSecretForAuthenticatedUser: [
1688
+ "DELETE /user/codespaces/secrets/{secret_name}"
1689
+ ],
1690
+ exportForAuthenticatedUser: [
1691
+ "POST /user/codespaces/{codespace_name}/exports"
1692
+ ],
1693
+ getCodespacesForUserInOrg: [
1694
+ "GET /orgs/{org}/members/{username}/codespaces"
1695
+ ],
1696
+ getExportDetailsForAuthenticatedUser: [
1697
+ "GET /user/codespaces/{codespace_name}/exports/{export_id}"
1698
+ ],
1699
+ getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"],
1700
+ getOrgPublicKey: ["GET /orgs/{org}/codespaces/secrets/public-key"],
1701
+ getOrgSecret: ["GET /orgs/{org}/codespaces/secrets/{secret_name}"],
1702
+ getPublicKeyForAuthenticatedUser: [
1703
+ "GET /user/codespaces/secrets/public-key"
1704
+ ],
1705
+ getRepoPublicKey: [
1706
+ "GET /repos/{owner}/{repo}/codespaces/secrets/public-key"
1707
+ ],
1708
+ getRepoSecret: [
1709
+ "GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"
1710
+ ],
1711
+ getSecretForAuthenticatedUser: [
1712
+ "GET /user/codespaces/secrets/{secret_name}"
1713
+ ],
1714
+ listDevcontainersInRepositoryForAuthenticatedUser: [
1715
+ "GET /repos/{owner}/{repo}/codespaces/devcontainers"
1716
+ ],
1717
+ listForAuthenticatedUser: ["GET /user/codespaces"],
1718
+ listInOrganization: [
1719
+ "GET /orgs/{org}/codespaces",
1720
+ {},
1721
+ { renamedParameters: { org_id: "org" } }
1722
+ ],
1723
+ listInRepositoryForAuthenticatedUser: [
1724
+ "GET /repos/{owner}/{repo}/codespaces"
1725
+ ],
1726
+ listOrgSecrets: ["GET /orgs/{org}/codespaces/secrets"],
1727
+ listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"],
1728
+ listRepositoriesForSecretForAuthenticatedUser: [
1729
+ "GET /user/codespaces/secrets/{secret_name}/repositories"
1730
+ ],
1731
+ listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"],
1732
+ listSelectedReposForOrgSecret: [
1733
+ "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"
1734
+ ],
1735
+ preFlightWithRepoForAuthenticatedUser: [
1736
+ "GET /repos/{owner}/{repo}/codespaces/new"
1737
+ ],
1738
+ publishForAuthenticatedUser: [
1739
+ "POST /user/codespaces/{codespace_name}/publish"
1740
+ ],
1741
+ removeRepositoryForSecretForAuthenticatedUser: [
1742
+ "DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"
1743
+ ],
1744
+ removeSelectedRepoFromOrgSecret: [
1745
+ "DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"
1746
+ ],
1747
+ repoMachinesForAuthenticatedUser: [
1748
+ "GET /repos/{owner}/{repo}/codespaces/machines"
1749
+ ],
1750
+ setRepositoriesForSecretForAuthenticatedUser: [
1751
+ "PUT /user/codespaces/secrets/{secret_name}/repositories"
1752
+ ],
1753
+ setSelectedReposForOrgSecret: [
1754
+ "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"
1755
+ ],
1756
+ startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"],
1757
+ stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"],
1758
+ stopInOrganization: [
1759
+ "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"
1760
+ ],
1761
+ updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"]
1762
+ },
1763
+ copilot: {
1764
+ addCopilotSeatsForTeams: [
1765
+ "POST /orgs/{org}/copilot/billing/selected_teams"
1766
+ ],
1767
+ addCopilotSeatsForUsers: [
1768
+ "POST /orgs/{org}/copilot/billing/selected_users"
1769
+ ],
1770
+ cancelCopilotSeatAssignmentForTeams: [
1771
+ "DELETE /orgs/{org}/copilot/billing/selected_teams"
1772
+ ],
1773
+ cancelCopilotSeatAssignmentForUsers: [
1774
+ "DELETE /orgs/{org}/copilot/billing/selected_users"
1775
+ ],
1776
+ getCopilotOrganizationDetails: ["GET /orgs/{org}/copilot/billing"],
1777
+ getCopilotSeatDetailsForUser: [
1778
+ "GET /orgs/{org}/members/{username}/copilot"
1779
+ ],
1780
+ listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"],
1781
+ usageMetricsForEnterprise: ["GET /enterprises/{enterprise}/copilot/usage"],
1782
+ usageMetricsForOrg: ["GET /orgs/{org}/copilot/usage"],
1783
+ usageMetricsForTeam: ["GET /orgs/{org}/team/{team_slug}/copilot/usage"]
1784
+ },
1785
+ dependabot: {
1786
+ addSelectedRepoToOrgSecret: [
1787
+ "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"
1788
+ ],
1789
+ createOrUpdateOrgSecret: [
1790
+ "PUT /orgs/{org}/dependabot/secrets/{secret_name}"
1791
+ ],
1792
+ createOrUpdateRepoSecret: [
1793
+ "PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"
1794
+ ],
1795
+ deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],
1796
+ deleteRepoSecret: [
1797
+ "DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"
1798
+ ],
1799
+ getAlert: ["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],
1800
+ getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"],
1801
+ getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"],
1802
+ getRepoPublicKey: [
1803
+ "GET /repos/{owner}/{repo}/dependabot/secrets/public-key"
1804
+ ],
1805
+ getRepoSecret: [
1806
+ "GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"
1807
+ ],
1808
+ listAlertsForEnterprise: [
1809
+ "GET /enterprises/{enterprise}/dependabot/alerts"
1810
+ ],
1811
+ listAlertsForOrg: ["GET /orgs/{org}/dependabot/alerts"],
1812
+ listAlertsForRepo: ["GET /repos/{owner}/{repo}/dependabot/alerts"],
1813
+ listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"],
1814
+ listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"],
1815
+ listSelectedReposForOrgSecret: [
1816
+ "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"
1817
+ ],
1818
+ removeSelectedRepoFromOrgSecret: [
1819
+ "DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"
1820
+ ],
1821
+ setSelectedReposForOrgSecret: [
1822
+ "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"
1823
+ ],
1824
+ updateAlert: [
1825
+ "PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"
1826
+ ]
1827
+ },
1828
+ dependencyGraph: {
1829
+ createRepositorySnapshot: [
1830
+ "POST /repos/{owner}/{repo}/dependency-graph/snapshots"
1831
+ ],
1832
+ diffRange: [
1833
+ "GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"
1834
+ ],
1835
+ exportSbom: ["GET /repos/{owner}/{repo}/dependency-graph/sbom"]
1836
+ },
1837
+ emojis: { get: ["GET /emojis"] },
1838
+ gists: {
1839
+ checkIsStarred: ["GET /gists/{gist_id}/star"],
1840
+ create: ["POST /gists"],
1841
+ createComment: ["POST /gists/{gist_id}/comments"],
1842
+ delete: ["DELETE /gists/{gist_id}"],
1843
+ deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"],
1844
+ fork: ["POST /gists/{gist_id}/forks"],
1845
+ get: ["GET /gists/{gist_id}"],
1846
+ getComment: ["GET /gists/{gist_id}/comments/{comment_id}"],
1847
+ getRevision: ["GET /gists/{gist_id}/{sha}"],
1848
+ list: ["GET /gists"],
1849
+ listComments: ["GET /gists/{gist_id}/comments"],
1850
+ listCommits: ["GET /gists/{gist_id}/commits"],
1851
+ listForUser: ["GET /users/{username}/gists"],
1852
+ listForks: ["GET /gists/{gist_id}/forks"],
1853
+ listPublic: ["GET /gists/public"],
1854
+ listStarred: ["GET /gists/starred"],
1855
+ star: ["PUT /gists/{gist_id}/star"],
1856
+ unstar: ["DELETE /gists/{gist_id}/star"],
1857
+ update: ["PATCH /gists/{gist_id}"],
1858
+ updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"]
1859
+ },
1860
+ git: {
1861
+ createBlob: ["POST /repos/{owner}/{repo}/git/blobs"],
1862
+ createCommit: ["POST /repos/{owner}/{repo}/git/commits"],
1863
+ createRef: ["POST /repos/{owner}/{repo}/git/refs"],
1864
+ createTag: ["POST /repos/{owner}/{repo}/git/tags"],
1865
+ createTree: ["POST /repos/{owner}/{repo}/git/trees"],
1866
+ deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],
1867
+ getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],
1868
+ getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],
1869
+ getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"],
1870
+ getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],
1871
+ getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],
1872
+ listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],
1873
+ updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]
1874
+ },
1875
+ gitignore: {
1876
+ getAllTemplates: ["GET /gitignore/templates"],
1877
+ getTemplate: ["GET /gitignore/templates/{name}"]
1878
+ },
1879
+ interactions: {
1880
+ getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"],
1881
+ getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"],
1882
+ getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"],
1883
+ getRestrictionsForYourPublicRepos: [
1884
+ "GET /user/interaction-limits",
1885
+ {},
1886
+ { renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] }
1887
+ ],
1888
+ removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"],
1889
+ removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"],
1890
+ removeRestrictionsForRepo: [
1891
+ "DELETE /repos/{owner}/{repo}/interaction-limits"
1892
+ ],
1893
+ removeRestrictionsForYourPublicRepos: [
1894
+ "DELETE /user/interaction-limits",
1895
+ {},
1896
+ { renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] }
1897
+ ],
1898
+ setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"],
1899
+ setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"],
1900
+ setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"],
1901
+ setRestrictionsForYourPublicRepos: [
1902
+ "PUT /user/interaction-limits",
1903
+ {},
1904
+ { renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] }
1905
+ ]
1906
+ },
1907
+ issues: {
1908
+ addAssignees: [
1909
+ "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"
1910
+ ],
1911
+ addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],
1912
+ checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"],
1913
+ checkUserCanBeAssignedToIssue: [
1914
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"
1915
+ ],
1916
+ create: ["POST /repos/{owner}/{repo}/issues"],
1917
+ createComment: [
1918
+ "POST /repos/{owner}/{repo}/issues/{issue_number}/comments"
1919
+ ],
1920
+ createLabel: ["POST /repos/{owner}/{repo}/labels"],
1921
+ createMilestone: ["POST /repos/{owner}/{repo}/milestones"],
1922
+ deleteComment: [
1923
+ "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"
1924
+ ],
1925
+ deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"],
1926
+ deleteMilestone: [
1927
+ "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"
1928
+ ],
1929
+ get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"],
1930
+ getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],
1931
+ getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"],
1932
+ getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"],
1933
+ getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],
1934
+ list: ["GET /issues"],
1935
+ listAssignees: ["GET /repos/{owner}/{repo}/assignees"],
1936
+ listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],
1937
+ listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"],
1938
+ listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],
1939
+ listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"],
1940
+ listEventsForTimeline: [
1941
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"
1942
+ ],
1943
+ listForAuthenticatedUser: ["GET /user/issues"],
1944
+ listForOrg: ["GET /orgs/{org}/issues"],
1945
+ listForRepo: ["GET /repos/{owner}/{repo}/issues"],
1946
+ listLabelsForMilestone: [
1947
+ "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"
1948
+ ],
1949
+ listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"],
1950
+ listLabelsOnIssue: [
1951
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/labels"
1952
+ ],
1953
+ listMilestones: ["GET /repos/{owner}/{repo}/milestones"],
1954
+ lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],
1955
+ removeAllLabels: [
1956
+ "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"
1957
+ ],
1958
+ removeAssignees: [
1959
+ "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"
1960
+ ],
1961
+ removeLabel: [
1962
+ "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"
1963
+ ],
1964
+ setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],
1965
+ unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],
1966
+ update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],
1967
+ updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],
1968
+ updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"],
1969
+ updateMilestone: [
1970
+ "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"
1971
+ ]
1972
+ },
1973
+ licenses: {
1974
+ get: ["GET /licenses/{license}"],
1975
+ getAllCommonlyUsed: ["GET /licenses"],
1976
+ getForRepo: ["GET /repos/{owner}/{repo}/license"]
1977
+ },
1978
+ markdown: {
1979
+ render: ["POST /markdown"],
1980
+ renderRaw: [
1981
+ "POST /markdown/raw",
1982
+ { headers: { "content-type": "text/plain; charset=utf-8" } }
1983
+ ]
1984
+ },
1985
+ meta: {
1986
+ get: ["GET /meta"],
1987
+ getAllVersions: ["GET /versions"],
1988
+ getOctocat: ["GET /octocat"],
1989
+ getZen: ["GET /zen"],
1990
+ root: ["GET /"]
1991
+ },
1992
+ migrations: {
1993
+ deleteArchiveForAuthenticatedUser: [
1994
+ "DELETE /user/migrations/{migration_id}/archive"
1995
+ ],
1996
+ deleteArchiveForOrg: [
1997
+ "DELETE /orgs/{org}/migrations/{migration_id}/archive"
1998
+ ],
1999
+ downloadArchiveForOrg: [
2000
+ "GET /orgs/{org}/migrations/{migration_id}/archive"
2001
+ ],
2002
+ getArchiveForAuthenticatedUser: [
2003
+ "GET /user/migrations/{migration_id}/archive"
2004
+ ],
2005
+ getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"],
2006
+ getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"],
2007
+ listForAuthenticatedUser: ["GET /user/migrations"],
2008
+ listForOrg: ["GET /orgs/{org}/migrations"],
2009
+ listReposForAuthenticatedUser: [
2010
+ "GET /user/migrations/{migration_id}/repositories"
2011
+ ],
2012
+ listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"],
2013
+ listReposForUser: [
2014
+ "GET /user/migrations/{migration_id}/repositories",
2015
+ {},
2016
+ { renamed: ["migrations", "listReposForAuthenticatedUser"] }
2017
+ ],
2018
+ startForAuthenticatedUser: ["POST /user/migrations"],
2019
+ startForOrg: ["POST /orgs/{org}/migrations"],
2020
+ unlockRepoForAuthenticatedUser: [
2021
+ "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"
2022
+ ],
2023
+ unlockRepoForOrg: [
2024
+ "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"
2025
+ ]
2026
+ },
2027
+ oidc: {
2028
+ getOidcCustomSubTemplateForOrg: [
2029
+ "GET /orgs/{org}/actions/oidc/customization/sub"
2030
+ ],
2031
+ updateOidcCustomSubTemplateForOrg: [
2032
+ "PUT /orgs/{org}/actions/oidc/customization/sub"
2033
+ ]
2034
+ },
2035
+ orgs: {
2036
+ addSecurityManagerTeam: [
2037
+ "PUT /orgs/{org}/security-managers/teams/{team_slug}"
2038
+ ],
2039
+ assignTeamToOrgRole: [
2040
+ "PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"
2041
+ ],
2042
+ assignUserToOrgRole: [
2043
+ "PUT /orgs/{org}/organization-roles/users/{username}/{role_id}"
2044
+ ],
2045
+ blockUser: ["PUT /orgs/{org}/blocks/{username}"],
2046
+ cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"],
2047
+ checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"],
2048
+ checkMembershipForUser: ["GET /orgs/{org}/members/{username}"],
2049
+ checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"],
2050
+ convertMemberToOutsideCollaborator: [
2051
+ "PUT /orgs/{org}/outside_collaborators/{username}"
2052
+ ],
2053
+ createCustomOrganizationRole: ["POST /orgs/{org}/organization-roles"],
2054
+ createInvitation: ["POST /orgs/{org}/invitations"],
2055
+ createOrUpdateCustomProperties: ["PATCH /orgs/{org}/properties/schema"],
2056
+ createOrUpdateCustomPropertiesValuesForRepos: [
2057
+ "PATCH /orgs/{org}/properties/values"
2058
+ ],
2059
+ createOrUpdateCustomProperty: [
2060
+ "PUT /orgs/{org}/properties/schema/{custom_property_name}"
2061
+ ],
2062
+ createWebhook: ["POST /orgs/{org}/hooks"],
2063
+ delete: ["DELETE /orgs/{org}"],
2064
+ deleteCustomOrganizationRole: [
2065
+ "DELETE /orgs/{org}/organization-roles/{role_id}"
2066
+ ],
2067
+ deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"],
2068
+ enableOrDisableSecurityProductOnAllOrgRepos: [
2069
+ "POST /orgs/{org}/{security_product}/{enablement}"
2070
+ ],
2071
+ get: ["GET /orgs/{org}"],
2072
+ getAllCustomProperties: ["GET /orgs/{org}/properties/schema"],
2073
+ getCustomProperty: [
2074
+ "GET /orgs/{org}/properties/schema/{custom_property_name}"
2075
+ ],
2076
+ getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"],
2077
+ getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"],
2078
+ getOrgRole: ["GET /orgs/{org}/organization-roles/{role_id}"],
2079
+ getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"],
2080
+ getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"],
2081
+ getWebhookDelivery: [
2082
+ "GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"
2083
+ ],
2084
+ list: ["GET /organizations"],
2085
+ listAppInstallations: ["GET /orgs/{org}/installations"],
2086
+ listBlockedUsers: ["GET /orgs/{org}/blocks"],
2087
+ listCustomPropertiesValuesForRepos: ["GET /orgs/{org}/properties/values"],
2088
+ listFailedInvitations: ["GET /orgs/{org}/failed_invitations"],
2089
+ listForAuthenticatedUser: ["GET /user/orgs"],
2090
+ listForUser: ["GET /users/{username}/orgs"],
2091
+ listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"],
2092
+ listMembers: ["GET /orgs/{org}/members"],
2093
+ listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"],
2094
+ listOrgRoleTeams: ["GET /orgs/{org}/organization-roles/{role_id}/teams"],
2095
+ listOrgRoleUsers: ["GET /orgs/{org}/organization-roles/{role_id}/users"],
2096
+ listOrgRoles: ["GET /orgs/{org}/organization-roles"],
2097
+ listOrganizationFineGrainedPermissions: [
2098
+ "GET /orgs/{org}/organization-fine-grained-permissions"
2099
+ ],
2100
+ listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"],
2101
+ listPatGrantRepositories: [
2102
+ "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"
2103
+ ],
2104
+ listPatGrantRequestRepositories: [
2105
+ "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"
2106
+ ],
2107
+ listPatGrantRequests: ["GET /orgs/{org}/personal-access-token-requests"],
2108
+ listPatGrants: ["GET /orgs/{org}/personal-access-tokens"],
2109
+ listPendingInvitations: ["GET /orgs/{org}/invitations"],
2110
+ listPublicMembers: ["GET /orgs/{org}/public_members"],
2111
+ listSecurityManagerTeams: ["GET /orgs/{org}/security-managers"],
2112
+ listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"],
2113
+ listWebhooks: ["GET /orgs/{org}/hooks"],
2114
+ patchCustomOrganizationRole: [
2115
+ "PATCH /orgs/{org}/organization-roles/{role_id}"
2116
+ ],
2117
+ pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"],
2118
+ redeliverWebhookDelivery: [
2119
+ "POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"
2120
+ ],
2121
+ removeCustomProperty: [
2122
+ "DELETE /orgs/{org}/properties/schema/{custom_property_name}"
2123
+ ],
2124
+ removeMember: ["DELETE /orgs/{org}/members/{username}"],
2125
+ removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"],
2126
+ removeOutsideCollaborator: [
2127
+ "DELETE /orgs/{org}/outside_collaborators/{username}"
2128
+ ],
2129
+ removePublicMembershipForAuthenticatedUser: [
2130
+ "DELETE /orgs/{org}/public_members/{username}"
2131
+ ],
2132
+ removeSecurityManagerTeam: [
2133
+ "DELETE /orgs/{org}/security-managers/teams/{team_slug}"
2134
+ ],
2135
+ reviewPatGrantRequest: [
2136
+ "POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"
2137
+ ],
2138
+ reviewPatGrantRequestsInBulk: [
2139
+ "POST /orgs/{org}/personal-access-token-requests"
2140
+ ],
2141
+ revokeAllOrgRolesTeam: [
2142
+ "DELETE /orgs/{org}/organization-roles/teams/{team_slug}"
2143
+ ],
2144
+ revokeAllOrgRolesUser: [
2145
+ "DELETE /orgs/{org}/organization-roles/users/{username}"
2146
+ ],
2147
+ revokeOrgRoleTeam: [
2148
+ "DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"
2149
+ ],
2150
+ revokeOrgRoleUser: [
2151
+ "DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}"
2152
+ ],
2153
+ setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"],
2154
+ setPublicMembershipForAuthenticatedUser: [
2155
+ "PUT /orgs/{org}/public_members/{username}"
2156
+ ],
2157
+ unblockUser: ["DELETE /orgs/{org}/blocks/{username}"],
2158
+ update: ["PATCH /orgs/{org}"],
2159
+ updateMembershipForAuthenticatedUser: [
2160
+ "PATCH /user/memberships/orgs/{org}"
2161
+ ],
2162
+ updatePatAccess: ["POST /orgs/{org}/personal-access-tokens/{pat_id}"],
2163
+ updatePatAccesses: ["POST /orgs/{org}/personal-access-tokens"],
2164
+ updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"],
2165
+ updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"]
2166
+ },
2167
+ packages: {
2168
+ deletePackageForAuthenticatedUser: [
2169
+ "DELETE /user/packages/{package_type}/{package_name}"
2170
+ ],
2171
+ deletePackageForOrg: [
2172
+ "DELETE /orgs/{org}/packages/{package_type}/{package_name}"
2173
+ ],
2174
+ deletePackageForUser: [
2175
+ "DELETE /users/{username}/packages/{package_type}/{package_name}"
2176
+ ],
2177
+ deletePackageVersionForAuthenticatedUser: [
2178
+ "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"
2179
+ ],
2180
+ deletePackageVersionForOrg: [
2181
+ "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"
2182
+ ],
2183
+ deletePackageVersionForUser: [
2184
+ "DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"
2185
+ ],
2186
+ getAllPackageVersionsForAPackageOwnedByAnOrg: [
2187
+ "GET /orgs/{org}/packages/{package_type}/{package_name}/versions",
2188
+ {},
2189
+ { renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] }
2190
+ ],
2191
+ getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [
2192
+ "GET /user/packages/{package_type}/{package_name}/versions",
2193
+ {},
2194
+ {
2195
+ renamed: [
2196
+ "packages",
2197
+ "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"
2198
+ ]
2199
+ }
2200
+ ],
2201
+ getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [
2202
+ "GET /user/packages/{package_type}/{package_name}/versions"
2203
+ ],
2204
+ getAllPackageVersionsForPackageOwnedByOrg: [
2205
+ "GET /orgs/{org}/packages/{package_type}/{package_name}/versions"
2206
+ ],
2207
+ getAllPackageVersionsForPackageOwnedByUser: [
2208
+ "GET /users/{username}/packages/{package_type}/{package_name}/versions"
2209
+ ],
2210
+ getPackageForAuthenticatedUser: [
2211
+ "GET /user/packages/{package_type}/{package_name}"
2212
+ ],
2213
+ getPackageForOrganization: [
2214
+ "GET /orgs/{org}/packages/{package_type}/{package_name}"
2215
+ ],
2216
+ getPackageForUser: [
2217
+ "GET /users/{username}/packages/{package_type}/{package_name}"
2218
+ ],
2219
+ getPackageVersionForAuthenticatedUser: [
2220
+ "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"
2221
+ ],
2222
+ getPackageVersionForOrganization: [
2223
+ "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"
2224
+ ],
2225
+ getPackageVersionForUser: [
2226
+ "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"
2227
+ ],
2228
+ listDockerMigrationConflictingPackagesForAuthenticatedUser: [
2229
+ "GET /user/docker/conflicts"
2230
+ ],
2231
+ listDockerMigrationConflictingPackagesForOrganization: [
2232
+ "GET /orgs/{org}/docker/conflicts"
2233
+ ],
2234
+ listDockerMigrationConflictingPackagesForUser: [
2235
+ "GET /users/{username}/docker/conflicts"
2236
+ ],
2237
+ listPackagesForAuthenticatedUser: ["GET /user/packages"],
2238
+ listPackagesForOrganization: ["GET /orgs/{org}/packages"],
2239
+ listPackagesForUser: ["GET /users/{username}/packages"],
2240
+ restorePackageForAuthenticatedUser: [
2241
+ "POST /user/packages/{package_type}/{package_name}/restore{?token}"
2242
+ ],
2243
+ restorePackageForOrg: [
2244
+ "POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"
2245
+ ],
2246
+ restorePackageForUser: [
2247
+ "POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"
2248
+ ],
2249
+ restorePackageVersionForAuthenticatedUser: [
2250
+ "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"
2251
+ ],
2252
+ restorePackageVersionForOrg: [
2253
+ "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"
2254
+ ],
2255
+ restorePackageVersionForUser: [
2256
+ "POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"
2257
+ ]
2258
+ },
2259
+ projects: {
2260
+ addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"],
2261
+ createCard: ["POST /projects/columns/{column_id}/cards"],
2262
+ createColumn: ["POST /projects/{project_id}/columns"],
2263
+ createForAuthenticatedUser: ["POST /user/projects"],
2264
+ createForOrg: ["POST /orgs/{org}/projects"],
2265
+ createForRepo: ["POST /repos/{owner}/{repo}/projects"],
2266
+ delete: ["DELETE /projects/{project_id}"],
2267
+ deleteCard: ["DELETE /projects/columns/cards/{card_id}"],
2268
+ deleteColumn: ["DELETE /projects/columns/{column_id}"],
2269
+ get: ["GET /projects/{project_id}"],
2270
+ getCard: ["GET /projects/columns/cards/{card_id}"],
2271
+ getColumn: ["GET /projects/columns/{column_id}"],
2272
+ getPermissionForUser: [
2273
+ "GET /projects/{project_id}/collaborators/{username}/permission"
2274
+ ],
2275
+ listCards: ["GET /projects/columns/{column_id}/cards"],
2276
+ listCollaborators: ["GET /projects/{project_id}/collaborators"],
2277
+ listColumns: ["GET /projects/{project_id}/columns"],
2278
+ listForOrg: ["GET /orgs/{org}/projects"],
2279
+ listForRepo: ["GET /repos/{owner}/{repo}/projects"],
2280
+ listForUser: ["GET /users/{username}/projects"],
2281
+ moveCard: ["POST /projects/columns/cards/{card_id}/moves"],
2282
+ moveColumn: ["POST /projects/columns/{column_id}/moves"],
2283
+ removeCollaborator: [
2284
+ "DELETE /projects/{project_id}/collaborators/{username}"
2285
+ ],
2286
+ update: ["PATCH /projects/{project_id}"],
2287
+ updateCard: ["PATCH /projects/columns/cards/{card_id}"],
2288
+ updateColumn: ["PATCH /projects/columns/{column_id}"]
2289
+ },
2290
+ pulls: {
2291
+ checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
2292
+ create: ["POST /repos/{owner}/{repo}/pulls"],
2293
+ createReplyForReviewComment: [
2294
+ "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"
2295
+ ],
2296
+ createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
2297
+ createReviewComment: [
2298
+ "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"
2299
+ ],
2300
+ deletePendingReview: [
2301
+ "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"
2302
+ ],
2303
+ deleteReviewComment: [
2304
+ "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"
2305
+ ],
2306
+ dismissReview: [
2307
+ "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"
2308
+ ],
2309
+ get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"],
2310
+ getReview: [
2311
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"
2312
+ ],
2313
+ getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],
2314
+ list: ["GET /repos/{owner}/{repo}/pulls"],
2315
+ listCommentsForReview: [
2316
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"
2317
+ ],
2318
+ listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],
2319
+ listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],
2320
+ listRequestedReviewers: [
2321
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"
2322
+ ],
2323
+ listReviewComments: [
2324
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"
2325
+ ],
2326
+ listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"],
2327
+ listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
2328
+ merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
2329
+ removeRequestedReviewers: [
2330
+ "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"
2331
+ ],
2332
+ requestReviewers: [
2333
+ "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"
2334
+ ],
2335
+ submitReview: [
2336
+ "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"
2337
+ ],
2338
+ update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],
2339
+ updateBranch: [
2340
+ "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"
2341
+ ],
2342
+ updateReview: [
2343
+ "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"
2344
+ ],
2345
+ updateReviewComment: [
2346
+ "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"
2347
+ ]
2348
+ },
2349
+ rateLimit: { get: ["GET /rate_limit"] },
2350
+ reactions: {
2351
+ createForCommitComment: [
2352
+ "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"
2353
+ ],
2354
+ createForIssue: [
2355
+ "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"
2356
+ ],
2357
+ createForIssueComment: [
2358
+ "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"
2359
+ ],
2360
+ createForPullRequestReviewComment: [
2361
+ "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"
2362
+ ],
2363
+ createForRelease: [
2364
+ "POST /repos/{owner}/{repo}/releases/{release_id}/reactions"
2365
+ ],
2366
+ createForTeamDiscussionCommentInOrg: [
2367
+ "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"
2368
+ ],
2369
+ createForTeamDiscussionInOrg: [
2370
+ "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"
2371
+ ],
2372
+ deleteForCommitComment: [
2373
+ "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"
2374
+ ],
2375
+ deleteForIssue: [
2376
+ "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"
2377
+ ],
2378
+ deleteForIssueComment: [
2379
+ "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"
2380
+ ],
2381
+ deleteForPullRequestComment: [
2382
+ "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"
2383
+ ],
2384
+ deleteForRelease: [
2385
+ "DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"
2386
+ ],
2387
+ deleteForTeamDiscussion: [
2388
+ "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"
2389
+ ],
2390
+ deleteForTeamDiscussionComment: [
2391
+ "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"
2392
+ ],
2393
+ listForCommitComment: [
2394
+ "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"
2395
+ ],
2396
+ listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],
2397
+ listForIssueComment: [
2398
+ "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"
2399
+ ],
2400
+ listForPullRequestReviewComment: [
2401
+ "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"
2402
+ ],
2403
+ listForRelease: [
2404
+ "GET /repos/{owner}/{repo}/releases/{release_id}/reactions"
2405
+ ],
2406
+ listForTeamDiscussionCommentInOrg: [
2407
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"
2408
+ ],
2409
+ listForTeamDiscussionInOrg: [
2410
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"
2411
+ ]
2412
+ },
2413
+ repos: {
2414
+ acceptInvitation: [
2415
+ "PATCH /user/repository_invitations/{invitation_id}",
2416
+ {},
2417
+ { renamed: ["repos", "acceptInvitationForAuthenticatedUser"] }
2418
+ ],
2419
+ acceptInvitationForAuthenticatedUser: [
2420
+ "PATCH /user/repository_invitations/{invitation_id}"
2421
+ ],
2422
+ addAppAccessRestrictions: [
2423
+ "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
2424
+ {},
2425
+ { mapToData: "apps" }
2426
+ ],
2427
+ addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"],
2428
+ addStatusCheckContexts: [
2429
+ "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
2430
+ {},
2431
+ { mapToData: "contexts" }
2432
+ ],
2433
+ addTeamAccessRestrictions: [
2434
+ "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
2435
+ {},
2436
+ { mapToData: "teams" }
2437
+ ],
2438
+ addUserAccessRestrictions: [
2439
+ "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
2440
+ {},
2441
+ { mapToData: "users" }
2442
+ ],
2443
+ cancelPagesDeployment: [
2444
+ "POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel"
2445
+ ],
2446
+ checkAutomatedSecurityFixes: [
2447
+ "GET /repos/{owner}/{repo}/automated-security-fixes"
2448
+ ],
2449
+ checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"],
2450
+ checkPrivateVulnerabilityReporting: [
2451
+ "GET /repos/{owner}/{repo}/private-vulnerability-reporting"
2452
+ ],
2453
+ checkVulnerabilityAlerts: [
2454
+ "GET /repos/{owner}/{repo}/vulnerability-alerts"
2455
+ ],
2456
+ codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"],
2457
+ compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"],
2458
+ compareCommitsWithBasehead: [
2459
+ "GET /repos/{owner}/{repo}/compare/{basehead}"
2460
+ ],
2461
+ createAutolink: ["POST /repos/{owner}/{repo}/autolinks"],
2462
+ createCommitComment: [
2463
+ "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"
2464
+ ],
2465
+ createCommitSignatureProtection: [
2466
+ "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"
2467
+ ],
2468
+ createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"],
2469
+ createDeployKey: ["POST /repos/{owner}/{repo}/keys"],
2470
+ createDeployment: ["POST /repos/{owner}/{repo}/deployments"],
2471
+ createDeploymentBranchPolicy: [
2472
+ "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"
2473
+ ],
2474
+ createDeploymentProtectionRule: [
2475
+ "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"
2476
+ ],
2477
+ createDeploymentStatus: [
2478
+ "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"
2479
+ ],
2480
+ createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"],
2481
+ createForAuthenticatedUser: ["POST /user/repos"],
2482
+ createFork: ["POST /repos/{owner}/{repo}/forks"],
2483
+ createInOrg: ["POST /orgs/{org}/repos"],
2484
+ createOrUpdateCustomPropertiesValues: [
2485
+ "PATCH /repos/{owner}/{repo}/properties/values"
2486
+ ],
2487
+ createOrUpdateEnvironment: [
2488
+ "PUT /repos/{owner}/{repo}/environments/{environment_name}"
2489
+ ],
2490
+ createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"],
2491
+ createOrgRuleset: ["POST /orgs/{org}/rulesets"],
2492
+ createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployments"],
2493
+ createPagesSite: ["POST /repos/{owner}/{repo}/pages"],
2494
+ createRelease: ["POST /repos/{owner}/{repo}/releases"],
2495
+ createRepoRuleset: ["POST /repos/{owner}/{repo}/rulesets"],
2496
+ createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"],
2497
+ createUsingTemplate: [
2498
+ "POST /repos/{template_owner}/{template_repo}/generate"
2499
+ ],
2500
+ createWebhook: ["POST /repos/{owner}/{repo}/hooks"],
2501
+ declineInvitation: [
2502
+ "DELETE /user/repository_invitations/{invitation_id}",
2503
+ {},
2504
+ { renamed: ["repos", "declineInvitationForAuthenticatedUser"] }
2505
+ ],
2506
+ declineInvitationForAuthenticatedUser: [
2507
+ "DELETE /user/repository_invitations/{invitation_id}"
2508
+ ],
2509
+ delete: ["DELETE /repos/{owner}/{repo}"],
2510
+ deleteAccessRestrictions: [
2511
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"
2512
+ ],
2513
+ deleteAdminBranchProtection: [
2514
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"
2515
+ ],
2516
+ deleteAnEnvironment: [
2517
+ "DELETE /repos/{owner}/{repo}/environments/{environment_name}"
2518
+ ],
2519
+ deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],
2520
+ deleteBranchProtection: [
2521
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection"
2522
+ ],
2523
+ deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],
2524
+ deleteCommitSignatureProtection: [
2525
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"
2526
+ ],
2527
+ deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"],
2528
+ deleteDeployment: [
2529
+ "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"
2530
+ ],
2531
+ deleteDeploymentBranchPolicy: [
2532
+ "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"
2533
+ ],
2534
+ deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"],
2535
+ deleteInvitation: [
2536
+ "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"
2537
+ ],
2538
+ deleteOrgRuleset: ["DELETE /orgs/{org}/rulesets/{ruleset_id}"],
2539
+ deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"],
2540
+ deletePullRequestReviewProtection: [
2541
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"
2542
+ ],
2543
+ deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"],
2544
+ deleteReleaseAsset: [
2545
+ "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"
2546
+ ],
2547
+ deleteRepoRuleset: ["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
2548
+ deleteTagProtection: [
2549
+ "DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"
2550
+ ],
2551
+ deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],
2552
+ disableAutomatedSecurityFixes: [
2553
+ "DELETE /repos/{owner}/{repo}/automated-security-fixes"
2554
+ ],
2555
+ disableDeploymentProtectionRule: [
2556
+ "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"
2557
+ ],
2558
+ disablePrivateVulnerabilityReporting: [
2559
+ "DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"
2560
+ ],
2561
+ disableVulnerabilityAlerts: [
2562
+ "DELETE /repos/{owner}/{repo}/vulnerability-alerts"
2563
+ ],
2564
+ downloadArchive: [
2565
+ "GET /repos/{owner}/{repo}/zipball/{ref}",
2566
+ {},
2567
+ { renamed: ["repos", "downloadZipballArchive"] }
2568
+ ],
2569
+ downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"],
2570
+ downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"],
2571
+ enableAutomatedSecurityFixes: [
2572
+ "PUT /repos/{owner}/{repo}/automated-security-fixes"
2573
+ ],
2574
+ enablePrivateVulnerabilityReporting: [
2575
+ "PUT /repos/{owner}/{repo}/private-vulnerability-reporting"
2576
+ ],
2577
+ enableVulnerabilityAlerts: [
2578
+ "PUT /repos/{owner}/{repo}/vulnerability-alerts"
2579
+ ],
2580
+ generateReleaseNotes: [
2581
+ "POST /repos/{owner}/{repo}/releases/generate-notes"
2582
+ ],
2583
+ get: ["GET /repos/{owner}/{repo}"],
2584
+ getAccessRestrictions: [
2585
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"
2586
+ ],
2587
+ getAdminBranchProtection: [
2588
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"
2589
+ ],
2590
+ getAllDeploymentProtectionRules: [
2591
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"
2592
+ ],
2593
+ getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"],
2594
+ getAllStatusCheckContexts: [
2595
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"
2596
+ ],
2597
+ getAllTopics: ["GET /repos/{owner}/{repo}/topics"],
2598
+ getAppsWithAccessToProtectedBranch: [
2599
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"
2600
+ ],
2601
+ getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],
2602
+ getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"],
2603
+ getBranchProtection: [
2604
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection"
2605
+ ],
2606
+ getBranchRules: ["GET /repos/{owner}/{repo}/rules/branches/{branch}"],
2607
+ getClones: ["GET /repos/{owner}/{repo}/traffic/clones"],
2608
+ getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"],
2609
+ getCollaboratorPermissionLevel: [
2610
+ "GET /repos/{owner}/{repo}/collaborators/{username}/permission"
2611
+ ],
2612
+ getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"],
2613
+ getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"],
2614
+ getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"],
2615
+ getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"],
2616
+ getCommitSignatureProtection: [
2617
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"
2618
+ ],
2619
+ getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"],
2620
+ getContent: ["GET /repos/{owner}/{repo}/contents/{path}"],
2621
+ getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"],
2622
+ getCustomDeploymentProtectionRule: [
2623
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"
2624
+ ],
2625
+ getCustomPropertiesValues: ["GET /repos/{owner}/{repo}/properties/values"],
2626
+ getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"],
2627
+ getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],
2628
+ getDeploymentBranchPolicy: [
2629
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"
2630
+ ],
2631
+ getDeploymentStatus: [
2632
+ "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"
2633
+ ],
2634
+ getEnvironment: [
2635
+ "GET /repos/{owner}/{repo}/environments/{environment_name}"
2636
+ ],
2637
+ getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"],
2638
+ getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"],
2639
+ getOrgRuleSuite: ["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"],
2640
+ getOrgRuleSuites: ["GET /orgs/{org}/rulesets/rule-suites"],
2641
+ getOrgRuleset: ["GET /orgs/{org}/rulesets/{ruleset_id}"],
2642
+ getOrgRulesets: ["GET /orgs/{org}/rulesets"],
2643
+ getPages: ["GET /repos/{owner}/{repo}/pages"],
2644
+ getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],
2645
+ getPagesDeployment: [
2646
+ "GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}"
2647
+ ],
2648
+ getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"],
2649
+ getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"],
2650
+ getPullRequestReviewProtection: [
2651
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"
2652
+ ],
2653
+ getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"],
2654
+ getReadme: ["GET /repos/{owner}/{repo}/readme"],
2655
+ getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"],
2656
+ getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"],
2657
+ getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],
2658
+ getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"],
2659
+ getRepoRuleSuite: [
2660
+ "GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"
2661
+ ],
2662
+ getRepoRuleSuites: ["GET /repos/{owner}/{repo}/rulesets/rule-suites"],
2663
+ getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
2664
+ getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"],
2665
+ getStatusChecksProtection: [
2666
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
2667
+ ],
2668
+ getTeamsWithAccessToProtectedBranch: [
2669
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"
2670
+ ],
2671
+ getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"],
2672
+ getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"],
2673
+ getUsersWithAccessToProtectedBranch: [
2674
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"
2675
+ ],
2676
+ getViews: ["GET /repos/{owner}/{repo}/traffic/views"],
2677
+ getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"],
2678
+ getWebhookConfigForRepo: [
2679
+ "GET /repos/{owner}/{repo}/hooks/{hook_id}/config"
2680
+ ],
2681
+ getWebhookDelivery: [
2682
+ "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"
2683
+ ],
2684
+ listActivities: ["GET /repos/{owner}/{repo}/activity"],
2685
+ listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"],
2686
+ listBranches: ["GET /repos/{owner}/{repo}/branches"],
2687
+ listBranchesForHeadCommit: [
2688
+ "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"
2689
+ ],
2690
+ listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"],
2691
+ listCommentsForCommit: [
2692
+ "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"
2693
+ ],
2694
+ listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"],
2695
+ listCommitStatusesForRef: [
2696
+ "GET /repos/{owner}/{repo}/commits/{ref}/statuses"
2697
+ ],
2698
+ listCommits: ["GET /repos/{owner}/{repo}/commits"],
2699
+ listContributors: ["GET /repos/{owner}/{repo}/contributors"],
2700
+ listCustomDeploymentRuleIntegrations: [
2701
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"
2702
+ ],
2703
+ listDeployKeys: ["GET /repos/{owner}/{repo}/keys"],
2704
+ listDeploymentBranchPolicies: [
2705
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"
2706
+ ],
2707
+ listDeploymentStatuses: [
2708
+ "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"
2709
+ ],
2710
+ listDeployments: ["GET /repos/{owner}/{repo}/deployments"],
2711
+ listForAuthenticatedUser: ["GET /user/repos"],
2712
+ listForOrg: ["GET /orgs/{org}/repos"],
2713
+ listForUser: ["GET /users/{username}/repos"],
2714
+ listForks: ["GET /repos/{owner}/{repo}/forks"],
2715
+ listInvitations: ["GET /repos/{owner}/{repo}/invitations"],
2716
+ listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"],
2717
+ listLanguages: ["GET /repos/{owner}/{repo}/languages"],
2718
+ listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"],
2719
+ listPublic: ["GET /repositories"],
2720
+ listPullRequestsAssociatedWithCommit: [
2721
+ "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"
2722
+ ],
2723
+ listReleaseAssets: [
2724
+ "GET /repos/{owner}/{repo}/releases/{release_id}/assets"
2725
+ ],
2726
+ listReleases: ["GET /repos/{owner}/{repo}/releases"],
2727
+ listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"],
2728
+ listTags: ["GET /repos/{owner}/{repo}/tags"],
2729
+ listTeams: ["GET /repos/{owner}/{repo}/teams"],
2730
+ listWebhookDeliveries: [
2731
+ "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"
2732
+ ],
2733
+ listWebhooks: ["GET /repos/{owner}/{repo}/hooks"],
2734
+ merge: ["POST /repos/{owner}/{repo}/merges"],
2735
+ mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"],
2736
+ pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],
2737
+ redeliverWebhookDelivery: [
2738
+ "POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"
2739
+ ],
2740
+ removeAppAccessRestrictions: [
2741
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
2742
+ {},
2743
+ { mapToData: "apps" }
2744
+ ],
2745
+ removeCollaborator: [
2746
+ "DELETE /repos/{owner}/{repo}/collaborators/{username}"
2747
+ ],
2748
+ removeStatusCheckContexts: [
2749
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
2750
+ {},
2751
+ { mapToData: "contexts" }
2752
+ ],
2753
+ removeStatusCheckProtection: [
2754
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
2755
+ ],
2756
+ removeTeamAccessRestrictions: [
2757
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
2758
+ {},
2759
+ { mapToData: "teams" }
2760
+ ],
2761
+ removeUserAccessRestrictions: [
2762
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
2763
+ {},
2764
+ { mapToData: "users" }
2765
+ ],
2766
+ renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"],
2767
+ replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"],
2768
+ requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"],
2769
+ setAdminBranchProtection: [
2770
+ "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"
2771
+ ],
2772
+ setAppAccessRestrictions: [
2773
+ "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
2774
+ {},
2775
+ { mapToData: "apps" }
2776
+ ],
2777
+ setStatusCheckContexts: [
2778
+ "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
2779
+ {},
2780
+ { mapToData: "contexts" }
2781
+ ],
2782
+ setTeamAccessRestrictions: [
2783
+ "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
2784
+ {},
2785
+ { mapToData: "teams" }
2786
+ ],
2787
+ setUserAccessRestrictions: [
2788
+ "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
2789
+ {},
2790
+ { mapToData: "users" }
2791
+ ],
2792
+ testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],
2793
+ transfer: ["POST /repos/{owner}/{repo}/transfer"],
2794
+ update: ["PATCH /repos/{owner}/{repo}"],
2795
+ updateBranchProtection: [
2796
+ "PUT /repos/{owner}/{repo}/branches/{branch}/protection"
2797
+ ],
2798
+ updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],
2799
+ updateDeploymentBranchPolicy: [
2800
+ "PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"
2801
+ ],
2802
+ updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"],
2803
+ updateInvitation: [
2804
+ "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"
2805
+ ],
2806
+ updateOrgRuleset: ["PUT /orgs/{org}/rulesets/{ruleset_id}"],
2807
+ updatePullRequestReviewProtection: [
2808
+ "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"
2809
+ ],
2810
+ updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"],
2811
+ updateReleaseAsset: [
2812
+ "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"
2813
+ ],
2814
+ updateRepoRuleset: ["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
2815
+ updateStatusCheckPotection: [
2816
+ "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks",
2817
+ {},
2818
+ { renamed: ["repos", "updateStatusCheckProtection"] }
2819
+ ],
2820
+ updateStatusCheckProtection: [
2821
+ "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
2822
+ ],
2823
+ updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],
2824
+ updateWebhookConfigForRepo: [
2825
+ "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"
2826
+ ],
2827
+ uploadReleaseAsset: [
2828
+ "POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}",
2829
+ { baseUrl: "https://uploads.github.com" }
2830
+ ]
2831
+ },
2832
+ search: {
2833
+ code: ["GET /search/code"],
2834
+ commits: ["GET /search/commits"],
2835
+ issuesAndPullRequests: ["GET /search/issues"],
2836
+ labels: ["GET /search/labels"],
2837
+ repos: ["GET /search/repositories"],
2838
+ topics: ["GET /search/topics"],
2839
+ users: ["GET /search/users"]
2840
+ },
2841
+ secretScanning: {
2842
+ getAlert: [
2843
+ "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"
2844
+ ],
2845
+ listAlertsForEnterprise: [
2846
+ "GET /enterprises/{enterprise}/secret-scanning/alerts"
2847
+ ],
2848
+ listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"],
2849
+ listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"],
2850
+ listLocationsForAlert: [
2851
+ "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"
2852
+ ],
2853
+ updateAlert: [
2854
+ "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"
2855
+ ]
2856
+ },
2857
+ securityAdvisories: {
2858
+ createFork: [
2859
+ "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks"
2860
+ ],
2861
+ createPrivateVulnerabilityReport: [
2862
+ "POST /repos/{owner}/{repo}/security-advisories/reports"
2863
+ ],
2864
+ createRepositoryAdvisory: [
2865
+ "POST /repos/{owner}/{repo}/security-advisories"
2866
+ ],
2867
+ createRepositoryAdvisoryCveRequest: [
2868
+ "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"
2869
+ ],
2870
+ getGlobalAdvisory: ["GET /advisories/{ghsa_id}"],
2871
+ getRepositoryAdvisory: [
2872
+ "GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"
2873
+ ],
2874
+ listGlobalAdvisories: ["GET /advisories"],
2875
+ listOrgRepositoryAdvisories: ["GET /orgs/{org}/security-advisories"],
2876
+ listRepositoryAdvisories: ["GET /repos/{owner}/{repo}/security-advisories"],
2877
+ updateRepositoryAdvisory: [
2878
+ "PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"
2879
+ ]
2880
+ },
2881
+ teams: {
2882
+ addOrUpdateMembershipForUserInOrg: [
2883
+ "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"
2884
+ ],
2885
+ addOrUpdateProjectPermissionsInOrg: [
2886
+ "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"
2887
+ ],
2888
+ addOrUpdateRepoPermissionsInOrg: [
2889
+ "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
2890
+ ],
2891
+ checkPermissionsForProjectInOrg: [
2892
+ "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"
2893
+ ],
2894
+ checkPermissionsForRepoInOrg: [
2895
+ "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
2896
+ ],
2897
+ create: ["POST /orgs/{org}/teams"],
2898
+ createDiscussionCommentInOrg: [
2899
+ "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"
2900
+ ],
2901
+ createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"],
2902
+ deleteDiscussionCommentInOrg: [
2903
+ "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"
2904
+ ],
2905
+ deleteDiscussionInOrg: [
2906
+ "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"
2907
+ ],
2908
+ deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"],
2909
+ getByName: ["GET /orgs/{org}/teams/{team_slug}"],
2910
+ getDiscussionCommentInOrg: [
2911
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"
2912
+ ],
2913
+ getDiscussionInOrg: [
2914
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"
2915
+ ],
2916
+ getMembershipForUserInOrg: [
2917
+ "GET /orgs/{org}/teams/{team_slug}/memberships/{username}"
2918
+ ],
2919
+ list: ["GET /orgs/{org}/teams"],
2920
+ listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"],
2921
+ listDiscussionCommentsInOrg: [
2922
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"
2923
+ ],
2924
+ listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"],
2925
+ listForAuthenticatedUser: ["GET /user/teams"],
2926
+ listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"],
2927
+ listPendingInvitationsInOrg: [
2928
+ "GET /orgs/{org}/teams/{team_slug}/invitations"
2929
+ ],
2930
+ listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"],
2931
+ listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"],
2932
+ removeMembershipForUserInOrg: [
2933
+ "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"
2934
+ ],
2935
+ removeProjectInOrg: [
2936
+ "DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"
2937
+ ],
2938
+ removeRepoInOrg: [
2939
+ "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
2940
+ ],
2941
+ updateDiscussionCommentInOrg: [
2942
+ "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"
2943
+ ],
2944
+ updateDiscussionInOrg: [
2945
+ "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"
2946
+ ],
2947
+ updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"]
2948
+ },
2949
+ users: {
2950
+ addEmailForAuthenticated: [
2951
+ "POST /user/emails",
2952
+ {},
2953
+ { renamed: ["users", "addEmailForAuthenticatedUser"] }
2954
+ ],
2955
+ addEmailForAuthenticatedUser: ["POST /user/emails"],
2956
+ addSocialAccountForAuthenticatedUser: ["POST /user/social_accounts"],
2957
+ block: ["PUT /user/blocks/{username}"],
2958
+ checkBlocked: ["GET /user/blocks/{username}"],
2959
+ checkFollowingForUser: ["GET /users/{username}/following/{target_user}"],
2960
+ checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"],
2961
+ createGpgKeyForAuthenticated: [
2962
+ "POST /user/gpg_keys",
2963
+ {},
2964
+ { renamed: ["users", "createGpgKeyForAuthenticatedUser"] }
2965
+ ],
2966
+ createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"],
2967
+ createPublicSshKeyForAuthenticated: [
2968
+ "POST /user/keys",
2969
+ {},
2970
+ { renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] }
2971
+ ],
2972
+ createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"],
2973
+ createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"],
2974
+ deleteEmailForAuthenticated: [
2975
+ "DELETE /user/emails",
2976
+ {},
2977
+ { renamed: ["users", "deleteEmailForAuthenticatedUser"] }
2978
+ ],
2979
+ deleteEmailForAuthenticatedUser: ["DELETE /user/emails"],
2980
+ deleteGpgKeyForAuthenticated: [
2981
+ "DELETE /user/gpg_keys/{gpg_key_id}",
2982
+ {},
2983
+ { renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] }
2984
+ ],
2985
+ deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"],
2986
+ deletePublicSshKeyForAuthenticated: [
2987
+ "DELETE /user/keys/{key_id}",
2988
+ {},
2989
+ { renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] }
2990
+ ],
2991
+ deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"],
2992
+ deleteSocialAccountForAuthenticatedUser: ["DELETE /user/social_accounts"],
2993
+ deleteSshSigningKeyForAuthenticatedUser: [
2994
+ "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"
2995
+ ],
2996
+ follow: ["PUT /user/following/{username}"],
2997
+ getAuthenticated: ["GET /user"],
2998
+ getByUsername: ["GET /users/{username}"],
2999
+ getContextForUser: ["GET /users/{username}/hovercard"],
3000
+ getGpgKeyForAuthenticated: [
3001
+ "GET /user/gpg_keys/{gpg_key_id}",
3002
+ {},
3003
+ { renamed: ["users", "getGpgKeyForAuthenticatedUser"] }
3004
+ ],
3005
+ getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"],
3006
+ getPublicSshKeyForAuthenticated: [
3007
+ "GET /user/keys/{key_id}",
3008
+ {},
3009
+ { renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] }
3010
+ ],
3011
+ getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"],
3012
+ getSshSigningKeyForAuthenticatedUser: [
3013
+ "GET /user/ssh_signing_keys/{ssh_signing_key_id}"
3014
+ ],
3015
+ list: ["GET /users"],
3016
+ listBlockedByAuthenticated: [
3017
+ "GET /user/blocks",
3018
+ {},
3019
+ { renamed: ["users", "listBlockedByAuthenticatedUser"] }
3020
+ ],
3021
+ listBlockedByAuthenticatedUser: ["GET /user/blocks"],
3022
+ listEmailsForAuthenticated: [
3023
+ "GET /user/emails",
3024
+ {},
3025
+ { renamed: ["users", "listEmailsForAuthenticatedUser"] }
3026
+ ],
3027
+ listEmailsForAuthenticatedUser: ["GET /user/emails"],
3028
+ listFollowedByAuthenticated: [
3029
+ "GET /user/following",
3030
+ {},
3031
+ { renamed: ["users", "listFollowedByAuthenticatedUser"] }
3032
+ ],
3033
+ listFollowedByAuthenticatedUser: ["GET /user/following"],
3034
+ listFollowersForAuthenticatedUser: ["GET /user/followers"],
3035
+ listFollowersForUser: ["GET /users/{username}/followers"],
3036
+ listFollowingForUser: ["GET /users/{username}/following"],
3037
+ listGpgKeysForAuthenticated: [
3038
+ "GET /user/gpg_keys",
3039
+ {},
3040
+ { renamed: ["users", "listGpgKeysForAuthenticatedUser"] }
3041
+ ],
3042
+ listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"],
3043
+ listGpgKeysForUser: ["GET /users/{username}/gpg_keys"],
3044
+ listPublicEmailsForAuthenticated: [
3045
+ "GET /user/public_emails",
3046
+ {},
3047
+ { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] }
3048
+ ],
3049
+ listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"],
3050
+ listPublicKeysForUser: ["GET /users/{username}/keys"],
3051
+ listPublicSshKeysForAuthenticated: [
3052
+ "GET /user/keys",
3053
+ {},
3054
+ { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] }
3055
+ ],
3056
+ listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"],
3057
+ listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"],
3058
+ listSocialAccountsForUser: ["GET /users/{username}/social_accounts"],
3059
+ listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"],
3060
+ listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"],
3061
+ setPrimaryEmailVisibilityForAuthenticated: [
3062
+ "PATCH /user/email/visibility",
3063
+ {},
3064
+ { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] }
3065
+ ],
3066
+ setPrimaryEmailVisibilityForAuthenticatedUser: [
3067
+ "PATCH /user/email/visibility"
3068
+ ],
3069
+ unblock: ["DELETE /user/blocks/{username}"],
3070
+ unfollow: ["DELETE /user/following/{username}"],
3071
+ updateAuthenticated: ["PATCH /user"]
3072
+ }
3073
+ };
3074
+ var endpoints_default = Endpoints;
3075
+
3076
+ // node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js
3077
+ var endpointMethodsMap = /* @__PURE__ */ new Map();
3078
+ for (const [scope, endpoints] of Object.entries(endpoints_default)) {
3079
+ for (const [methodName, endpoint2] of Object.entries(endpoints)) {
3080
+ const [route, defaults, decorations] = endpoint2;
3081
+ const [method, url] = route.split(/ /);
3082
+ const endpointDefaults = Object.assign(
3083
+ {
3084
+ method,
3085
+ url
3086
+ },
3087
+ defaults
3088
+ );
3089
+ if (!endpointMethodsMap.has(scope)) {
3090
+ endpointMethodsMap.set(scope, /* @__PURE__ */ new Map());
3091
+ }
3092
+ endpointMethodsMap.get(scope).set(methodName, {
3093
+ scope,
3094
+ methodName,
3095
+ endpointDefaults,
3096
+ decorations
3097
+ });
3098
+ }
3099
+ }
3100
+ var handler = {
3101
+ has({ scope }, methodName) {
3102
+ return endpointMethodsMap.get(scope).has(methodName);
3103
+ },
3104
+ getOwnPropertyDescriptor(target, methodName) {
3105
+ return {
3106
+ value: this.get(target, methodName),
3107
+ // ensures method is in the cache
3108
+ configurable: true,
3109
+ writable: true,
3110
+ enumerable: true
3111
+ };
3112
+ },
3113
+ defineProperty(target, methodName, descriptor) {
3114
+ Object.defineProperty(target.cache, methodName, descriptor);
3115
+ return true;
3116
+ },
3117
+ deleteProperty(target, methodName) {
3118
+ delete target.cache[methodName];
3119
+ return true;
3120
+ },
3121
+ ownKeys({ scope }) {
3122
+ return [...endpointMethodsMap.get(scope).keys()];
3123
+ },
3124
+ set(target, methodName, value) {
3125
+ return target.cache[methodName] = value;
3126
+ },
3127
+ get({ octokit, scope, cache }, methodName) {
3128
+ if (cache[methodName]) {
3129
+ return cache[methodName];
3130
+ }
3131
+ const method = endpointMethodsMap.get(scope).get(methodName);
3132
+ if (!method) {
3133
+ return void 0;
3134
+ }
3135
+ const { endpointDefaults, decorations } = method;
3136
+ if (decorations) {
3137
+ cache[methodName] = decorate(
3138
+ octokit,
3139
+ scope,
3140
+ methodName,
3141
+ endpointDefaults,
3142
+ decorations
3143
+ );
3144
+ } else {
3145
+ cache[methodName] = octokit.request.defaults(endpointDefaults);
3146
+ }
3147
+ return cache[methodName];
3148
+ }
3149
+ };
3150
+ function endpointsToMethods(octokit) {
3151
+ const newMethods = {};
3152
+ for (const scope of endpointMethodsMap.keys()) {
3153
+ newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler);
3154
+ }
3155
+ return newMethods;
3156
+ }
3157
+ function decorate(octokit, scope, methodName, defaults, decorations) {
3158
+ const requestWithDefaults = octokit.request.defaults(defaults);
3159
+ function withDecorations(...args) {
3160
+ let options = requestWithDefaults.endpoint.merge(...args);
3161
+ if (decorations.mapToData) {
3162
+ options = Object.assign({}, options, {
3163
+ data: options[decorations.mapToData],
3164
+ [decorations.mapToData]: void 0
3165
+ });
3166
+ return requestWithDefaults(options);
3167
+ }
3168
+ if (decorations.renamed) {
3169
+ const [newScope, newMethodName] = decorations.renamed;
3170
+ octokit.log.warn(
3171
+ `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`
3172
+ );
3173
+ }
3174
+ if (decorations.deprecated) {
3175
+ octokit.log.warn(decorations.deprecated);
3176
+ }
3177
+ if (decorations.renamedParameters) {
3178
+ const options2 = requestWithDefaults.endpoint.merge(...args);
3179
+ for (const [name, alias] of Object.entries(
3180
+ decorations.renamedParameters
3181
+ )) {
3182
+ if (name in options2) {
3183
+ octokit.log.warn(
3184
+ `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`
3185
+ );
3186
+ if (!(alias in options2)) {
3187
+ options2[alias] = options2[name];
3188
+ }
3189
+ delete options2[name];
3190
+ }
3191
+ }
3192
+ return requestWithDefaults(options2);
3193
+ }
3194
+ return requestWithDefaults(...args);
3195
+ }
3196
+ return Object.assign(withDecorations, requestWithDefaults);
3197
+ }
3198
+
3199
+ // node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js
3200
+ function restEndpointMethods(octokit) {
3201
+ const api = endpointsToMethods(octokit);
3202
+ return {
3203
+ rest: api
3204
+ };
3205
+ }
3206
+ restEndpointMethods.VERSION = VERSION6;
3207
+ function legacyRestEndpointMethods(octokit) {
3208
+ const api = endpointsToMethods(octokit);
3209
+ return {
3210
+ ...api,
3211
+ rest: api
3212
+ };
3213
+ }
3214
+ legacyRestEndpointMethods.VERSION = VERSION6;
3215
+
3216
+ // src/octokit.ts
3217
+ var import_plugin_retry = require("@octokit/plugin-retry");
3218
+ var import_plugin_throttling = require("@octokit/plugin-throttling");
3219
+ var import_plugin_paginate_graphql = require("@octokit/plugin-paginate-graphql");
3220
+ var defaultOptions = {
3221
+ throttle: {
3222
+ onAbuseLimit: (retryAfter, options, octokit) => {
3223
+ octokit.log.warn(`Abuse limit hit with "${options.method} ${options.url}", retrying in ${retryAfter} seconds.`);
3224
+ return true;
3225
+ },
3226
+ onRateLimit: (retryAfter, options, octokit) => {
3227
+ octokit.log.warn(`Rate limit hit with "${options.method} ${options.url}", retrying in ${retryAfter} seconds.`);
3228
+ return true;
3229
+ },
3230
+ onSecondaryRateLimit: (retryAfter, options, octokit) => {
3231
+ octokit.log.warn(`Secondary rate limit hit with "${options.method} ${options.url}", retrying in ${retryAfter} seconds.`);
3232
+ return true;
3233
+ }
3234
+ }
3235
+ };
3236
+ var customOctokit = Octokit.plugin(import_plugin_throttling.throttling, import_plugin_retry.retry, paginateRest, restEndpointMethods, import_plugin_paginate_graphql.paginateGraphQL).defaults((instanceOptions) => {
3237
+ return Object.assign({}, defaultOptions, instanceOptions);
3238
+ });
3239
+
3240
+ // src/signature.ts
3241
+ async function verifySignature(publicKeyPem, inputs, signature) {
3242
+ try {
3243
+ const inputsOrdered = {
3244
+ stateId: inputs.stateId,
3245
+ eventName: inputs.eventName,
3246
+ eventPayload: inputs.eventPayload,
3247
+ settings: inputs.settings,
3248
+ authToken: inputs.authToken,
3249
+ ref: inputs.ref
3250
+ };
3251
+ const pemContents = publicKeyPem.replace("-----BEGIN PUBLIC KEY-----", "").replace("-----END PUBLIC KEY-----", "").trim();
3252
+ const binaryDer = Uint8Array.from(atob(pemContents), (c) => c.charCodeAt(0));
3253
+ const publicKey = await crypto.subtle.importKey(
3254
+ "spki",
3255
+ binaryDer,
3256
+ {
3257
+ name: "RSASSA-PKCS1-v1_5",
3258
+ hash: "SHA-256"
3259
+ },
3260
+ true,
3261
+ ["verify"]
3262
+ );
3263
+ const signatureArray = Uint8Array.from(atob(signature), (c) => c.charCodeAt(0));
3264
+ const dataArray = new TextEncoder().encode(JSON.stringify(inputsOrdered));
3265
+ return await crypto.subtle.verify("RSASSA-PKCS1-v1_5", publicKey, signatureArray, dataArray);
3266
+ } catch (error) {
3267
+ console.error(error);
3268
+ return false;
3269
+ }
3270
+ }
3271
+
3272
+ // src/server.ts
3273
+ var inputSchema = import_typebox.Type.Object({
3274
+ stateId: import_typebox.Type.String(),
3275
+ eventName: import_typebox.Type.String(),
3276
+ eventPayload: import_typebox.Type.Record(import_typebox.Type.String(), import_typebox.Type.Any()),
3277
+ authToken: import_typebox.Type.String(),
3278
+ settings: import_typebox.Type.Record(import_typebox.Type.String(), import_typebox.Type.Any()),
3279
+ ref: import_typebox.Type.String(),
3280
+ signature: import_typebox.Type.String()
3281
+ });
3282
+ function createPlugin(handler2, manifest, options) {
3283
+ const pluginOptions = {
3284
+ kernelPublicKey: options?.kernelPublicKey || KERNEL_PUBLIC_KEY,
3285
+ logLevel: options?.logLevel || import_ubiquity_os_logger.LOG_LEVEL.INFO,
3286
+ postCommentOnError: options?.postCommentOnError || true,
3287
+ settingsSchema: options?.settingsSchema,
3288
+ envSchema: options?.envSchema
3289
+ };
3290
+ const app = new import_hono.Hono();
3291
+ app.get("/manifest.json", (ctx) => {
3292
+ return ctx.json(manifest);
3293
+ });
3294
+ app.post("/", async (ctx) => {
3295
+ if (ctx.req.header("content-type") !== "application/json") {
3296
+ throw new import_http_exception.HTTPException(400, { message: "Content-Type must be application/json" });
3297
+ }
3298
+ const body = await ctx.req.json();
3299
+ const inputSchemaErrors = [...import_value.Value.Errors(inputSchema, body)];
3300
+ if (inputSchemaErrors.length) {
3301
+ console.dir(inputSchemaErrors, { depth: null });
3302
+ throw new import_http_exception.HTTPException(400, { message: "Invalid body" });
3303
+ }
3304
+ const inputs = import_value.Value.Decode(inputSchema, body);
3305
+ const signature = inputs.signature;
3306
+ if (!await verifySignature(pluginOptions.kernelPublicKey, inputs, signature)) {
3307
+ throw new import_http_exception.HTTPException(400, { message: "Invalid signature" });
3308
+ }
3309
+ let config2;
3310
+ if (pluginOptions.settingsSchema) {
3311
+ try {
3312
+ config2 = import_value.Value.Decode(pluginOptions.settingsSchema, import_value.Value.Default(pluginOptions.settingsSchema, inputs.settings));
3313
+ } catch (e) {
3314
+ console.dir(...import_value.Value.Errors(pluginOptions.settingsSchema, inputs.settings), { depth: null });
3315
+ throw e;
3316
+ }
3317
+ } else {
3318
+ config2 = inputs.settings;
3319
+ }
3320
+ let env;
3321
+ const honoEnvironment = (0, import_adapter.env)(ctx);
3322
+ if (pluginOptions.envSchema) {
3323
+ try {
3324
+ env = import_value.Value.Decode(pluginOptions.envSchema, import_value.Value.Default(pluginOptions.envSchema, honoEnvironment));
3325
+ } catch (e) {
3326
+ console.dir(...import_value.Value.Errors(pluginOptions.envSchema, honoEnvironment), { depth: null });
3327
+ throw e;
3328
+ }
3329
+ } else {
3330
+ env = ctx.env;
3331
+ }
3332
+ const context2 = {
3333
+ eventName: inputs.eventName,
3334
+ payload: inputs.eventPayload,
3335
+ octokit: new customOctokit({ auth: inputs.authToken }),
3336
+ config: config2,
3337
+ env,
3338
+ logger: new import_ubiquity_os_logger.Logs(pluginOptions.logLevel)
3339
+ };
3340
+ try {
3341
+ const result = await handler2(context2);
3342
+ return ctx.json({ stateId: inputs.stateId, output: result });
3343
+ } catch (error) {
3344
+ console.error(error);
3345
+ let loggerError;
3346
+ if (error instanceof Error) {
3347
+ loggerError = context2.logger.error(`Error: ${error}`, { error });
3348
+ } else if (error instanceof import_ubiquity_os_logger.LogReturn) {
3349
+ loggerError = error;
3350
+ } else {
3351
+ loggerError = context2.logger.error(`Error: ${error}`);
3352
+ }
3353
+ if (pluginOptions.postCommentOnError && loggerError) {
3354
+ await postComment(context2, loggerError);
3355
+ }
3356
+ throw new import_http_exception.HTTPException(500, { message: "Unexpected error" });
3357
+ }
3358
+ });
3359
+ return app;
3360
+ }
3361
+
3362
+ // src/actions.ts
3363
+ var core = __toESM(require("@actions/core"));
3364
+ var github = __toESM(require("@actions/github"));
3365
+ var import_typebox2 = require("@sinclair/typebox");
3366
+ var import_value2 = require("@sinclair/typebox/value");
3367
+ var import_ubiquity_os_logger2 = require("@ubiquity-os/ubiquity-os-logger");
3368
+ var import_dotenv = require("dotenv");
3369
+ (0, import_dotenv.config)();
3370
+ var inputSchema2 = import_typebox2.Type.Object({
3371
+ stateId: import_typebox2.Type.String(),
3372
+ eventName: import_typebox2.Type.String(),
3373
+ eventPayload: import_typebox2.Type.String(),
3374
+ authToken: import_typebox2.Type.String(),
3375
+ settings: import_typebox2.Type.String(),
3376
+ ref: import_typebox2.Type.String(),
3377
+ signature: import_typebox2.Type.String()
3378
+ });
3379
+ async function createActionsPlugin(handler2, options) {
3380
+ const pluginOptions = {
3381
+ logLevel: options?.logLevel || import_ubiquity_os_logger2.LOG_LEVEL.INFO,
3382
+ postCommentOnError: options?.postCommentOnError || true,
3383
+ settingsSchema: options?.settingsSchema,
3384
+ envSchema: options?.envSchema,
3385
+ kernelPublicKey: options?.kernelPublicKey || KERNEL_PUBLIC_KEY
3386
+ };
3387
+ const pluginGithubToken = process.env.PLUGIN_GITHUB_TOKEN;
3388
+ if (!pluginGithubToken) {
3389
+ core.setFailed("Error: PLUGIN_GITHUB_TOKEN env is not set");
3390
+ return;
3391
+ }
3392
+ const inputs = import_value2.Value.Decode(inputSchema2, github.context.payload.inputs);
3393
+ const signature = inputs.signature;
3394
+ if (!await verifySignature(pluginOptions.kernelPublicKey, inputs, signature)) {
3395
+ core.setFailed(`Error: Invalid signature`);
3396
+ return;
3397
+ }
3398
+ let config2;
3399
+ if (pluginOptions.settingsSchema) {
3400
+ try {
3401
+ config2 = import_value2.Value.Decode(pluginOptions.settingsSchema, import_value2.Value.Default(pluginOptions.settingsSchema, JSON.parse(inputs.settings)));
3402
+ } catch (e) {
3403
+ console.dir(...import_value2.Value.Errors(pluginOptions.settingsSchema, JSON.parse(inputs.settings)), { depth: null });
3404
+ throw e;
3405
+ }
3406
+ } else {
3407
+ config2 = JSON.parse(inputs.settings);
3408
+ }
3409
+ let env;
3410
+ if (pluginOptions.envSchema) {
3411
+ try {
3412
+ env = import_value2.Value.Decode(pluginOptions.envSchema, import_value2.Value.Default(pluginOptions.envSchema, process.env));
3413
+ } catch (e) {
3414
+ console.dir(...import_value2.Value.Errors(pluginOptions.envSchema, process.env), { depth: null });
3415
+ throw e;
3416
+ }
3417
+ } else {
3418
+ env = process.env;
3419
+ }
3420
+ const context2 = {
3421
+ eventName: inputs.eventName,
3422
+ payload: JSON.parse(inputs.eventPayload),
3423
+ octokit: new customOctokit({ auth: inputs.authToken }),
3424
+ config: config2,
3425
+ env,
3426
+ logger: new import_ubiquity_os_logger2.Logs(pluginOptions.logLevel)
3427
+ };
3428
+ try {
3429
+ const result = await handler2(context2);
3430
+ core.setOutput("result", result);
3431
+ await returnDataToKernel(pluginGithubToken, inputs.stateId, result);
3432
+ } catch (error) {
3433
+ console.error(error);
3434
+ let loggerError;
3435
+ if (error instanceof Error) {
3436
+ core.setFailed(error);
3437
+ loggerError = context2.logger.error(`Error: ${error}`, { error });
3438
+ } else if (error instanceof import_ubiquity_os_logger2.LogReturn) {
3439
+ core.setFailed(error.logMessage.raw);
3440
+ loggerError = error;
3441
+ } else {
3442
+ core.setFailed(`Error: ${error}`);
3443
+ loggerError = context2.logger.error(`Error: ${error}`);
3444
+ }
3445
+ if (pluginOptions.postCommentOnError && loggerError) {
3446
+ await postErrorComment(context2, loggerError);
3447
+ }
3448
+ }
3449
+ }
3450
+ async function postErrorComment(context2, error) {
3451
+ if ("issue" in context2.payload && context2.payload.repository?.owner?.login) {
3452
+ await context2.octokit.rest.issues.createComment({
3453
+ owner: context2.payload.repository.owner.login,
3454
+ repo: context2.payload.repository.name,
3455
+ issue_number: context2.payload.issue.number,
3456
+ body: `${error.logMessage.diff}
3457
+ <!--
3458
+ ${getGithubWorkflowRunUrl()}
3459
+ ${sanitizeMetadata(error.metadata)}
3460
+ -->`
3461
+ });
3462
+ } else {
3463
+ context2.logger.info("Cannot post error comment because issue is not found in the payload");
3464
+ }
3465
+ }
3466
+ function getGithubWorkflowRunUrl() {
3467
+ return `${github.context.payload.repository?.html_url}/actions/runs/${github.context.runId}`;
3468
+ }
3469
+ async function returnDataToKernel(repoToken, stateId, output) {
3470
+ const octokit = new customOctokit({ auth: repoToken });
3471
+ await octokit.rest.repos.createDispatchEvent({
3472
+ owner: github.context.repo.owner,
3473
+ repo: github.context.repo.repo,
3474
+ event_type: "return-data-to-ubiquity-os-kernel",
3475
+ client_payload: {
3476
+ state_id: stateId,
3477
+ output: output ? JSON.stringify(output) : null
3478
+ }
3479
+ });
3480
+ }
3481
+ // Annotate the CommonJS export names for ESM import in node:
3482
+ 0 && (module.exports = {
3483
+ BOT_USER_ID,
3484
+ CONFIG_FULL_PATH,
3485
+ CONFIG_ORG_REPO,
3486
+ DEV_CONFIG_FULL_PATH,
3487
+ KERNEL_APP_ID,
3488
+ KERNEL_PUBLIC_KEY,
3489
+ createActionsPlugin,
3490
+ createPlugin,
3491
+ postComment
3492
+ });