@usewhisper/mcp-server 0.2.3 → 0.3.0

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.
@@ -0,0 +1,4068 @@
1
+ import {
2
+ ingestDocument
3
+ } from "./chunk-7SN3CKDK.js";
4
+ import {
5
+ db
6
+ } from "./chunk-MEFLJ4PV.js";
7
+ import {
8
+ __commonJS,
9
+ __toESM
10
+ } from "./chunk-QGM4M3NI.js";
11
+
12
+ // ../node_modules/fast-content-type-parse/index.js
13
+ var require_fast_content_type_parse = __commonJS({
14
+ "../node_modules/fast-content-type-parse/index.js"(exports, module) {
15
+ "use strict";
16
+ var NullObject = function NullObject2() {
17
+ };
18
+ NullObject.prototype = /* @__PURE__ */ Object.create(null);
19
+ var paramRE = /; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\v\u0020-\u00ff])*"|[!#$%&'*+.^\w`|~-]+) */gu;
20
+ var quotedPairRE = /\\([\v\u0020-\u00ff])/gu;
21
+ var mediaTypeRE = /^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u;
22
+ var defaultContentType = { type: "", parameters: new NullObject() };
23
+ Object.freeze(defaultContentType.parameters);
24
+ Object.freeze(defaultContentType);
25
+ function parse2(header) {
26
+ if (typeof header !== "string") {
27
+ throw new TypeError("argument header is required and must be a string");
28
+ }
29
+ let index = header.indexOf(";");
30
+ const type = index !== -1 ? header.slice(0, index).trim() : header.trim();
31
+ if (mediaTypeRE.test(type) === false) {
32
+ throw new TypeError("invalid media type");
33
+ }
34
+ const result = {
35
+ type: type.toLowerCase(),
36
+ parameters: new NullObject()
37
+ };
38
+ if (index === -1) {
39
+ return result;
40
+ }
41
+ let key;
42
+ let match;
43
+ let value;
44
+ paramRE.lastIndex = index;
45
+ while (match = paramRE.exec(header)) {
46
+ if (match.index !== index) {
47
+ throw new TypeError("invalid parameter format");
48
+ }
49
+ index += match[0].length;
50
+ key = match[1].toLowerCase();
51
+ value = match[2];
52
+ if (value[0] === '"') {
53
+ value = value.slice(1, value.length - 1);
54
+ quotedPairRE.test(value) && (value = value.replace(quotedPairRE, "$1"));
55
+ }
56
+ result.parameters[key] = value;
57
+ }
58
+ if (index !== header.length) {
59
+ throw new TypeError("invalid parameter format");
60
+ }
61
+ return result;
62
+ }
63
+ function safeParse2(header) {
64
+ if (typeof header !== "string") {
65
+ return defaultContentType;
66
+ }
67
+ let index = header.indexOf(";");
68
+ const type = index !== -1 ? header.slice(0, index).trim() : header.trim();
69
+ if (mediaTypeRE.test(type) === false) {
70
+ return defaultContentType;
71
+ }
72
+ const result = {
73
+ type: type.toLowerCase(),
74
+ parameters: new NullObject()
75
+ };
76
+ if (index === -1) {
77
+ return result;
78
+ }
79
+ let key;
80
+ let match;
81
+ let value;
82
+ paramRE.lastIndex = index;
83
+ while (match = paramRE.exec(header)) {
84
+ if (match.index !== index) {
85
+ return defaultContentType;
86
+ }
87
+ index += match[0].length;
88
+ key = match[1].toLowerCase();
89
+ value = match[2];
90
+ if (value[0] === '"') {
91
+ value = value.slice(1, value.length - 1);
92
+ quotedPairRE.test(value) && (value = value.replace(quotedPairRE, "$1"));
93
+ }
94
+ result.parameters[key] = value;
95
+ }
96
+ if (index !== header.length) {
97
+ return defaultContentType;
98
+ }
99
+ return result;
100
+ }
101
+ module.exports.default = { parse: parse2, safeParse: safeParse2 };
102
+ module.exports.parse = parse2;
103
+ module.exports.safeParse = safeParse2;
104
+ module.exports.defaultContentType = defaultContentType;
105
+ }
106
+ });
107
+
108
+ // ../node_modules/universal-user-agent/index.js
109
+ function getUserAgent() {
110
+ if (typeof navigator === "object" && "userAgent" in navigator) {
111
+ return navigator.userAgent;
112
+ }
113
+ if (typeof process === "object" && process.version !== void 0) {
114
+ return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;
115
+ }
116
+ return "<environment undetectable>";
117
+ }
118
+
119
+ // ../node_modules/before-after-hook/lib/register.js
120
+ function register(state, name, method, options) {
121
+ if (typeof method !== "function") {
122
+ throw new Error("method for before hook must be a function");
123
+ }
124
+ if (!options) {
125
+ options = {};
126
+ }
127
+ if (Array.isArray(name)) {
128
+ return name.reverse().reduce((callback, name2) => {
129
+ return register.bind(null, state, name2, callback, options);
130
+ }, method)();
131
+ }
132
+ return Promise.resolve().then(() => {
133
+ if (!state.registry[name]) {
134
+ return method(options);
135
+ }
136
+ return state.registry[name].reduce((method2, registered) => {
137
+ return registered.hook.bind(null, method2, options);
138
+ }, method)();
139
+ });
140
+ }
141
+
142
+ // ../node_modules/before-after-hook/lib/add.js
143
+ function addHook(state, kind, name, hook2) {
144
+ const orig = hook2;
145
+ if (!state.registry[name]) {
146
+ state.registry[name] = [];
147
+ }
148
+ if (kind === "before") {
149
+ hook2 = (method, options) => {
150
+ return Promise.resolve().then(orig.bind(null, options)).then(method.bind(null, options));
151
+ };
152
+ }
153
+ if (kind === "after") {
154
+ hook2 = (method, options) => {
155
+ let result;
156
+ return Promise.resolve().then(method.bind(null, options)).then((result_) => {
157
+ result = result_;
158
+ return orig(result, options);
159
+ }).then(() => {
160
+ return result;
161
+ });
162
+ };
163
+ }
164
+ if (kind === "error") {
165
+ hook2 = (method, options) => {
166
+ return Promise.resolve().then(method.bind(null, options)).catch((error) => {
167
+ return orig(error, options);
168
+ });
169
+ };
170
+ }
171
+ state.registry[name].push({
172
+ hook: hook2,
173
+ orig
174
+ });
175
+ }
176
+
177
+ // ../node_modules/before-after-hook/lib/remove.js
178
+ function removeHook(state, name, method) {
179
+ if (!state.registry[name]) {
180
+ return;
181
+ }
182
+ const index = state.registry[name].map((registered) => {
183
+ return registered.orig;
184
+ }).indexOf(method);
185
+ if (index === -1) {
186
+ return;
187
+ }
188
+ state.registry[name].splice(index, 1);
189
+ }
190
+
191
+ // ../node_modules/before-after-hook/index.js
192
+ var bind = Function.bind;
193
+ var bindable = bind.bind(bind);
194
+ function bindApi(hook2, state, name) {
195
+ const removeHookRef = bindable(removeHook, null).apply(
196
+ null,
197
+ name ? [state, name] : [state]
198
+ );
199
+ hook2.api = { remove: removeHookRef };
200
+ hook2.remove = removeHookRef;
201
+ ["before", "error", "after", "wrap"].forEach((kind) => {
202
+ const args = name ? [state, kind, name] : [state, kind];
203
+ hook2[kind] = hook2.api[kind] = bindable(addHook, null).apply(null, args);
204
+ });
205
+ }
206
+ function Singular() {
207
+ const singularHookName = /* @__PURE__ */ Symbol("Singular");
208
+ const singularHookState = {
209
+ registry: {}
210
+ };
211
+ const singularHook = register.bind(null, singularHookState, singularHookName);
212
+ bindApi(singularHook, singularHookState, singularHookName);
213
+ return singularHook;
214
+ }
215
+ function Collection() {
216
+ const state = {
217
+ registry: {}
218
+ };
219
+ const hook2 = register.bind(null, state);
220
+ bindApi(hook2, state);
221
+ return hook2;
222
+ }
223
+ var before_after_hook_default = { Singular, Collection };
224
+
225
+ // ../node_modules/@octokit/endpoint/dist-bundle/index.js
226
+ var VERSION = "0.0.0-development";
227
+ var userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;
228
+ var DEFAULTS = {
229
+ method: "GET",
230
+ baseUrl: "https://api.github.com",
231
+ headers: {
232
+ accept: "application/vnd.github.v3+json",
233
+ "user-agent": userAgent
234
+ },
235
+ mediaType: {
236
+ format: ""
237
+ }
238
+ };
239
+ function lowercaseKeys(object) {
240
+ if (!object) {
241
+ return {};
242
+ }
243
+ return Object.keys(object).reduce((newObj, key) => {
244
+ newObj[key.toLowerCase()] = object[key];
245
+ return newObj;
246
+ }, {});
247
+ }
248
+ function isPlainObject(value) {
249
+ if (typeof value !== "object" || value === null) return false;
250
+ if (Object.prototype.toString.call(value) !== "[object Object]") return false;
251
+ const proto = Object.getPrototypeOf(value);
252
+ if (proto === null) return true;
253
+ const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
254
+ return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
255
+ }
256
+ function mergeDeep(defaults, options) {
257
+ const result = Object.assign({}, defaults);
258
+ Object.keys(options).forEach((key) => {
259
+ if (isPlainObject(options[key])) {
260
+ if (!(key in defaults)) Object.assign(result, { [key]: options[key] });
261
+ else result[key] = mergeDeep(defaults[key], options[key]);
262
+ } else {
263
+ Object.assign(result, { [key]: options[key] });
264
+ }
265
+ });
266
+ return result;
267
+ }
268
+ function removeUndefinedProperties(obj) {
269
+ for (const key in obj) {
270
+ if (obj[key] === void 0) {
271
+ delete obj[key];
272
+ }
273
+ }
274
+ return obj;
275
+ }
276
+ function merge(defaults, route, options) {
277
+ if (typeof route === "string") {
278
+ let [method, url] = route.split(" ");
279
+ options = Object.assign(url ? { method, url } : { url: method }, options);
280
+ } else {
281
+ options = Object.assign({}, route);
282
+ }
283
+ options.headers = lowercaseKeys(options.headers);
284
+ removeUndefinedProperties(options);
285
+ removeUndefinedProperties(options.headers);
286
+ const mergedOptions = mergeDeep(defaults || {}, options);
287
+ if (options.url === "/graphql") {
288
+ if (defaults && defaults.mediaType.previews?.length) {
289
+ mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(
290
+ (preview) => !mergedOptions.mediaType.previews.includes(preview)
291
+ ).concat(mergedOptions.mediaType.previews);
292
+ }
293
+ mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, ""));
294
+ }
295
+ return mergedOptions;
296
+ }
297
+ function addQueryParameters(url, parameters) {
298
+ const separator = /\?/.test(url) ? "&" : "?";
299
+ const names = Object.keys(parameters);
300
+ if (names.length === 0) {
301
+ return url;
302
+ }
303
+ return url + separator + names.map((name) => {
304
+ if (name === "q") {
305
+ return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+");
306
+ }
307
+ return `${name}=${encodeURIComponent(parameters[name])}`;
308
+ }).join("&");
309
+ }
310
+ var urlVariableRegex = /\{[^{}}]+\}/g;
311
+ function removeNonChars(variableName) {
312
+ return variableName.replace(/(?:^\W+)|(?:(?<!\W)\W+$)/g, "").split(/,/);
313
+ }
314
+ function extractUrlVariableNames(url) {
315
+ const matches = url.match(urlVariableRegex);
316
+ if (!matches) {
317
+ return [];
318
+ }
319
+ return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
320
+ }
321
+ function omit(object, keysToOmit) {
322
+ const result = { __proto__: null };
323
+ for (const key of Object.keys(object)) {
324
+ if (keysToOmit.indexOf(key) === -1) {
325
+ result[key] = object[key];
326
+ }
327
+ }
328
+ return result;
329
+ }
330
+ function encodeReserved(str) {
331
+ return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {
332
+ if (!/%[0-9A-Fa-f]/.test(part)) {
333
+ part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]");
334
+ }
335
+ return part;
336
+ }).join("");
337
+ }
338
+ function encodeUnreserved(str) {
339
+ return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
340
+ return "%" + c.charCodeAt(0).toString(16).toUpperCase();
341
+ });
342
+ }
343
+ function encodeValue(operator, value, key) {
344
+ value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
345
+ if (key) {
346
+ return encodeUnreserved(key) + "=" + value;
347
+ } else {
348
+ return value;
349
+ }
350
+ }
351
+ function isDefined(value) {
352
+ return value !== void 0 && value !== null;
353
+ }
354
+ function isKeyOperator(operator) {
355
+ return operator === ";" || operator === "&" || operator === "?";
356
+ }
357
+ function getValues(context, operator, key, modifier) {
358
+ var value = context[key], result = [];
359
+ if (isDefined(value) && value !== "") {
360
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
361
+ value = value.toString();
362
+ if (modifier && modifier !== "*") {
363
+ value = value.substring(0, parseInt(modifier, 10));
364
+ }
365
+ result.push(
366
+ encodeValue(operator, value, isKeyOperator(operator) ? key : "")
367
+ );
368
+ } else {
369
+ if (modifier === "*") {
370
+ if (Array.isArray(value)) {
371
+ value.filter(isDefined).forEach(function(value2) {
372
+ result.push(
373
+ encodeValue(operator, value2, isKeyOperator(operator) ? key : "")
374
+ );
375
+ });
376
+ } else {
377
+ Object.keys(value).forEach(function(k) {
378
+ if (isDefined(value[k])) {
379
+ result.push(encodeValue(operator, value[k], k));
380
+ }
381
+ });
382
+ }
383
+ } else {
384
+ const tmp = [];
385
+ if (Array.isArray(value)) {
386
+ value.filter(isDefined).forEach(function(value2) {
387
+ tmp.push(encodeValue(operator, value2));
388
+ });
389
+ } else {
390
+ Object.keys(value).forEach(function(k) {
391
+ if (isDefined(value[k])) {
392
+ tmp.push(encodeUnreserved(k));
393
+ tmp.push(encodeValue(operator, value[k].toString()));
394
+ }
395
+ });
396
+ }
397
+ if (isKeyOperator(operator)) {
398
+ result.push(encodeUnreserved(key) + "=" + tmp.join(","));
399
+ } else if (tmp.length !== 0) {
400
+ result.push(tmp.join(","));
401
+ }
402
+ }
403
+ }
404
+ } else {
405
+ if (operator === ";") {
406
+ if (isDefined(value)) {
407
+ result.push(encodeUnreserved(key));
408
+ }
409
+ } else if (value === "" && (operator === "&" || operator === "?")) {
410
+ result.push(encodeUnreserved(key) + "=");
411
+ } else if (value === "") {
412
+ result.push("");
413
+ }
414
+ }
415
+ return result;
416
+ }
417
+ function parseUrl(template) {
418
+ return {
419
+ expand: expand.bind(null, template)
420
+ };
421
+ }
422
+ function expand(template, context) {
423
+ var operators = ["+", "#", ".", "/", ";", "?", "&"];
424
+ template = template.replace(
425
+ /\{([^\{\}]+)\}|([^\{\}]+)/g,
426
+ function(_, expression, literal) {
427
+ if (expression) {
428
+ let operator = "";
429
+ const values = [];
430
+ if (operators.indexOf(expression.charAt(0)) !== -1) {
431
+ operator = expression.charAt(0);
432
+ expression = expression.substr(1);
433
+ }
434
+ expression.split(/,/g).forEach(function(variable) {
435
+ var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
436
+ values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
437
+ });
438
+ if (operator && operator !== "+") {
439
+ var separator = ",";
440
+ if (operator === "?") {
441
+ separator = "&";
442
+ } else if (operator !== "#") {
443
+ separator = operator;
444
+ }
445
+ return (values.length !== 0 ? operator : "") + values.join(separator);
446
+ } else {
447
+ return values.join(",");
448
+ }
449
+ } else {
450
+ return encodeReserved(literal);
451
+ }
452
+ }
453
+ );
454
+ if (template === "/") {
455
+ return template;
456
+ } else {
457
+ return template.replace(/\/$/, "");
458
+ }
459
+ }
460
+ function parse(options) {
461
+ let method = options.method.toUpperCase();
462
+ let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
463
+ let headers = Object.assign({}, options.headers);
464
+ let body;
465
+ let parameters = omit(options, [
466
+ "method",
467
+ "baseUrl",
468
+ "url",
469
+ "headers",
470
+ "request",
471
+ "mediaType"
472
+ ]);
473
+ const urlVariableNames = extractUrlVariableNames(url);
474
+ url = parseUrl(url).expand(parameters);
475
+ if (!/^http/.test(url)) {
476
+ url = options.baseUrl + url;
477
+ }
478
+ const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl");
479
+ const remainingParameters = omit(parameters, omittedParameters);
480
+ const isBinaryRequest = /application\/octet-stream/i.test(headers.accept);
481
+ if (!isBinaryRequest) {
482
+ if (options.mediaType.format) {
483
+ headers.accept = headers.accept.split(/,/).map(
484
+ (format) => format.replace(
485
+ /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,
486
+ `application/vnd$1$2.${options.mediaType.format}`
487
+ )
488
+ ).join(",");
489
+ }
490
+ if (url.endsWith("/graphql")) {
491
+ if (options.mediaType.previews?.length) {
492
+ const previewsFromAcceptHeader = headers.accept.match(/(?<![\w-])[\w-]+(?=-preview)/g) || [];
493
+ headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {
494
+ const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
495
+ return `application/vnd.github.${preview}-preview${format}`;
496
+ }).join(",");
497
+ }
498
+ }
499
+ }
500
+ if (["GET", "HEAD"].includes(method)) {
501
+ url = addQueryParameters(url, remainingParameters);
502
+ } else {
503
+ if ("data" in remainingParameters) {
504
+ body = remainingParameters.data;
505
+ } else {
506
+ if (Object.keys(remainingParameters).length) {
507
+ body = remainingParameters;
508
+ }
509
+ }
510
+ }
511
+ if (!headers["content-type"] && typeof body !== "undefined") {
512
+ headers["content-type"] = "application/json; charset=utf-8";
513
+ }
514
+ if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
515
+ body = "";
516
+ }
517
+ return Object.assign(
518
+ { method, url, headers },
519
+ typeof body !== "undefined" ? { body } : null,
520
+ options.request ? { request: options.request } : null
521
+ );
522
+ }
523
+ function endpointWithDefaults(defaults, route, options) {
524
+ return parse(merge(defaults, route, options));
525
+ }
526
+ function withDefaults(oldDefaults, newDefaults) {
527
+ const DEFAULTS2 = merge(oldDefaults, newDefaults);
528
+ const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);
529
+ return Object.assign(endpoint2, {
530
+ DEFAULTS: DEFAULTS2,
531
+ defaults: withDefaults.bind(null, DEFAULTS2),
532
+ merge: merge.bind(null, DEFAULTS2),
533
+ parse
534
+ });
535
+ }
536
+ var endpoint = withDefaults(null, DEFAULTS);
537
+
538
+ // ../node_modules/@octokit/request/dist-bundle/index.js
539
+ var import_fast_content_type_parse = __toESM(require_fast_content_type_parse(), 1);
540
+
541
+ // ../node_modules/@octokit/request-error/dist-src/index.js
542
+ var RequestError = class extends Error {
543
+ name;
544
+ /**
545
+ * http status code
546
+ */
547
+ status;
548
+ /**
549
+ * Request options that lead to the error.
550
+ */
551
+ request;
552
+ /**
553
+ * Response object if a response was received
554
+ */
555
+ response;
556
+ constructor(message, statusCode, options) {
557
+ super(message, { cause: options.cause });
558
+ this.name = "HttpError";
559
+ this.status = Number.parseInt(statusCode);
560
+ if (Number.isNaN(this.status)) {
561
+ this.status = 0;
562
+ }
563
+ if ("response" in options) {
564
+ this.response = options.response;
565
+ }
566
+ const requestCopy = Object.assign({}, options.request);
567
+ if (options.request.headers.authorization) {
568
+ requestCopy.headers = Object.assign({}, options.request.headers, {
569
+ authorization: options.request.headers.authorization.replace(
570
+ /(?<! ) .*$/,
571
+ " [REDACTED]"
572
+ )
573
+ });
574
+ }
575
+ requestCopy.url = requestCopy.url.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]").replace(/\baccess_token=\w+/g, "access_token=[REDACTED]");
576
+ this.request = requestCopy;
577
+ }
578
+ };
579
+
580
+ // ../node_modules/@octokit/request/dist-bundle/index.js
581
+ var VERSION2 = "10.0.7";
582
+ var defaults_default = {
583
+ headers: {
584
+ "user-agent": `octokit-request.js/${VERSION2} ${getUserAgent()}`
585
+ }
586
+ };
587
+ function isPlainObject2(value) {
588
+ if (typeof value !== "object" || value === null) return false;
589
+ if (Object.prototype.toString.call(value) !== "[object Object]") return false;
590
+ const proto = Object.getPrototypeOf(value);
591
+ if (proto === null) return true;
592
+ const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
593
+ return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
594
+ }
595
+ var noop = () => "";
596
+ async function fetchWrapper(requestOptions) {
597
+ const fetch2 = requestOptions.request?.fetch || globalThis.fetch;
598
+ if (!fetch2) {
599
+ throw new Error(
600
+ "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"
601
+ );
602
+ }
603
+ const log = requestOptions.request?.log || console;
604
+ const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false;
605
+ const body = isPlainObject2(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(requestOptions.body) : requestOptions.body;
606
+ const requestHeaders = Object.fromEntries(
607
+ Object.entries(requestOptions.headers).map(([name, value]) => [
608
+ name,
609
+ String(value)
610
+ ])
611
+ );
612
+ let fetchResponse;
613
+ try {
614
+ fetchResponse = await fetch2(requestOptions.url, {
615
+ method: requestOptions.method,
616
+ body,
617
+ redirect: requestOptions.request?.redirect,
618
+ headers: requestHeaders,
619
+ signal: requestOptions.request?.signal,
620
+ // duplex must be set if request.body is ReadableStream or Async Iterables.
621
+ // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.
622
+ ...requestOptions.body && { duplex: "half" }
623
+ });
624
+ } catch (error) {
625
+ let message = "Unknown Error";
626
+ if (error instanceof Error) {
627
+ if (error.name === "AbortError") {
628
+ error.status = 500;
629
+ throw error;
630
+ }
631
+ message = error.message;
632
+ if (error.name === "TypeError" && "cause" in error) {
633
+ if (error.cause instanceof Error) {
634
+ message = error.cause.message;
635
+ } else if (typeof error.cause === "string") {
636
+ message = error.cause;
637
+ }
638
+ }
639
+ }
640
+ const requestError = new RequestError(message, 500, {
641
+ request: requestOptions
642
+ });
643
+ requestError.cause = error;
644
+ throw requestError;
645
+ }
646
+ const status = fetchResponse.status;
647
+ const url = fetchResponse.url;
648
+ const responseHeaders = {};
649
+ for (const [key, value] of fetchResponse.headers) {
650
+ responseHeaders[key] = value;
651
+ }
652
+ const octokitResponse = {
653
+ url,
654
+ status,
655
+ headers: responseHeaders,
656
+ data: ""
657
+ };
658
+ if ("deprecation" in responseHeaders) {
659
+ const matches = responseHeaders.link && responseHeaders.link.match(/<([^<>]+)>; rel="deprecation"/);
660
+ const deprecationLink = matches && matches.pop();
661
+ log.warn(
662
+ `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`
663
+ );
664
+ }
665
+ if (status === 204 || status === 205) {
666
+ return octokitResponse;
667
+ }
668
+ if (requestOptions.method === "HEAD") {
669
+ if (status < 400) {
670
+ return octokitResponse;
671
+ }
672
+ throw new RequestError(fetchResponse.statusText, status, {
673
+ response: octokitResponse,
674
+ request: requestOptions
675
+ });
676
+ }
677
+ if (status === 304) {
678
+ octokitResponse.data = await getResponseData(fetchResponse);
679
+ throw new RequestError("Not modified", status, {
680
+ response: octokitResponse,
681
+ request: requestOptions
682
+ });
683
+ }
684
+ if (status >= 400) {
685
+ octokitResponse.data = await getResponseData(fetchResponse);
686
+ throw new RequestError(toErrorMessage(octokitResponse.data), status, {
687
+ response: octokitResponse,
688
+ request: requestOptions
689
+ });
690
+ }
691
+ octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body;
692
+ return octokitResponse;
693
+ }
694
+ async function getResponseData(response) {
695
+ const contentType = response.headers.get("content-type");
696
+ if (!contentType) {
697
+ return response.text().catch(noop);
698
+ }
699
+ const mimetype = (0, import_fast_content_type_parse.safeParse)(contentType);
700
+ if (isJSONResponse(mimetype)) {
701
+ let text = "";
702
+ try {
703
+ text = await response.text();
704
+ return JSON.parse(text);
705
+ } catch (err) {
706
+ return text;
707
+ }
708
+ } else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") {
709
+ return response.text().catch(noop);
710
+ } else {
711
+ return response.arrayBuffer().catch(
712
+ /* v8 ignore next -- @preserve */
713
+ () => new ArrayBuffer(0)
714
+ );
715
+ }
716
+ }
717
+ function isJSONResponse(mimetype) {
718
+ return mimetype.type === "application/json" || mimetype.type === "application/scim+json";
719
+ }
720
+ function toErrorMessage(data) {
721
+ if (typeof data === "string") {
722
+ return data;
723
+ }
724
+ if (data instanceof ArrayBuffer) {
725
+ return "Unknown error";
726
+ }
727
+ if ("message" in data) {
728
+ const suffix = "documentation_url" in data ? ` - ${data.documentation_url}` : "";
729
+ return Array.isArray(data.errors) ? `${data.message}: ${data.errors.map((v) => JSON.stringify(v)).join(", ")}${suffix}` : `${data.message}${suffix}`;
730
+ }
731
+ return `Unknown error: ${JSON.stringify(data)}`;
732
+ }
733
+ function withDefaults2(oldEndpoint, newDefaults) {
734
+ const endpoint2 = oldEndpoint.defaults(newDefaults);
735
+ const newApi = function(route, parameters) {
736
+ const endpointOptions = endpoint2.merge(route, parameters);
737
+ if (!endpointOptions.request || !endpointOptions.request.hook) {
738
+ return fetchWrapper(endpoint2.parse(endpointOptions));
739
+ }
740
+ const request2 = (route2, parameters2) => {
741
+ return fetchWrapper(
742
+ endpoint2.parse(endpoint2.merge(route2, parameters2))
743
+ );
744
+ };
745
+ Object.assign(request2, {
746
+ endpoint: endpoint2,
747
+ defaults: withDefaults2.bind(null, endpoint2)
748
+ });
749
+ return endpointOptions.request.hook(request2, endpointOptions);
750
+ };
751
+ return Object.assign(newApi, {
752
+ endpoint: endpoint2,
753
+ defaults: withDefaults2.bind(null, endpoint2)
754
+ });
755
+ }
756
+ var request = withDefaults2(endpoint, defaults_default);
757
+
758
+ // ../node_modules/@octokit/graphql/dist-bundle/index.js
759
+ var VERSION3 = "0.0.0-development";
760
+ function _buildMessageForResponseErrors(data) {
761
+ return `Request failed due to following response errors:
762
+ ` + data.errors.map((e) => ` - ${e.message}`).join("\n");
763
+ }
764
+ var GraphqlResponseError = class extends Error {
765
+ constructor(request2, headers, response) {
766
+ super(_buildMessageForResponseErrors(response));
767
+ this.request = request2;
768
+ this.headers = headers;
769
+ this.response = response;
770
+ this.errors = response.errors;
771
+ this.data = response.data;
772
+ if (Error.captureStackTrace) {
773
+ Error.captureStackTrace(this, this.constructor);
774
+ }
775
+ }
776
+ name = "GraphqlResponseError";
777
+ errors;
778
+ data;
779
+ };
780
+ var NON_VARIABLE_OPTIONS = [
781
+ "method",
782
+ "baseUrl",
783
+ "url",
784
+ "headers",
785
+ "request",
786
+ "query",
787
+ "mediaType",
788
+ "operationName"
789
+ ];
790
+ var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"];
791
+ var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/;
792
+ function graphql(request2, query, options) {
793
+ if (options) {
794
+ if (typeof query === "string" && "query" in options) {
795
+ return Promise.reject(
796
+ new Error(`[@octokit/graphql] "query" cannot be used as variable name`)
797
+ );
798
+ }
799
+ for (const key in options) {
800
+ if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue;
801
+ return Promise.reject(
802
+ new Error(
803
+ `[@octokit/graphql] "${key}" cannot be used as variable name`
804
+ )
805
+ );
806
+ }
807
+ }
808
+ const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query;
809
+ const requestOptions = Object.keys(
810
+ parsedOptions
811
+ ).reduce((result, key) => {
812
+ if (NON_VARIABLE_OPTIONS.includes(key)) {
813
+ result[key] = parsedOptions[key];
814
+ return result;
815
+ }
816
+ if (!result.variables) {
817
+ result.variables = {};
818
+ }
819
+ result.variables[key] = parsedOptions[key];
820
+ return result;
821
+ }, {});
822
+ const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl;
823
+ if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {
824
+ requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql");
825
+ }
826
+ return request2(requestOptions).then((response) => {
827
+ if (response.data.errors) {
828
+ const headers = {};
829
+ for (const key of Object.keys(response.headers)) {
830
+ headers[key] = response.headers[key];
831
+ }
832
+ throw new GraphqlResponseError(
833
+ requestOptions,
834
+ headers,
835
+ response.data
836
+ );
837
+ }
838
+ return response.data.data;
839
+ });
840
+ }
841
+ function withDefaults3(request2, newDefaults) {
842
+ const newRequest = request2.defaults(newDefaults);
843
+ const newApi = (query, options) => {
844
+ return graphql(newRequest, query, options);
845
+ };
846
+ return Object.assign(newApi, {
847
+ defaults: withDefaults3.bind(null, newRequest),
848
+ endpoint: newRequest.endpoint
849
+ });
850
+ }
851
+ var graphql2 = withDefaults3(request, {
852
+ headers: {
853
+ "user-agent": `octokit-graphql.js/${VERSION3} ${getUserAgent()}`
854
+ },
855
+ method: "POST",
856
+ url: "/graphql"
857
+ });
858
+ function withCustomRequest(customRequest) {
859
+ return withDefaults3(customRequest, {
860
+ method: "POST",
861
+ url: "/graphql"
862
+ });
863
+ }
864
+
865
+ // ../node_modules/@octokit/auth-token/dist-bundle/index.js
866
+ var b64url = "(?:[a-zA-Z0-9_-]+)";
867
+ var sep = "\\.";
868
+ var jwtRE = new RegExp(`^${b64url}${sep}${b64url}${sep}${b64url}$`);
869
+ var isJWT = jwtRE.test.bind(jwtRE);
870
+ async function auth(token) {
871
+ const isApp = isJWT(token);
872
+ const isInstallation = token.startsWith("v1.") || token.startsWith("ghs_");
873
+ const isUserToServer = token.startsWith("ghu_");
874
+ const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth";
875
+ return {
876
+ type: "token",
877
+ token,
878
+ tokenType
879
+ };
880
+ }
881
+ function withAuthorizationPrefix(token) {
882
+ if (token.split(/\./).length === 3) {
883
+ return `bearer ${token}`;
884
+ }
885
+ return `token ${token}`;
886
+ }
887
+ async function hook(token, request2, route, parameters) {
888
+ const endpoint2 = request2.endpoint.merge(
889
+ route,
890
+ parameters
891
+ );
892
+ endpoint2.headers.authorization = withAuthorizationPrefix(token);
893
+ return request2(endpoint2);
894
+ }
895
+ var createTokenAuth = function createTokenAuth2(token) {
896
+ if (!token) {
897
+ throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");
898
+ }
899
+ if (typeof token !== "string") {
900
+ throw new Error(
901
+ "[@octokit/auth-token] Token passed to createTokenAuth is not a string"
902
+ );
903
+ }
904
+ token = token.replace(/^(token|bearer) +/i, "");
905
+ return Object.assign(auth.bind(null, token), {
906
+ hook: hook.bind(null, token)
907
+ });
908
+ };
909
+
910
+ // ../node_modules/@octokit/core/dist-src/version.js
911
+ var VERSION4 = "7.0.6";
912
+
913
+ // ../node_modules/@octokit/core/dist-src/index.js
914
+ var noop2 = () => {
915
+ };
916
+ var consoleWarn = console.warn.bind(console);
917
+ var consoleError = console.error.bind(console);
918
+ function createLogger(logger = {}) {
919
+ if (typeof logger.debug !== "function") {
920
+ logger.debug = noop2;
921
+ }
922
+ if (typeof logger.info !== "function") {
923
+ logger.info = noop2;
924
+ }
925
+ if (typeof logger.warn !== "function") {
926
+ logger.warn = consoleWarn;
927
+ }
928
+ if (typeof logger.error !== "function") {
929
+ logger.error = consoleError;
930
+ }
931
+ return logger;
932
+ }
933
+ var userAgentTrail = `octokit-core.js/${VERSION4} ${getUserAgent()}`;
934
+ var Octokit = class {
935
+ static VERSION = VERSION4;
936
+ static defaults(defaults) {
937
+ const OctokitWithDefaults = class extends this {
938
+ constructor(...args) {
939
+ const options = args[0] || {};
940
+ if (typeof defaults === "function") {
941
+ super(defaults(options));
942
+ return;
943
+ }
944
+ super(
945
+ Object.assign(
946
+ {},
947
+ defaults,
948
+ options,
949
+ options.userAgent && defaults.userAgent ? {
950
+ userAgent: `${options.userAgent} ${defaults.userAgent}`
951
+ } : null
952
+ )
953
+ );
954
+ }
955
+ };
956
+ return OctokitWithDefaults;
957
+ }
958
+ static plugins = [];
959
+ /**
960
+ * Attach a plugin (or many) to your Octokit instance.
961
+ *
962
+ * @example
963
+ * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)
964
+ */
965
+ static plugin(...newPlugins) {
966
+ const currentPlugins = this.plugins;
967
+ const NewOctokit = class extends this {
968
+ static plugins = currentPlugins.concat(
969
+ newPlugins.filter((plugin) => !currentPlugins.includes(plugin))
970
+ );
971
+ };
972
+ return NewOctokit;
973
+ }
974
+ constructor(options = {}) {
975
+ const hook2 = new before_after_hook_default.Collection();
976
+ const requestDefaults = {
977
+ baseUrl: request.endpoint.DEFAULTS.baseUrl,
978
+ headers: {},
979
+ request: Object.assign({}, options.request, {
980
+ // @ts-ignore internal usage only, no need to type
981
+ hook: hook2.bind(null, "request")
982
+ }),
983
+ mediaType: {
984
+ previews: [],
985
+ format: ""
986
+ }
987
+ };
988
+ requestDefaults.headers["user-agent"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;
989
+ if (options.baseUrl) {
990
+ requestDefaults.baseUrl = options.baseUrl;
991
+ }
992
+ if (options.previews) {
993
+ requestDefaults.mediaType.previews = options.previews;
994
+ }
995
+ if (options.timeZone) {
996
+ requestDefaults.headers["time-zone"] = options.timeZone;
997
+ }
998
+ this.request = request.defaults(requestDefaults);
999
+ this.graphql = withCustomRequest(this.request).defaults(requestDefaults);
1000
+ this.log = createLogger(options.log);
1001
+ this.hook = hook2;
1002
+ if (!options.authStrategy) {
1003
+ if (!options.auth) {
1004
+ this.auth = async () => ({
1005
+ type: "unauthenticated"
1006
+ });
1007
+ } else {
1008
+ const auth2 = createTokenAuth(options.auth);
1009
+ hook2.wrap("request", auth2.hook);
1010
+ this.auth = auth2;
1011
+ }
1012
+ } else {
1013
+ const { authStrategy, ...otherOptions } = options;
1014
+ const auth2 = authStrategy(
1015
+ Object.assign(
1016
+ {
1017
+ request: this.request,
1018
+ log: this.log,
1019
+ // we pass the current octokit instance as well as its constructor options
1020
+ // to allow for authentication strategies that return a new octokit instance
1021
+ // that shares the same internal state as the current one. The original
1022
+ // requirement for this was the "event-octokit" authentication strategy
1023
+ // of https://github.com/probot/octokit-auth-probot.
1024
+ octokit: this,
1025
+ octokitOptions: otherOptions
1026
+ },
1027
+ options.auth
1028
+ )
1029
+ );
1030
+ hook2.wrap("request", auth2.hook);
1031
+ this.auth = auth2;
1032
+ }
1033
+ const classConstructor = this.constructor;
1034
+ for (let i = 0; i < classConstructor.plugins.length; ++i) {
1035
+ Object.assign(this, classConstructor.plugins[i](this, options));
1036
+ }
1037
+ }
1038
+ // assigned during constructor
1039
+ request;
1040
+ graphql;
1041
+ log;
1042
+ hook;
1043
+ // TODO: type `octokit.auth` based on passed options.authStrategy
1044
+ auth;
1045
+ };
1046
+
1047
+ // ../node_modules/@octokit/plugin-request-log/dist-src/version.js
1048
+ var VERSION5 = "6.0.0";
1049
+
1050
+ // ../node_modules/@octokit/plugin-request-log/dist-src/index.js
1051
+ function requestLog(octokit) {
1052
+ octokit.hook.wrap("request", (request2, options) => {
1053
+ octokit.log.debug("request", options);
1054
+ const start = Date.now();
1055
+ const requestOptions = octokit.request.endpoint.parse(options);
1056
+ const path = requestOptions.url.replace(options.baseUrl, "");
1057
+ return request2(options).then((response) => {
1058
+ const requestId = response.headers["x-github-request-id"];
1059
+ octokit.log.info(
1060
+ `${requestOptions.method} ${path} - ${response.status} with id ${requestId} in ${Date.now() - start}ms`
1061
+ );
1062
+ return response;
1063
+ }).catch((error) => {
1064
+ const requestId = error.response?.headers["x-github-request-id"] || "UNKNOWN";
1065
+ octokit.log.error(
1066
+ `${requestOptions.method} ${path} - ${error.status} with id ${requestId} in ${Date.now() - start}ms`
1067
+ );
1068
+ throw error;
1069
+ });
1070
+ });
1071
+ }
1072
+ requestLog.VERSION = VERSION5;
1073
+
1074
+ // ../node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js
1075
+ var VERSION6 = "0.0.0-development";
1076
+ function normalizePaginatedListResponse(response) {
1077
+ if (!response.data) {
1078
+ return {
1079
+ ...response,
1080
+ data: []
1081
+ };
1082
+ }
1083
+ const responseNeedsNormalization = ("total_count" in response.data || "total_commits" in response.data) && !("url" in response.data);
1084
+ if (!responseNeedsNormalization) return response;
1085
+ const incompleteResults = response.data.incomplete_results;
1086
+ const repositorySelection = response.data.repository_selection;
1087
+ const totalCount = response.data.total_count;
1088
+ const totalCommits = response.data.total_commits;
1089
+ delete response.data.incomplete_results;
1090
+ delete response.data.repository_selection;
1091
+ delete response.data.total_count;
1092
+ delete response.data.total_commits;
1093
+ const namespaceKey = Object.keys(response.data)[0];
1094
+ const data = response.data[namespaceKey];
1095
+ response.data = data;
1096
+ if (typeof incompleteResults !== "undefined") {
1097
+ response.data.incomplete_results = incompleteResults;
1098
+ }
1099
+ if (typeof repositorySelection !== "undefined") {
1100
+ response.data.repository_selection = repositorySelection;
1101
+ }
1102
+ response.data.total_count = totalCount;
1103
+ response.data.total_commits = totalCommits;
1104
+ return response;
1105
+ }
1106
+ function iterator(octokit, route, parameters) {
1107
+ const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);
1108
+ const requestMethod = typeof route === "function" ? route : octokit.request;
1109
+ const method = options.method;
1110
+ const headers = options.headers;
1111
+ let url = options.url;
1112
+ return {
1113
+ [Symbol.asyncIterator]: () => ({
1114
+ async next() {
1115
+ if (!url) return { done: true };
1116
+ try {
1117
+ const response = await requestMethod({ method, url, headers });
1118
+ const normalizedResponse = normalizePaginatedListResponse(response);
1119
+ url = ((normalizedResponse.headers.link || "").match(
1120
+ /<([^<>]+)>;\s*rel="next"/
1121
+ ) || [])[1];
1122
+ if (!url && "total_commits" in normalizedResponse.data) {
1123
+ const parsedUrl = new URL(normalizedResponse.url);
1124
+ const params = parsedUrl.searchParams;
1125
+ const page = parseInt(params.get("page") || "1", 10);
1126
+ const per_page = parseInt(params.get("per_page") || "250", 10);
1127
+ if (page * per_page < normalizedResponse.data.total_commits) {
1128
+ params.set("page", String(page + 1));
1129
+ url = parsedUrl.toString();
1130
+ }
1131
+ }
1132
+ return { value: normalizedResponse };
1133
+ } catch (error) {
1134
+ if (error.status !== 409) throw error;
1135
+ url = "";
1136
+ return {
1137
+ value: {
1138
+ status: 200,
1139
+ headers: {},
1140
+ data: []
1141
+ }
1142
+ };
1143
+ }
1144
+ }
1145
+ })
1146
+ };
1147
+ }
1148
+ function paginate(octokit, route, parameters, mapFn) {
1149
+ if (typeof parameters === "function") {
1150
+ mapFn = parameters;
1151
+ parameters = void 0;
1152
+ }
1153
+ return gather(
1154
+ octokit,
1155
+ [],
1156
+ iterator(octokit, route, parameters)[Symbol.asyncIterator](),
1157
+ mapFn
1158
+ );
1159
+ }
1160
+ function gather(octokit, results, iterator2, mapFn) {
1161
+ return iterator2.next().then((result) => {
1162
+ if (result.done) {
1163
+ return results;
1164
+ }
1165
+ let earlyExit = false;
1166
+ function done() {
1167
+ earlyExit = true;
1168
+ }
1169
+ results = results.concat(
1170
+ mapFn ? mapFn(result.value, done) : result.value.data
1171
+ );
1172
+ if (earlyExit) {
1173
+ return results;
1174
+ }
1175
+ return gather(octokit, results, iterator2, mapFn);
1176
+ });
1177
+ }
1178
+ var composePaginateRest = Object.assign(paginate, {
1179
+ iterator
1180
+ });
1181
+ function paginateRest(octokit) {
1182
+ return {
1183
+ paginate: Object.assign(paginate.bind(null, octokit), {
1184
+ iterator: iterator.bind(null, octokit)
1185
+ })
1186
+ };
1187
+ }
1188
+ paginateRest.VERSION = VERSION6;
1189
+
1190
+ // ../node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js
1191
+ var VERSION7 = "17.0.0";
1192
+
1193
+ // ../node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js
1194
+ var Endpoints = {
1195
+ actions: {
1196
+ addCustomLabelsToSelfHostedRunnerForOrg: [
1197
+ "POST /orgs/{org}/actions/runners/{runner_id}/labels"
1198
+ ],
1199
+ addCustomLabelsToSelfHostedRunnerForRepo: [
1200
+ "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
1201
+ ],
1202
+ addRepoAccessToSelfHostedRunnerGroupInOrg: [
1203
+ "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}"
1204
+ ],
1205
+ addSelectedRepoToOrgSecret: [
1206
+ "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"
1207
+ ],
1208
+ addSelectedRepoToOrgVariable: [
1209
+ "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"
1210
+ ],
1211
+ approveWorkflowRun: [
1212
+ "POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"
1213
+ ],
1214
+ cancelWorkflowRun: [
1215
+ "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"
1216
+ ],
1217
+ createEnvironmentVariable: [
1218
+ "POST /repos/{owner}/{repo}/environments/{environment_name}/variables"
1219
+ ],
1220
+ createHostedRunnerForOrg: ["POST /orgs/{org}/actions/hosted-runners"],
1221
+ createOrUpdateEnvironmentSecret: [
1222
+ "PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"
1223
+ ],
1224
+ createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"],
1225
+ createOrUpdateRepoSecret: [
1226
+ "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"
1227
+ ],
1228
+ createOrgVariable: ["POST /orgs/{org}/actions/variables"],
1229
+ createRegistrationTokenForOrg: [
1230
+ "POST /orgs/{org}/actions/runners/registration-token"
1231
+ ],
1232
+ createRegistrationTokenForRepo: [
1233
+ "POST /repos/{owner}/{repo}/actions/runners/registration-token"
1234
+ ],
1235
+ createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"],
1236
+ createRemoveTokenForRepo: [
1237
+ "POST /repos/{owner}/{repo}/actions/runners/remove-token"
1238
+ ],
1239
+ createRepoVariable: ["POST /repos/{owner}/{repo}/actions/variables"],
1240
+ createWorkflowDispatch: [
1241
+ "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"
1242
+ ],
1243
+ deleteActionsCacheById: [
1244
+ "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"
1245
+ ],
1246
+ deleteActionsCacheByKey: [
1247
+ "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"
1248
+ ],
1249
+ deleteArtifact: [
1250
+ "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"
1251
+ ],
1252
+ deleteCustomImageFromOrg: [
1253
+ "DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}"
1254
+ ],
1255
+ deleteCustomImageVersionFromOrg: [
1256
+ "DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}"
1257
+ ],
1258
+ deleteEnvironmentSecret: [
1259
+ "DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"
1260
+ ],
1261
+ deleteEnvironmentVariable: [
1262
+ "DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"
1263
+ ],
1264
+ deleteHostedRunnerForOrg: [
1265
+ "DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"
1266
+ ],
1267
+ deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"],
1268
+ deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"],
1269
+ deleteRepoSecret: [
1270
+ "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"
1271
+ ],
1272
+ deleteRepoVariable: [
1273
+ "DELETE /repos/{owner}/{repo}/actions/variables/{name}"
1274
+ ],
1275
+ deleteSelfHostedRunnerFromOrg: [
1276
+ "DELETE /orgs/{org}/actions/runners/{runner_id}"
1277
+ ],
1278
+ deleteSelfHostedRunnerFromRepo: [
1279
+ "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"
1280
+ ],
1281
+ deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],
1282
+ deleteWorkflowRunLogs: [
1283
+ "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"
1284
+ ],
1285
+ disableSelectedRepositoryGithubActionsOrganization: [
1286
+ "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"
1287
+ ],
1288
+ disableWorkflow: [
1289
+ "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"
1290
+ ],
1291
+ downloadArtifact: [
1292
+ "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"
1293
+ ],
1294
+ downloadJobLogsForWorkflowRun: [
1295
+ "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"
1296
+ ],
1297
+ downloadWorkflowRunAttemptLogs: [
1298
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"
1299
+ ],
1300
+ downloadWorkflowRunLogs: [
1301
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"
1302
+ ],
1303
+ enableSelectedRepositoryGithubActionsOrganization: [
1304
+ "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"
1305
+ ],
1306
+ enableWorkflow: [
1307
+ "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"
1308
+ ],
1309
+ forceCancelWorkflowRun: [
1310
+ "POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"
1311
+ ],
1312
+ generateRunnerJitconfigForOrg: [
1313
+ "POST /orgs/{org}/actions/runners/generate-jitconfig"
1314
+ ],
1315
+ generateRunnerJitconfigForRepo: [
1316
+ "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"
1317
+ ],
1318
+ getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"],
1319
+ getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"],
1320
+ getActionsCacheUsageByRepoForOrg: [
1321
+ "GET /orgs/{org}/actions/cache/usage-by-repository"
1322
+ ],
1323
+ getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"],
1324
+ getAllowedActionsOrganization: [
1325
+ "GET /orgs/{org}/actions/permissions/selected-actions"
1326
+ ],
1327
+ getAllowedActionsRepository: [
1328
+ "GET /repos/{owner}/{repo}/actions/permissions/selected-actions"
1329
+ ],
1330
+ getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
1331
+ getCustomImageForOrg: [
1332
+ "GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}"
1333
+ ],
1334
+ getCustomImageVersionForOrg: [
1335
+ "GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}"
1336
+ ],
1337
+ getCustomOidcSubClaimForRepo: [
1338
+ "GET /repos/{owner}/{repo}/actions/oidc/customization/sub"
1339
+ ],
1340
+ getEnvironmentPublicKey: [
1341
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key"
1342
+ ],
1343
+ getEnvironmentSecret: [
1344
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"
1345
+ ],
1346
+ getEnvironmentVariable: [
1347
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"
1348
+ ],
1349
+ getGithubActionsDefaultWorkflowPermissionsOrganization: [
1350
+ "GET /orgs/{org}/actions/permissions/workflow"
1351
+ ],
1352
+ getGithubActionsDefaultWorkflowPermissionsRepository: [
1353
+ "GET /repos/{owner}/{repo}/actions/permissions/workflow"
1354
+ ],
1355
+ getGithubActionsPermissionsOrganization: [
1356
+ "GET /orgs/{org}/actions/permissions"
1357
+ ],
1358
+ getGithubActionsPermissionsRepository: [
1359
+ "GET /repos/{owner}/{repo}/actions/permissions"
1360
+ ],
1361
+ getHostedRunnerForOrg: [
1362
+ "GET /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"
1363
+ ],
1364
+ getHostedRunnersGithubOwnedImagesForOrg: [
1365
+ "GET /orgs/{org}/actions/hosted-runners/images/github-owned"
1366
+ ],
1367
+ getHostedRunnersLimitsForOrg: [
1368
+ "GET /orgs/{org}/actions/hosted-runners/limits"
1369
+ ],
1370
+ getHostedRunnersMachineSpecsForOrg: [
1371
+ "GET /orgs/{org}/actions/hosted-runners/machine-sizes"
1372
+ ],
1373
+ getHostedRunnersPartnerImagesForOrg: [
1374
+ "GET /orgs/{org}/actions/hosted-runners/images/partner"
1375
+ ],
1376
+ getHostedRunnersPlatformsForOrg: [
1377
+ "GET /orgs/{org}/actions/hosted-runners/platforms"
1378
+ ],
1379
+ getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],
1380
+ getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"],
1381
+ getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"],
1382
+ getOrgVariable: ["GET /orgs/{org}/actions/variables/{name}"],
1383
+ getPendingDeploymentsForRun: [
1384
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"
1385
+ ],
1386
+ getRepoPermissions: [
1387
+ "GET /repos/{owner}/{repo}/actions/permissions",
1388
+ {},
1389
+ { renamed: ["actions", "getGithubActionsPermissionsRepository"] }
1390
+ ],
1391
+ getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"],
1392
+ getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
1393
+ getRepoVariable: ["GET /repos/{owner}/{repo}/actions/variables/{name}"],
1394
+ getReviewsForRun: [
1395
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"
1396
+ ],
1397
+ getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"],
1398
+ getSelfHostedRunnerForRepo: [
1399
+ "GET /repos/{owner}/{repo}/actions/runners/{runner_id}"
1400
+ ],
1401
+ getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],
1402
+ getWorkflowAccessToRepository: [
1403
+ "GET /repos/{owner}/{repo}/actions/permissions/access"
1404
+ ],
1405
+ getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],
1406
+ getWorkflowRunAttempt: [
1407
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"
1408
+ ],
1409
+ getWorkflowRunUsage: [
1410
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"
1411
+ ],
1412
+ getWorkflowUsage: [
1413
+ "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"
1414
+ ],
1415
+ listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"],
1416
+ listCustomImageVersionsForOrg: [
1417
+ "GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions"
1418
+ ],
1419
+ listCustomImagesForOrg: [
1420
+ "GET /orgs/{org}/actions/hosted-runners/images/custom"
1421
+ ],
1422
+ listEnvironmentSecrets: [
1423
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets"
1424
+ ],
1425
+ listEnvironmentVariables: [
1426
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/variables"
1427
+ ],
1428
+ listGithubHostedRunnersInGroupForOrg: [
1429
+ "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners"
1430
+ ],
1431
+ listHostedRunnersForOrg: ["GET /orgs/{org}/actions/hosted-runners"],
1432
+ listJobsForWorkflowRun: [
1433
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"
1434
+ ],
1435
+ listJobsForWorkflowRunAttempt: [
1436
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"
1437
+ ],
1438
+ listLabelsForSelfHostedRunnerForOrg: [
1439
+ "GET /orgs/{org}/actions/runners/{runner_id}/labels"
1440
+ ],
1441
+ listLabelsForSelfHostedRunnerForRepo: [
1442
+ "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
1443
+ ],
1444
+ listOrgSecrets: ["GET /orgs/{org}/actions/secrets"],
1445
+ listOrgVariables: ["GET /orgs/{org}/actions/variables"],
1446
+ listRepoOrganizationSecrets: [
1447
+ "GET /repos/{owner}/{repo}/actions/organization-secrets"
1448
+ ],
1449
+ listRepoOrganizationVariables: [
1450
+ "GET /repos/{owner}/{repo}/actions/organization-variables"
1451
+ ],
1452
+ listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"],
1453
+ listRepoVariables: ["GET /repos/{owner}/{repo}/actions/variables"],
1454
+ listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"],
1455
+ listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"],
1456
+ listRunnerApplicationsForRepo: [
1457
+ "GET /repos/{owner}/{repo}/actions/runners/downloads"
1458
+ ],
1459
+ listSelectedReposForOrgSecret: [
1460
+ "GET /orgs/{org}/actions/secrets/{secret_name}/repositories"
1461
+ ],
1462
+ listSelectedReposForOrgVariable: [
1463
+ "GET /orgs/{org}/actions/variables/{name}/repositories"
1464
+ ],
1465
+ listSelectedRepositoriesEnabledGithubActionsOrganization: [
1466
+ "GET /orgs/{org}/actions/permissions/repositories"
1467
+ ],
1468
+ listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"],
1469
+ listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"],
1470
+ listWorkflowRunArtifacts: [
1471
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"
1472
+ ],
1473
+ listWorkflowRuns: [
1474
+ "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"
1475
+ ],
1476
+ listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"],
1477
+ reRunJobForWorkflowRun: [
1478
+ "POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"
1479
+ ],
1480
+ reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],
1481
+ reRunWorkflowFailedJobs: [
1482
+ "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"
1483
+ ],
1484
+ removeAllCustomLabelsFromSelfHostedRunnerForOrg: [
1485
+ "DELETE /orgs/{org}/actions/runners/{runner_id}/labels"
1486
+ ],
1487
+ removeAllCustomLabelsFromSelfHostedRunnerForRepo: [
1488
+ "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
1489
+ ],
1490
+ removeCustomLabelFromSelfHostedRunnerForOrg: [
1491
+ "DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"
1492
+ ],
1493
+ removeCustomLabelFromSelfHostedRunnerForRepo: [
1494
+ "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"
1495
+ ],
1496
+ removeSelectedRepoFromOrgSecret: [
1497
+ "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"
1498
+ ],
1499
+ removeSelectedRepoFromOrgVariable: [
1500
+ "DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"
1501
+ ],
1502
+ reviewCustomGatesForRun: [
1503
+ "POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"
1504
+ ],
1505
+ reviewPendingDeploymentsForRun: [
1506
+ "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"
1507
+ ],
1508
+ setAllowedActionsOrganization: [
1509
+ "PUT /orgs/{org}/actions/permissions/selected-actions"
1510
+ ],
1511
+ setAllowedActionsRepository: [
1512
+ "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"
1513
+ ],
1514
+ setCustomLabelsForSelfHostedRunnerForOrg: [
1515
+ "PUT /orgs/{org}/actions/runners/{runner_id}/labels"
1516
+ ],
1517
+ setCustomLabelsForSelfHostedRunnerForRepo: [
1518
+ "PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
1519
+ ],
1520
+ setCustomOidcSubClaimForRepo: [
1521
+ "PUT /repos/{owner}/{repo}/actions/oidc/customization/sub"
1522
+ ],
1523
+ setGithubActionsDefaultWorkflowPermissionsOrganization: [
1524
+ "PUT /orgs/{org}/actions/permissions/workflow"
1525
+ ],
1526
+ setGithubActionsDefaultWorkflowPermissionsRepository: [
1527
+ "PUT /repos/{owner}/{repo}/actions/permissions/workflow"
1528
+ ],
1529
+ setGithubActionsPermissionsOrganization: [
1530
+ "PUT /orgs/{org}/actions/permissions"
1531
+ ],
1532
+ setGithubActionsPermissionsRepository: [
1533
+ "PUT /repos/{owner}/{repo}/actions/permissions"
1534
+ ],
1535
+ setSelectedReposForOrgSecret: [
1536
+ "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"
1537
+ ],
1538
+ setSelectedReposForOrgVariable: [
1539
+ "PUT /orgs/{org}/actions/variables/{name}/repositories"
1540
+ ],
1541
+ setSelectedRepositoriesEnabledGithubActionsOrganization: [
1542
+ "PUT /orgs/{org}/actions/permissions/repositories"
1543
+ ],
1544
+ setWorkflowAccessToRepository: [
1545
+ "PUT /repos/{owner}/{repo}/actions/permissions/access"
1546
+ ],
1547
+ updateEnvironmentVariable: [
1548
+ "PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"
1549
+ ],
1550
+ updateHostedRunnerForOrg: [
1551
+ "PATCH /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"
1552
+ ],
1553
+ updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"],
1554
+ updateRepoVariable: [
1555
+ "PATCH /repos/{owner}/{repo}/actions/variables/{name}"
1556
+ ]
1557
+ },
1558
+ activity: {
1559
+ checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"],
1560
+ deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"],
1561
+ deleteThreadSubscription: [
1562
+ "DELETE /notifications/threads/{thread_id}/subscription"
1563
+ ],
1564
+ getFeeds: ["GET /feeds"],
1565
+ getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"],
1566
+ getThread: ["GET /notifications/threads/{thread_id}"],
1567
+ getThreadSubscriptionForAuthenticatedUser: [
1568
+ "GET /notifications/threads/{thread_id}/subscription"
1569
+ ],
1570
+ listEventsForAuthenticatedUser: ["GET /users/{username}/events"],
1571
+ listNotificationsForAuthenticatedUser: ["GET /notifications"],
1572
+ listOrgEventsForAuthenticatedUser: [
1573
+ "GET /users/{username}/events/orgs/{org}"
1574
+ ],
1575
+ listPublicEvents: ["GET /events"],
1576
+ listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"],
1577
+ listPublicEventsForUser: ["GET /users/{username}/events/public"],
1578
+ listPublicOrgEvents: ["GET /orgs/{org}/events"],
1579
+ listReceivedEventsForUser: ["GET /users/{username}/received_events"],
1580
+ listReceivedPublicEventsForUser: [
1581
+ "GET /users/{username}/received_events/public"
1582
+ ],
1583
+ listRepoEvents: ["GET /repos/{owner}/{repo}/events"],
1584
+ listRepoNotificationsForAuthenticatedUser: [
1585
+ "GET /repos/{owner}/{repo}/notifications"
1586
+ ],
1587
+ listReposStarredByAuthenticatedUser: ["GET /user/starred"],
1588
+ listReposStarredByUser: ["GET /users/{username}/starred"],
1589
+ listReposWatchedByUser: ["GET /users/{username}/subscriptions"],
1590
+ listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"],
1591
+ listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"],
1592
+ listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"],
1593
+ markNotificationsAsRead: ["PUT /notifications"],
1594
+ markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"],
1595
+ markThreadAsDone: ["DELETE /notifications/threads/{thread_id}"],
1596
+ markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"],
1597
+ setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"],
1598
+ setThreadSubscription: [
1599
+ "PUT /notifications/threads/{thread_id}/subscription"
1600
+ ],
1601
+ starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"],
1602
+ unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"]
1603
+ },
1604
+ apps: {
1605
+ addRepoToInstallation: [
1606
+ "PUT /user/installations/{installation_id}/repositories/{repository_id}",
1607
+ {},
1608
+ { renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] }
1609
+ ],
1610
+ addRepoToInstallationForAuthenticatedUser: [
1611
+ "PUT /user/installations/{installation_id}/repositories/{repository_id}"
1612
+ ],
1613
+ checkToken: ["POST /applications/{client_id}/token"],
1614
+ createFromManifest: ["POST /app-manifests/{code}/conversions"],
1615
+ createInstallationAccessToken: [
1616
+ "POST /app/installations/{installation_id}/access_tokens"
1617
+ ],
1618
+ deleteAuthorization: ["DELETE /applications/{client_id}/grant"],
1619
+ deleteInstallation: ["DELETE /app/installations/{installation_id}"],
1620
+ deleteToken: ["DELETE /applications/{client_id}/token"],
1621
+ getAuthenticated: ["GET /app"],
1622
+ getBySlug: ["GET /apps/{app_slug}"],
1623
+ getInstallation: ["GET /app/installations/{installation_id}"],
1624
+ getOrgInstallation: ["GET /orgs/{org}/installation"],
1625
+ getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"],
1626
+ getSubscriptionPlanForAccount: [
1627
+ "GET /marketplace_listing/accounts/{account_id}"
1628
+ ],
1629
+ getSubscriptionPlanForAccountStubbed: [
1630
+ "GET /marketplace_listing/stubbed/accounts/{account_id}"
1631
+ ],
1632
+ getUserInstallation: ["GET /users/{username}/installation"],
1633
+ getWebhookConfigForApp: ["GET /app/hook/config"],
1634
+ getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"],
1635
+ listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"],
1636
+ listAccountsForPlanStubbed: [
1637
+ "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"
1638
+ ],
1639
+ listInstallationReposForAuthenticatedUser: [
1640
+ "GET /user/installations/{installation_id}/repositories"
1641
+ ],
1642
+ listInstallationRequestsForAuthenticatedApp: [
1643
+ "GET /app/installation-requests"
1644
+ ],
1645
+ listInstallations: ["GET /app/installations"],
1646
+ listInstallationsForAuthenticatedUser: ["GET /user/installations"],
1647
+ listPlans: ["GET /marketplace_listing/plans"],
1648
+ listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"],
1649
+ listReposAccessibleToInstallation: ["GET /installation/repositories"],
1650
+ listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"],
1651
+ listSubscriptionsForAuthenticatedUserStubbed: [
1652
+ "GET /user/marketplace_purchases/stubbed"
1653
+ ],
1654
+ listWebhookDeliveries: ["GET /app/hook/deliveries"],
1655
+ redeliverWebhookDelivery: [
1656
+ "POST /app/hook/deliveries/{delivery_id}/attempts"
1657
+ ],
1658
+ removeRepoFromInstallation: [
1659
+ "DELETE /user/installations/{installation_id}/repositories/{repository_id}",
1660
+ {},
1661
+ { renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] }
1662
+ ],
1663
+ removeRepoFromInstallationForAuthenticatedUser: [
1664
+ "DELETE /user/installations/{installation_id}/repositories/{repository_id}"
1665
+ ],
1666
+ resetToken: ["PATCH /applications/{client_id}/token"],
1667
+ revokeInstallationAccessToken: ["DELETE /installation/token"],
1668
+ scopeToken: ["POST /applications/{client_id}/token/scoped"],
1669
+ suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"],
1670
+ unsuspendInstallation: [
1671
+ "DELETE /app/installations/{installation_id}/suspended"
1672
+ ],
1673
+ updateWebhookConfigForApp: ["PATCH /app/hook/config"]
1674
+ },
1675
+ billing: {
1676
+ getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"],
1677
+ getGithubActionsBillingUser: [
1678
+ "GET /users/{username}/settings/billing/actions"
1679
+ ],
1680
+ getGithubBillingPremiumRequestUsageReportOrg: [
1681
+ "GET /organizations/{org}/settings/billing/premium_request/usage"
1682
+ ],
1683
+ getGithubBillingPremiumRequestUsageReportUser: [
1684
+ "GET /users/{username}/settings/billing/premium_request/usage"
1685
+ ],
1686
+ getGithubBillingUsageReportOrg: [
1687
+ "GET /organizations/{org}/settings/billing/usage"
1688
+ ],
1689
+ getGithubBillingUsageReportUser: [
1690
+ "GET /users/{username}/settings/billing/usage"
1691
+ ],
1692
+ getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"],
1693
+ getGithubPackagesBillingUser: [
1694
+ "GET /users/{username}/settings/billing/packages"
1695
+ ],
1696
+ getSharedStorageBillingOrg: [
1697
+ "GET /orgs/{org}/settings/billing/shared-storage"
1698
+ ],
1699
+ getSharedStorageBillingUser: [
1700
+ "GET /users/{username}/settings/billing/shared-storage"
1701
+ ]
1702
+ },
1703
+ campaigns: {
1704
+ createCampaign: ["POST /orgs/{org}/campaigns"],
1705
+ deleteCampaign: ["DELETE /orgs/{org}/campaigns/{campaign_number}"],
1706
+ getCampaignSummary: ["GET /orgs/{org}/campaigns/{campaign_number}"],
1707
+ listOrgCampaigns: ["GET /orgs/{org}/campaigns"],
1708
+ updateCampaign: ["PATCH /orgs/{org}/campaigns/{campaign_number}"]
1709
+ },
1710
+ checks: {
1711
+ create: ["POST /repos/{owner}/{repo}/check-runs"],
1712
+ createSuite: ["POST /repos/{owner}/{repo}/check-suites"],
1713
+ get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],
1714
+ getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],
1715
+ listAnnotations: [
1716
+ "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"
1717
+ ],
1718
+ listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],
1719
+ listForSuite: [
1720
+ "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"
1721
+ ],
1722
+ listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],
1723
+ rerequestRun: [
1724
+ "POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"
1725
+ ],
1726
+ rerequestSuite: [
1727
+ "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"
1728
+ ],
1729
+ setSuitesPreferences: [
1730
+ "PATCH /repos/{owner}/{repo}/check-suites/preferences"
1731
+ ],
1732
+ update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]
1733
+ },
1734
+ codeScanning: {
1735
+ commitAutofix: [
1736
+ "POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits"
1737
+ ],
1738
+ createAutofix: [
1739
+ "POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"
1740
+ ],
1741
+ createVariantAnalysis: [
1742
+ "POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses"
1743
+ ],
1744
+ deleteAnalysis: [
1745
+ "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"
1746
+ ],
1747
+ deleteCodeqlDatabase: [
1748
+ "DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"
1749
+ ],
1750
+ getAlert: [
1751
+ "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}",
1752
+ {},
1753
+ { renamedParameters: { alert_id: "alert_number" } }
1754
+ ],
1755
+ getAnalysis: [
1756
+ "GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"
1757
+ ],
1758
+ getAutofix: [
1759
+ "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"
1760
+ ],
1761
+ getCodeqlDatabase: [
1762
+ "GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"
1763
+ ],
1764
+ getDefaultSetup: ["GET /repos/{owner}/{repo}/code-scanning/default-setup"],
1765
+ getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],
1766
+ getVariantAnalysis: [
1767
+ "GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}"
1768
+ ],
1769
+ getVariantAnalysisRepoTask: [
1770
+ "GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}"
1771
+ ],
1772
+ listAlertInstances: [
1773
+ "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"
1774
+ ],
1775
+ listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"],
1776
+ listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"],
1777
+ listAlertsInstances: [
1778
+ "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",
1779
+ {},
1780
+ { renamed: ["codeScanning", "listAlertInstances"] }
1781
+ ],
1782
+ listCodeqlDatabases: [
1783
+ "GET /repos/{owner}/{repo}/code-scanning/codeql/databases"
1784
+ ],
1785
+ listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"],
1786
+ updateAlert: [
1787
+ "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"
1788
+ ],
1789
+ updateDefaultSetup: [
1790
+ "PATCH /repos/{owner}/{repo}/code-scanning/default-setup"
1791
+ ],
1792
+ uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"]
1793
+ },
1794
+ codeSecurity: {
1795
+ attachConfiguration: [
1796
+ "POST /orgs/{org}/code-security/configurations/{configuration_id}/attach"
1797
+ ],
1798
+ attachEnterpriseConfiguration: [
1799
+ "POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach"
1800
+ ],
1801
+ createConfiguration: ["POST /orgs/{org}/code-security/configurations"],
1802
+ createConfigurationForEnterprise: [
1803
+ "POST /enterprises/{enterprise}/code-security/configurations"
1804
+ ],
1805
+ deleteConfiguration: [
1806
+ "DELETE /orgs/{org}/code-security/configurations/{configuration_id}"
1807
+ ],
1808
+ deleteConfigurationForEnterprise: [
1809
+ "DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}"
1810
+ ],
1811
+ detachConfiguration: [
1812
+ "DELETE /orgs/{org}/code-security/configurations/detach"
1813
+ ],
1814
+ getConfiguration: [
1815
+ "GET /orgs/{org}/code-security/configurations/{configuration_id}"
1816
+ ],
1817
+ getConfigurationForRepository: [
1818
+ "GET /repos/{owner}/{repo}/code-security-configuration"
1819
+ ],
1820
+ getConfigurationsForEnterprise: [
1821
+ "GET /enterprises/{enterprise}/code-security/configurations"
1822
+ ],
1823
+ getConfigurationsForOrg: ["GET /orgs/{org}/code-security/configurations"],
1824
+ getDefaultConfigurations: [
1825
+ "GET /orgs/{org}/code-security/configurations/defaults"
1826
+ ],
1827
+ getDefaultConfigurationsForEnterprise: [
1828
+ "GET /enterprises/{enterprise}/code-security/configurations/defaults"
1829
+ ],
1830
+ getRepositoriesForConfiguration: [
1831
+ "GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories"
1832
+ ],
1833
+ getRepositoriesForEnterpriseConfiguration: [
1834
+ "GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories"
1835
+ ],
1836
+ getSingleConfigurationForEnterprise: [
1837
+ "GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}"
1838
+ ],
1839
+ setConfigurationAsDefault: [
1840
+ "PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults"
1841
+ ],
1842
+ setConfigurationAsDefaultForEnterprise: [
1843
+ "PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults"
1844
+ ],
1845
+ updateConfiguration: [
1846
+ "PATCH /orgs/{org}/code-security/configurations/{configuration_id}"
1847
+ ],
1848
+ updateEnterpriseConfiguration: [
1849
+ "PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}"
1850
+ ]
1851
+ },
1852
+ codesOfConduct: {
1853
+ getAllCodesOfConduct: ["GET /codes_of_conduct"],
1854
+ getConductCode: ["GET /codes_of_conduct/{key}"]
1855
+ },
1856
+ codespaces: {
1857
+ addRepositoryForSecretForAuthenticatedUser: [
1858
+ "PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"
1859
+ ],
1860
+ addSelectedRepoToOrgSecret: [
1861
+ "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"
1862
+ ],
1863
+ checkPermissionsForDevcontainer: [
1864
+ "GET /repos/{owner}/{repo}/codespaces/permissions_check"
1865
+ ],
1866
+ codespaceMachinesForAuthenticatedUser: [
1867
+ "GET /user/codespaces/{codespace_name}/machines"
1868
+ ],
1869
+ createForAuthenticatedUser: ["POST /user/codespaces"],
1870
+ createOrUpdateOrgSecret: [
1871
+ "PUT /orgs/{org}/codespaces/secrets/{secret_name}"
1872
+ ],
1873
+ createOrUpdateRepoSecret: [
1874
+ "PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"
1875
+ ],
1876
+ createOrUpdateSecretForAuthenticatedUser: [
1877
+ "PUT /user/codespaces/secrets/{secret_name}"
1878
+ ],
1879
+ createWithPrForAuthenticatedUser: [
1880
+ "POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"
1881
+ ],
1882
+ createWithRepoForAuthenticatedUser: [
1883
+ "POST /repos/{owner}/{repo}/codespaces"
1884
+ ],
1885
+ deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"],
1886
+ deleteFromOrganization: [
1887
+ "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"
1888
+ ],
1889
+ deleteOrgSecret: ["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"],
1890
+ deleteRepoSecret: [
1891
+ "DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"
1892
+ ],
1893
+ deleteSecretForAuthenticatedUser: [
1894
+ "DELETE /user/codespaces/secrets/{secret_name}"
1895
+ ],
1896
+ exportForAuthenticatedUser: [
1897
+ "POST /user/codespaces/{codespace_name}/exports"
1898
+ ],
1899
+ getCodespacesForUserInOrg: [
1900
+ "GET /orgs/{org}/members/{username}/codespaces"
1901
+ ],
1902
+ getExportDetailsForAuthenticatedUser: [
1903
+ "GET /user/codespaces/{codespace_name}/exports/{export_id}"
1904
+ ],
1905
+ getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"],
1906
+ getOrgPublicKey: ["GET /orgs/{org}/codespaces/secrets/public-key"],
1907
+ getOrgSecret: ["GET /orgs/{org}/codespaces/secrets/{secret_name}"],
1908
+ getPublicKeyForAuthenticatedUser: [
1909
+ "GET /user/codespaces/secrets/public-key"
1910
+ ],
1911
+ getRepoPublicKey: [
1912
+ "GET /repos/{owner}/{repo}/codespaces/secrets/public-key"
1913
+ ],
1914
+ getRepoSecret: [
1915
+ "GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"
1916
+ ],
1917
+ getSecretForAuthenticatedUser: [
1918
+ "GET /user/codespaces/secrets/{secret_name}"
1919
+ ],
1920
+ listDevcontainersInRepositoryForAuthenticatedUser: [
1921
+ "GET /repos/{owner}/{repo}/codespaces/devcontainers"
1922
+ ],
1923
+ listForAuthenticatedUser: ["GET /user/codespaces"],
1924
+ listInOrganization: [
1925
+ "GET /orgs/{org}/codespaces",
1926
+ {},
1927
+ { renamedParameters: { org_id: "org" } }
1928
+ ],
1929
+ listInRepositoryForAuthenticatedUser: [
1930
+ "GET /repos/{owner}/{repo}/codespaces"
1931
+ ],
1932
+ listOrgSecrets: ["GET /orgs/{org}/codespaces/secrets"],
1933
+ listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"],
1934
+ listRepositoriesForSecretForAuthenticatedUser: [
1935
+ "GET /user/codespaces/secrets/{secret_name}/repositories"
1936
+ ],
1937
+ listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"],
1938
+ listSelectedReposForOrgSecret: [
1939
+ "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"
1940
+ ],
1941
+ preFlightWithRepoForAuthenticatedUser: [
1942
+ "GET /repos/{owner}/{repo}/codespaces/new"
1943
+ ],
1944
+ publishForAuthenticatedUser: [
1945
+ "POST /user/codespaces/{codespace_name}/publish"
1946
+ ],
1947
+ removeRepositoryForSecretForAuthenticatedUser: [
1948
+ "DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"
1949
+ ],
1950
+ removeSelectedRepoFromOrgSecret: [
1951
+ "DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"
1952
+ ],
1953
+ repoMachinesForAuthenticatedUser: [
1954
+ "GET /repos/{owner}/{repo}/codespaces/machines"
1955
+ ],
1956
+ setRepositoriesForSecretForAuthenticatedUser: [
1957
+ "PUT /user/codespaces/secrets/{secret_name}/repositories"
1958
+ ],
1959
+ setSelectedReposForOrgSecret: [
1960
+ "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"
1961
+ ],
1962
+ startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"],
1963
+ stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"],
1964
+ stopInOrganization: [
1965
+ "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"
1966
+ ],
1967
+ updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"]
1968
+ },
1969
+ copilot: {
1970
+ addCopilotSeatsForTeams: [
1971
+ "POST /orgs/{org}/copilot/billing/selected_teams"
1972
+ ],
1973
+ addCopilotSeatsForUsers: [
1974
+ "POST /orgs/{org}/copilot/billing/selected_users"
1975
+ ],
1976
+ cancelCopilotSeatAssignmentForTeams: [
1977
+ "DELETE /orgs/{org}/copilot/billing/selected_teams"
1978
+ ],
1979
+ cancelCopilotSeatAssignmentForUsers: [
1980
+ "DELETE /orgs/{org}/copilot/billing/selected_users"
1981
+ ],
1982
+ copilotMetricsForOrganization: ["GET /orgs/{org}/copilot/metrics"],
1983
+ copilotMetricsForTeam: ["GET /orgs/{org}/team/{team_slug}/copilot/metrics"],
1984
+ getCopilotOrganizationDetails: ["GET /orgs/{org}/copilot/billing"],
1985
+ getCopilotSeatDetailsForUser: [
1986
+ "GET /orgs/{org}/members/{username}/copilot"
1987
+ ],
1988
+ listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"]
1989
+ },
1990
+ credentials: { revoke: ["POST /credentials/revoke"] },
1991
+ dependabot: {
1992
+ addSelectedRepoToOrgSecret: [
1993
+ "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"
1994
+ ],
1995
+ createOrUpdateOrgSecret: [
1996
+ "PUT /orgs/{org}/dependabot/secrets/{secret_name}"
1997
+ ],
1998
+ createOrUpdateRepoSecret: [
1999
+ "PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"
2000
+ ],
2001
+ deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],
2002
+ deleteRepoSecret: [
2003
+ "DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"
2004
+ ],
2005
+ getAlert: ["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],
2006
+ getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"],
2007
+ getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"],
2008
+ getRepoPublicKey: [
2009
+ "GET /repos/{owner}/{repo}/dependabot/secrets/public-key"
2010
+ ],
2011
+ getRepoSecret: [
2012
+ "GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"
2013
+ ],
2014
+ listAlertsForEnterprise: [
2015
+ "GET /enterprises/{enterprise}/dependabot/alerts"
2016
+ ],
2017
+ listAlertsForOrg: ["GET /orgs/{org}/dependabot/alerts"],
2018
+ listAlertsForRepo: ["GET /repos/{owner}/{repo}/dependabot/alerts"],
2019
+ listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"],
2020
+ listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"],
2021
+ listSelectedReposForOrgSecret: [
2022
+ "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"
2023
+ ],
2024
+ removeSelectedRepoFromOrgSecret: [
2025
+ "DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"
2026
+ ],
2027
+ repositoryAccessForOrg: [
2028
+ "GET /organizations/{org}/dependabot/repository-access"
2029
+ ],
2030
+ setRepositoryAccessDefaultLevel: [
2031
+ "PUT /organizations/{org}/dependabot/repository-access/default-level"
2032
+ ],
2033
+ setSelectedReposForOrgSecret: [
2034
+ "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"
2035
+ ],
2036
+ updateAlert: [
2037
+ "PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"
2038
+ ],
2039
+ updateRepositoryAccessForOrg: [
2040
+ "PATCH /organizations/{org}/dependabot/repository-access"
2041
+ ]
2042
+ },
2043
+ dependencyGraph: {
2044
+ createRepositorySnapshot: [
2045
+ "POST /repos/{owner}/{repo}/dependency-graph/snapshots"
2046
+ ],
2047
+ diffRange: [
2048
+ "GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"
2049
+ ],
2050
+ exportSbom: ["GET /repos/{owner}/{repo}/dependency-graph/sbom"]
2051
+ },
2052
+ emojis: { get: ["GET /emojis"] },
2053
+ enterpriseTeamMemberships: {
2054
+ add: [
2055
+ "PUT /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"
2056
+ ],
2057
+ bulkAdd: [
2058
+ "POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/add"
2059
+ ],
2060
+ bulkRemove: [
2061
+ "POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/remove"
2062
+ ],
2063
+ get: [
2064
+ "GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"
2065
+ ],
2066
+ list: ["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships"],
2067
+ remove: [
2068
+ "DELETE /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"
2069
+ ]
2070
+ },
2071
+ enterpriseTeamOrganizations: {
2072
+ add: [
2073
+ "PUT /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"
2074
+ ],
2075
+ bulkAdd: [
2076
+ "POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/add"
2077
+ ],
2078
+ bulkRemove: [
2079
+ "POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove"
2080
+ ],
2081
+ delete: [
2082
+ "DELETE /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"
2083
+ ],
2084
+ getAssignment: [
2085
+ "GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"
2086
+ ],
2087
+ getAssignments: [
2088
+ "GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations"
2089
+ ]
2090
+ },
2091
+ enterpriseTeams: {
2092
+ create: ["POST /enterprises/{enterprise}/teams"],
2093
+ delete: ["DELETE /enterprises/{enterprise}/teams/{team_slug}"],
2094
+ get: ["GET /enterprises/{enterprise}/teams/{team_slug}"],
2095
+ list: ["GET /enterprises/{enterprise}/teams"],
2096
+ update: ["PATCH /enterprises/{enterprise}/teams/{team_slug}"]
2097
+ },
2098
+ gists: {
2099
+ checkIsStarred: ["GET /gists/{gist_id}/star"],
2100
+ create: ["POST /gists"],
2101
+ createComment: ["POST /gists/{gist_id}/comments"],
2102
+ delete: ["DELETE /gists/{gist_id}"],
2103
+ deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"],
2104
+ fork: ["POST /gists/{gist_id}/forks"],
2105
+ get: ["GET /gists/{gist_id}"],
2106
+ getComment: ["GET /gists/{gist_id}/comments/{comment_id}"],
2107
+ getRevision: ["GET /gists/{gist_id}/{sha}"],
2108
+ list: ["GET /gists"],
2109
+ listComments: ["GET /gists/{gist_id}/comments"],
2110
+ listCommits: ["GET /gists/{gist_id}/commits"],
2111
+ listForUser: ["GET /users/{username}/gists"],
2112
+ listForks: ["GET /gists/{gist_id}/forks"],
2113
+ listPublic: ["GET /gists/public"],
2114
+ listStarred: ["GET /gists/starred"],
2115
+ star: ["PUT /gists/{gist_id}/star"],
2116
+ unstar: ["DELETE /gists/{gist_id}/star"],
2117
+ update: ["PATCH /gists/{gist_id}"],
2118
+ updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"]
2119
+ },
2120
+ git: {
2121
+ createBlob: ["POST /repos/{owner}/{repo}/git/blobs"],
2122
+ createCommit: ["POST /repos/{owner}/{repo}/git/commits"],
2123
+ createRef: ["POST /repos/{owner}/{repo}/git/refs"],
2124
+ createTag: ["POST /repos/{owner}/{repo}/git/tags"],
2125
+ createTree: ["POST /repos/{owner}/{repo}/git/trees"],
2126
+ deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],
2127
+ getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],
2128
+ getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],
2129
+ getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"],
2130
+ getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],
2131
+ getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],
2132
+ listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],
2133
+ updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]
2134
+ },
2135
+ gitignore: {
2136
+ getAllTemplates: ["GET /gitignore/templates"],
2137
+ getTemplate: ["GET /gitignore/templates/{name}"]
2138
+ },
2139
+ hostedCompute: {
2140
+ createNetworkConfigurationForOrg: [
2141
+ "POST /orgs/{org}/settings/network-configurations"
2142
+ ],
2143
+ deleteNetworkConfigurationFromOrg: [
2144
+ "DELETE /orgs/{org}/settings/network-configurations/{network_configuration_id}"
2145
+ ],
2146
+ getNetworkConfigurationForOrg: [
2147
+ "GET /orgs/{org}/settings/network-configurations/{network_configuration_id}"
2148
+ ],
2149
+ getNetworkSettingsForOrg: [
2150
+ "GET /orgs/{org}/settings/network-settings/{network_settings_id}"
2151
+ ],
2152
+ listNetworkConfigurationsForOrg: [
2153
+ "GET /orgs/{org}/settings/network-configurations"
2154
+ ],
2155
+ updateNetworkConfigurationForOrg: [
2156
+ "PATCH /orgs/{org}/settings/network-configurations/{network_configuration_id}"
2157
+ ]
2158
+ },
2159
+ interactions: {
2160
+ getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"],
2161
+ getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"],
2162
+ getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"],
2163
+ getRestrictionsForYourPublicRepos: [
2164
+ "GET /user/interaction-limits",
2165
+ {},
2166
+ { renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] }
2167
+ ],
2168
+ removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"],
2169
+ removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"],
2170
+ removeRestrictionsForRepo: [
2171
+ "DELETE /repos/{owner}/{repo}/interaction-limits"
2172
+ ],
2173
+ removeRestrictionsForYourPublicRepos: [
2174
+ "DELETE /user/interaction-limits",
2175
+ {},
2176
+ { renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] }
2177
+ ],
2178
+ setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"],
2179
+ setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"],
2180
+ setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"],
2181
+ setRestrictionsForYourPublicRepos: [
2182
+ "PUT /user/interaction-limits",
2183
+ {},
2184
+ { renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] }
2185
+ ]
2186
+ },
2187
+ issues: {
2188
+ addAssignees: [
2189
+ "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"
2190
+ ],
2191
+ addBlockedByDependency: [
2192
+ "POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"
2193
+ ],
2194
+ addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],
2195
+ addSubIssue: [
2196
+ "POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"
2197
+ ],
2198
+ checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"],
2199
+ checkUserCanBeAssignedToIssue: [
2200
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"
2201
+ ],
2202
+ create: ["POST /repos/{owner}/{repo}/issues"],
2203
+ createComment: [
2204
+ "POST /repos/{owner}/{repo}/issues/{issue_number}/comments"
2205
+ ],
2206
+ createLabel: ["POST /repos/{owner}/{repo}/labels"],
2207
+ createMilestone: ["POST /repos/{owner}/{repo}/milestones"],
2208
+ deleteComment: [
2209
+ "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"
2210
+ ],
2211
+ deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"],
2212
+ deleteMilestone: [
2213
+ "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"
2214
+ ],
2215
+ get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"],
2216
+ getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],
2217
+ getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"],
2218
+ getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"],
2219
+ getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],
2220
+ getParent: ["GET /repos/{owner}/{repo}/issues/{issue_number}/parent"],
2221
+ list: ["GET /issues"],
2222
+ listAssignees: ["GET /repos/{owner}/{repo}/assignees"],
2223
+ listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],
2224
+ listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"],
2225
+ listDependenciesBlockedBy: [
2226
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"
2227
+ ],
2228
+ listDependenciesBlocking: [
2229
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking"
2230
+ ],
2231
+ listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],
2232
+ listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"],
2233
+ listEventsForTimeline: [
2234
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"
2235
+ ],
2236
+ listForAuthenticatedUser: ["GET /user/issues"],
2237
+ listForOrg: ["GET /orgs/{org}/issues"],
2238
+ listForRepo: ["GET /repos/{owner}/{repo}/issues"],
2239
+ listLabelsForMilestone: [
2240
+ "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"
2241
+ ],
2242
+ listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"],
2243
+ listLabelsOnIssue: [
2244
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/labels"
2245
+ ],
2246
+ listMilestones: ["GET /repos/{owner}/{repo}/milestones"],
2247
+ listSubIssues: [
2248
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"
2249
+ ],
2250
+ lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],
2251
+ removeAllLabels: [
2252
+ "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"
2253
+ ],
2254
+ removeAssignees: [
2255
+ "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"
2256
+ ],
2257
+ removeDependencyBlockedBy: [
2258
+ "DELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}"
2259
+ ],
2260
+ removeLabel: [
2261
+ "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"
2262
+ ],
2263
+ removeSubIssue: [
2264
+ "DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue"
2265
+ ],
2266
+ reprioritizeSubIssue: [
2267
+ "PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority"
2268
+ ],
2269
+ setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],
2270
+ unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],
2271
+ update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],
2272
+ updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],
2273
+ updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"],
2274
+ updateMilestone: [
2275
+ "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"
2276
+ ]
2277
+ },
2278
+ licenses: {
2279
+ get: ["GET /licenses/{license}"],
2280
+ getAllCommonlyUsed: ["GET /licenses"],
2281
+ getForRepo: ["GET /repos/{owner}/{repo}/license"]
2282
+ },
2283
+ markdown: {
2284
+ render: ["POST /markdown"],
2285
+ renderRaw: [
2286
+ "POST /markdown/raw",
2287
+ { headers: { "content-type": "text/plain; charset=utf-8" } }
2288
+ ]
2289
+ },
2290
+ meta: {
2291
+ get: ["GET /meta"],
2292
+ getAllVersions: ["GET /versions"],
2293
+ getOctocat: ["GET /octocat"],
2294
+ getZen: ["GET /zen"],
2295
+ root: ["GET /"]
2296
+ },
2297
+ migrations: {
2298
+ deleteArchiveForAuthenticatedUser: [
2299
+ "DELETE /user/migrations/{migration_id}/archive"
2300
+ ],
2301
+ deleteArchiveForOrg: [
2302
+ "DELETE /orgs/{org}/migrations/{migration_id}/archive"
2303
+ ],
2304
+ downloadArchiveForOrg: [
2305
+ "GET /orgs/{org}/migrations/{migration_id}/archive"
2306
+ ],
2307
+ getArchiveForAuthenticatedUser: [
2308
+ "GET /user/migrations/{migration_id}/archive"
2309
+ ],
2310
+ getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"],
2311
+ getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"],
2312
+ listForAuthenticatedUser: ["GET /user/migrations"],
2313
+ listForOrg: ["GET /orgs/{org}/migrations"],
2314
+ listReposForAuthenticatedUser: [
2315
+ "GET /user/migrations/{migration_id}/repositories"
2316
+ ],
2317
+ listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"],
2318
+ listReposForUser: [
2319
+ "GET /user/migrations/{migration_id}/repositories",
2320
+ {},
2321
+ { renamed: ["migrations", "listReposForAuthenticatedUser"] }
2322
+ ],
2323
+ startForAuthenticatedUser: ["POST /user/migrations"],
2324
+ startForOrg: ["POST /orgs/{org}/migrations"],
2325
+ unlockRepoForAuthenticatedUser: [
2326
+ "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"
2327
+ ],
2328
+ unlockRepoForOrg: [
2329
+ "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"
2330
+ ]
2331
+ },
2332
+ oidc: {
2333
+ getOidcCustomSubTemplateForOrg: [
2334
+ "GET /orgs/{org}/actions/oidc/customization/sub"
2335
+ ],
2336
+ updateOidcCustomSubTemplateForOrg: [
2337
+ "PUT /orgs/{org}/actions/oidc/customization/sub"
2338
+ ]
2339
+ },
2340
+ orgs: {
2341
+ addSecurityManagerTeam: [
2342
+ "PUT /orgs/{org}/security-managers/teams/{team_slug}",
2343
+ {},
2344
+ {
2345
+ deprecated: "octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team"
2346
+ }
2347
+ ],
2348
+ assignTeamToOrgRole: [
2349
+ "PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"
2350
+ ],
2351
+ assignUserToOrgRole: [
2352
+ "PUT /orgs/{org}/organization-roles/users/{username}/{role_id}"
2353
+ ],
2354
+ blockUser: ["PUT /orgs/{org}/blocks/{username}"],
2355
+ cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"],
2356
+ checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"],
2357
+ checkMembershipForUser: ["GET /orgs/{org}/members/{username}"],
2358
+ checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"],
2359
+ convertMemberToOutsideCollaborator: [
2360
+ "PUT /orgs/{org}/outside_collaborators/{username}"
2361
+ ],
2362
+ createArtifactStorageRecord: [
2363
+ "POST /orgs/{org}/artifacts/metadata/storage-record"
2364
+ ],
2365
+ createInvitation: ["POST /orgs/{org}/invitations"],
2366
+ createIssueType: ["POST /orgs/{org}/issue-types"],
2367
+ createWebhook: ["POST /orgs/{org}/hooks"],
2368
+ customPropertiesForOrgsCreateOrUpdateOrganizationValues: [
2369
+ "PATCH /organizations/{org}/org-properties/values"
2370
+ ],
2371
+ customPropertiesForOrgsGetOrganizationValues: [
2372
+ "GET /organizations/{org}/org-properties/values"
2373
+ ],
2374
+ customPropertiesForReposCreateOrUpdateOrganizationDefinition: [
2375
+ "PUT /orgs/{org}/properties/schema/{custom_property_name}"
2376
+ ],
2377
+ customPropertiesForReposCreateOrUpdateOrganizationDefinitions: [
2378
+ "PATCH /orgs/{org}/properties/schema"
2379
+ ],
2380
+ customPropertiesForReposCreateOrUpdateOrganizationValues: [
2381
+ "PATCH /orgs/{org}/properties/values"
2382
+ ],
2383
+ customPropertiesForReposDeleteOrganizationDefinition: [
2384
+ "DELETE /orgs/{org}/properties/schema/{custom_property_name}"
2385
+ ],
2386
+ customPropertiesForReposGetOrganizationDefinition: [
2387
+ "GET /orgs/{org}/properties/schema/{custom_property_name}"
2388
+ ],
2389
+ customPropertiesForReposGetOrganizationDefinitions: [
2390
+ "GET /orgs/{org}/properties/schema"
2391
+ ],
2392
+ customPropertiesForReposGetOrganizationValues: [
2393
+ "GET /orgs/{org}/properties/values"
2394
+ ],
2395
+ delete: ["DELETE /orgs/{org}"],
2396
+ deleteAttestationsBulk: ["POST /orgs/{org}/attestations/delete-request"],
2397
+ deleteAttestationsById: [
2398
+ "DELETE /orgs/{org}/attestations/{attestation_id}"
2399
+ ],
2400
+ deleteAttestationsBySubjectDigest: [
2401
+ "DELETE /orgs/{org}/attestations/digest/{subject_digest}"
2402
+ ],
2403
+ deleteIssueType: ["DELETE /orgs/{org}/issue-types/{issue_type_id}"],
2404
+ deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"],
2405
+ disableSelectedRepositoryImmutableReleasesOrganization: [
2406
+ "DELETE /orgs/{org}/settings/immutable-releases/repositories/{repository_id}"
2407
+ ],
2408
+ enableSelectedRepositoryImmutableReleasesOrganization: [
2409
+ "PUT /orgs/{org}/settings/immutable-releases/repositories/{repository_id}"
2410
+ ],
2411
+ get: ["GET /orgs/{org}"],
2412
+ getImmutableReleasesSettings: [
2413
+ "GET /orgs/{org}/settings/immutable-releases"
2414
+ ],
2415
+ getImmutableReleasesSettingsRepositories: [
2416
+ "GET /orgs/{org}/settings/immutable-releases/repositories"
2417
+ ],
2418
+ getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"],
2419
+ getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"],
2420
+ getOrgRole: ["GET /orgs/{org}/organization-roles/{role_id}"],
2421
+ getOrgRulesetHistory: ["GET /orgs/{org}/rulesets/{ruleset_id}/history"],
2422
+ getOrgRulesetVersion: [
2423
+ "GET /orgs/{org}/rulesets/{ruleset_id}/history/{version_id}"
2424
+ ],
2425
+ getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"],
2426
+ getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"],
2427
+ getWebhookDelivery: [
2428
+ "GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"
2429
+ ],
2430
+ list: ["GET /organizations"],
2431
+ listAppInstallations: ["GET /orgs/{org}/installations"],
2432
+ listArtifactStorageRecords: [
2433
+ "GET /orgs/{org}/artifacts/{subject_digest}/metadata/storage-records"
2434
+ ],
2435
+ listAttestationRepositories: ["GET /orgs/{org}/attestations/repositories"],
2436
+ listAttestations: ["GET /orgs/{org}/attestations/{subject_digest}"],
2437
+ listAttestationsBulk: [
2438
+ "POST /orgs/{org}/attestations/bulk-list{?per_page,before,after}"
2439
+ ],
2440
+ listBlockedUsers: ["GET /orgs/{org}/blocks"],
2441
+ listFailedInvitations: ["GET /orgs/{org}/failed_invitations"],
2442
+ listForAuthenticatedUser: ["GET /user/orgs"],
2443
+ listForUser: ["GET /users/{username}/orgs"],
2444
+ listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"],
2445
+ listIssueTypes: ["GET /orgs/{org}/issue-types"],
2446
+ listMembers: ["GET /orgs/{org}/members"],
2447
+ listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"],
2448
+ listOrgRoleTeams: ["GET /orgs/{org}/organization-roles/{role_id}/teams"],
2449
+ listOrgRoleUsers: ["GET /orgs/{org}/organization-roles/{role_id}/users"],
2450
+ listOrgRoles: ["GET /orgs/{org}/organization-roles"],
2451
+ listOrganizationFineGrainedPermissions: [
2452
+ "GET /orgs/{org}/organization-fine-grained-permissions"
2453
+ ],
2454
+ listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"],
2455
+ listPatGrantRepositories: [
2456
+ "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"
2457
+ ],
2458
+ listPatGrantRequestRepositories: [
2459
+ "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"
2460
+ ],
2461
+ listPatGrantRequests: ["GET /orgs/{org}/personal-access-token-requests"],
2462
+ listPatGrants: ["GET /orgs/{org}/personal-access-tokens"],
2463
+ listPendingInvitations: ["GET /orgs/{org}/invitations"],
2464
+ listPublicMembers: ["GET /orgs/{org}/public_members"],
2465
+ listSecurityManagerTeams: [
2466
+ "GET /orgs/{org}/security-managers",
2467
+ {},
2468
+ {
2469
+ deprecated: "octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams"
2470
+ }
2471
+ ],
2472
+ listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"],
2473
+ listWebhooks: ["GET /orgs/{org}/hooks"],
2474
+ pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"],
2475
+ redeliverWebhookDelivery: [
2476
+ "POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"
2477
+ ],
2478
+ removeMember: ["DELETE /orgs/{org}/members/{username}"],
2479
+ removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"],
2480
+ removeOutsideCollaborator: [
2481
+ "DELETE /orgs/{org}/outside_collaborators/{username}"
2482
+ ],
2483
+ removePublicMembershipForAuthenticatedUser: [
2484
+ "DELETE /orgs/{org}/public_members/{username}"
2485
+ ],
2486
+ removeSecurityManagerTeam: [
2487
+ "DELETE /orgs/{org}/security-managers/teams/{team_slug}",
2488
+ {},
2489
+ {
2490
+ deprecated: "octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team"
2491
+ }
2492
+ ],
2493
+ reviewPatGrantRequest: [
2494
+ "POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"
2495
+ ],
2496
+ reviewPatGrantRequestsInBulk: [
2497
+ "POST /orgs/{org}/personal-access-token-requests"
2498
+ ],
2499
+ revokeAllOrgRolesTeam: [
2500
+ "DELETE /orgs/{org}/organization-roles/teams/{team_slug}"
2501
+ ],
2502
+ revokeAllOrgRolesUser: [
2503
+ "DELETE /orgs/{org}/organization-roles/users/{username}"
2504
+ ],
2505
+ revokeOrgRoleTeam: [
2506
+ "DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"
2507
+ ],
2508
+ revokeOrgRoleUser: [
2509
+ "DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}"
2510
+ ],
2511
+ setImmutableReleasesSettings: [
2512
+ "PUT /orgs/{org}/settings/immutable-releases"
2513
+ ],
2514
+ setImmutableReleasesSettingsRepositories: [
2515
+ "PUT /orgs/{org}/settings/immutable-releases/repositories"
2516
+ ],
2517
+ setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"],
2518
+ setPublicMembershipForAuthenticatedUser: [
2519
+ "PUT /orgs/{org}/public_members/{username}"
2520
+ ],
2521
+ unblockUser: ["DELETE /orgs/{org}/blocks/{username}"],
2522
+ update: ["PATCH /orgs/{org}"],
2523
+ updateIssueType: ["PUT /orgs/{org}/issue-types/{issue_type_id}"],
2524
+ updateMembershipForAuthenticatedUser: [
2525
+ "PATCH /user/memberships/orgs/{org}"
2526
+ ],
2527
+ updatePatAccess: ["POST /orgs/{org}/personal-access-tokens/{pat_id}"],
2528
+ updatePatAccesses: ["POST /orgs/{org}/personal-access-tokens"],
2529
+ updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"],
2530
+ updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"]
2531
+ },
2532
+ packages: {
2533
+ deletePackageForAuthenticatedUser: [
2534
+ "DELETE /user/packages/{package_type}/{package_name}"
2535
+ ],
2536
+ deletePackageForOrg: [
2537
+ "DELETE /orgs/{org}/packages/{package_type}/{package_name}"
2538
+ ],
2539
+ deletePackageForUser: [
2540
+ "DELETE /users/{username}/packages/{package_type}/{package_name}"
2541
+ ],
2542
+ deletePackageVersionForAuthenticatedUser: [
2543
+ "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"
2544
+ ],
2545
+ deletePackageVersionForOrg: [
2546
+ "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"
2547
+ ],
2548
+ deletePackageVersionForUser: [
2549
+ "DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"
2550
+ ],
2551
+ getAllPackageVersionsForAPackageOwnedByAnOrg: [
2552
+ "GET /orgs/{org}/packages/{package_type}/{package_name}/versions",
2553
+ {},
2554
+ { renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] }
2555
+ ],
2556
+ getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [
2557
+ "GET /user/packages/{package_type}/{package_name}/versions",
2558
+ {},
2559
+ {
2560
+ renamed: [
2561
+ "packages",
2562
+ "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"
2563
+ ]
2564
+ }
2565
+ ],
2566
+ getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [
2567
+ "GET /user/packages/{package_type}/{package_name}/versions"
2568
+ ],
2569
+ getAllPackageVersionsForPackageOwnedByOrg: [
2570
+ "GET /orgs/{org}/packages/{package_type}/{package_name}/versions"
2571
+ ],
2572
+ getAllPackageVersionsForPackageOwnedByUser: [
2573
+ "GET /users/{username}/packages/{package_type}/{package_name}/versions"
2574
+ ],
2575
+ getPackageForAuthenticatedUser: [
2576
+ "GET /user/packages/{package_type}/{package_name}"
2577
+ ],
2578
+ getPackageForOrganization: [
2579
+ "GET /orgs/{org}/packages/{package_type}/{package_name}"
2580
+ ],
2581
+ getPackageForUser: [
2582
+ "GET /users/{username}/packages/{package_type}/{package_name}"
2583
+ ],
2584
+ getPackageVersionForAuthenticatedUser: [
2585
+ "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"
2586
+ ],
2587
+ getPackageVersionForOrganization: [
2588
+ "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"
2589
+ ],
2590
+ getPackageVersionForUser: [
2591
+ "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"
2592
+ ],
2593
+ listDockerMigrationConflictingPackagesForAuthenticatedUser: [
2594
+ "GET /user/docker/conflicts"
2595
+ ],
2596
+ listDockerMigrationConflictingPackagesForOrganization: [
2597
+ "GET /orgs/{org}/docker/conflicts"
2598
+ ],
2599
+ listDockerMigrationConflictingPackagesForUser: [
2600
+ "GET /users/{username}/docker/conflicts"
2601
+ ],
2602
+ listPackagesForAuthenticatedUser: ["GET /user/packages"],
2603
+ listPackagesForOrganization: ["GET /orgs/{org}/packages"],
2604
+ listPackagesForUser: ["GET /users/{username}/packages"],
2605
+ restorePackageForAuthenticatedUser: [
2606
+ "POST /user/packages/{package_type}/{package_name}/restore{?token}"
2607
+ ],
2608
+ restorePackageForOrg: [
2609
+ "POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"
2610
+ ],
2611
+ restorePackageForUser: [
2612
+ "POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"
2613
+ ],
2614
+ restorePackageVersionForAuthenticatedUser: [
2615
+ "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"
2616
+ ],
2617
+ restorePackageVersionForOrg: [
2618
+ "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"
2619
+ ],
2620
+ restorePackageVersionForUser: [
2621
+ "POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"
2622
+ ]
2623
+ },
2624
+ privateRegistries: {
2625
+ createOrgPrivateRegistry: ["POST /orgs/{org}/private-registries"],
2626
+ deleteOrgPrivateRegistry: [
2627
+ "DELETE /orgs/{org}/private-registries/{secret_name}"
2628
+ ],
2629
+ getOrgPrivateRegistry: ["GET /orgs/{org}/private-registries/{secret_name}"],
2630
+ getOrgPublicKey: ["GET /orgs/{org}/private-registries/public-key"],
2631
+ listOrgPrivateRegistries: ["GET /orgs/{org}/private-registries"],
2632
+ updateOrgPrivateRegistry: [
2633
+ "PATCH /orgs/{org}/private-registries/{secret_name}"
2634
+ ]
2635
+ },
2636
+ projects: {
2637
+ addItemForOrg: ["POST /orgs/{org}/projectsV2/{project_number}/items"],
2638
+ addItemForUser: [
2639
+ "POST /users/{username}/projectsV2/{project_number}/items"
2640
+ ],
2641
+ deleteItemForOrg: [
2642
+ "DELETE /orgs/{org}/projectsV2/{project_number}/items/{item_id}"
2643
+ ],
2644
+ deleteItemForUser: [
2645
+ "DELETE /users/{username}/projectsV2/{project_number}/items/{item_id}"
2646
+ ],
2647
+ getFieldForOrg: [
2648
+ "GET /orgs/{org}/projectsV2/{project_number}/fields/{field_id}"
2649
+ ],
2650
+ getFieldForUser: [
2651
+ "GET /users/{username}/projectsV2/{project_number}/fields/{field_id}"
2652
+ ],
2653
+ getForOrg: ["GET /orgs/{org}/projectsV2/{project_number}"],
2654
+ getForUser: ["GET /users/{username}/projectsV2/{project_number}"],
2655
+ getOrgItem: ["GET /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],
2656
+ getUserItem: [
2657
+ "GET /users/{username}/projectsV2/{project_number}/items/{item_id}"
2658
+ ],
2659
+ listFieldsForOrg: ["GET /orgs/{org}/projectsV2/{project_number}/fields"],
2660
+ listFieldsForUser: [
2661
+ "GET /users/{username}/projectsV2/{project_number}/fields"
2662
+ ],
2663
+ listForOrg: ["GET /orgs/{org}/projectsV2"],
2664
+ listForUser: ["GET /users/{username}/projectsV2"],
2665
+ listItemsForOrg: ["GET /orgs/{org}/projectsV2/{project_number}/items"],
2666
+ listItemsForUser: [
2667
+ "GET /users/{username}/projectsV2/{project_number}/items"
2668
+ ],
2669
+ updateItemForOrg: [
2670
+ "PATCH /orgs/{org}/projectsV2/{project_number}/items/{item_id}"
2671
+ ],
2672
+ updateItemForUser: [
2673
+ "PATCH /users/{username}/projectsV2/{project_number}/items/{item_id}"
2674
+ ]
2675
+ },
2676
+ pulls: {
2677
+ checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
2678
+ create: ["POST /repos/{owner}/{repo}/pulls"],
2679
+ createReplyForReviewComment: [
2680
+ "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"
2681
+ ],
2682
+ createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
2683
+ createReviewComment: [
2684
+ "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"
2685
+ ],
2686
+ deletePendingReview: [
2687
+ "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"
2688
+ ],
2689
+ deleteReviewComment: [
2690
+ "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"
2691
+ ],
2692
+ dismissReview: [
2693
+ "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"
2694
+ ],
2695
+ get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"],
2696
+ getReview: [
2697
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"
2698
+ ],
2699
+ getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],
2700
+ list: ["GET /repos/{owner}/{repo}/pulls"],
2701
+ listCommentsForReview: [
2702
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"
2703
+ ],
2704
+ listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],
2705
+ listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],
2706
+ listRequestedReviewers: [
2707
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"
2708
+ ],
2709
+ listReviewComments: [
2710
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"
2711
+ ],
2712
+ listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"],
2713
+ listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
2714
+ merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
2715
+ removeRequestedReviewers: [
2716
+ "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"
2717
+ ],
2718
+ requestReviewers: [
2719
+ "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"
2720
+ ],
2721
+ submitReview: [
2722
+ "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"
2723
+ ],
2724
+ update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],
2725
+ updateBranch: [
2726
+ "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"
2727
+ ],
2728
+ updateReview: [
2729
+ "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"
2730
+ ],
2731
+ updateReviewComment: [
2732
+ "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"
2733
+ ]
2734
+ },
2735
+ rateLimit: { get: ["GET /rate_limit"] },
2736
+ reactions: {
2737
+ createForCommitComment: [
2738
+ "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"
2739
+ ],
2740
+ createForIssue: [
2741
+ "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"
2742
+ ],
2743
+ createForIssueComment: [
2744
+ "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"
2745
+ ],
2746
+ createForPullRequestReviewComment: [
2747
+ "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"
2748
+ ],
2749
+ createForRelease: [
2750
+ "POST /repos/{owner}/{repo}/releases/{release_id}/reactions"
2751
+ ],
2752
+ createForTeamDiscussionCommentInOrg: [
2753
+ "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"
2754
+ ],
2755
+ createForTeamDiscussionInOrg: [
2756
+ "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"
2757
+ ],
2758
+ deleteForCommitComment: [
2759
+ "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"
2760
+ ],
2761
+ deleteForIssue: [
2762
+ "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"
2763
+ ],
2764
+ deleteForIssueComment: [
2765
+ "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"
2766
+ ],
2767
+ deleteForPullRequestComment: [
2768
+ "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"
2769
+ ],
2770
+ deleteForRelease: [
2771
+ "DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"
2772
+ ],
2773
+ deleteForTeamDiscussion: [
2774
+ "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"
2775
+ ],
2776
+ deleteForTeamDiscussionComment: [
2777
+ "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"
2778
+ ],
2779
+ listForCommitComment: [
2780
+ "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"
2781
+ ],
2782
+ listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],
2783
+ listForIssueComment: [
2784
+ "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"
2785
+ ],
2786
+ listForPullRequestReviewComment: [
2787
+ "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"
2788
+ ],
2789
+ listForRelease: [
2790
+ "GET /repos/{owner}/{repo}/releases/{release_id}/reactions"
2791
+ ],
2792
+ listForTeamDiscussionCommentInOrg: [
2793
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"
2794
+ ],
2795
+ listForTeamDiscussionInOrg: [
2796
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"
2797
+ ]
2798
+ },
2799
+ repos: {
2800
+ acceptInvitation: [
2801
+ "PATCH /user/repository_invitations/{invitation_id}",
2802
+ {},
2803
+ { renamed: ["repos", "acceptInvitationForAuthenticatedUser"] }
2804
+ ],
2805
+ acceptInvitationForAuthenticatedUser: [
2806
+ "PATCH /user/repository_invitations/{invitation_id}"
2807
+ ],
2808
+ addAppAccessRestrictions: [
2809
+ "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
2810
+ {},
2811
+ { mapToData: "apps" }
2812
+ ],
2813
+ addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"],
2814
+ addStatusCheckContexts: [
2815
+ "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
2816
+ {},
2817
+ { mapToData: "contexts" }
2818
+ ],
2819
+ addTeamAccessRestrictions: [
2820
+ "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
2821
+ {},
2822
+ { mapToData: "teams" }
2823
+ ],
2824
+ addUserAccessRestrictions: [
2825
+ "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
2826
+ {},
2827
+ { mapToData: "users" }
2828
+ ],
2829
+ cancelPagesDeployment: [
2830
+ "POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel"
2831
+ ],
2832
+ checkAutomatedSecurityFixes: [
2833
+ "GET /repos/{owner}/{repo}/automated-security-fixes"
2834
+ ],
2835
+ checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"],
2836
+ checkImmutableReleases: ["GET /repos/{owner}/{repo}/immutable-releases"],
2837
+ checkPrivateVulnerabilityReporting: [
2838
+ "GET /repos/{owner}/{repo}/private-vulnerability-reporting"
2839
+ ],
2840
+ checkVulnerabilityAlerts: [
2841
+ "GET /repos/{owner}/{repo}/vulnerability-alerts"
2842
+ ],
2843
+ codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"],
2844
+ compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"],
2845
+ compareCommitsWithBasehead: [
2846
+ "GET /repos/{owner}/{repo}/compare/{basehead}"
2847
+ ],
2848
+ createAttestation: ["POST /repos/{owner}/{repo}/attestations"],
2849
+ createAutolink: ["POST /repos/{owner}/{repo}/autolinks"],
2850
+ createCommitComment: [
2851
+ "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"
2852
+ ],
2853
+ createCommitSignatureProtection: [
2854
+ "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"
2855
+ ],
2856
+ createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"],
2857
+ createDeployKey: ["POST /repos/{owner}/{repo}/keys"],
2858
+ createDeployment: ["POST /repos/{owner}/{repo}/deployments"],
2859
+ createDeploymentBranchPolicy: [
2860
+ "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"
2861
+ ],
2862
+ createDeploymentProtectionRule: [
2863
+ "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"
2864
+ ],
2865
+ createDeploymentStatus: [
2866
+ "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"
2867
+ ],
2868
+ createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"],
2869
+ createForAuthenticatedUser: ["POST /user/repos"],
2870
+ createFork: ["POST /repos/{owner}/{repo}/forks"],
2871
+ createInOrg: ["POST /orgs/{org}/repos"],
2872
+ createOrUpdateEnvironment: [
2873
+ "PUT /repos/{owner}/{repo}/environments/{environment_name}"
2874
+ ],
2875
+ createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"],
2876
+ createOrgRuleset: ["POST /orgs/{org}/rulesets"],
2877
+ createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployments"],
2878
+ createPagesSite: ["POST /repos/{owner}/{repo}/pages"],
2879
+ createRelease: ["POST /repos/{owner}/{repo}/releases"],
2880
+ createRepoRuleset: ["POST /repos/{owner}/{repo}/rulesets"],
2881
+ createUsingTemplate: [
2882
+ "POST /repos/{template_owner}/{template_repo}/generate"
2883
+ ],
2884
+ createWebhook: ["POST /repos/{owner}/{repo}/hooks"],
2885
+ customPropertiesForReposCreateOrUpdateRepositoryValues: [
2886
+ "PATCH /repos/{owner}/{repo}/properties/values"
2887
+ ],
2888
+ customPropertiesForReposGetRepositoryValues: [
2889
+ "GET /repos/{owner}/{repo}/properties/values"
2890
+ ],
2891
+ declineInvitation: [
2892
+ "DELETE /user/repository_invitations/{invitation_id}",
2893
+ {},
2894
+ { renamed: ["repos", "declineInvitationForAuthenticatedUser"] }
2895
+ ],
2896
+ declineInvitationForAuthenticatedUser: [
2897
+ "DELETE /user/repository_invitations/{invitation_id}"
2898
+ ],
2899
+ delete: ["DELETE /repos/{owner}/{repo}"],
2900
+ deleteAccessRestrictions: [
2901
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"
2902
+ ],
2903
+ deleteAdminBranchProtection: [
2904
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"
2905
+ ],
2906
+ deleteAnEnvironment: [
2907
+ "DELETE /repos/{owner}/{repo}/environments/{environment_name}"
2908
+ ],
2909
+ deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],
2910
+ deleteBranchProtection: [
2911
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection"
2912
+ ],
2913
+ deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],
2914
+ deleteCommitSignatureProtection: [
2915
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"
2916
+ ],
2917
+ deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"],
2918
+ deleteDeployment: [
2919
+ "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"
2920
+ ],
2921
+ deleteDeploymentBranchPolicy: [
2922
+ "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"
2923
+ ],
2924
+ deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"],
2925
+ deleteInvitation: [
2926
+ "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"
2927
+ ],
2928
+ deleteOrgRuleset: ["DELETE /orgs/{org}/rulesets/{ruleset_id}"],
2929
+ deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"],
2930
+ deletePullRequestReviewProtection: [
2931
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"
2932
+ ],
2933
+ deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"],
2934
+ deleteReleaseAsset: [
2935
+ "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"
2936
+ ],
2937
+ deleteRepoRuleset: ["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
2938
+ deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],
2939
+ disableAutomatedSecurityFixes: [
2940
+ "DELETE /repos/{owner}/{repo}/automated-security-fixes"
2941
+ ],
2942
+ disableDeploymentProtectionRule: [
2943
+ "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"
2944
+ ],
2945
+ disableImmutableReleases: [
2946
+ "DELETE /repos/{owner}/{repo}/immutable-releases"
2947
+ ],
2948
+ disablePrivateVulnerabilityReporting: [
2949
+ "DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"
2950
+ ],
2951
+ disableVulnerabilityAlerts: [
2952
+ "DELETE /repos/{owner}/{repo}/vulnerability-alerts"
2953
+ ],
2954
+ downloadArchive: [
2955
+ "GET /repos/{owner}/{repo}/zipball/{ref}",
2956
+ {},
2957
+ { renamed: ["repos", "downloadZipballArchive"] }
2958
+ ],
2959
+ downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"],
2960
+ downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"],
2961
+ enableAutomatedSecurityFixes: [
2962
+ "PUT /repos/{owner}/{repo}/automated-security-fixes"
2963
+ ],
2964
+ enableImmutableReleases: ["PUT /repos/{owner}/{repo}/immutable-releases"],
2965
+ enablePrivateVulnerabilityReporting: [
2966
+ "PUT /repos/{owner}/{repo}/private-vulnerability-reporting"
2967
+ ],
2968
+ enableVulnerabilityAlerts: [
2969
+ "PUT /repos/{owner}/{repo}/vulnerability-alerts"
2970
+ ],
2971
+ generateReleaseNotes: [
2972
+ "POST /repos/{owner}/{repo}/releases/generate-notes"
2973
+ ],
2974
+ get: ["GET /repos/{owner}/{repo}"],
2975
+ getAccessRestrictions: [
2976
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"
2977
+ ],
2978
+ getAdminBranchProtection: [
2979
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"
2980
+ ],
2981
+ getAllDeploymentProtectionRules: [
2982
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"
2983
+ ],
2984
+ getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"],
2985
+ getAllStatusCheckContexts: [
2986
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"
2987
+ ],
2988
+ getAllTopics: ["GET /repos/{owner}/{repo}/topics"],
2989
+ getAppsWithAccessToProtectedBranch: [
2990
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"
2991
+ ],
2992
+ getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],
2993
+ getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"],
2994
+ getBranchProtection: [
2995
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection"
2996
+ ],
2997
+ getBranchRules: ["GET /repos/{owner}/{repo}/rules/branches/{branch}"],
2998
+ getClones: ["GET /repos/{owner}/{repo}/traffic/clones"],
2999
+ getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"],
3000
+ getCollaboratorPermissionLevel: [
3001
+ "GET /repos/{owner}/{repo}/collaborators/{username}/permission"
3002
+ ],
3003
+ getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"],
3004
+ getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"],
3005
+ getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"],
3006
+ getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"],
3007
+ getCommitSignatureProtection: [
3008
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"
3009
+ ],
3010
+ getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"],
3011
+ getContent: ["GET /repos/{owner}/{repo}/contents/{path}"],
3012
+ getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"],
3013
+ getCustomDeploymentProtectionRule: [
3014
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"
3015
+ ],
3016
+ getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"],
3017
+ getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],
3018
+ getDeploymentBranchPolicy: [
3019
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"
3020
+ ],
3021
+ getDeploymentStatus: [
3022
+ "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"
3023
+ ],
3024
+ getEnvironment: [
3025
+ "GET /repos/{owner}/{repo}/environments/{environment_name}"
3026
+ ],
3027
+ getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"],
3028
+ getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"],
3029
+ getOrgRuleSuite: ["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"],
3030
+ getOrgRuleSuites: ["GET /orgs/{org}/rulesets/rule-suites"],
3031
+ getOrgRuleset: ["GET /orgs/{org}/rulesets/{ruleset_id}"],
3032
+ getOrgRulesets: ["GET /orgs/{org}/rulesets"],
3033
+ getPages: ["GET /repos/{owner}/{repo}/pages"],
3034
+ getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],
3035
+ getPagesDeployment: [
3036
+ "GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}"
3037
+ ],
3038
+ getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"],
3039
+ getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"],
3040
+ getPullRequestReviewProtection: [
3041
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"
3042
+ ],
3043
+ getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"],
3044
+ getReadme: ["GET /repos/{owner}/{repo}/readme"],
3045
+ getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"],
3046
+ getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"],
3047
+ getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],
3048
+ getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"],
3049
+ getRepoRuleSuite: [
3050
+ "GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"
3051
+ ],
3052
+ getRepoRuleSuites: ["GET /repos/{owner}/{repo}/rulesets/rule-suites"],
3053
+ getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
3054
+ getRepoRulesetHistory: [
3055
+ "GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history"
3056
+ ],
3057
+ getRepoRulesetVersion: [
3058
+ "GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}"
3059
+ ],
3060
+ getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"],
3061
+ getStatusChecksProtection: [
3062
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
3063
+ ],
3064
+ getTeamsWithAccessToProtectedBranch: [
3065
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"
3066
+ ],
3067
+ getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"],
3068
+ getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"],
3069
+ getUsersWithAccessToProtectedBranch: [
3070
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"
3071
+ ],
3072
+ getViews: ["GET /repos/{owner}/{repo}/traffic/views"],
3073
+ getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"],
3074
+ getWebhookConfigForRepo: [
3075
+ "GET /repos/{owner}/{repo}/hooks/{hook_id}/config"
3076
+ ],
3077
+ getWebhookDelivery: [
3078
+ "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"
3079
+ ],
3080
+ listActivities: ["GET /repos/{owner}/{repo}/activity"],
3081
+ listAttestations: [
3082
+ "GET /repos/{owner}/{repo}/attestations/{subject_digest}"
3083
+ ],
3084
+ listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"],
3085
+ listBranches: ["GET /repos/{owner}/{repo}/branches"],
3086
+ listBranchesForHeadCommit: [
3087
+ "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"
3088
+ ],
3089
+ listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"],
3090
+ listCommentsForCommit: [
3091
+ "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"
3092
+ ],
3093
+ listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"],
3094
+ listCommitStatusesForRef: [
3095
+ "GET /repos/{owner}/{repo}/commits/{ref}/statuses"
3096
+ ],
3097
+ listCommits: ["GET /repos/{owner}/{repo}/commits"],
3098
+ listContributors: ["GET /repos/{owner}/{repo}/contributors"],
3099
+ listCustomDeploymentRuleIntegrations: [
3100
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"
3101
+ ],
3102
+ listDeployKeys: ["GET /repos/{owner}/{repo}/keys"],
3103
+ listDeploymentBranchPolicies: [
3104
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"
3105
+ ],
3106
+ listDeploymentStatuses: [
3107
+ "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"
3108
+ ],
3109
+ listDeployments: ["GET /repos/{owner}/{repo}/deployments"],
3110
+ listForAuthenticatedUser: ["GET /user/repos"],
3111
+ listForOrg: ["GET /orgs/{org}/repos"],
3112
+ listForUser: ["GET /users/{username}/repos"],
3113
+ listForks: ["GET /repos/{owner}/{repo}/forks"],
3114
+ listInvitations: ["GET /repos/{owner}/{repo}/invitations"],
3115
+ listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"],
3116
+ listLanguages: ["GET /repos/{owner}/{repo}/languages"],
3117
+ listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"],
3118
+ listPublic: ["GET /repositories"],
3119
+ listPullRequestsAssociatedWithCommit: [
3120
+ "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"
3121
+ ],
3122
+ listReleaseAssets: [
3123
+ "GET /repos/{owner}/{repo}/releases/{release_id}/assets"
3124
+ ],
3125
+ listReleases: ["GET /repos/{owner}/{repo}/releases"],
3126
+ listTags: ["GET /repos/{owner}/{repo}/tags"],
3127
+ listTeams: ["GET /repos/{owner}/{repo}/teams"],
3128
+ listWebhookDeliveries: [
3129
+ "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"
3130
+ ],
3131
+ listWebhooks: ["GET /repos/{owner}/{repo}/hooks"],
3132
+ merge: ["POST /repos/{owner}/{repo}/merges"],
3133
+ mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"],
3134
+ pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],
3135
+ redeliverWebhookDelivery: [
3136
+ "POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"
3137
+ ],
3138
+ removeAppAccessRestrictions: [
3139
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
3140
+ {},
3141
+ { mapToData: "apps" }
3142
+ ],
3143
+ removeCollaborator: [
3144
+ "DELETE /repos/{owner}/{repo}/collaborators/{username}"
3145
+ ],
3146
+ removeStatusCheckContexts: [
3147
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
3148
+ {},
3149
+ { mapToData: "contexts" }
3150
+ ],
3151
+ removeStatusCheckProtection: [
3152
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
3153
+ ],
3154
+ removeTeamAccessRestrictions: [
3155
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
3156
+ {},
3157
+ { mapToData: "teams" }
3158
+ ],
3159
+ removeUserAccessRestrictions: [
3160
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
3161
+ {},
3162
+ { mapToData: "users" }
3163
+ ],
3164
+ renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"],
3165
+ replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"],
3166
+ requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"],
3167
+ setAdminBranchProtection: [
3168
+ "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"
3169
+ ],
3170
+ setAppAccessRestrictions: [
3171
+ "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
3172
+ {},
3173
+ { mapToData: "apps" }
3174
+ ],
3175
+ setStatusCheckContexts: [
3176
+ "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
3177
+ {},
3178
+ { mapToData: "contexts" }
3179
+ ],
3180
+ setTeamAccessRestrictions: [
3181
+ "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
3182
+ {},
3183
+ { mapToData: "teams" }
3184
+ ],
3185
+ setUserAccessRestrictions: [
3186
+ "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
3187
+ {},
3188
+ { mapToData: "users" }
3189
+ ],
3190
+ testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],
3191
+ transfer: ["POST /repos/{owner}/{repo}/transfer"],
3192
+ update: ["PATCH /repos/{owner}/{repo}"],
3193
+ updateBranchProtection: [
3194
+ "PUT /repos/{owner}/{repo}/branches/{branch}/protection"
3195
+ ],
3196
+ updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],
3197
+ updateDeploymentBranchPolicy: [
3198
+ "PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"
3199
+ ],
3200
+ updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"],
3201
+ updateInvitation: [
3202
+ "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"
3203
+ ],
3204
+ updateOrgRuleset: ["PUT /orgs/{org}/rulesets/{ruleset_id}"],
3205
+ updatePullRequestReviewProtection: [
3206
+ "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"
3207
+ ],
3208
+ updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"],
3209
+ updateReleaseAsset: [
3210
+ "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"
3211
+ ],
3212
+ updateRepoRuleset: ["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
3213
+ updateStatusCheckPotection: [
3214
+ "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks",
3215
+ {},
3216
+ { renamed: ["repos", "updateStatusCheckProtection"] }
3217
+ ],
3218
+ updateStatusCheckProtection: [
3219
+ "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
3220
+ ],
3221
+ updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],
3222
+ updateWebhookConfigForRepo: [
3223
+ "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"
3224
+ ],
3225
+ uploadReleaseAsset: [
3226
+ "POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}",
3227
+ { baseUrl: "https://uploads.github.com" }
3228
+ ]
3229
+ },
3230
+ search: {
3231
+ code: ["GET /search/code"],
3232
+ commits: ["GET /search/commits"],
3233
+ issuesAndPullRequests: ["GET /search/issues"],
3234
+ labels: ["GET /search/labels"],
3235
+ repos: ["GET /search/repositories"],
3236
+ topics: ["GET /search/topics"],
3237
+ users: ["GET /search/users"]
3238
+ },
3239
+ secretScanning: {
3240
+ createPushProtectionBypass: [
3241
+ "POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses"
3242
+ ],
3243
+ getAlert: [
3244
+ "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"
3245
+ ],
3246
+ getScanHistory: ["GET /repos/{owner}/{repo}/secret-scanning/scan-history"],
3247
+ listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"],
3248
+ listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"],
3249
+ listLocationsForAlert: [
3250
+ "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"
3251
+ ],
3252
+ listOrgPatternConfigs: [
3253
+ "GET /orgs/{org}/secret-scanning/pattern-configurations"
3254
+ ],
3255
+ updateAlert: [
3256
+ "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"
3257
+ ],
3258
+ updateOrgPatternConfigs: [
3259
+ "PATCH /orgs/{org}/secret-scanning/pattern-configurations"
3260
+ ]
3261
+ },
3262
+ securityAdvisories: {
3263
+ createFork: [
3264
+ "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks"
3265
+ ],
3266
+ createPrivateVulnerabilityReport: [
3267
+ "POST /repos/{owner}/{repo}/security-advisories/reports"
3268
+ ],
3269
+ createRepositoryAdvisory: [
3270
+ "POST /repos/{owner}/{repo}/security-advisories"
3271
+ ],
3272
+ createRepositoryAdvisoryCveRequest: [
3273
+ "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"
3274
+ ],
3275
+ getGlobalAdvisory: ["GET /advisories/{ghsa_id}"],
3276
+ getRepositoryAdvisory: [
3277
+ "GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"
3278
+ ],
3279
+ listGlobalAdvisories: ["GET /advisories"],
3280
+ listOrgRepositoryAdvisories: ["GET /orgs/{org}/security-advisories"],
3281
+ listRepositoryAdvisories: ["GET /repos/{owner}/{repo}/security-advisories"],
3282
+ updateRepositoryAdvisory: [
3283
+ "PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"
3284
+ ]
3285
+ },
3286
+ teams: {
3287
+ addOrUpdateMembershipForUserInOrg: [
3288
+ "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"
3289
+ ],
3290
+ addOrUpdateRepoPermissionsInOrg: [
3291
+ "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
3292
+ ],
3293
+ checkPermissionsForRepoInOrg: [
3294
+ "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
3295
+ ],
3296
+ create: ["POST /orgs/{org}/teams"],
3297
+ createDiscussionCommentInOrg: [
3298
+ "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"
3299
+ ],
3300
+ createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"],
3301
+ deleteDiscussionCommentInOrg: [
3302
+ "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"
3303
+ ],
3304
+ deleteDiscussionInOrg: [
3305
+ "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"
3306
+ ],
3307
+ deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"],
3308
+ getByName: ["GET /orgs/{org}/teams/{team_slug}"],
3309
+ getDiscussionCommentInOrg: [
3310
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"
3311
+ ],
3312
+ getDiscussionInOrg: [
3313
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"
3314
+ ],
3315
+ getMembershipForUserInOrg: [
3316
+ "GET /orgs/{org}/teams/{team_slug}/memberships/{username}"
3317
+ ],
3318
+ list: ["GET /orgs/{org}/teams"],
3319
+ listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"],
3320
+ listDiscussionCommentsInOrg: [
3321
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"
3322
+ ],
3323
+ listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"],
3324
+ listForAuthenticatedUser: ["GET /user/teams"],
3325
+ listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"],
3326
+ listPendingInvitationsInOrg: [
3327
+ "GET /orgs/{org}/teams/{team_slug}/invitations"
3328
+ ],
3329
+ listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"],
3330
+ removeMembershipForUserInOrg: [
3331
+ "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"
3332
+ ],
3333
+ removeRepoInOrg: [
3334
+ "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
3335
+ ],
3336
+ updateDiscussionCommentInOrg: [
3337
+ "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"
3338
+ ],
3339
+ updateDiscussionInOrg: [
3340
+ "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"
3341
+ ],
3342
+ updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"]
3343
+ },
3344
+ users: {
3345
+ addEmailForAuthenticated: [
3346
+ "POST /user/emails",
3347
+ {},
3348
+ { renamed: ["users", "addEmailForAuthenticatedUser"] }
3349
+ ],
3350
+ addEmailForAuthenticatedUser: ["POST /user/emails"],
3351
+ addSocialAccountForAuthenticatedUser: ["POST /user/social_accounts"],
3352
+ block: ["PUT /user/blocks/{username}"],
3353
+ checkBlocked: ["GET /user/blocks/{username}"],
3354
+ checkFollowingForUser: ["GET /users/{username}/following/{target_user}"],
3355
+ checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"],
3356
+ createGpgKeyForAuthenticated: [
3357
+ "POST /user/gpg_keys",
3358
+ {},
3359
+ { renamed: ["users", "createGpgKeyForAuthenticatedUser"] }
3360
+ ],
3361
+ createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"],
3362
+ createPublicSshKeyForAuthenticated: [
3363
+ "POST /user/keys",
3364
+ {},
3365
+ { renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] }
3366
+ ],
3367
+ createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"],
3368
+ createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"],
3369
+ deleteAttestationsBulk: [
3370
+ "POST /users/{username}/attestations/delete-request"
3371
+ ],
3372
+ deleteAttestationsById: [
3373
+ "DELETE /users/{username}/attestations/{attestation_id}"
3374
+ ],
3375
+ deleteAttestationsBySubjectDigest: [
3376
+ "DELETE /users/{username}/attestations/digest/{subject_digest}"
3377
+ ],
3378
+ deleteEmailForAuthenticated: [
3379
+ "DELETE /user/emails",
3380
+ {},
3381
+ { renamed: ["users", "deleteEmailForAuthenticatedUser"] }
3382
+ ],
3383
+ deleteEmailForAuthenticatedUser: ["DELETE /user/emails"],
3384
+ deleteGpgKeyForAuthenticated: [
3385
+ "DELETE /user/gpg_keys/{gpg_key_id}",
3386
+ {},
3387
+ { renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] }
3388
+ ],
3389
+ deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"],
3390
+ deletePublicSshKeyForAuthenticated: [
3391
+ "DELETE /user/keys/{key_id}",
3392
+ {},
3393
+ { renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] }
3394
+ ],
3395
+ deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"],
3396
+ deleteSocialAccountForAuthenticatedUser: ["DELETE /user/social_accounts"],
3397
+ deleteSshSigningKeyForAuthenticatedUser: [
3398
+ "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"
3399
+ ],
3400
+ follow: ["PUT /user/following/{username}"],
3401
+ getAuthenticated: ["GET /user"],
3402
+ getById: ["GET /user/{account_id}"],
3403
+ getByUsername: ["GET /users/{username}"],
3404
+ getContextForUser: ["GET /users/{username}/hovercard"],
3405
+ getGpgKeyForAuthenticated: [
3406
+ "GET /user/gpg_keys/{gpg_key_id}",
3407
+ {},
3408
+ { renamed: ["users", "getGpgKeyForAuthenticatedUser"] }
3409
+ ],
3410
+ getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"],
3411
+ getPublicSshKeyForAuthenticated: [
3412
+ "GET /user/keys/{key_id}",
3413
+ {},
3414
+ { renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] }
3415
+ ],
3416
+ getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"],
3417
+ getSshSigningKeyForAuthenticatedUser: [
3418
+ "GET /user/ssh_signing_keys/{ssh_signing_key_id}"
3419
+ ],
3420
+ list: ["GET /users"],
3421
+ listAttestations: ["GET /users/{username}/attestations/{subject_digest}"],
3422
+ listAttestationsBulk: [
3423
+ "POST /users/{username}/attestations/bulk-list{?per_page,before,after}"
3424
+ ],
3425
+ listBlockedByAuthenticated: [
3426
+ "GET /user/blocks",
3427
+ {},
3428
+ { renamed: ["users", "listBlockedByAuthenticatedUser"] }
3429
+ ],
3430
+ listBlockedByAuthenticatedUser: ["GET /user/blocks"],
3431
+ listEmailsForAuthenticated: [
3432
+ "GET /user/emails",
3433
+ {},
3434
+ { renamed: ["users", "listEmailsForAuthenticatedUser"] }
3435
+ ],
3436
+ listEmailsForAuthenticatedUser: ["GET /user/emails"],
3437
+ listFollowedByAuthenticated: [
3438
+ "GET /user/following",
3439
+ {},
3440
+ { renamed: ["users", "listFollowedByAuthenticatedUser"] }
3441
+ ],
3442
+ listFollowedByAuthenticatedUser: ["GET /user/following"],
3443
+ listFollowersForAuthenticatedUser: ["GET /user/followers"],
3444
+ listFollowersForUser: ["GET /users/{username}/followers"],
3445
+ listFollowingForUser: ["GET /users/{username}/following"],
3446
+ listGpgKeysForAuthenticated: [
3447
+ "GET /user/gpg_keys",
3448
+ {},
3449
+ { renamed: ["users", "listGpgKeysForAuthenticatedUser"] }
3450
+ ],
3451
+ listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"],
3452
+ listGpgKeysForUser: ["GET /users/{username}/gpg_keys"],
3453
+ listPublicEmailsForAuthenticated: [
3454
+ "GET /user/public_emails",
3455
+ {},
3456
+ { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] }
3457
+ ],
3458
+ listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"],
3459
+ listPublicKeysForUser: ["GET /users/{username}/keys"],
3460
+ listPublicSshKeysForAuthenticated: [
3461
+ "GET /user/keys",
3462
+ {},
3463
+ { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] }
3464
+ ],
3465
+ listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"],
3466
+ listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"],
3467
+ listSocialAccountsForUser: ["GET /users/{username}/social_accounts"],
3468
+ listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"],
3469
+ listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"],
3470
+ setPrimaryEmailVisibilityForAuthenticated: [
3471
+ "PATCH /user/email/visibility",
3472
+ {},
3473
+ { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] }
3474
+ ],
3475
+ setPrimaryEmailVisibilityForAuthenticatedUser: [
3476
+ "PATCH /user/email/visibility"
3477
+ ],
3478
+ unblock: ["DELETE /user/blocks/{username}"],
3479
+ unfollow: ["DELETE /user/following/{username}"],
3480
+ updateAuthenticated: ["PATCH /user"]
3481
+ }
3482
+ };
3483
+ var endpoints_default = Endpoints;
3484
+
3485
+ // ../node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js
3486
+ var endpointMethodsMap = /* @__PURE__ */ new Map();
3487
+ for (const [scope, endpoints] of Object.entries(endpoints_default)) {
3488
+ for (const [methodName, endpoint2] of Object.entries(endpoints)) {
3489
+ const [route, defaults, decorations] = endpoint2;
3490
+ const [method, url] = route.split(/ /);
3491
+ const endpointDefaults = Object.assign(
3492
+ {
3493
+ method,
3494
+ url
3495
+ },
3496
+ defaults
3497
+ );
3498
+ if (!endpointMethodsMap.has(scope)) {
3499
+ endpointMethodsMap.set(scope, /* @__PURE__ */ new Map());
3500
+ }
3501
+ endpointMethodsMap.get(scope).set(methodName, {
3502
+ scope,
3503
+ methodName,
3504
+ endpointDefaults,
3505
+ decorations
3506
+ });
3507
+ }
3508
+ }
3509
+ var handler = {
3510
+ has({ scope }, methodName) {
3511
+ return endpointMethodsMap.get(scope).has(methodName);
3512
+ },
3513
+ getOwnPropertyDescriptor(target, methodName) {
3514
+ return {
3515
+ value: this.get(target, methodName),
3516
+ // ensures method is in the cache
3517
+ configurable: true,
3518
+ writable: true,
3519
+ enumerable: true
3520
+ };
3521
+ },
3522
+ defineProperty(target, methodName, descriptor) {
3523
+ Object.defineProperty(target.cache, methodName, descriptor);
3524
+ return true;
3525
+ },
3526
+ deleteProperty(target, methodName) {
3527
+ delete target.cache[methodName];
3528
+ return true;
3529
+ },
3530
+ ownKeys({ scope }) {
3531
+ return [...endpointMethodsMap.get(scope).keys()];
3532
+ },
3533
+ set(target, methodName, value) {
3534
+ return target.cache[methodName] = value;
3535
+ },
3536
+ get({ octokit, scope, cache }, methodName) {
3537
+ if (cache[methodName]) {
3538
+ return cache[methodName];
3539
+ }
3540
+ const method = endpointMethodsMap.get(scope).get(methodName);
3541
+ if (!method) {
3542
+ return void 0;
3543
+ }
3544
+ const { endpointDefaults, decorations } = method;
3545
+ if (decorations) {
3546
+ cache[methodName] = decorate(
3547
+ octokit,
3548
+ scope,
3549
+ methodName,
3550
+ endpointDefaults,
3551
+ decorations
3552
+ );
3553
+ } else {
3554
+ cache[methodName] = octokit.request.defaults(endpointDefaults);
3555
+ }
3556
+ return cache[methodName];
3557
+ }
3558
+ };
3559
+ function endpointsToMethods(octokit) {
3560
+ const newMethods = {};
3561
+ for (const scope of endpointMethodsMap.keys()) {
3562
+ newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler);
3563
+ }
3564
+ return newMethods;
3565
+ }
3566
+ function decorate(octokit, scope, methodName, defaults, decorations) {
3567
+ const requestWithDefaults = octokit.request.defaults(defaults);
3568
+ function withDecorations(...args) {
3569
+ let options = requestWithDefaults.endpoint.merge(...args);
3570
+ if (decorations.mapToData) {
3571
+ options = Object.assign({}, options, {
3572
+ data: options[decorations.mapToData],
3573
+ [decorations.mapToData]: void 0
3574
+ });
3575
+ return requestWithDefaults(options);
3576
+ }
3577
+ if (decorations.renamed) {
3578
+ const [newScope, newMethodName] = decorations.renamed;
3579
+ octokit.log.warn(
3580
+ `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`
3581
+ );
3582
+ }
3583
+ if (decorations.deprecated) {
3584
+ octokit.log.warn(decorations.deprecated);
3585
+ }
3586
+ if (decorations.renamedParameters) {
3587
+ const options2 = requestWithDefaults.endpoint.merge(...args);
3588
+ for (const [name, alias] of Object.entries(
3589
+ decorations.renamedParameters
3590
+ )) {
3591
+ if (name in options2) {
3592
+ octokit.log.warn(
3593
+ `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`
3594
+ );
3595
+ if (!(alias in options2)) {
3596
+ options2[alias] = options2[name];
3597
+ }
3598
+ delete options2[name];
3599
+ }
3600
+ }
3601
+ return requestWithDefaults(options2);
3602
+ }
3603
+ return requestWithDefaults(...args);
3604
+ }
3605
+ return Object.assign(withDecorations, requestWithDefaults);
3606
+ }
3607
+
3608
+ // ../node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js
3609
+ function restEndpointMethods(octokit) {
3610
+ const api = endpointsToMethods(octokit);
3611
+ return {
3612
+ rest: api
3613
+ };
3614
+ }
3615
+ restEndpointMethods.VERSION = VERSION7;
3616
+ function legacyRestEndpointMethods(octokit) {
3617
+ const api = endpointsToMethods(octokit);
3618
+ return {
3619
+ ...api,
3620
+ rest: api
3621
+ };
3622
+ }
3623
+ legacyRestEndpointMethods.VERSION = VERSION7;
3624
+
3625
+ // ../node_modules/@octokit/rest/dist-src/version.js
3626
+ var VERSION8 = "22.0.1";
3627
+
3628
+ // ../node_modules/@octokit/rest/dist-src/index.js
3629
+ var Octokit2 = Octokit.plugin(requestLog, legacyRestEndpointMethods, paginateRest).defaults(
3630
+ {
3631
+ userAgent: `octokit-rest.js/${VERSION8}`
3632
+ }
3633
+ );
3634
+
3635
+ // ../src/connectors/npm_package.ts
3636
+ async function syncNpmPackage(sourceId, projectId, config) {
3637
+ const { packageName, includeReadme = true } = config;
3638
+ let indexed = 0;
3639
+ const res = await fetch(`https://registry.npmjs.org/${encodeURIComponent(packageName)}`);
3640
+ if (!res.ok) throw new Error(`npm registry error: ${res.status}`);
3641
+ const pkg = await res.json();
3642
+ const latest = pkg["dist-tags"]?.latest;
3643
+ const latestVersion = latest ? pkg.versions?.[latest] : null;
3644
+ const overview = [
3645
+ `# ${packageName}`,
3646
+ pkg.description ? `
3647
+ ${pkg.description}` : "",
3648
+ `
3649
+ Latest version: ${latest || "unknown"}`,
3650
+ pkg.license ? `License: ${pkg.license}` : "",
3651
+ pkg.homepage ? `Homepage: ${pkg.homepage}` : "",
3652
+ pkg.repository?.url ? `Repository: ${pkg.repository.url}` : "",
3653
+ latestVersion?.keywords?.length ? `
3654
+ Keywords: ${latestVersion.keywords.join(", ")}` : ""
3655
+ ].filter(Boolean).join("\n");
3656
+ if (latestVersion?.dependencies) {
3657
+ const deps = Object.entries(latestVersion.dependencies).map(([name, ver]) => `- ${name}: ${ver}`).join("\n");
3658
+ await ingestDocument({
3659
+ sourceId,
3660
+ projectId,
3661
+ externalId: `npm-${packageName}-deps`,
3662
+ title: `${packageName} \u2014 Dependencies`,
3663
+ content: `# ${packageName} Dependencies
3664
+
3665
+ ${deps}`,
3666
+ metadata: { source: "npm", packageName, section: "dependencies" }
3667
+ });
3668
+ indexed++;
3669
+ }
3670
+ if (latestVersion?.main || latestVersion?.types || latestVersion?.exports) {
3671
+ const entryPoints = [
3672
+ latestVersion.main ? `Main: ${latestVersion.main}` : "",
3673
+ latestVersion.types ? `Types: ${latestVersion.types}` : "",
3674
+ latestVersion.module ? `Module: ${latestVersion.module}` : ""
3675
+ ].filter(Boolean).join("\n");
3676
+ await ingestDocument({
3677
+ sourceId,
3678
+ projectId,
3679
+ externalId: `npm-${packageName}-overview`,
3680
+ title: `${packageName} \u2014 Overview`,
3681
+ content: `${overview}
3682
+
3683
+ ## Entry Points
3684
+ ${entryPoints}`,
3685
+ metadata: { source: "npm", packageName, version: latest, section: "overview" }
3686
+ });
3687
+ indexed++;
3688
+ }
3689
+ if (includeReadme && pkg.readme) {
3690
+ await ingestDocument({
3691
+ sourceId,
3692
+ projectId,
3693
+ externalId: `npm-${packageName}-readme`,
3694
+ title: `${packageName} \u2014 README`,
3695
+ content: pkg.readme,
3696
+ metadata: { source: "npm", packageName, section: "readme" }
3697
+ });
3698
+ indexed++;
3699
+ }
3700
+ return { documentsIndexed: indexed };
3701
+ }
3702
+
3703
+ // ../src/connectors/pypi_package.ts
3704
+ async function syncPyPIPackage(sourceId, projectId, config) {
3705
+ const { packageName, includeDescription = true } = config;
3706
+ let indexed = 0;
3707
+ const res = await fetch(`https://pypi.org/pypi/${encodeURIComponent(packageName)}/json`);
3708
+ if (!res.ok) throw new Error(`PyPI API error: ${res.status}`);
3709
+ const data = await res.json();
3710
+ const info = data.info || {};
3711
+ const overview = [
3712
+ `# ${info.name || packageName}`,
3713
+ info.summary ? `
3714
+ ${info.summary}` : "",
3715
+ `
3716
+ Version: ${info.version || "unknown"}`,
3717
+ info.license ? `License: ${info.license}` : "",
3718
+ info.author ? `Author: ${info.author}` : "",
3719
+ info.home_page ? `Homepage: ${info.home_page}` : "",
3720
+ info.project_urls?.Documentation ? `Docs: ${info.project_urls.Documentation}` : "",
3721
+ info.project_urls?.Repository || info.project_urls?.Source ? `Repository: ${info.project_urls.Repository || info.project_urls.Source}` : "",
3722
+ info.requires_python ? `
3723
+ Python: ${info.requires_python}` : "",
3724
+ info.keywords ? `Keywords: ${info.keywords}` : ""
3725
+ ].filter(Boolean).join("\n");
3726
+ await ingestDocument({
3727
+ sourceId,
3728
+ projectId,
3729
+ externalId: `pypi-${packageName}-overview`,
3730
+ title: `${packageName} \u2014 Overview`,
3731
+ content: overview,
3732
+ metadata: { source: "pypi", packageName, version: info.version, section: "overview" }
3733
+ });
3734
+ indexed++;
3735
+ if (info.requires_dist?.length) {
3736
+ const deps = info.requires_dist.filter((d) => !d.includes("extra ==")).map((d) => `- ${d}`).join("\n");
3737
+ if (deps) {
3738
+ await ingestDocument({
3739
+ sourceId,
3740
+ projectId,
3741
+ externalId: `pypi-${packageName}-deps`,
3742
+ title: `${packageName} \u2014 Dependencies`,
3743
+ content: `# ${packageName} Dependencies
3744
+
3745
+ ${deps}`,
3746
+ metadata: { source: "pypi", packageName, section: "dependencies" }
3747
+ });
3748
+ indexed++;
3749
+ }
3750
+ }
3751
+ if (includeDescription && info.description) {
3752
+ await ingestDocument({
3753
+ sourceId,
3754
+ projectId,
3755
+ externalId: `pypi-${packageName}-description`,
3756
+ title: `${packageName} \u2014 Description`,
3757
+ content: info.description,
3758
+ metadata: {
3759
+ source: "pypi",
3760
+ packageName,
3761
+ section: "description",
3762
+ contentType: info.description_content_type || "text/plain"
3763
+ }
3764
+ });
3765
+ indexed++;
3766
+ }
3767
+ return { documentsIndexed: indexed };
3768
+ }
3769
+
3770
+ // ../src/engine/autosubscribe.ts
3771
+ async function parsePackageJson(content) {
3772
+ try {
3773
+ const pkg = JSON.parse(content);
3774
+ const deps = [];
3775
+ if (pkg.dependencies) {
3776
+ for (const [name, version] of Object.entries(pkg.dependencies)) {
3777
+ deps.push({
3778
+ name,
3779
+ version: String(version),
3780
+ ecosystem: "npm"
3781
+ });
3782
+ }
3783
+ }
3784
+ if (pkg.devDependencies) {
3785
+ for (const [name, version] of Object.entries(pkg.devDependencies)) {
3786
+ deps.push({
3787
+ name,
3788
+ version: String(version),
3789
+ ecosystem: "npm"
3790
+ });
3791
+ }
3792
+ }
3793
+ return deps;
3794
+ } catch (error) {
3795
+ console.error("Failed to parse package.json:", error);
3796
+ return [];
3797
+ }
3798
+ }
3799
+ function parseRequirementsTxt(content) {
3800
+ const deps = [];
3801
+ const lines = content.split("\n");
3802
+ for (const line of lines) {
3803
+ const trimmed = line.trim();
3804
+ if (!trimmed || trimmed.startsWith("#")) continue;
3805
+ const match = trimmed.match(/^([a-zA-Z0-9_-]+)([><=!~]+)?(.+)?$/);
3806
+ if (match) {
3807
+ deps.push({
3808
+ name: match[1],
3809
+ version: match[3] || "latest",
3810
+ ecosystem: "pypi"
3811
+ });
3812
+ }
3813
+ }
3814
+ return deps;
3815
+ }
3816
+ function parseCargoToml(content) {
3817
+ const deps = [];
3818
+ const depsMatch = content.match(/\[dependencies\]([\s\S]*?)(\[|$)/);
3819
+ if (!depsMatch) return deps;
3820
+ const depsSection = depsMatch[1];
3821
+ const lines = depsSection.split("\n");
3822
+ for (const line of lines) {
3823
+ const match = line.match(/^([a-zA-Z0-9_-]+)\s*=\s*"([^"]+)"/);
3824
+ if (match) {
3825
+ deps.push({
3826
+ name: match[1],
3827
+ version: match[2],
3828
+ ecosystem: "cargo"
3829
+ });
3830
+ }
3831
+ }
3832
+ return deps;
3833
+ }
3834
+ function parseDependencyFile(filename, content) {
3835
+ if (filename === "package.json") {
3836
+ return parsePackageJson(content);
3837
+ } else if (filename === "requirements.txt" || filename.endsWith(".txt")) {
3838
+ return parseRequirementsTxt(content);
3839
+ } else if (filename === "Cargo.toml") {
3840
+ return parseCargoToml(content);
3841
+ }
3842
+ return [];
3843
+ }
3844
+ async function fetchDependencyFile(params) {
3845
+ const { owner, repo, branch = "main", githubToken } = params;
3846
+ const octokit = new Octokit2({
3847
+ auth: githubToken || process.env.GITHUB_TOKEN
3848
+ });
3849
+ const files = [
3850
+ "package.json",
3851
+ "requirements.txt",
3852
+ "Cargo.toml",
3853
+ "pom.xml",
3854
+ // Maven
3855
+ "build.gradle"
3856
+ // Gradle
3857
+ ];
3858
+ for (const filename of files) {
3859
+ try {
3860
+ const { data } = await octokit.repos.getContent({
3861
+ owner,
3862
+ repo,
3863
+ path: filename,
3864
+ ref: branch
3865
+ });
3866
+ if ("content" in data && data.content) {
3867
+ const content = Buffer.from(data.content, "base64").toString("utf-8");
3868
+ return { filename, content };
3869
+ }
3870
+ } catch (error) {
3871
+ continue;
3872
+ }
3873
+ }
3874
+ return null;
3875
+ }
3876
+ async function resolveDocsUrl(dep) {
3877
+ switch (dep.ecosystem) {
3878
+ case "npm":
3879
+ try {
3880
+ const response = await fetch(`https://registry.npmjs.org/${dep.name}`);
3881
+ const data = await response.json();
3882
+ if (data.homepage) return data.homepage;
3883
+ if (data.repository?.url) {
3884
+ const url = data.repository.url.replace("git+", "").replace(".git", "").replace("git://", "https://");
3885
+ return url;
3886
+ }
3887
+ return `https://www.npmjs.com/package/${dep.name}`;
3888
+ } catch (error) {
3889
+ return `https://www.npmjs.com/package/${dep.name}`;
3890
+ }
3891
+ case "pypi":
3892
+ try {
3893
+ const response = await fetch(`https://pypi.org/pypi/${dep.name}/json`);
3894
+ const data = await response.json();
3895
+ if (data.info.home_page) return data.info.home_page;
3896
+ if (data.info.project_urls?.Documentation) {
3897
+ return data.info.project_urls.Documentation;
3898
+ }
3899
+ return `https://pypi.org/project/${dep.name}/`;
3900
+ } catch (error) {
3901
+ return `https://pypi.org/project/${dep.name}/`;
3902
+ }
3903
+ case "cargo":
3904
+ return `https://docs.rs/${dep.name}`;
3905
+ default:
3906
+ return null;
3907
+ }
3908
+ }
3909
+ async function autosubscribe(params) {
3910
+ const { projectId, orgId, source, indexLimit = 50 } = params;
3911
+ const result = {
3912
+ discovered: 0,
3913
+ indexed: 0,
3914
+ skipped: 0,
3915
+ errors: []
3916
+ };
3917
+ try {
3918
+ let depFile = null;
3919
+ if (source.type === "github" && source.owner && source.repo) {
3920
+ depFile = await fetchDependencyFile({
3921
+ owner: source.owner,
3922
+ repo: source.repo,
3923
+ branch: source.branch
3924
+ });
3925
+ } else if (source.type === "local" && source.filePath) {
3926
+ const fs = await import("fs");
3927
+ const content = fs.readFileSync(source.filePath, "utf-8");
3928
+ const filename = source.filePath.split("/").pop() || "package.json";
3929
+ depFile = { filename, content };
3930
+ }
3931
+ if (!depFile) {
3932
+ result.errors.push("No dependency file found");
3933
+ return result;
3934
+ }
3935
+ const dependencies = parseDependencyFile(depFile.filename, depFile.content);
3936
+ result.discovered = dependencies.length;
3937
+ console.log(`\u{1F4E6} Discovered ${dependencies.length} dependencies`);
3938
+ const toIndex = dependencies.slice(0, indexLimit);
3939
+ for (const dep of toIndex) {
3940
+ try {
3941
+ const existing = await db.package.findFirst({
3942
+ where: {
3943
+ orgId,
3944
+ ecosystem: dep.ecosystem,
3945
+ name: dep.name
3946
+ }
3947
+ });
3948
+ if (existing) {
3949
+ console.log(`\u23ED\uFE0F Skipping ${dep.name} (already indexed)`);
3950
+ result.skipped++;
3951
+ continue;
3952
+ }
3953
+ const docsUrl = await resolveDocsUrl(dep);
3954
+ if (!docsUrl) {
3955
+ result.errors.push(`No docs URL for ${dep.name}`);
3956
+ continue;
3957
+ }
3958
+ console.log(`\u{1F4DA} Indexing ${dep.name} from ${docsUrl}`);
3959
+ await db.package.create({
3960
+ data: {
3961
+ orgId,
3962
+ name: dep.name,
3963
+ ecosystem: dep.ecosystem,
3964
+ version: dep.version,
3965
+ registryUrl: docsUrl,
3966
+ autoSync: true
3967
+ }
3968
+ });
3969
+ if (dep.ecosystem === "npm") {
3970
+ await syncNpmPackage({
3971
+ packageName: dep.name,
3972
+ version: dep.version,
3973
+ projectId,
3974
+ orgId
3975
+ });
3976
+ } else if (dep.ecosystem === "pypi") {
3977
+ await syncPyPIPackage({
3978
+ packageName: dep.name,
3979
+ version: dep.version,
3980
+ projectId,
3981
+ orgId
3982
+ });
3983
+ }
3984
+ result.indexed++;
3985
+ console.log(`\u2705 Indexed ${dep.name}`);
3986
+ await new Promise((resolve) => setTimeout(resolve, 1e3));
3987
+ } catch (error) {
3988
+ result.errors.push(`Failed to index ${dep.name}: ${error}`);
3989
+ console.error(`\u274C Failed to index ${dep.name}:`, error);
3990
+ }
3991
+ }
3992
+ if (dependencies.length > indexLimit) {
3993
+ result.errors.push(
3994
+ `Only indexed first ${indexLimit} of ${dependencies.length} packages (limit reached)`
3995
+ );
3996
+ }
3997
+ return result;
3998
+ } catch (error) {
3999
+ result.errors.push(`Autosubscribe failed: ${error}`);
4000
+ return result;
4001
+ }
4002
+ }
4003
+ async function autoSyncPackages(orgId) {
4004
+ const packages = await db.package.findMany({
4005
+ where: {
4006
+ orgId,
4007
+ autoSync: true
4008
+ }
4009
+ });
4010
+ console.log(`\u{1F504} Auto-syncing ${packages.length} packages...`);
4011
+ for (const pkg of packages) {
4012
+ try {
4013
+ const shouldUpdate = await checkPackageUpdated(pkg);
4014
+ if (shouldUpdate) {
4015
+ console.log(`\u{1F4E6} Re-indexing ${pkg.name}...`);
4016
+ if (pkg.ecosystem === "npm") {
4017
+ await syncNpmPackage({
4018
+ packageName: pkg.name,
4019
+ version: pkg.version,
4020
+ projectId: "",
4021
+ // Will need project context
4022
+ orgId
4023
+ });
4024
+ } else if (pkg.ecosystem === "pypi") {
4025
+ await syncPyPIPackage({
4026
+ packageName: pkg.name,
4027
+ version: pkg.version,
4028
+ projectId: "",
4029
+ orgId
4030
+ });
4031
+ }
4032
+ await db.package.update({
4033
+ where: { id: pkg.id },
4034
+ data: { lastIndexedAt: /* @__PURE__ */ new Date() }
4035
+ });
4036
+ }
4037
+ } catch (error) {
4038
+ console.error(`Failed to sync ${pkg.name}:`, error);
4039
+ }
4040
+ }
4041
+ console.log("\u2705 Auto-sync complete");
4042
+ }
4043
+ async function checkPackageUpdated(pkg) {
4044
+ if (!pkg.lastIndexedAt) return true;
4045
+ const daysSinceIndex = Math.floor(
4046
+ (Date.now() - pkg.lastIndexedAt.getTime()) / (1e3 * 60 * 60 * 24)
4047
+ );
4048
+ return daysSinceIndex > 7;
4049
+ }
4050
+ export {
4051
+ autoSyncPackages,
4052
+ autosubscribe,
4053
+ fetchDependencyFile,
4054
+ parseCargoToml,
4055
+ parseDependencyFile,
4056
+ parsePackageJson,
4057
+ parseRequirementsTxt,
4058
+ resolveDocsUrl
4059
+ };
4060
+ /*! Bundled license information:
4061
+
4062
+ @octokit/request-error/dist-src/index.js:
4063
+ (* v8 ignore else -- @preserve -- Bug with vitest coverage where it sees an else branch that doesn't exist *)
4064
+
4065
+ @octokit/request/dist-bundle/index.js:
4066
+ (* v8 ignore next -- @preserve *)
4067
+ (* v8 ignore else -- @preserve *)
4068
+ */