1 | type Github = { |
2 | token: string; |
3 | }; |
4 | |
5 | * Update an organization |
6 | * **Parameter Deprecation Notice:** GitHub will replace and discontinue `members_allowed_repository_creation_type` in favor of more granular permissions. |
7 | */ |
8 | export async function main( |
9 | auth: Github, |
10 | org: string, |
11 | body: { |
12 | advanced_security_enabled_for_new_repositories?: boolean; |
13 | billing_email?: string; |
14 | blog?: string; |
15 | company?: string; |
16 | default_repository_permission?: "read" | "write" | "admin" | "none"; |
17 | dependabot_alerts_enabled_for_new_repositories?: boolean; |
18 | dependabot_security_updates_enabled_for_new_repositories?: boolean; |
19 | dependency_graph_enabled_for_new_repositories?: boolean; |
20 | description?: string; |
21 | email?: string; |
22 | has_organization_projects?: boolean; |
23 | has_repository_projects?: boolean; |
24 | location?: string; |
25 | members_allowed_repository_creation_type?: "all" | "private" | "none"; |
26 | members_can_create_internal_repositories?: boolean; |
27 | members_can_create_pages?: boolean; |
28 | members_can_create_private_pages?: boolean; |
29 | members_can_create_private_repositories?: boolean; |
30 | members_can_create_public_pages?: boolean; |
31 | members_can_create_public_repositories?: boolean; |
32 | members_can_create_repositories?: boolean; |
33 | members_can_fork_private_repositories?: boolean; |
34 | name?: string; |
35 | secret_scanning_enabled_for_new_repositories?: boolean; |
36 | secret_scanning_push_protection_custom_link?: string; |
37 | secret_scanning_push_protection_custom_link_enabled?: boolean; |
38 | secret_scanning_push_protection_enabled_for_new_repositories?: boolean; |
39 | twitter_username?: string; |
40 | web_commit_signoff_required?: boolean; |
41 | [k: string]: unknown; |
42 | } |
43 | ) { |
44 | const url = new URL(`https://api.github.com/orgs/${org}`); |
45 |
|
46 | const response = await fetch(url, { |
47 | method: "PATCH", |
48 | headers: { |
49 | "Content-Type": "application/json", |
50 | Authorization: "Bearer " + auth.token, |
51 | }, |
52 | body: JSON.stringify(body), |
53 | }); |
54 | if (!response.ok) { |
55 | const text = await response.text(); |
56 | throw new Error(`${response.status} ${text}`); |
57 | } |
58 | return await response.json(); |
59 | } |
60 |
|