1 | type Cloudflare = { |
2 | token: string; |
3 | email: string; |
4 | key: string; |
5 | }; |
6 | |
7 | * Update an Access application |
8 | * Updates an Access application. |
9 | */ |
10 | export async function main( |
11 | auth: Cloudflare, |
12 | app_id: string, |
13 | identifier: string, |
14 | body: |
15 | | ({ |
16 | aud?: string; |
17 | created_at?: string; |
18 | id?: string; |
19 | updated_at?: string; |
20 | [k: string]: unknown; |
21 | } & { |
22 | allowed_idps?: string[]; |
23 | app_launcher_visible?: boolean; |
24 | auto_redirect_to_identity?: boolean; |
25 | cors_headers?: { |
26 | allow_all_headers?: boolean; |
27 | allow_all_methods?: boolean; |
28 | allow_all_origins?: boolean; |
29 | allow_credentials?: boolean; |
30 | allowed_headers?: unknown[]; |
31 | allowed_methods?: ( |
32 | | "GET" |
33 | | "POST" |
34 | | "HEAD" |
35 | | "PUT" |
36 | | "DELETE" |
37 | | "CONNECT" |
38 | | "OPTIONS" |
39 | | "TRACE" |
40 | | "PATCH" |
41 | )[]; |
42 | allowed_origins?: unknown[]; |
43 | max_age?: number; |
44 | [k: string]: unknown; |
45 | }; |
46 | custom_deny_message?: string; |
47 | custom_deny_url?: string; |
48 | domain: string; |
49 | enable_binding_cookie?: boolean; |
50 | http_only_cookie_attribute?: boolean; |
51 | logo_url?: string; |
52 | name?: string; |
53 | same_site_cookie_attribute?: string; |
54 | service_auth_401_redirect?: boolean; |
55 | session_duration?: string; |
56 | skip_interstitial?: boolean; |
57 | type: string; |
58 | [k: string]: unknown; |
59 | }) |
60 | | ({ |
61 | aud?: string; |
62 | created_at?: string; |
63 | id?: string; |
64 | updated_at?: string; |
65 | [k: string]: unknown; |
66 | } & { |
67 | allowed_idps?: string[]; |
68 | app_launcher_visible?: boolean; |
69 | auto_redirect_to_identity?: boolean; |
70 | logo_url?: string; |
71 | name?: string; |
72 | saas_app?: { |
73 | consumer_service_url?: string; |
74 | created_at?: string; |
75 | custom_attributes?: { |
76 | name?: string; |
77 | name_format?: |
78 | | "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified" |
79 | | "urn:oasis:names:tc:SAML:2.0:attrname-format:basic" |
80 | | "urn:oasis:names:tc:SAML:2.0:attrname-format:uri"; |
81 | source?: { name?: string; [k: string]: unknown }; |
82 | [k: string]: unknown; |
83 | }; |
84 | idp_entity_id?: string; |
85 | name_id_format?: "id" | "email"; |
86 | public_key?: string; |
87 | sp_entity_id?: string; |
88 | sso_endpoint?: string; |
89 | updated_at?: string; |
90 | [k: string]: unknown; |
91 | }; |
92 | type?: string; |
93 | [k: string]: unknown; |
94 | }) |
95 | | ({ |
96 | aud?: string; |
97 | created_at?: string; |
98 | id?: string; |
99 | updated_at?: string; |
100 | [k: string]: unknown; |
101 | } & ({ |
102 | allowed_idps?: string[]; |
103 | app_launcher_visible?: boolean; |
104 | auto_redirect_to_identity?: boolean; |
105 | cors_headers?: { |
106 | allow_all_headers?: boolean; |
107 | allow_all_methods?: boolean; |
108 | allow_all_origins?: boolean; |
109 | allow_credentials?: boolean; |
110 | allowed_headers?: unknown[]; |
111 | allowed_methods?: ( |
112 | | "GET" |
113 | | "POST" |
114 | | "HEAD" |
115 | | "PUT" |
116 | | "DELETE" |
117 | | "CONNECT" |
118 | | "OPTIONS" |
119 | | "TRACE" |
120 | | "PATCH" |
121 | )[]; |
122 | allowed_origins?: unknown[]; |
123 | max_age?: number; |
124 | [k: string]: unknown; |
125 | }; |
126 | custom_deny_message?: string; |
127 | custom_deny_url?: string; |
128 | domain: string; |
129 | enable_binding_cookie?: boolean; |
130 | http_only_cookie_attribute?: boolean; |
131 | logo_url?: string; |
132 | name?: string; |
133 | same_site_cookie_attribute?: string; |
134 | service_auth_401_redirect?: boolean; |
135 | session_duration?: string; |
136 | skip_interstitial?: boolean; |
137 | type: string; |
138 | [k: string]: unknown; |
139 | } & { type?: string; [k: string]: unknown })) |
140 | | ({ |
141 | aud?: string; |
142 | created_at?: string; |
143 | id?: string; |
144 | updated_at?: string; |
145 | [k: string]: unknown; |
146 | } & ({ |
147 | allowed_idps?: string[]; |
148 | app_launcher_visible?: boolean; |
149 | auto_redirect_to_identity?: boolean; |
150 | cors_headers?: { |
151 | allow_all_headers?: boolean; |
152 | allow_all_methods?: boolean; |
153 | allow_all_origins?: boolean; |
154 | allow_credentials?: boolean; |
155 | allowed_headers?: unknown[]; |
156 | allowed_methods?: ( |
157 | | "GET" |
158 | | "POST" |
159 | | "HEAD" |
160 | | "PUT" |
161 | | "DELETE" |
162 | | "CONNECT" |
163 | | "OPTIONS" |
164 | | "TRACE" |
165 | | "PATCH" |
166 | )[]; |
167 | allowed_origins?: unknown[]; |
168 | max_age?: number; |
169 | [k: string]: unknown; |
170 | }; |
171 | custom_deny_message?: string; |
172 | custom_deny_url?: string; |
173 | domain: string; |
174 | enable_binding_cookie?: boolean; |
175 | http_only_cookie_attribute?: boolean; |
176 | logo_url?: string; |
177 | name?: string; |
178 | same_site_cookie_attribute?: string; |
179 | service_auth_401_redirect?: boolean; |
180 | session_duration?: string; |
181 | skip_interstitial?: boolean; |
182 | type: string; |
183 | [k: string]: unknown; |
184 | } & { type?: string; [k: string]: unknown })) |
185 | | ({ |
186 | aud?: string; |
187 | created_at?: string; |
188 | id?: string; |
189 | updated_at?: string; |
190 | [k: string]: unknown; |
191 | } & ({ |
192 | allowed_idps?: string[]; |
193 | auto_redirect_to_identity?: boolean; |
194 | domain?: string; |
195 | name?: string; |
196 | session_duration?: string; |
197 | type: |
198 | | "self_hosted" |
199 | | "saas" |
200 | | "ssh" |
201 | | "vnc" |
202 | | "app_launcher" |
203 | | "warp" |
204 | | "biso" |
205 | | "bookmark" |
206 | | "dash_sso"; |
207 | [k: string]: unknown; |
208 | } & { |
209 | domain?: { [k: string]: unknown }; |
210 | name?: string; |
211 | type?: string; |
212 | [k: string]: unknown; |
213 | })) |
214 | | ({ |
215 | aud?: string; |
216 | created_at?: string; |
217 | id?: string; |
218 | updated_at?: string; |
219 | [k: string]: unknown; |
220 | } & ({ |
221 | allowed_idps?: string[]; |
222 | auto_redirect_to_identity?: boolean; |
223 | domain?: string; |
224 | name?: string; |
225 | session_duration?: string; |
226 | type: |
227 | | "self_hosted" |
228 | | "saas" |
229 | | "ssh" |
230 | | "vnc" |
231 | | "app_launcher" |
232 | | "warp" |
233 | | "biso" |
234 | | "bookmark" |
235 | | "dash_sso"; |
236 | [k: string]: unknown; |
237 | } & { |
238 | domain?: { [k: string]: unknown }; |
239 | name?: string; |
240 | type?: string; |
241 | [k: string]: unknown; |
242 | })) |
243 | | ({ |
244 | aud?: string; |
245 | created_at?: string; |
246 | id?: string; |
247 | updated_at?: string; |
248 | [k: string]: unknown; |
249 | } & ({ |
250 | allowed_idps?: string[]; |
251 | auto_redirect_to_identity?: boolean; |
252 | domain?: string; |
253 | name?: string; |
254 | session_duration?: string; |
255 | type: |
256 | | "self_hosted" |
257 | | "saas" |
258 | | "ssh" |
259 | | "vnc" |
260 | | "app_launcher" |
261 | | "warp" |
262 | | "biso" |
263 | | "bookmark" |
264 | | "dash_sso"; |
265 | [k: string]: unknown; |
266 | } & { |
267 | domain?: { [k: string]: unknown }; |
268 | name?: string; |
269 | type?: string; |
270 | [k: string]: unknown; |
271 | })) |
272 | | ({ |
273 | aud?: string; |
274 | created_at?: string; |
275 | id?: string; |
276 | updated_at?: string; |
277 | [k: string]: unknown; |
278 | } & { |
279 | app_launcher_visible?: boolean; |
280 | domain: { [k: string]: unknown }; |
281 | logo_url?: string; |
282 | name?: string; |
283 | type: string; |
284 | [k: string]: unknown; |
285 | }) |
286 | ) { |
287 | const url = new URL( |
288 | `https://api.cloudflare.com/client/v4/zones/${identifier}/access/apps/${app_id}` |
289 | ); |
290 |
|
291 | const response = await fetch(url, { |
292 | method: "PUT", |
293 | headers: { |
294 | "X-AUTH-EMAIL": auth.email, |
295 | "X-AUTH-KEY": auth.key, |
296 | "Content-Type": "application/json", |
297 | Authorization: "Bearer " + auth.token, |
298 | }, |
299 | body: JSON.stringify(body), |
300 | }); |
301 | if (!response.ok) { |
302 | const text = await response.text(); |
303 | throw new Error(`${response.status} ${text}`); |
304 | } |
305 | return await response.json(); |
306 | } |
307 |
|