diff --git a/CHANGELOG.md b/CHANGELOG.md index 80d173763104..67d797bfec26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,12 @@ Get started at [Achieving your company's engineering goals with GitHub Copilot]( **27 June 2025** +We've published a new guide about how to combine use of GitHub Copilot's agent mode with Model Context Protocol (MCP) servers to complete complex tasks through agentic "loops" - illustrated through an accessibility compliance example. The guide also discusses best practices and benefits around using these two features together. See [Enhancing Copilot agent mode with MCP](https://docs.github.com/copilot/tutorials/enhancing-copilot-agent-mode-with-mcp). + +
syntax')
diff --git a/src/fixtures/tests/homepage.js b/src/fixtures/tests/homepage.ts
similarity index 69%
rename from src/fixtures/tests/homepage.js
rename to src/fixtures/tests/homepage.ts
index 5e320014e131..0b259e63de23 100644
--- a/src/fixtures/tests/homepage.js
+++ b/src/fixtures/tests/homepage.ts
@@ -1,10 +1,11 @@
import { describe, expect, test } from 'vitest'
+import cheerio from 'cheerio'
-import { get, getDOM } from '#src/tests/helpers/e2etest.js'
+import { get, getDOM } from '@/tests/helpers/e2etest'
describe('home page', () => {
test('landing area', async () => {
- const $ = await getDOM('/')
+ const $: cheerio.Root = await getDOM('/')
const container = $('#landing')
expect(container.length).toBe(1)
expect(container.find('h1').text()).toBe('GitHub Docs')
@@ -12,14 +13,14 @@ describe('home page', () => {
})
test('product groups can use Liquid', async () => {
- const $ = await getDOM('/')
+ const $: cheerio.Root = await getDOM('/')
const main = $('[data-testid="product"]')
const links = main.find('a[href*="/"]')
- const hrefs = links.map((i, link) => $(link)).get()
+ const hrefs = links.map((i: number, link: any) => $(link)).get()
let externalLinks = 0
for (const href of hrefs) {
- if (!href.attr('href').startsWith('https://')) {
- const res = await get(href.attr('href'))
+ if (!href.attr('href')?.startsWith('https://')) {
+ const res = await get(href.attr('href')!)
expect(res.statusCode).toBe(200) // Not needing to redirect
expect(href.text().includes('{%')).toBe(false)
} else {
diff --git a/src/fixtures/tests/html-comments.js b/src/fixtures/tests/html-comments.ts
similarity index 77%
rename from src/fixtures/tests/html-comments.js
rename to src/fixtures/tests/html-comments.ts
index 6abc9484cb8d..62d8bcf42088 100644
--- a/src/fixtures/tests/html-comments.js
+++ b/src/fixtures/tests/html-comments.ts
@@ -1,10 +1,11 @@
import { describe, expect, test } from 'vitest'
+import cheerio from 'cheerio'
-import { getDOMCached as getDOM } from '#src/tests/helpers/e2etest.js'
+import { getDOMCached as getDOM } from '@/tests/helpers/e2etest'
describe('html-comments', () => {
test('regular comments are removed', async () => {
- const $ = await getDOM('/get-started/markdown/html-comments')
+ const $: cheerio.Root = await getDOM('/get-started/markdown/html-comments')
const contents = $('#article-contents')
const html = contents.html()
expect(html).not.toContain('This comment should get deleted since it mentions gooblygook')
diff --git a/src/fixtures/tests/images.js b/src/fixtures/tests/images.ts
similarity index 79%
rename from src/fixtures/tests/images.js
rename to src/fixtures/tests/images.ts
index fe5d1b90385d..dda711defbec 100644
--- a/src/fixtures/tests/images.js
+++ b/src/fixtures/tests/images.ts
@@ -1,12 +1,13 @@
import { describe, expect, test } from 'vitest'
import sharp from 'sharp'
+import cheerio from 'cheerio'
-import { get, head, getDOM } from '#src/tests/helpers/e2etest.js'
-import { MAX_WIDTH } from '#src/content-render/unified/rewrite-asset-img-tags.js'
+import { get, head, getDOM } from '@/tests/helpers/e2etest'
+import { MAX_WIDTH } from '@/content-render/unified/rewrite-asset-img-tags'
describe('render Markdown image tags', () => {
test('page with a single image', async () => {
- const $ = await getDOM('/get-started/images/single-image')
+ const $: cheerio.Root = await getDOM('/get-started/images/single-image')
const pictures = $('#article-contents picture')
expect(pictures.length).toBe(1)
@@ -25,7 +26,7 @@ describe('render Markdown image tags', () => {
const alt = imgs.attr('alt')
expect(alt).toBe('This is the alt text')
- const res = await get(srcset.split(' ')[0], { responseType: 'buffer' })
+ const res = await get(srcset!.split(' ')[0], { responseType: 'buffer' })
expect(res.statusCode).toBe(200)
expect(res.headers['content-type']).toBe('image/webp')
@@ -34,7 +35,7 @@ describe('render Markdown image tags', () => {
// When transformed as a source in a `HubGit
') expect(html).toMatch('Text before. HubGit Text after.
') @@ -77,7 +78,9 @@ describe('post', () => { // Test what happens to `Cram{% ifversion fpt %}FPT{% endif %}ped.` // when it's not free-pro-team. { - const $ = await getDOM('/enterprise-server@latest/get-started/liquid/whitespace') + const $: cheerio.Root = await getDOM( + '/enterprise-server@latest/get-started/liquid/whitespace', + ) const html = $('#article-contents').html() // Assures that there's not whitespace left when the `{% ifversion %}` // yields an empty string. @@ -88,7 +91,7 @@ describe('post', () => { describe('rowheaders', () => { test('rowheaders', async () => { - const $ = await getDOM('/get-started/liquid/table-row-headers') + const $: cheerio.Root = await getDOM('/get-started/liquid/table-row-headers') const tables = $('#article-contents table') expect(tables.length).toBe(2) @@ -106,7 +109,7 @@ describe('rowheaders', () => { // // That's because a Liquid + Markdown solution rewrites the // *first* `tbody td` to become a `th` instead. - const firstTable = tables.filter((i) => i === 0) + const firstTable = tables.filter((i: number) => i === 0) expect($('tbody tr th', firstTable).length).toBe(2) expect($('tbody tr td', firstTable).length).toBe(2 * 3) @@ -120,7 +123,7 @@ describe('rowheaders', () => { // td // // (and there are 3 of theseOn this line is Markdown too.
syntax')
@@ -14,7 +15,7 @@ describe('markdown rendering', () => {
describe('alerts', () => {
test('basic rendering', async () => {
- const $ = await getDOM('/get-started/markdown/alerts')
+ const $: cheerio.Root = await getDOM('/get-started/markdown/alerts')
const alerts = $('#article-contents .ghd-alert')
// See src/fixtures/fixtures/content/get-started/markdown/alerts.md
// to be this confident in the assertions.
@@ -22,13 +23,13 @@ describe('alerts', () => {
const svgs = $('svg', alerts)
expect(svgs.length).toBe(5)
const titles = $('.ghd-alert-title', alerts)
- .map((_, el) => $(el).text())
+ .map((_: number, el: any) => $(el).text())
.get()
expect(titles).toEqual(['Tip', 'Note', 'Important', 'Warning', 'Caution'])
const bodies = $('p:nth-child(2)', alerts)
- .map((_, el) => $(el).text())
+ .map((_: number, el: any) => $(el).text())
.get()
- .map((s) => s.trim())
+ .map((s: string) => s.trim())
expect(bodies).toEqual([
"Here's a free tip",
'A note.',
diff --git a/src/fixtures/tests/minitoc.js b/src/fixtures/tests/minitoc.ts
similarity index 68%
rename from src/fixtures/tests/minitoc.js
rename to src/fixtures/tests/minitoc.ts
index cb616569beba..1fbeaf279f7f 100644
--- a/src/fixtures/tests/minitoc.js
+++ b/src/fixtures/tests/minitoc.ts
@@ -1,37 +1,38 @@
import { describe, expect, test } from 'vitest'
+import cheerio from 'cheerio'
-import { getDOM } from '#src/tests/helpers/e2etest.js'
+import { getDOM } from '@/tests/helpers/e2etest'
describe('minitoc', () => {
// TODO disable the mini TOC tests when we replace it with sticky TOC header
test('renders mini TOC in articles with more than one heading', async () => {
- const $ = await getDOM('/en/get-started/minitocs/multiple-headings')
+ const $: cheerio.Root = await getDOM('/en/get-started/minitocs/multiple-headings')
expect($('h2#in-this-article').length).toBe(1)
expect($('h2#in-this-article + nav ul li').length).toBeGreaterThan(1)
})
test('does not render mini TOC in articles with only one heading', async () => {
- const $ = await getDOM('/en/get-started/minitocs/one-heading')
+ const $: cheerio.Root = await getDOM('/en/get-started/minitocs/one-heading')
expect($('h2#in-this-article').length).toBe(0)
})
test('does not render mini TOC in articles with no headings', async () => {
- const $ = await getDOM('/en/get-started/minitocs/no-heading')
+ const $: cheerio.Root = await getDOM('/en/get-started/minitocs/no-heading')
expect($('h2#in-this-article').length).toBe(0)
})
test('does not render mini TOC in non-articles', async () => {
- const $ = await getDOM('/en/get-started')
+ const $: cheerio.Root = await getDOM('/en/get-started')
expect($('h2#in-this-article').length).toBe(0)
})
test('renders mini TOC with correct links when headings contain markup', async () => {
- const $ = await getDOM('/en/get-started/minitocs/markup-heading')
+ const $: cheerio.Root = await getDOM('/en/get-started/minitocs/markup-heading')
expect($('h2#in-this-article + nav ul li a[href="#on"]').length).toBe(1)
})
test("max heading doesn't exceed h2", async () => {
- const $ = await getDOM('/en/get-started/minitocs/multiple-headings')
+ const $: cheerio.Root = await getDOM('/en/get-started/minitocs/multiple-headings')
expect($('h2#in-this-article').length).toBe(1)
expect($('h2#in-this-article + nav ul').length).toBeGreaterThan(0) // non-indented items
expect($('h2#in-this-article + nav ul div ul div').length).toBe(0) // indented items
diff --git a/src/fixtures/tests/page-titles.js b/src/fixtures/tests/page-titles.ts
similarity index 55%
rename from src/fixtures/tests/page-titles.js
rename to src/fixtures/tests/page-titles.ts
index 6428e2bfed4f..2bfe53bf8cc5 100644
--- a/src/fixtures/tests/page-titles.js
+++ b/src/fixtures/tests/page-titles.ts
@@ -1,33 +1,36 @@
import { describe, expect, test } from 'vitest'
+import cheerio from 'cheerio'
-import enterpriseServerReleases from '#src/versions/lib/enterprise-server-releases.js'
-import { getDOM } from '#src/tests/helpers/e2etest.js'
+import enterpriseServerReleases from '@/versions/lib/enterprise-server-releases'
+import { getDOM } from '@/tests/helpers/e2etest'
describe('page titles', () => {
test('homepage', async () => {
- const $ = await getDOM('/en')
+ const $: cheerio.Root = await getDOM('/en')
expect($('title').text()).toBe('GitHub Docs')
})
test('fpt article', async () => {
- const $ = await getDOM('/get-started/start-your-journey/hello-world')
+ const $: cheerio.Root = await getDOM('/get-started/start-your-journey/hello-world')
expect($('title').text()).toBe('Hello World - GitHub Docs')
})
test('ghes article', async () => {
- const $ = await getDOM(`/enterprise-server@latest/get-started/start-your-journey/hello-world`)
+ const $: cheerio.Root = await getDOM(
+ `/enterprise-server@latest/get-started/start-your-journey/hello-world`,
+ )
expect($('title').text()).toBe(
`Hello World - GitHub Enterprise Server ${enterpriseServerReleases.latestStable} Docs`,
)
})
test('fpt subcategory page', async () => {
- const $ = await getDOM('/en/get-started/start-your-journey')
+ const $: cheerio.Root = await getDOM('/en/get-started/start-your-journey')
expect($('title').text()).toBe('Start your journey - GitHub Docs')
})
test('fpt category page', async () => {
- const $ = await getDOM('/actions/category')
+ const $: cheerio.Root = await getDOM('/actions/category')
expect($('title').text()).toBe('Category page of GitHub Actions - GitHub Docs')
})
})
diff --git a/src/fixtures/tests/permissions-callout.js b/src/fixtures/tests/permissions-callout.ts
similarity index 75%
rename from src/fixtures/tests/permissions-callout.js
rename to src/fixtures/tests/permissions-callout.ts
index d9e373908d54..6c194d9a28ae 100644
--- a/src/fixtures/tests/permissions-callout.js
+++ b/src/fixtures/tests/permissions-callout.ts
@@ -1,10 +1,11 @@
import { describe, expect, test } from 'vitest'
+import cheerio from 'cheerio'
-import { getDOM } from '#src/tests/helpers/e2etest.js'
+import { getDOM } from '@/tests/helpers/e2etest'
describe('permission statements', () => {
test('article page product statement', async () => {
- const $ = await getDOM('/get-started/foo/page-with-callout')
+ const $: cheerio.Root = await getDOM('/get-started/foo/page-with-callout')
const callout = $('[data-testid=product-statement] div')
expect(callout.html()).toBe('Callout for HubGit Pages
') }) @@ -15,19 +16,21 @@ describe('permission statements', () => { // an empty string. // This test tests that alert is not rendered if its output // "exits" but is empty. - const $ = await getDOM('/enterprise-server@latest/get-started/foo/page-with-callout') + const $: cheerio.Root = await getDOM( + '/enterprise-server@latest/get-started/foo/page-with-callout', + ) const callout = $('[data-testid=product-statement]') expect(callout.length).toBe(0) }) test('toc landing page', async () => { - const $ = await getDOM('/actions/category') + const $: cheerio.Root = await getDOM('/actions/category') const callout = $('[data-testid=product-statement] div') expect(callout.html()).toBe('This is the callout text
') }) test('page with permission frontmatter', async () => { - const $ = await getDOM('/get-started/markdown/permissions') + const $: cheerio.Root = await getDOM('/get-started/markdown/permissions') const html = $('[data-testid=permissions-statement] div').html() // Markdown expect(html).toMatch('admin') @@ -36,7 +39,9 @@ describe('permission statements', () => { }) test('page with permission frontmatter and product statement', async () => { - const $ = await getDOM('/get-started/foo/page-with-permissions-and-product-callout') + const $: cheerio.Root = await getDOM( + '/get-started/foo/page-with-permissions-and-product-callout', + ) const html = $('[data-testid=permissions-callout] div').html() // part of the UI expect(html).toMatch('Who can use this feature') diff --git a/src/fixtures/tests/sidebar.js b/src/fixtures/tests/sidebar.ts similarity index 75% rename from src/fixtures/tests/sidebar.js rename to src/fixtures/tests/sidebar.ts index a26e053b5bf0..727898f9db3e 100644 --- a/src/fixtures/tests/sidebar.js +++ b/src/fixtures/tests/sidebar.ts @@ -1,10 +1,11 @@ import { describe, expect, test } from 'vitest' +import cheerio from 'cheerio' -import { getDOMCached as getDOM } from '#src/tests/helpers/e2etest.js' +import { getDOMCached as getDOM } from '@/tests/helpers/e2etest' describe('sidebar', () => { test('top level product mentioned at top of sidebar', async () => { - const $ = await getDOM('/get-started') + const $: cheerio.Root = await getDOM('/get-started') // Desktop const sidebarProduct = $('[data-testid="sidebar-product-xl"]') expect(sidebarProduct.text()).toBe('Get started') @@ -15,12 +16,12 @@ describe('sidebar', () => { }) test('REST pages get the REST sidebar', async () => { - const $ = await getDOM('/rest') + const $: cheerio.Root = await getDOM('/rest') expect($('[data-testid=rest-sidebar-reference]').length).toBe(1) }) test('leaf-node article marked as aria-current=page', async () => { - const $ = await getDOM('/get-started/start-your-journey/hello-world') + const $: cheerio.Root = await getDOM('/get-started/start-your-journey/hello-world') expect( $( '[data-testid=sidebar] [data-testid=product-sidebar] a[aria-current="page"] div span', @@ -29,7 +30,7 @@ describe('sidebar', () => { }) test('sidebar should always use the shortTitle', async () => { - const $ = await getDOM('/get-started/foo/bar') + const $: cheerio.Root = await getDOM('/get-started/foo/bar') // The page /get-started/foo/bar has a short title that is different // from its regular title. expect( @@ -40,7 +41,7 @@ describe('sidebar', () => { }) test('short titles with Liquid and HTML characters', async () => { - const $ = await getDOM('/get-started/foo/html-short-title') + const $: cheerio.Root = await getDOM('/get-started/foo/html-short-title') const link = $( '[data-testid=sidebar] [data-testid=product-sidebar] a[href*="/get-started/foo/html-short-title"]', ) @@ -50,26 +51,26 @@ describe('sidebar', () => { test('Liquid is rendered in short title used at top of sidebar', async () => { // Free, pro, team { - const $ = await getDOM('/pages') + const $: cheerio.Root = await getDOM('/pages') const link = $('#allproducts-menu a') expect(link.text()).toBe('Pages (HubGit)') } // Enterprise Server { - const $ = await getDOM('/enterprise-server@latest/pages') + const $: cheerio.Root = await getDOM('/enterprise-server@latest/pages') const link = $('#allproducts-menu a') expect(link.text()).toBe('Pages (HubGit Enterprise Server)') } // Enterprise Cloud { - const $ = await getDOM('/enterprise-cloud@latest/pages') + const $: cheerio.Root = await getDOM('/enterprise-cloud@latest/pages') const link = $('#allproducts-menu a') expect(link.text()).toBe('Pages (HubGit Enterprise Cloud)') } }) test('no docset link for early-access', async () => { - const $ = await getDOM('/early-access/secrets/deeper/mariana-trench') + const $: cheerio.Root = await getDOM('/early-access/secrets/deeper/mariana-trench') // Deskop expect($('[data-testid="sidebar-product-xl"]').length).toBe(0) // Mobile diff --git a/src/fixtures/tests/translations.js b/src/fixtures/tests/translations.ts similarity index 62% rename from src/fixtures/tests/translations.js rename to src/fixtures/tests/translations.ts index a32b50954201..2fc631089f59 100644 --- a/src/fixtures/tests/translations.js +++ b/src/fixtures/tests/translations.ts @@ -1,7 +1,8 @@ import { describe, expect, test } from 'vitest' +import cheerio from 'cheerio' -import { TRANSLATIONS_FIXTURE_ROOT } from '#src/frame/lib/constants.js' -import { getDOM, head } from '#src/tests/helpers/e2etest.js' +import { TRANSLATIONS_FIXTURE_ROOT } from '@/frame/lib/constants' +import { getDOM, head } from '@/tests/helpers/e2etest' if (!TRANSLATIONS_FIXTURE_ROOT) { let msg = 'You have to set TRANSLATIONS_FIXTURE_ROOT to run this test.' @@ -11,40 +12,51 @@ if (!TRANSLATIONS_FIXTURE_ROOT) { describe('translations', () => { test('home page', async () => { - const $ = await getDOM('/ja') + const $: cheerio.Root = await getDOM('/ja') const h1 = $('h1').text() // You gotta know your src/fixtures/fixtures/translations/ja-jp/data/ui.yml expect(h1).toBe('日本 GitHub Docs') const links = $('[data-testid=product] a[href]') const hrefs = links - .filter((i, link) => $(link).attr('href').startsWith('/')) - .map((i, link) => $(link)) + .filter((i: number, link: any) => { + const href = $(link).attr('href') + return href !== undefined && href.startsWith('/') + }) + .map((i: number, link: any) => $(link)) .get() - const linkTexts = Object.fromEntries(hrefs.map(($link) => [$link.attr('href'), $link.text()])) + const linkTexts = Object.fromEntries( + hrefs.map(($link: any) => [$link.attr('href'), $link.text()]), + ) expect(linkTexts['/ja/get-started']).toBe('はじめに') }) test('hello world', async () => { - const $ = await getDOM('/ja/get-started/start-your-journey/hello-world') + const $: cheerio.Root = await getDOM('/ja/get-started/start-your-journey/hello-world') const h1 = $('h1').text() expect(h1).toBe('こんにちは World') }) test('internal links get prefixed with /ja', async () => { - const $ = await getDOM('/ja/get-started/start-your-journey/link-rewriting') + const $: cheerio.Root = await getDOM('/ja/get-started/start-your-journey/link-rewriting') const links = $('#article-contents a[href]') - const jaLinks = links.filter((i, element) => $(element).attr('href').startsWith('/ja')) - const enLinks = links.filter((i, element) => $(element).attr('href').startsWith('/en')) + const jaLinks = links.filter((i: number, element: any) => { + const href = $(element).attr('href') + return href !== undefined && href.startsWith('/ja') + }) + const enLinks = links.filter((i: number, element: any) => { + const href = $(element).attr('href') + return href !== undefined && href.startsWith('/en') + }) expect(jaLinks.length).toBe(2) expect(enLinks.length).toBe(0) }) test('internal links with AUTOTITLE resolves', async () => { - const $ = await getDOM('/ja/get-started/foo/autotitling') + const $: cheerio.Root = await getDOM('/ja/get-started/foo/autotitling') const links = $('#article-contents a[href]') - links.each((i, element) => { - if ($(element).attr('href').includes('/ja/get-started/start-your-journey/hello-world')) { + links.each((i: number, element: any) => { + if ($(element).attr('href')?.includes('/ja/get-started/start-your-journey/hello-world')) { expect($(element).text()).toBe('こんにちは World') } }) @@ -55,26 +67,28 @@ describe('translations', () => { test('correction of linebreaks in translations', async () => { // free-pro-team { - const $ = await getDOM('/ja/get-started/foo/table-with-ifversions') + const $: cheerio.Root = await getDOM('/ja/get-started/foo/table-with-ifversions') const paragraph = $('#article-contents p').text() expect(paragraph).toMatch('mention of HubGit in Liquid') const tds = $('#article-contents td') - .map((i, element) => $(element).text()) + .map((i: number, element: any) => $(element).text()) .get() expect(tds.length).toBe(2) expect(tds[1]).toBe('Not') } // enterprise-server { - const $ = await getDOM('/ja/enterprise-server@latest/get-started/foo/table-with-ifversions') + const $: cheerio.Root = await getDOM( + '/ja/enterprise-server@latest/get-started/foo/table-with-ifversions', + ) const paragraph = $('#article-contents p').text() expect(paragraph).toMatch('mention of HubGit Enterprise Server in Liquid') const tds = $('#article-contents td') - .map((i, element) => $(element).text()) + .map((i: number, element: any) => $(element).text()) .get() expect(tds.length).toBe(2) expect(tds[1]).toBe('Present') @@ -82,9 +96,9 @@ describe('translations', () => { }) test('automatic correction of bad AUTOTITLE in reusables', async () => { - const $ = await getDOM('/ja/get-started/start-your-journey/hello-world') + const $: cheerio.Root = await getDOM('/ja/get-started/start-your-journey/hello-world') const links = $('#article-contents a[href]') - const texts = links.map((i, element) => $(element).text()).get() + const texts = links.map((i: number, element: any) => $(element).text()).get() // That Japanese page uses AUTOTITLE links. Both in the main `.md` file // but also inside a reusable. // E.g. `["AUTOTITLE](/get-started/start-your-journey/hello-world)."` @@ -100,7 +114,7 @@ describe('translations', () => { // Markdown. It would not be let into `main` by our CI checks. But // by their nature, translations are not checked by CI in the same way. // Its "flaws" have to be corrected at runtime. - const stillAutotitle = texts.filter((text) => /autotitle/i.test(text)) + const stillAutotitle = texts.filter((text: string) => /autotitle/i.test(text)) expect(stillAutotitle.length).toBe(0) }) @@ -112,13 +126,20 @@ describe('translations', () => { // which needs to become: // // [Bar](バー) - const $ = await getDOM('/ja/get-started/start-your-journey/hello-world') + const $: cheerio.Root = await getDOM('/ja/get-started/start-your-journey/hello-world') const links = $('#article-contents a[href]') const texts = links - .filter((i, element) => $(element).attr('href').includes('get-started/foo/bar')) - .map((i, element) => $(element).text()) + .filter((i: number, element: any) => { + const href = $(element).attr('href') + return href !== undefined && href.includes('get-started/foo/bar') + }) + .map((i: number, element: any) => $(element).text()) .get() - expect(texts.includes('[Bar] (バー)')).toBeTruthy() + // Check that the text contains the essential parts rather than exact spacing + const foundBarLink = texts.find( + (text: string) => text.includes('[Bar]') && text.includes('(バー)'), + ) + expect(foundBarLink).toBeDefined() }) describe('localized category versioning', () => { diff --git a/src/fixtures/tests/versioning.js b/src/fixtures/tests/versioning.ts similarity index 86% rename from src/fixtures/tests/versioning.js rename to src/fixtures/tests/versioning.ts index 8543d987fbef..2665fcc2e682 100644 --- a/src/fixtures/tests/versioning.js +++ b/src/fixtures/tests/versioning.ts @@ -1,11 +1,12 @@ import { describe, expect, test } from 'vitest' +import cheerio from 'cheerio' -import { getDOM, head } from '#src/tests/helpers/e2etest.js' -import { supported } from '#src/versions/lib/enterprise-server-releases.js' +import { getDOM, head } from '@/tests/helpers/e2etest' +import { supported } from '@/versions/lib/enterprise-server-releases' describe('article versioning', () => { test('only links to articles for fpt', async () => { - const $ = await getDOM('/get-started/versioning') + const $: cheerio.Root = await getDOM('/get-started/versioning') const links = $('[data-testid="table-of-contents"] a') // Only 1 link because there's only 1 article available in fpt expect(links.length).toBe(1) @@ -13,18 +14,18 @@ describe('article versioning', () => { }) test('only links to articles for ghec', async () => { - const $ = await getDOM('/enterprise-cloud@latest/get-started/versioning') + const $: cheerio.Root = await getDOM('/enterprise-cloud@latest/get-started/versioning') const links = $('[data-testid="table-of-contents"] a') expect(links.length).toBe(2) - const first = links.filter((i) => i === 0) - const second = links.filter((i) => i === 1) + const first = links.filter((i: number) => i === 0) + const second = links.filter((i: number) => i === 1) expect(first.attr('href')).toBe('/en/enterprise-cloud@latest/get-started/versioning/only-ghec') expect(second.attr('href')).toBe( '/en/enterprise-cloud@latest/get-started/versioning/only-ghec-and-ghes', ) // Both links should 200 if you go to them - expect((await head(first.attr('href'))).statusCode).toBe(200) - expect((await head(second.attr('href'))).statusCode).toBe(200) + expect((await head(first.attr('href')!)).statusCode).toBe(200) + expect((await head(second.attr('href')!)).statusCode).toBe(200) }) test('wrong version prefix for a non-fpt article will 404', async () => { diff --git a/src/fixtures/tests/video-transcripts.js b/src/fixtures/tests/video-transcripts.ts similarity index 67% rename from src/fixtures/tests/video-transcripts.js rename to src/fixtures/tests/video-transcripts.ts index 7a9bd01d42cf..cb3f6f7c2ec6 100644 --- a/src/fixtures/tests/video-transcripts.js +++ b/src/fixtures/tests/video-transcripts.ts @@ -1,11 +1,12 @@ import { describe, expect, test } from 'vitest' +import cheerio from 'cheerio' -import { getDOM } from '#src/tests/helpers/e2etest.js' +import { getDOM } from '@/tests/helpers/e2etest' describe('transcripts', () => { describe('product landing page', () => { test('video link from product landing page leads to video', async () => { - const $ = await getDOM('/en/get-started') + const $: cheerio.Root = await getDOM('/en/get-started') expect($('a#product-video').attr('href')).toBe( '/en/get-started/video-transcripts/transcript--my-awesome-video', ) @@ -14,7 +15,9 @@ describe('transcripts', () => { describe('transcript page', () => { test('video link from transcript leads to video', async () => { - const $ = await getDOM('/en/get-started/video-transcripts/transcript--my-awesome-video') + const $: cheerio.Root = await getDOM( + '/en/get-started/video-transcripts/transcript--my-awesome-video', + ) expect($('a#product-video').attr('href')).toBe('https://www.yourube.com/abc123') }) }) diff --git a/src/ghes-releases/lib/release-templates/release-steps-0.md b/src/ghes-releases/lib/release-templates/release-steps-0.md index 82032ea01490..017c2ead2a2f 100644 --- a/src/ghes-releases/lib/release-templates/release-steps-0.md +++ b/src/ghes-releases/lib/release-templates/release-steps-0.md @@ -27,47 +27,78 @@ This issue tracks Docs work for the GA release of GHES {{ release-number }}. ## Instructions for triage -- [ ] Add this issue to the [Rhythm of Docs: Operations](https://github.com/orgs/github/projects/20190) project. -- [ ] For assignee: if needed, add this issue to your persona team project for tracking purposes. +* [ ] Add this issue to the [Rhythm of Docs: Operations](https://github.com/orgs/github/projects/20190) project. +* [ ] For assignee: if needed, add this issue to your persona team project for tracking purposes.Note
\n\nThis operation supports both server-to-server and user-to-server access.\nUnauthorized users will not see the existence of this endpoint.
\nLists repositories that organization admins have allowed Dependabot to access when updating dependencies.
\nNote
\n\nThis operation supports both server-to-server and user-to-server access.\nUnauthorized users will not see the existence of this endpoint.
\nNote
\n\nThis operation supports both server-to-server and user-to-server access.\nUnauthorized users will not see the existence of this endpoint.
\nExample request body:
\n{\n \"repository_ids_to_add\": [123, 456],\n \"repository_ids_to_remove\": [789]\n}\n",
+ "descriptionHTML": "Updates repositories according to the list of repositories that organization admins have given Dependabot access to when they've updated dependencies.
\nNote
\n\nThis operation supports both server-to-server and user-to-server access.\nUnauthorized users will not see the existence of this endpoint.
\nExample request body:
\n{\n \"repository_ids_to_add\": [123, 456],\n \"repository_ids_to_remove\": [789]\n}\n",
"statusCodes": [
{
"httpStatusCode": "204",
@@ -251176,7 +251176,7 @@
}
],
"previews": [],
- "descriptionHTML": "Note
\n\nThis operation supports both server-to-server and user-to-server access.\nSets the default level of repository access Dependabot will have while performing an update. Available values are:
\nUnauthorized users will not see the existence of this endpoint.
", + "descriptionHTML": "Sets the default level of repository access Dependabot will have while performing an update. Available values are:
\nUnauthorized users will not see the existence of this endpoint.
\nThis operation supports both server-to-server and user-to-server access.
", "statusCodes": [ { "httpStatusCode": "204", diff --git a/src/rest/data/ghec-2022-11-28/schema.json b/src/rest/data/ghec-2022-11-28/schema.json index 28534d3c88ff..1c847e4685d1 100644 --- a/src/rest/data/ghec-2022-11-28/schema.json +++ b/src/rest/data/ghec-2022-11-28/schema.json @@ -992,7 +992,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -6180,7 +6180,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -181919,6 +181919,1320 @@ } ] } + ], + "alert-dismissal-requests": [ + { + "serverUrl": "https://api.github.com", + "verb": "get", + "requestPath": "/orgs/{org}/dismissal-requests/code-scanning", + "title": "List dismissal requests for code scanning alerts for an organization", + "category": "code-scanning", + "subcategory": "alert-dismissal-requests", + "parameters": [ + { + "name": "org", + "description": "The organization name. The name is not case sensitive.
", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "reviewer", + "description": "Filter alert dismissal requests by the handle of the GitHub user who reviewed the dismissal request.
", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "requester", + "description": "Filter alert dismissal requests by the handle of the GitHub user who requested the dismissal.
", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "time_period", + "description": "The time period to filter by.
\nFor example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).
Filter alert dismissal requests by status. When specified, only requests with this status will be returned.
", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "open", + "approved", + "expired", + "denied", + "all" + ], + "default": "all" + } + }, + { + "name": "repository_name", + "description": "The name of the repository to filter on.
", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "per_page", + "description": "The number of results per page (max 100). For more information, see \"Using pagination in the REST API.\"
", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, + { + "name": "page", + "description": "The page number of the results to fetch. For more information, see \"Using pagination in the REST API.\"
", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + } + ], + "bodyParameters": [], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Organization dismissal requests for code scanning\" organization permissions": "read" + } + ] + }, + "codeExamples": [ + { + "key": "default", + "request": { + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "org": "ORG" + } + }, + "response": { + "statusCode": "200", + "contentType": "application/json", + "description": "A list of alert dismissal requests.
", + "example": [ + { + "id": 21, + "number": 42, + "repository": { + "id": 1, + "name": "smile", + "full_name": "octo-org/smile" + }, + "organization": { + "id": 1, + "name": "octo-org" + }, + "requester": { + "actor_id": 12, + "actor_name": "monalisa" + }, + "request_type": "code_scanning_alert_dismissal", + "data": [ + { + "reason": "won't fix", + "alert_number": 1 + } + ], + "resource_identifier": "123/10", + "status": "denied", + "requester_comment": "Won't fix", + "expires_at": "2024-07-08T08:43:03Z", + "created_at": "2024-07-01T08:43:03Z", + "responses": [ + { + "id": 42, + "reviewer": { + "actor_id": 4, + "actor_name": "octocat" + }, + "status": "denied", + "created_at": "2024-07-02T08:43:04Z" + } + ], + "url": "https://api.github.com/repos/octo-org/smile/dismissal-requests/code-scanning/1", + "html_url": "https://github.com/octo-org/smile/code-scanning/alerts/1" + }, + { + "id": 12, + "number": 24, + "repository": { + "id": 1, + "name": "smile", + "full_name": "octo-org/smile" + }, + "organization": { + "id": 1, + "name": "octo-org" + }, + "requester": { + "actor_id": 12, + "actor_name": "monalisa" + }, + "request_type": "code_scanning_alert_dismissal", + "data": [ + { + "reason": "won't fix", + "alert_number": 2 + } + ], + "resource_identifier": "123/12", + "status": "denied", + "requester_comment": "Token is already revoked, I'll remove it later", + "expires_at": "2024-07-08T07:43:03Z", + "created_at": "2024-07-01T07:43:03Z", + "responses": [ + { + "id": 42, + "reviewer": { + "actor_id": 4, + "actor_name": "octocat" + }, + "status": "denied", + "created_at": "2024-07-02T08:43:04Z" + } + ], + "url": "https://api.github.com/repos/octo-org/smile/dismissal-requests/code-scanning/2", + "html_url": "https://github.com/octo-org/smile/code-scanning/alerts/2" + } + ], + "schema": { + "type": "array", + "items": { + "title": "Code scanning alert dismissal request", + "description": "Alert dismisal request made by a user asking to dismiss a code scanning alert.", + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The unique identifier of the dismissal request." + }, + "number": { + "type": "integer", + "format": "int64", + "description": "The number uniquely identifying the dismissal request within its repository." + }, + "repository": { + "type": "object", + "description": "The repository the dismissal request is for.", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the repository the dismissal request is for." + }, + "name": { + "type": "string", + "description": "The name of the repository the dismissal request is for." + }, + "full_name": { + "type": "string", + "description": "The full name of the repository the dismissal request is for." + } + } + }, + "organization": { + "type": "object", + "description": "The organization associated with the repository the dismissal request is for.", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the organization." + }, + "name": { + "type": "string", + "description": "The name of the organization." + } + } + }, + "requester": { + "type": "object", + "description": "The user who requested the dismissal request.", + "properties": { + "actor_id": { + "type": "integer", + "format": "int64", + "description": "The ID of the GitHub user who requested the dismissal request." + }, + "actor_name": { + "type": "string", + "description": "The name of the GitHub user who requested the dismissal request." + } + } + }, + "request_type": { + "type": "string", + "description": "The type of request." + }, + "data": { + "type": [ + "array", + "null" + ], + "description": "Data describing the dismissal request metadata.", + "items": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "The reason for the dismissal request." + }, + "alert_number": { + "type": "string", + "description": "alert number." + }, + "pr_review_thread_id": { + "type": "string", + "description": "The ID of the pull request review thread." + } + } + } + }, + "resource_identifier": { + "type": "string", + "description": "The unique identifier for the request type of the dismissal request.", + "examples": [ + "827efc6d56897b048c772eb4087f854f46256132" + ] + }, + "status": { + "type": "string", + "description": "The status of the dismissal request.", + "enum": [ + "pending", + "denied", + "approved", + "expired" + ] + }, + "requester_comment": { + "type": [ + "string", + "null" + ], + "description": "The comment the requester provided when creating the dismissal request." + }, + "expires_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the dismissal request will expire." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the dismissal request was created." + }, + "responses": { + "type": [ + "array", + "null" + ], + "description": "The responses to the dismissal request.", + "items": { + "title": "Dismissal request response", + "description": "A response made by a requester to dismiss the request.", + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the response to the dismissal request." + }, + "reviewer": { + "type": "object", + "description": "The user who reviewed the dismissal request.", + "properties": { + "actor_id": { + "type": "integer", + "format": "int64", + "description": "The ID of the GitHub user who reviewed the dismissal request." + }, + "actor_name": { + "type": "string", + "description": "The name of the GitHub user who reviewed the dismissal request." + } + } + }, + "message": { + "type": [ + "string", + "null" + ], + "description": "The response comment of the reviewer." + }, + "status": { + "type": "string", + "description": "The response status to the dismissal request until dismissed.", + "enum": [ + "approved", + "denied", + "dismissed" + ] + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the response to the dismissal request was created." + } + } + } + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/repos/octo-org/smile/dismissal-requests/code-scanning/1" + ] + }, + "html_url": { + "type": "string", + "description": "The URL to view the dismissal request in a browser.", + "format": "uri", + "examples": [ + "https://github.com/octo-org/smile/code-scanning/alerts/1" + ] + } + } + } + } + } + } + ], + "previews": [], + "descriptionHTML": "Lists dismissal requests for code scanning alerts for all repositories in an organization.
\nThe user must be authorized to review dismissal requests for the organization.\nPersonal access tokens (classic) need the security_events scope to use this endpoint.
A list of alert dismissal requests.
" + }, + { + "httpStatusCode": "403", + "description": "Forbidden
" + }, + { + "httpStatusCode": "404", + "description": "Resource not found
" + }, + { + "httpStatusCode": "422", + "description": "Validation failed, or the endpoint has been spammed.
" + }, + { + "httpStatusCode": "500", + "description": "Internal Error
" + } + ] + }, + { + "serverUrl": "https://api.github.com", + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning", + "title": "List dismissal requests for code scanning alerts for a repository", + "category": "code-scanning", + "subcategory": "alert-dismissal-requests", + "parameters": [ + { + "name": "owner", + "description": "The account owner of the repository. The name is not case sensitive.
", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "repo", + "description": "The name of the repository without the .git extension. The name is not case sensitive.
Filter alert dismissal requests by the handle of the GitHub user who reviewed the dismissal request.
", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "requester", + "description": "Filter alert dismissal requests by the handle of the GitHub user who requested the dismissal.
", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "time_period", + "description": "The time period to filter by.
\nFor example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).
Filter alert dismissal requests by status. When specified, only requests with this status will be returned.
", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "open", + "approved", + "expired", + "denied", + "all" + ], + "default": "all" + } + }, + { + "name": "per_page", + "description": "The number of results per page (max 100). For more information, see \"Using pagination in the REST API.\"
", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, + { + "name": "page", + "description": "The page number of the results to fetch. For more information, see \"Using pagination in the REST API.\"
", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + } + ], + "bodyParameters": [], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Organization dismissal requests for code scanning\" organization permissions": "read", + "\"Code scanning alerts\" repository permissions": "read" + } + ] + }, + "codeExamples": [ + { + "key": "default", + "request": { + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "owner": "OWNER", + "repo": "REPO" + } + }, + "response": { + "statusCode": "200", + "contentType": "application/json", + "description": "A list of alert dismissal requests.
", + "example": [ + { + "id": 21, + "number": 42, + "repository": { + "id": 1, + "name": "smile", + "full_name": "octo-org/smile" + }, + "organization": { + "id": 1, + "name": "octo-org" + }, + "requester": { + "actor_id": 12, + "actor_name": "monalisa" + }, + "request_type": "code_scanning_alert_dismissal", + "data": [ + { + "reason": "won't fix", + "alert_number": 1 + } + ], + "resource_identifier": "123/10", + "status": "denied", + "requester_comment": "Won't fix", + "expires_at": "2024-07-08T08:43:03Z", + "created_at": "2024-07-01T08:43:03Z", + "responses": [ + { + "id": 42, + "reviewer": { + "actor_id": 4, + "actor_name": "octocat" + }, + "status": "denied", + "created_at": "2024-07-02T08:43:04Z" + } + ], + "url": "https://api.github.com/repos/octo-org/smile/dismissal-requests/code-scanning/1", + "html_url": "https://github.com/octo-org/smile/code-scanning/alerts/1" + }, + { + "id": 12, + "number": 24, + "repository": { + "id": 1, + "name": "smile", + "full_name": "octo-org/smile" + }, + "organization": { + "id": 1, + "name": "octo-org" + }, + "requester": { + "actor_id": 12, + "actor_name": "monalisa" + }, + "request_type": "code_scanning_alert_dismissal", + "data": [ + { + "reason": "won't fix", + "alert_number": 2 + } + ], + "resource_identifier": "123/12", + "status": "denied", + "requester_comment": "Token is already revoked, I'll remove it later", + "expires_at": "2024-07-08T07:43:03Z", + "created_at": "2024-07-01T07:43:03Z", + "responses": [ + { + "id": 42, + "reviewer": { + "actor_id": 4, + "actor_name": "octocat" + }, + "status": "denied", + "created_at": "2024-07-02T08:43:04Z" + } + ], + "url": "https://api.github.com/repos/octo-org/smile/dismissal-requests/code-scanning/2", + "html_url": "https://github.com/octo-org/smile/code-scanning/alerts/2" + } + ], + "schema": { + "type": "array", + "items": { + "title": "Code scanning alert dismissal request", + "description": "Alert dismisal request made by a user asking to dismiss a code scanning alert.", + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The unique identifier of the dismissal request." + }, + "number": { + "type": "integer", + "format": "int64", + "description": "The number uniquely identifying the dismissal request within its repository." + }, + "repository": { + "type": "object", + "description": "The repository the dismissal request is for.", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the repository the dismissal request is for." + }, + "name": { + "type": "string", + "description": "The name of the repository the dismissal request is for." + }, + "full_name": { + "type": "string", + "description": "The full name of the repository the dismissal request is for." + } + } + }, + "organization": { + "type": "object", + "description": "The organization associated with the repository the dismissal request is for.", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the organization." + }, + "name": { + "type": "string", + "description": "The name of the organization." + } + } + }, + "requester": { + "type": "object", + "description": "The user who requested the dismissal request.", + "properties": { + "actor_id": { + "type": "integer", + "format": "int64", + "description": "The ID of the GitHub user who requested the dismissal request." + }, + "actor_name": { + "type": "string", + "description": "The name of the GitHub user who requested the dismissal request." + } + } + }, + "request_type": { + "type": "string", + "description": "The type of request." + }, + "data": { + "type": [ + "array", + "null" + ], + "description": "Data describing the dismissal request metadata.", + "items": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "The reason for the dismissal request." + }, + "alert_number": { + "type": "string", + "description": "alert number." + }, + "pr_review_thread_id": { + "type": "string", + "description": "The ID of the pull request review thread." + } + } + } + }, + "resource_identifier": { + "type": "string", + "description": "The unique identifier for the request type of the dismissal request.", + "examples": [ + "827efc6d56897b048c772eb4087f854f46256132" + ] + }, + "status": { + "type": "string", + "description": "The status of the dismissal request.", + "enum": [ + "pending", + "denied", + "approved", + "expired" + ] + }, + "requester_comment": { + "type": [ + "string", + "null" + ], + "description": "The comment the requester provided when creating the dismissal request." + }, + "expires_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the dismissal request will expire." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the dismissal request was created." + }, + "responses": { + "type": [ + "array", + "null" + ], + "description": "The responses to the dismissal request.", + "items": { + "title": "Dismissal request response", + "description": "A response made by a requester to dismiss the request.", + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the response to the dismissal request." + }, + "reviewer": { + "type": "object", + "description": "The user who reviewed the dismissal request.", + "properties": { + "actor_id": { + "type": "integer", + "format": "int64", + "description": "The ID of the GitHub user who reviewed the dismissal request." + }, + "actor_name": { + "type": "string", + "description": "The name of the GitHub user who reviewed the dismissal request." + } + } + }, + "message": { + "type": [ + "string", + "null" + ], + "description": "The response comment of the reviewer." + }, + "status": { + "type": "string", + "description": "The response status to the dismissal request until dismissed.", + "enum": [ + "approved", + "denied", + "dismissed" + ] + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the response to the dismissal request was created." + } + } + } + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/repos/octo-org/smile/dismissal-requests/code-scanning/1" + ] + }, + "html_url": { + "type": "string", + "description": "The URL to view the dismissal request in a browser.", + "format": "uri", + "examples": [ + "https://github.com/octo-org/smile/code-scanning/alerts/1" + ] + } + } + } + } + } + } + ], + "previews": [], + "descriptionHTML": "Lists dismissal requests for code scanning alerts for a repository.
\nDelegated alert dismissal must be enabled on the repository.\nPersonal access tokens (classic) need the security_events scope to use this endpoint.
A list of alert dismissal requests.
" + }, + { + "httpStatusCode": "403", + "description": "Forbidden
" + }, + { + "httpStatusCode": "404", + "description": "Resource not found
" + }, + { + "httpStatusCode": "500", + "description": "Internal Error
" + } + ] + }, + { + "serverUrl": "https://api.github.com", + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning/{alert_number}", + "title": "Get a dismissal request for a code scanning alert for a repository", + "category": "code-scanning", + "subcategory": "alert-dismissal-requests", + "parameters": [ + { + "name": "owner", + "description": "The account owner of the repository. The name is not case sensitive.
", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "repo", + "description": "The name of the repository without the .git extension. The name is not case sensitive.
The number that identifies the code scanning alert.
", + "schema": { + "type": "integer" + } + } + ], + "bodyParameters": [], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Organization dismissal requests for code scanning\" organization permissions": "read", + "\"Code scanning alerts\" repository permissions": "read" + } + ] + }, + "codeExamples": [ + { + "key": "default", + "request": { + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "owner": "OWNER", + "repo": "REPO", + "alert_number": "ALERT_NUMBER" + } + }, + "response": { + "statusCode": "200", + "contentType": "application/json", + "description": "A single dismissal request.
", + "example": { + "id": 21, + "number": 42, + "repository": { + "id": 1, + "name": "smile", + "full_name": "octo-org/smile" + }, + "organization": { + "id": 1, + "name": "octo-org" + }, + "requester": { + "actor_id": 12, + "actor_name": "monalisa" + }, + "request_type": "code_scanning_alert_dismissal", + "data": [ + { + "reason": "won't fix", + "alert_number": 2 + } + ], + "resource_identifier": "1/1", + "status": "denied", + "requester_comment": "Won't fix", + "expires_at": "2024-07-08T08:43:03Z", + "created_at": "2024-07-01T08:43:03Z", + "responses": [ + { + "id": 42, + "reviewer": { + "actor_id": 4, + "actor_name": "octocat" + }, + "status": "denied", + "created_at": "2024-07-02T08:43:04Z" + } + ], + "url": "https://api.github.com/repos/octo-org/smile/dismissal-requests/code-scanning/1", + "html_url": "https://github.com/octo-org/smile/code-scanning/alerts/1" + }, + "schema": { + "title": "Code scanning alert dismissal request", + "description": "Alert dismisal request made by a user asking to dismiss a code scanning alert.", + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The unique identifier of the dismissal request." + }, + "number": { + "type": "integer", + "format": "int64", + "description": "The number uniquely identifying the dismissal request within its repository." + }, + "repository": { + "type": "object", + "description": "The repository the dismissal request is for.", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the repository the dismissal request is for." + }, + "name": { + "type": "string", + "description": "The name of the repository the dismissal request is for." + }, + "full_name": { + "type": "string", + "description": "The full name of the repository the dismissal request is for." + } + } + }, + "organization": { + "type": "object", + "description": "The organization associated with the repository the dismissal request is for.", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the organization." + }, + "name": { + "type": "string", + "description": "The name of the organization." + } + } + }, + "requester": { + "type": "object", + "description": "The user who requested the dismissal request.", + "properties": { + "actor_id": { + "type": "integer", + "format": "int64", + "description": "The ID of the GitHub user who requested the dismissal request." + }, + "actor_name": { + "type": "string", + "description": "The name of the GitHub user who requested the dismissal request." + } + } + }, + "request_type": { + "type": "string", + "description": "The type of request." + }, + "data": { + "type": [ + "array", + "null" + ], + "description": "Data describing the dismissal request metadata.", + "items": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "The reason for the dismissal request." + }, + "alert_number": { + "type": "string", + "description": "alert number." + }, + "pr_review_thread_id": { + "type": "string", + "description": "The ID of the pull request review thread." + } + } + } + }, + "resource_identifier": { + "type": "string", + "description": "The unique identifier for the request type of the dismissal request.", + "examples": [ + "827efc6d56897b048c772eb4087f854f46256132" + ] + }, + "status": { + "type": "string", + "description": "The status of the dismissal request.", + "enum": [ + "pending", + "denied", + "approved", + "expired" + ] + }, + "requester_comment": { + "type": [ + "string", + "null" + ], + "description": "The comment the requester provided when creating the dismissal request." + }, + "expires_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the dismissal request will expire." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the dismissal request was created." + }, + "responses": { + "type": [ + "array", + "null" + ], + "description": "The responses to the dismissal request.", + "items": { + "title": "Dismissal request response", + "description": "A response made by a requester to dismiss the request.", + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the response to the dismissal request." + }, + "reviewer": { + "type": "object", + "description": "The user who reviewed the dismissal request.", + "properties": { + "actor_id": { + "type": "integer", + "format": "int64", + "description": "The ID of the GitHub user who reviewed the dismissal request." + }, + "actor_name": { + "type": "string", + "description": "The name of the GitHub user who reviewed the dismissal request." + } + } + }, + "message": { + "type": [ + "string", + "null" + ], + "description": "The response comment of the reviewer." + }, + "status": { + "type": "string", + "description": "The response status to the dismissal request until dismissed.", + "enum": [ + "approved", + "denied", + "dismissed" + ] + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the response to the dismissal request was created." + } + } + } + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/repos/octo-org/smile/dismissal-requests/code-scanning/1" + ] + }, + "html_url": { + "type": "string", + "description": "The URL to view the dismissal request in a browser.", + "format": "uri", + "examples": [ + "https://github.com/octo-org/smile/code-scanning/alerts/1" + ] + } + } + } + } + } + ], + "previews": [], + "descriptionHTML": "Gets a dismissal request to dismiss a code scanning alert in a repository.
\nDelegated alert dismissal must be enabled on the repository.\nPersonal access tokens (classic) need the security_events scope to use this endpoint.
A single dismissal request.
" + }, + { + "httpStatusCode": "403", + "description": "Forbidden
" + }, + { + "httpStatusCode": "404", + "description": "Resource not found
" + }, + { + "httpStatusCode": "500", + "description": "Internal Error
" + } + ] + }, + { + "serverUrl": "https://api.github.com", + "verb": "patch", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning/{alert_number}", + "title": "Review a dismissal request for a code scanning alert for a repository", + "category": "code-scanning", + "subcategory": "alert-dismissal-requests", + "parameters": [ + { + "name": "owner", + "description": "The account owner of the repository. The name is not case sensitive.
", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "repo", + "description": "The name of the repository without the .git extension. The name is not case sensitive.
The number that identifies the code scanning alert.
", + "schema": { + "type": "integer" + } + } + ], + "bodyParameters": [ + { + "type": "string", + "name": "status", + "in": "body", + "description": "The review action to perform on the bypass request.
", + "isRequired": true, + "enum": [ + "approve", + "deny" + ] + }, + { + "type": "string", + "name": "message", + "in": "body", + "description": "A message to include with the review. Has a maximum character length of 2048.
", + "isRequired": true + } + ], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Organization dismissal requests for code scanning\" organization permissions": "write", + "\"Code scanning alerts\" repository permissions": "read" + } + ] + }, + "codeExamples": [ + { + "key": "default", + "request": { + "contentType": "application/json", + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "bodyParameters": { + "status": "approve", + "message": "Used in tests." + }, + "parameters": { + "owner": "OWNER", + "repo": "REPO", + "alert_number": "ALERT_NUMBER" + } + }, + "response": { + "statusCode": "204", + "description": "Successful update
" + } + } + ], + "previews": [], + "descriptionHTML": "Approve or deny a dismissal request to dismiss a code scanning alert in a repository.
\nDelegated alert dismissal must be enabled on the repository and the user must be a dismissal reviewer to access this endpoint.\nPersonal access tokens (classic) need the security_events scope to use this endpoint.
Successful update
" + }, + { + "httpStatusCode": "403", + "description": "Forbidden
" + }, + { + "httpStatusCode": "404", + "description": "Resource not found
" + }, + { + "httpStatusCode": "422", + "description": "Validation failed, or the endpoint has been spammed.
" + }, + { + "httpStatusCode": "500", + "description": "Internal Error
" + } + ] + } ] }, "code-security": { @@ -264451,7 +265765,7 @@ "serverUrl": "https://api.github.com", "verb": "get", "requestPath": "/organizations/{org}/dependabot/repository-access", - "title": "Lists repositories that organization admins have allowed Dependabot to access when updating dependencies.", + "title": "Lists the repositories Dependabot can access in an organization", "category": "dependabot", "subcategory": "repository-access", "parameters": [ @@ -265177,7 +266491,7 @@ } ], "previews": [], - "descriptionHTML": "Note
\n\nThis operation supports both server-to-server and user-to-server access.\nUnauthorized users will not see the existence of this endpoint.
\nLists repositories that organization admins have allowed Dependabot to access when updating dependencies.
\nNote
\n\nThis operation supports both server-to-server and user-to-server access.\nUnauthorized users will not see the existence of this endpoint.
\nNote
\n\nThis operation supports both server-to-server and user-to-server access.\nUnauthorized users will not see the existence of this endpoint.
\nExample request body:
\n{\n \"repository_ids_to_add\": [123, 456],\n \"repository_ids_to_remove\": [789]\n}\n",
+ "descriptionHTML": "Updates repositories according to the list of repositories that organization admins have given Dependabot access to when they've updated dependencies.
\nNote
\n\nThis operation supports both server-to-server and user-to-server access.\nUnauthorized users will not see the existence of this endpoint.
\nExample request body:
\n{\n \"repository_ids_to_add\": [123, 456],\n \"repository_ids_to_remove\": [789]\n}\n",
"statusCodes": [
{
"httpStatusCode": "204",
@@ -265331,7 +266645,7 @@
}
],
"previews": [],
- "descriptionHTML": "Note
\n\nThis operation supports both server-to-server and user-to-server access.\nSets the default level of repository access Dependabot will have while performing an update. Available values are:
\nUnauthorized users will not see the existence of this endpoint.
", + "descriptionHTML": "Sets the default level of repository access Dependabot will have while performing an update. Available values are:
\nUnauthorized users will not see the existence of this endpoint.
\nThis operation supports both server-to-server and user-to-server access.
", "statusCodes": [ { "httpStatusCode": "204", @@ -280528,7 +281842,7 @@ "\"Administration\" organization permissions": "read" }, { - "\"Enterprise administration\" business permissions": "read" + "\"Enterprise administration\" enterprise permissions": "read" } ] }, @@ -281042,7 +282356,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "read" + "\"Enterprise administration\" enterprise permissions": "read" } ] }, @@ -282590,7 +283904,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -282774,7 +284088,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -283066,6 +284380,405 @@ } ] }, + { + "serverUrl": "https://api.github.com", + "verb": "get", + "requestPath": "/enterprises/{enterprise}/settings/billing/cost-centers/{cost_center_id}", + "title": "Get a cost center by ID", + "category": "enterprise-admin", + "subcategory": "billing", + "parameters": [ + { + "name": "enterprise", + "description": "The slug version of the enterprise name. You can also substitute this value with the enterprise id.
", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "cost_center_id", + "description": "The ID corresponding to the cost center.
", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "bodyParameters": [], + "progAccess": { + "userToServerRest": false, + "serverToServer": false, + "fineGrainedPat": false, + "permissions": [] + }, + "codeExamples": [ + { + "key": "default", + "request": { + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "enterprise": "ENTERPRISE", + "cost_center_id": "COST_CENTER_ID" + } + }, + "response": { + "statusCode": "200", + "contentType": "application/json", + "description": "Response when getting a cost center
", + "example": [ + { + "id": "2eeb8ffe-6903-11ee-8c99-0242ac120002", + "name": "Cost Center Name", + "resources": [ + { + "type": "User", + "name": "Monalisa" + }, + { + "type": "Repo", + "name": "octocat/hello-world" + } + ] + } + ], + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the cost center." + }, + "name": { + "type": "string", + "description": "Name of the cost center." + }, + "resources": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type of the resource." + }, + "name": { + "type": "string", + "description": "Name of the resource." + } + }, + "required": [ + "type", + "name" + ] + } + } + }, + "required": [ + "id", + "name", + "resources" + ] + } + } + } + ], + "previews": [], + "descriptionHTML": "Gets a cost center by ID. The authenticated user must be an enterprise admin.
", + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "Response when getting a cost center
" + }, + { + "httpStatusCode": "400", + "description": "Bad Request
" + }, + { + "httpStatusCode": "403", + "description": "Forbidden
" + }, + { + "httpStatusCode": "500", + "description": "Internal Error
" + }, + { + "httpStatusCode": "503", + "description": "Service unavailable
" + } + ] + }, + { + "serverUrl": "https://api.github.com", + "verb": "patch", + "requestPath": "/enterprises/{enterprise}/settings/billing/cost-centers/{cost_center_id}", + "title": "Update a cost center name", + "category": "enterprise-admin", + "subcategory": "billing", + "parameters": [ + { + "name": "enterprise", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "The slug version of the enterprise name
" + }, + { + "name": "cost_center_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "The unique identifier of the cost center
" + } + ], + "bodyParameters": [ + { + "type": "string", + "name": "name", + "in": "body", + "description": "The new name for the cost center
", + "isRequired": true + } + ], + "progAccess": { + "userToServerRest": false, + "serverToServer": false, + "fineGrainedPat": false, + "permissions": [] + }, + "codeExamples": [ + { + "key": "update-cost-center", + "request": { + "contentType": "application/json", + "description": "Update cost center name example", + "acceptHeader": "application/vnd.github.v3+json", + "bodyParameters": { + "name": "New Cost Center Name" + }, + "parameters": { + "enterprise": "ENTERPRISE", + "cost_center_id": "COST_CENTER_ID" + } + }, + "response": { + "statusCode": "200", + "contentType": "application/json", + "description": "Response when updating a cost center
", + "example": [ + { + "id": "2eeb8ffe-6903-11ee-8c99-0242ac120002", + "name": "Cost Center Name", + "resources": [ + { + "type": "User", + "name": "Monalisa" + }, + { + "type": "Repo", + "name": "octocat/hello-world" + } + ] + } + ], + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the cost center." + }, + "name": { + "type": "string", + "description": "Name of the cost center." + }, + "resources": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type of the resource." + }, + "name": { + "type": "string", + "description": "Name of the resource." + } + }, + "required": [ + "type", + "name" + ] + } + } + }, + "required": [ + "id", + "name", + "resources" + ] + } + } + } + ], + "previews": [], + "descriptionHTML": "Updates an existing cost center name.
", + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "Response when updating a cost center
" + }, + { + "httpStatusCode": "400", + "description": "Bad Request
" + }, + { + "httpStatusCode": "403", + "description": "Forbidden
" + }, + { + "httpStatusCode": "404", + "description": "Resource not found
" + }, + { + "httpStatusCode": "409", + "description": "Conflict
" + }, + { + "httpStatusCode": "500", + "description": "Internal Error
" + }, + { + "httpStatusCode": "503", + "description": "Service unavailable
" + } + ] + }, + { + "serverUrl": "https://api.github.com", + "verb": "delete", + "requestPath": "/enterprises/{enterprise}/settings/billing/cost-centers/{cost_center_id}", + "title": "Delete a cost center", + "category": "enterprise-admin", + "subcategory": "billing", + "parameters": [ + { + "name": "enterprise", + "description": "The slug version of the enterprise name. You can also substitute this value with the enterprise id.
", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "cost_center_id", + "description": "The ID corresponding to the cost center.
", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "bodyParameters": [], + "progAccess": { + "userToServerRest": false, + "serverToServer": false, + "fineGrainedPat": false, + "permissions": [] + }, + "codeExamples": [ + { + "key": "default", + "request": { + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "enterprise": "ENTERPRISE", + "cost_center_id": "COST_CENTER_ID" + } + }, + "response": { + "statusCode": "200", + "contentType": "application/json", + "description": "Response when deleting a cost center
", + "example": { + "message": "Cost center successfully deleted.", + "id": "2066deda-923f-43f9-88d2-62395a28c0cdd", + "name": "cc3", + "costCenterState": "CostCenterArchived" + }, + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "A message indicating the result of the deletion operation" + }, + "id": { + "type": "string", + "description": "The unique identifier of the deleted cost center" + }, + "name": { + "type": "string", + "description": "The name of the deleted cost center" + }, + "costCenterState": { + "type": "string", + "enum": [ + "CostCenterArchived" + ], + "description": "The state of the cost center after deletion" + } + }, + "required": [ + "message", + "id", + "name", + "costCenterState" + ] + } + } + } + ], + "previews": [], + "descriptionHTML": "Archieves a cost center by ID. The authenticated user must be an enterprise admin.
", + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "Response when deleting a cost center
" + }, + { + "httpStatusCode": "400", + "description": "Bad Request
" + }, + { + "httpStatusCode": "403", + "description": "Forbidden
" + }, + { + "httpStatusCode": "404", + "description": "Resource not found
" + }, + { + "httpStatusCode": "500", + "description": "Internal Error
" + }, + { + "httpStatusCode": "503", + "description": "Service unavailable
" + } + ] + }, { "serverUrl": "https://api.github.com", "verb": "post", @@ -283297,7 +285010,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -283379,7 +285092,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -284440,7 +286153,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Custom properties\" business permissions": "read" + "\"Custom properties\" enterprise permissions": "read" } ] }, @@ -284708,7 +286421,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Custom properties\" business permissions": "write" + "\"Custom properties\" enterprise permissions": "write" } ] }, @@ -284948,7 +286661,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Custom properties\" business permissions": "write" + "\"Custom properties\" enterprise permissions": "write" } ] }, @@ -285136,7 +286849,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Custom properties\" business permissions": "read" + "\"Custom properties\" enterprise permissions": "read" } ] }, @@ -285372,7 +287085,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Custom properties\" business permissions": "write" + "\"Custom properties\" enterprise permissions": "write" } ] }, @@ -285570,7 +287283,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Custom properties\" business permissions": "write" + "\"Custom properties\" enterprise permissions": "write" } ] }, @@ -285653,7 +287366,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "read" + "\"Enterprise administration\" enterprise permissions": "read" } ] }, @@ -285888,7 +287601,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "read" + "\"Enterprise administration\" enterprise permissions": "read" } ] }, @@ -288097,7 +289810,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -289480,7 +291193,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -292151,7 +293864,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -293535,7 +295248,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -293967,7 +295680,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -294327,7 +296040,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -294620,7 +296333,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -294937,7 +296650,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -295477,7 +297190,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -295990,7 +297703,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -296114,7 +297827,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -296655,7 +298368,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -297372,7 +299085,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -297873,7 +299586,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -298311,7 +300024,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -299319,7 +301032,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, diff --git a/src/rest/data/ghes-3.13-2022-11-28/schema.json b/src/rest/data/ghes-3.13-2022-11-28/schema.json index cbbfc3d6f5b1..3f2889daee5e 100644 --- a/src/rest/data/ghes-3.13-2022-11-28/schema.json +++ b/src/rest/data/ghes-3.13-2022-11-28/schema.json @@ -957,7 +957,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -1033,7 +1033,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -1126,7 +1126,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -1846,13 +1846,13 @@ } ], "previews": [], - "descriptionHTML": "Lists the GitHub Actions caches for a repository.
\nOAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Lists the GitHub Actions caches for a repository.
\nOAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.
Gets the customization template for an OpenID Connect (OIDC) subject claim.
\nOAuth app tokens and personal access tokens (classic) need the read:org scope to use this endpoint.
A JSON serialized template for OIDC subject claim customization
" } - ] + ], + "descriptionHTML": "Gets the customization template for an OpenID Connect (OIDC) subject claim.
\nOAuth app tokens and personal access tokens (classic) need the read:org scope to use this endpoint.
Sets the GitHub Actions permissions policy for organizations and allowed actions in an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.
No Content
" } - ] + ], + "descriptionHTML": "Sets the GitHub Actions permissions policy for organizations and allowed actions in an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.
Adds an organization to the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for enabled_organizations must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"
OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.
No Content
" } - ] + ], + "descriptionHTML": "Adds an organization to the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for enabled_organizations must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"
OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.
Lists the selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for enabled_repositories must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"
OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Lists the selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for enabled_repositories must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"
OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.
Sets the actions that are allowed in an organization. To use this endpoint, the organization permission policy for allowed_actions must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"
If the organization belongs to an enterprise that has selected actions set at the enterprise level, then you cannot override any of the enterprise's allowed actions settings.
To use the patterns_allowed setting for private repositories, the organization must belong to an enterprise. If the organization does not belong to an enterprise, then the patterns_allowed setting only applies to public repositories in the organization.
OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.
No Content
" } - ] + ], + "descriptionHTML": "Sets the actions that are allowed in an organization. To use this endpoint, the organization permission policy for allowed_actions must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"
If the organization belongs to an enterprise that has selected actions set at the enterprise level, then you cannot override any of the enterprise's allowed actions settings.
To use the patterns_allowed setting for private repositories, the organization must belong to an enterprise. If the organization does not belong to an enterprise, then the patterns_allowed setting only applies to public repositories in the organization.
OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.
Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions allowed to run in the repository.
\nYou must authenticate using an access token with the repo scope to use this endpoint. GitHub Apps must have the administration repository permission to use this API.
OK
" } - ] + ], + "descriptionHTML": "Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions allowed to run in the repository.
\nYou must authenticate using an access token with the repo scope to use this endpoint. GitHub Apps must have the administration repository permission to use this API.
Sets the GitHub Actions permissions policy for enabling GitHub Actions and allowed actions in the repository.
\nIf the repository belongs to an organization or enterprise that has set restrictive permissions at the organization or enterprise levels, such as allowed_actions to selected actions, then you cannot override them for the repository.
OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.
No Content
" } - ] + ], + "descriptionHTML": "Sets the GitHub Actions permissions policy for enabling GitHub Actions and allowed actions in the repository.
\nIf the repository belongs to an organization or enterprise that has set restrictive permissions at the organization or enterprise levels, such as allowed_actions to selected actions, then you cannot override them for the repository.
OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.
Lists all secrets available in an organization without revealing their\nencrypted values.
\nAuthenticated users must have collaborator access to a repository to create, update, or read secrets.
\nOAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.
OK
" } - ] + ], + "descriptionHTML": "Lists all secrets available in an organization without revealing their\nencrypted values.
\nAuthenticated users must have collaborator access to a repository to create, update, or read secrets.
\nOAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.
Gets your public key, which you need to encrypt secrets. You need to\nencrypt a secret before you can create or update secrets.
\nThe authenticated user must have collaborator access to a repository to create, update, or read secrets.
\nOAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Gets your public key, which you need to encrypt secrets. You need to\nencrypt a secret before you can create or update secrets.
\nThe authenticated user must have collaborator access to a repository to create, update, or read secrets.
\nOAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.
Deletes a secret in an organization using the secret name.
\nAuthenticated users must have collaborator access to a repository to create, update, or read secrets.
\nOAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.
No Content
" } - ] + ], + "descriptionHTML": "Deletes a secret in an organization using the secret name.
\nAuthenticated users must have collaborator access to a repository to create, update, or read secrets.
\nOAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.
Replaces the list of organizations that have access to a self-hosted runner configured in an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.
No Content
" } - ] + ], + "descriptionHTML": "Replaces the list of organizations that have access to a self-hosted runner configured in an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.
Adds an organization to the list of selected organizations that can access a self-hosted runner group. The runner group must have visibility set to selected. For more information, see \"Create a self-hosted runner group for an enterprise.\"
OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.
No Content
" } - ] + ], + "descriptionHTML": "Adds an organization to the list of selected organizations that can access a self-hosted runner group. The runner group must have visibility set to selected. For more information, see \"Create a self-hosted runner group for an enterprise.\"
OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.
Removes a self-hosted runner from a group configured in an enterprise. The runner is then returned to the default group.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.
No Content
" } - ] + ], + "descriptionHTML": "Removes a self-hosted runner from a group configured in an enterprise. The runner is then returned to the default group.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.
Deletes a self-hosted runner group for an organization.
\nOAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.
No Content
" } - ] + ], + "descriptionHTML": "Deletes a self-hosted runner group for an organization.
\nOAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.
Returns a token that you can pass to the config script. The token expires after one hour.
Example using registration token:
\nConfigure your self-hosted runner, replacing TOKEN with the registration token provided by this endpoint.
./config.sh --url https://github.com/enterprises/octo-enterprise --token TOKEN\n\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.
Created
" } - ] + ], + "descriptionHTML": "Returns a token that you can pass to the config script. The token expires after one hour.
Example using registration token:
\nConfigure your self-hosted runner, replacing TOKEN with the registration token provided by this endpoint.
./config.sh --url https://github.com/enterprises/octo-enterprise --token TOKEN\n\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.
Remove all previous custom labels and set the new custom labels for a specific\nself-hosted runner configured in an organization.
\nAuthenticated users must have admin access to the organization to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.
Validation failed, or the endpoint has been spammed.
" } - ] + ], + "descriptionHTML": "Remove all previous custom labels and set the new custom labels for a specific\nself-hosted runner configured in an organization.
\nAuthenticated users must have admin access to the organization to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.
Lists all organization variables.
\nAuthenticated users must have collaborator access to a repository to create, update, or read variables.
\nOAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.
OK
" } - ] + ], + "descriptionHTML": "Lists all organization variables.
\nAuthenticated users must have collaborator access to a repository to create, update, or read variables.
\nOAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.
Gets a specific variable in an organization.
\nThe authenticated user must have collaborator access to a repository to create, update, or read variables.
\nOAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Gets a specific variable in an organization.
\nThe authenticated user must have collaborator access to a repository to create, update, or read variables.
\nOAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.
Replaces all repositories for an organization variable that is available\nto selected repositories. Organization variables that are available to selected\nrepositories have their visibility field set to selected.
Authenticated users must have collaborator access to a repository to create, update, or read variables.
\nOAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.
Response when the visibility of the variable is not set to selected
Replaces all repositories for an organization variable that is available\nto selected repositories. Organization variables that are available to selected\nrepositories have their visibility field set to selected.
Authenticated users must have collaborator access to a repository to create, update, or read variables.
\nOAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.
Removes a repository from an organization variable that is\navailable to selected repositories. Organization variables that are available to\nselected repositories have their visibility field set to selected.
Authenticated users must have collaborator access to a repository to create, update, or read variables.
\nOAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.
Response when the visibility of the variable is not set to selected
Removes a repository from an organization variable that is\navailable to selected repositories. Organization variables that are available to\nselected repositories have their visibility field set to selected.
Authenticated users must have collaborator access to a repository to create, update, or read variables.
\nOAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.
Note
\n\nThis API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h.
\nOK
" } - ] + ], + "descriptionHTML": "Note
\n\nThis API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h.
\nLists all notifications for the current user in the specified repository.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Lists all notifications for the current user in the specified repository.
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -101996,13 +101996,13 @@ } ], "previews": [], - "descriptionHTML": "Enables an authenticated GitHub App to find the user’s installation information.
\nYou must use a JWT to access this endpoint.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Enables an authenticated GitHub App to find the user’s installation information.
\nYou must use a JWT to access this endpoint.
" } ], "installations": [ @@ -118401,7 +118401,6 @@ } ], "previews": [], - "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "201", @@ -118427,7 +118426,8 @@ "httpStatusCode": "422", "description": "Validation failed, or the endpoint has been spammed.
" } - ] + ], + "descriptionHTML": "" } ], "branch-protection": [ @@ -156852,12 +156852,6 @@ "name": "dismissed_comment", "in": "body", "description": "The dismissal comment associated with the dismissal of the alert.
" - }, - { - "type": "boolean", - "name": "create_request", - "in": "body", - "description": "If true, attempt to create an alert dismissal request.
Gets your public key, which you need to encrypt secrets. You need to\nencrypt a secret before you can create or update secrets.
\nOAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Gets your public key, which you need to encrypt secrets. You need to\nencrypt a secret before you can create or update secrets.
\nOAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.
Deletes a secret in a repository using the secret name.
\nOAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.
No Content
" } - ] + ], + "descriptionHTML": "Deletes a secret in a repository using the secret name.
\nOAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -201243,13 +201236,13 @@ } ], "previews": [], - "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -201754,7 +201747,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "read" + "\"Enterprise administration\" enterprise permissions": "read" } ] }, @@ -202132,7 +202125,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -202276,13 +202269,13 @@ } ], "previews": [], - "descriptionHTML": "Gets the GitHub Advanced Security active committers for an enterprise per repository.
\nEach distinct user login across all repositories is counted as a single Advanced Security seat, so the total_advanced_security_committers is not the sum of active_users for each repository.
The total number of repositories with committer information is tracked by the total_count field.
Success
" } - ] + ], + "descriptionHTML": "Gets the GitHub Advanced Security active committers for an enterprise per repository.
\nEach distinct user login across all repositories is counted as a single Advanced Security seat, so the total_advanced_security_committers is not the sum of active_users for each repository.
The total number of repositories with committer information is tracked by the total_count field.
Accepted
" } - ] + ], + "descriptionHTML": "" } ], "pre-receive-environments": [ @@ -209709,13 +209702,13 @@ } ], "previews": [], - "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -210899,7 +210892,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -211259,7 +211252,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -211552,7 +211545,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -211869,7 +211862,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -212409,7 +212402,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -212922,7 +212915,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -213046,7 +213039,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -213587,7 +213580,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -214304,7 +214297,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -214805,7 +214798,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -215243,7 +215236,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -216251,7 +216244,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -293372,13 +293365,13 @@ } ], "previews": [], - "descriptionHTML": "Lists labels for issues in a milestone.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Lists labels for issues in a milestone.
" } ], "milestones": [ @@ -293860,7 +293853,6 @@ } ], "previews": [], - "descriptionHTML": "Lists milestones for a repository.
", "statusCodes": [ { "httpStatusCode": "200", @@ -293870,7 +293862,8 @@ "httpStatusCode": "404", "description": "Resource not found
" } - ] + ], + "descriptionHTML": "Lists milestones for a repository.
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -313606,13 +313599,13 @@ } ], "previews": [], - "descriptionHTML": "Get the octocat as ASCII art
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Get the octocat as ASCII art
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -324565,7 +324558,6 @@ } ], "previews": [], - "descriptionHTML": "Warning
\n\nClosing down notice: GitHub Enterprise Server will discontinue the OAuth Authorizations API, which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our web application flow. The OAuth Authorizations API will be removed on November 13, 2020. For more information, including scheduled brownouts, see the blog post.
\nYou can use this API to list the set of OAuth applications that have been granted access to your account. Unlike the list your authorizations API, this API does not manage individual tokens. This API will return one entry for each OAuth application that has been granted access to your account, regardless of the number of tokens an application has generated for your user. The list of OAuth applications returned matches what is shown on the application authorizations settings screen within GitHub. The scopes returned are the union of scopes authorized for the application. For example, if an application has one token with repo scope and another token with user scope, the grant will return [\"repo\", \"user\"].
Resource not found
" } - ] + ], + "descriptionHTML": "Warning
\n\nClosing down notice: GitHub Enterprise Server will discontinue the OAuth Authorizations API, which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our web application flow. The OAuth Authorizations API will be removed on November 13, 2020. For more information, including scheduled brownouts, see the blog post.
\nYou can use this API to list the set of OAuth applications that have been granted access to your account. Unlike the list your authorizations API, this API does not manage individual tokens. This API will return one entry for each OAuth application that has been granted access to your account, regardless of the number of tokens an application has generated for your user. The list of OAuth applications returned matches what is shown on the application authorizations settings screen within GitHub. The scopes returned are the union of scopes authorized for the application. For example, if an application has one token with repo scope and another token with user scope, the grant will return [\"repo\", \"user\"].
Warning
\n\nClosing down notice: This operation is closing down and will be removed in the future. Use the \"List custom repository roles\" endpoint instead.
\nList the custom repository roles available in this organization. For more information on custom repository roles, see \"About custom repository roles.\"
\nThe authenticated user must be administrator of the organization or of a repository of the organization to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the admin:org or repo scope to use this endpoint.
Response - list of custom role names
" } - ] + ], + "descriptionHTML": "Warning
\n\nClosing down notice: This operation is closing down and will be removed in the future. Use the \"List custom repository roles\" endpoint instead.
\nList the custom repository roles available in this organization. For more information on custom repository roles, see \"About custom repository roles.\"
\nThe authenticated user must be administrator of the organization or of a repository of the organization to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the admin:org or repo scope to use this endpoint.
Members of an organization can choose to have their membership publicized or not.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Members of an organization can choose to have their membership publicized or not.
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -341778,7 +341771,6 @@ } ], "previews": [], - "descriptionHTML": "Check if the provided user is a public member of the organization.
", "statusCodes": [ { "httpStatusCode": "204", @@ -341788,7 +341780,8 @@ "httpStatusCode": "404", "description": "Not Found if user is not a public member
" } - ] + ], + "descriptionHTML": "Check if the provided user is a public member of the organization.
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -343781,7 +343774,6 @@ } ], "previews": [], - "descriptionHTML": "Removing a user from this list will remove them from all the organization's repositories.
", "statusCodes": [ { "httpStatusCode": "204", @@ -343791,7 +343783,8 @@ "httpStatusCode": "422", "description": "Unprocessable Entity if user is a member of the organization
" } - ] + ], + "descriptionHTML": "Removing a user from this list will remove them from all the organization's repositories.
" } ], "personal-access-tokens": [ @@ -355478,13 +355471,13 @@ } ], "previews": [], - "descriptionHTML": "Returns the webhook configuration for an organization. To get more information about the webhook, including the active state and events, use \"Get an organization webhook .\"
You must be an organization owner to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need admin:org_hook scope. OAuth apps cannot list, view, or edit\nwebhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps.
OK
" } - ] + ], + "descriptionHTML": "Returns the webhook configuration for an organization. To get more information about the webhook, including the active state and events, use \"Get an organization webhook .\"
You must be an organization owner to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need admin:org_hook scope. OAuth apps cannot list, view, or edit\nwebhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps.
Lists the projects in an organization. Returns a 404 Not Found status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a 401 Unauthorized or 410 Gone status is returned.
Validation failed, or the endpoint has been spammed.
" } - ] + ], + "descriptionHTML": "Lists the projects in an organization. Returns a 404 Not Found status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a 401 Unauthorized or 410 Gone status is returned.
Lists review comments for all pull requests in a repository. By default,\nreview comments are in ascending order by ID.
\nThis endpoint supports the following custom media types. For more information, see \"Media types.\"
\napplication/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.OK
" } - ] + ], + "descriptionHTML": "Lists review comments for all pull requests in a repository. By default,\nreview comments are in ascending order by ID.
\nThis endpoint supports the following custom media types. For more information, see \"Media types.\"
\napplication/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.Lists all review comments for a specified pull request. By default, review comments\nare in ascending order by ID.
\nThis endpoint supports the following custom media types. For more information, see \"Media types.\"
\napplication/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.OK
" } - ] + ], + "descriptionHTML": "Lists all review comments for a specified pull request. By default, review comments\nare in ascending order by ID.
\nThis endpoint supports the following custom media types. For more information, see \"Media types.\"
\napplication/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.Creates a review on a specified pull request.
\nThis endpoint triggers notifications. Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see \"Rate limits for the API\" and \"Best practices for using the REST API.\"
\nPull request reviews created in the PENDING state are not submitted and therefore do not include the submitted_at property in the response. To create a pending review for a pull request, leave the event parameter blank. For more information about submitting a PENDING review, see \"Submit a review for a pull request.\"
Note
\n\nTo comment on a specific line in a file, you need to first determine the position of that line in the diff. To see a pull request diff, add the application/vnd.github.v3.diff media type to the Accept header of a call to the Get a pull request endpoint.
The position value equals the number of lines down from the first \"@@\" hunk header in the file you want to add a comment. The line just below the \"@@\" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.
This endpoint supports the following custom media types. For more information, see \"Media types.\"
\napplication/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.Validation failed, or the endpoint has been spammed.
" } - ] + ], + "descriptionHTML": "Creates a review on a specified pull request.
\nThis endpoint triggers notifications. Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see \"Rate limits for the API\" and \"Best practices for using the REST API.\"
\nPull request reviews created in the PENDING state are not submitted and therefore do not include the submitted_at property in the response. To create a pending review for a pull request, leave the event parameter blank. For more information about submitting a PENDING review, see \"Submit a review for a pull request.\"
Note
\n\nTo comment on a specific line in a file, you need to first determine the position of that line in the diff. To see a pull request diff, add the application/vnd.github.v3.diff media type to the Accept header of a call to the Get a pull request endpoint.
The position value equals the number of lines down from the first \"@@\" hunk header in the file you want to add a comment. The line just below the \"@@\" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.
This endpoint supports the following custom media types. For more information, see \"Media types.\"
\napplication/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.Deletes a pull request review that has not been submitted. Submitted reviews cannot be deleted.
\nThis endpoint supports the following custom media types. For more information, see \"Media types.\"
\napplication/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.Validation failed, or the endpoint has been spammed.
" } - ] + ], + "descriptionHTML": "Deletes a pull request review that has not been submitted. Submitted reviews cannot be deleted.
\nThis endpoint supports the following custom media types. For more information, see \"Media types.\"
\napplication/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.Note
\n\nYou can also specify a repository by repository_id using the route DELETE delete /repositories/:repository_id/issues/comments/:comment_id/reactions/:reaction_id.
Delete a reaction to an issue comment.
", "statusCodes": [ { "httpStatusCode": "204", "description": "No Content
" } - ] + ], + "descriptionHTML": "Note
\n\nYou can also specify a repository by repository_id using the route DELETE delete /repositories/:repository_id/issues/comments/:comment_id/reactions/:reaction_id.
Delete a reaction to an issue comment.
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -424481,7 +424474,6 @@ } ], "previews": [], - "descriptionHTML": "List the reactions to a pull request review comment.
", "statusCodes": [ { "httpStatusCode": "200", @@ -424491,7 +424483,8 @@ "httpStatusCode": "404", "description": "Resource not found
" } - ] + ], + "descriptionHTML": "List the reactions to a pull request review comment.
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -426181,7 +426174,6 @@ } ], "previews": [], - "descriptionHTML": "Create a reaction to a release. A response with a Status: 200 OK means that you already added the reaction type to this release.
Validation failed, or the endpoint has been spammed.
" } - ] + ], + "descriptionHTML": "Create a reaction to a release. A response with a Status: 200 OK means that you already added the reaction type to this release.
Users with push access to the repository can edit a release.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Users with push access to the repository can edit a release.
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -432480,13 +432473,13 @@ } ], "previews": [], - "descriptionHTML": "Users with push access to the repository can delete a release.
", "statusCodes": [ { "httpStatusCode": "204", "description": "No Content
" } - ] + ], + "descriptionHTML": "Users with push access to the repository can delete a release.
" } ], "assets": [ @@ -465789,13 +465782,13 @@ } ], "previews": [], - "descriptionHTML": "Gets all autolinks that are configured for a repository.
\nInformation about autolinks are only available to repository administrators.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Gets all autolinks that are configured for a repository.
\nInformation about autolinks are only available to repository administrators.
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -488986,7 +488979,6 @@ } ], "previews": [], - "descriptionHTML": "Find commits via various criteria on the default branch (usually main). This method returns up to 100 results per page.
When searching for commits, you can get text match metadata for the message field when you provide the text-match media type. For more details about how to receive highlighted search results, see Text match\nmetadata.
For example, if you want to find commits related to CSS in the octocat/Spoon-Knife repository. Your query would look something like this:
\nq=repo:octocat/Spoon-Knife+css
Not modified
" } - ] + ], + "descriptionHTML": "Find commits via various criteria on the default branch (usually main). This method returns up to 100 results per page.
When searching for commits, you can get text match metadata for the message field when you provide the text-match media type. For more details about how to receive highlighted search results, see Text match\nmetadata.
For example, if you want to find commits related to CSS in the octocat/Spoon-Knife repository. Your query would look something like this:
\nq=repo:octocat/Spoon-Knife+css
The dismissal comment associated with the dismissal of the alert.
" - }, - { - "type": "boolean", - "name": "create_request", - "in": "body", - "description": "If true, attempt to create an alert dismissal request.
The dismissal comment associated with the dismissal of the alert.
" - }, - { - "type": "boolean", - "name": "create_request", - "in": "body", - "description": "If true, attempt to create an alert dismissal request.
Gets the total GitHub Actions cache usage for an organization.\nThe data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated.
\nOAuth tokens and personal access tokens (classic) need the read:org scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Gets the total GitHub Actions cache usage for an organization.\nThe data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated.
\nOAuth tokens and personal access tokens (classic) need the read:org scope to use this endpoint.
Gets GitHub Actions cache usage policy for a repository.
\nOAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Gets GitHub Actions cache usage policy for a repository.
\nOAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.
Lists self-hosted runners that are in a specific organization group.
\nOAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Lists self-hosted runners that are in a specific organization group.
\nOAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.
Returns a token that you can pass to the config script to remove a self-hosted runner from an enterprise. The token expires after one hour.
Example using remove token:
\nTo remove your self-hosted runner from an enterprise, replace TOKEN with the remove token provided by this\nendpoint.
./config.sh remove --token TOKEN\n\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.
Created
" } - ] + ], + "descriptionHTML": "Returns a token that you can pass to the config script to remove a self-hosted runner from an enterprise. The token expires after one hour.
Example using remove token:
\nTo remove your self-hosted runner from an enterprise, replace TOKEN with the remove token provided by this\nendpoint.
./config.sh remove --token TOKEN\n\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.
Gets a specific self-hosted runner configured in an organization.
\nAuthenticated users must have admin access to the organization to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.
OK
" } - ] + ], + "descriptionHTML": "Gets a specific self-hosted runner configured in an organization.
\nAuthenticated users must have admin access to the organization to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.
Returns a token that you can pass to the config script. The token expires after one hour.
For example, you can replace TOKEN in the following example with the registration token provided by this endpoint to configure your self-hosted runner:
./config.sh --url https://github.com/octo-org --token TOKEN\n\nAuthenticated users must have admin access to the repository to use this endpoint.
\nOAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.
Created
" } - ] + ], + "descriptionHTML": "Returns a token that you can pass to the config script. The token expires after one hour.
For example, you can replace TOKEN in the following example with the registration token provided by this endpoint to configure your self-hosted runner:
./config.sh --url https://github.com/octo-org --token TOKEN\n\nAuthenticated users must have admin access to the repository to use this endpoint.
\nOAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.
Lists all organization variables.
\nAuthenticated users must have collaborator access to a repository to create, update, or read variables.
\nOAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.
OK
" } - ] + ], + "descriptionHTML": "Lists all organization variables.
\nAuthenticated users must have collaborator access to a repository to create, update, or read variables.
\nOAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.
Marks a thread as \"done.\" Marking a thread as \"done\" is equivalent to marking a notification in your notification inbox on GitHub Enterprise Server as done: https://github.com/notifications.
", "statusCodes": [ { "httpStatusCode": "204", "description": "No content
" } - ] + ], + "descriptionHTML": "Marks a thread as \"done.\" Marking a thread as \"done\" is equivalent to marking a notification in your notification inbox on GitHub Enterprise Server as done: https://github.com/notifications.
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -126176,13 +126176,13 @@ } ], "previews": [], - "descriptionHTML": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see GitHub's products in the GitHub Help documentation.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see GitHub's products in the GitHub Help documentation.
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -157723,12 +157723,6 @@ "name": "dismissed_comment", "in": "body", "description": "The dismissal comment associated with the dismissal of the alert.
" - }, - { - "type": "boolean", - "name": "create_request", - "in": "body", - "description": "If true, attempt to create an alert dismissal request.
Create a new snapshot of a repository's dependencies.
\nThe authenticated user must have access to the repository.
\nOAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.
Created
" } - ] + ], + "descriptionHTML": "Create a new snapshot of a repository's dependencies.
\nThe authenticated user must have access to the repository.
\nOAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -198065,13 +198058,13 @@ } ], "previews": [], - "descriptionHTML": "Simple filtering of deployments is available via query parameters:
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Simple filtering of deployments is available via query parameters:
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -209855,7 +209848,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "read" + "\"Enterprise administration\" enterprise permissions": "read" } ] }, @@ -211526,7 +211519,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -212433,13 +212426,13 @@ } ], "previews": [], - "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -212898,13 +212891,13 @@ } ], "previews": [], - "descriptionHTML": "Note that this API call does not automatically initiate an LDAP sync. Rather, if a 201 is returned, the sync job is queued successfully, and is performed when the instance is ready.
Created
" } - ] + ], + "descriptionHTML": "Note that this API call does not automatically initiate an LDAP sync. Rather, if a 201 is returned, the sync job is queued successfully, and is performed when the instance is ready.
Gets the users or teams whose review is requested for a pull request. Once a requested reviewer submits a review, they are no longer considered a requested reviewer. Their review will instead be returned by the List reviews for a pull request operation.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Gets the users or teams whose review is requested for a pull request. Once a requested reviewer submits a review, they are no longer considered a requested reviewer. Their review will instead be returned by the List reviews for a pull request operation.
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -433978,13 +433971,13 @@ } ], "previews": [], - "descriptionHTML": "Note
\n\nYou can also specify a team or organization with team_id and org_id using the route DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions/:reaction_id.
Delete a reaction to a team discussion.
\nOAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.
No Content
" } - ] + ], + "descriptionHTML": "Note
\n\nYou can also specify a team or organization with team_id and org_id using the route DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions/:reaction_id.
Delete a reaction to a team discussion.
\nOAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.
Warning
\n\nEndpoint closing down notice: This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new List reactions for a team discussion endpoint.
List the reactions to a team discussion.
\nOAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Warning
\n\nEndpoint closing down notice: This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new List reactions for a team discussion endpoint.
List the reactions to a team discussion.
\nOAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.
View the latest published full release for the repository.
\nThe latest release is the most recent non-prerelease, non-draft release, sorted by the created_at attribute. The created_at attribute is the date of the commit used for the release, and not the date when the release was drafted or published.
OK
" } - ] + ], + "descriptionHTML": "View the latest published full release for the repository.
\nThe latest release is the most recent non-prerelease, non-draft release, sorted by the created_at attribute. The created_at attribute is the date of the commit used for the release, and not the date when the release was drafted or published.
Lists languages for the specified repository. The value shown for each language is the number of bytes of code written in that language.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Lists languages for the specified repository. The value shown for each language is the number of bytes of code written in that language.
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -531661,13 +531654,13 @@ } ], "previews": [], - "descriptionHTML": "Get a specific comment on a team discussion.
\nNote
\n\nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}.
OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Get a specific comment on a team discussion.
\nNote
\n\nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}.
OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.
Warning
\n\nEndpoint closing down notice: This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new Update a discussion endpoint.
\nEdits the title and body text of a discussion post. Only the parameters you provide are updated.
\nOAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Warning
\n\nEndpoint closing down notice: This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new Update a discussion endpoint.
\nEdits the title and body text of a discussion post. Only the parameters you provide are updated.
\nOAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.
The dismissal comment associated with the dismissal of the alert.
" - }, - { - "type": "boolean", - "name": "create_request", - "in": "body", - "description": "If true, attempt to create an alert dismissal request.