Update an Access application

Updates an Access application.

Script cloudflare Verified

by hugo697 ยท 11/16/2023

The script

Submitted by hugo697 Typescript (fetch-only)
Verified 383 days ago
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