Update an Access identity provider

Updates a configured identity provider.

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 identity provider
8
 * Updates a configured identity provider.
9
 */
10
export async function main(
11
  auth: Cloudflare,
12
  uuid: string,
13
  identifier: string,
14
  body:
15
    | ({
16
        config: { [k: string]: unknown };
17
        id?: string;
18
        name: string;
19
        scim_config?: {
20
          enabled?: boolean;
21
          group_member_deprovision?: boolean;
22
          seat_deprovision?: boolean;
23
          secret?: string;
24
          user_deprovision?: boolean;
25
          [k: string]: unknown;
26
        };
27
        type: string;
28
        [k: string]: unknown;
29
      } & {
30
        config?: {
31
          client_id?: string;
32
          client_secret?: string;
33
          [k: string]: unknown;
34
        } & {
35
          conditional_access_enabled?: boolean;
36
          directory_id?: string;
37
          support_groups?: boolean;
38
          [k: string]: unknown;
39
        };
40
        [k: string]: unknown;
41
      })
42
    | ({
43
        config: { [k: string]: unknown };
44
        id?: string;
45
        name: string;
46
        scim_config?: {
47
          enabled?: boolean;
48
          group_member_deprovision?: boolean;
49
          seat_deprovision?: boolean;
50
          secret?: string;
51
          user_deprovision?: boolean;
52
          [k: string]: unknown;
53
        };
54
        type: string;
55
        [k: string]: unknown;
56
      } & {
57
        config?: {
58
          client_id?: string;
59
          client_secret?: string;
60
          [k: string]: unknown;
61
        } & {
62
          centrify_account?: string;
63
          centrify_app_id?: string;
64
          [k: string]: unknown;
65
        };
66
        [k: string]: unknown;
67
      })
68
    | ({
69
        config: { [k: string]: unknown };
70
        id?: string;
71
        name: string;
72
        scim_config?: {
73
          enabled?: boolean;
74
          group_member_deprovision?: boolean;
75
          seat_deprovision?: boolean;
76
          secret?: string;
77
          user_deprovision?: boolean;
78
          [k: string]: unknown;
79
        };
80
        type: string;
81
        [k: string]: unknown;
82
      } & {
83
        config?: {
84
          client_id?: string;
85
          client_secret?: string;
86
          [k: string]: unknown;
87
        };
88
        [k: string]: unknown;
89
      })
90
    | ({
91
        config: { [k: string]: unknown };
92
        id?: string;
93
        name: string;
94
        scim_config?: {
95
          enabled?: boolean;
96
          group_member_deprovision?: boolean;
97
          seat_deprovision?: boolean;
98
          secret?: string;
99
          user_deprovision?: boolean;
100
          [k: string]: unknown;
101
        };
102
        type: string;
103
        [k: string]: unknown;
104
      } & {
105
        config?: {
106
          client_id?: string;
107
          client_secret?: string;
108
          [k: string]: unknown;
109
        };
110
        [k: string]: unknown;
111
      })
112
    | ({
113
        config: { [k: string]: unknown };
114
        id?: string;
115
        name: string;
116
        scim_config?: {
117
          enabled?: boolean;
118
          group_member_deprovision?: boolean;
119
          seat_deprovision?: boolean;
120
          secret?: string;
121
          user_deprovision?: boolean;
122
          [k: string]: unknown;
123
        };
124
        type: string;
125
        [k: string]: unknown;
126
      } & {
127
        config?: {
128
          client_id?: string;
129
          client_secret?: string;
130
          [k: string]: unknown;
131
        };
132
        [k: string]: unknown;
133
      })
134
    | ({
135
        config: { [k: string]: unknown };
136
        id?: string;
137
        name: string;
138
        scim_config?: {
139
          enabled?: boolean;
140
          group_member_deprovision?: boolean;
141
          seat_deprovision?: boolean;
142
          secret?: string;
143
          user_deprovision?: boolean;
144
          [k: string]: unknown;
145
        };
146
        type: string;
147
        [k: string]: unknown;
148
      } & {
149
        config?: {
150
          client_id?: string;
151
          client_secret?: string;
152
          [k: string]: unknown;
153
        } & { apps_domain?: string; [k: string]: unknown };
154
        [k: string]: unknown;
155
      })
156
    | ({
157
        config: { [k: string]: unknown };
158
        id?: string;
159
        name: string;
160
        scim_config?: {
161
          enabled?: boolean;
162
          group_member_deprovision?: boolean;
163
          seat_deprovision?: boolean;
164
          secret?: string;
165
          user_deprovision?: boolean;
166
          [k: string]: unknown;
167
        };
168
        type: string;
169
        [k: string]: unknown;
170
      } & {
171
        config?: {
172
          client_id?: string;
173
          client_secret?: string;
174
          [k: string]: unknown;
175
        };
176
        [k: string]: unknown;
177
      })
178
    | ({
179
        config: { [k: string]: unknown };
180
        id?: string;
181
        name: string;
182
        scim_config?: {
183
          enabled?: boolean;
184
          group_member_deprovision?: boolean;
185
          seat_deprovision?: boolean;
186
          secret?: string;
187
          user_deprovision?: boolean;
188
          [k: string]: unknown;
189
        };
190
        type: string;
191
        [k: string]: unknown;
192
      } & {
193
        config?: {
194
          client_id?: string;
195
          client_secret?: string;
196
          [k: string]: unknown;
197
        } & {
198
          auth_url?: string;
199
          certs_url?: string;
200
          claims?: string[];
201
          scopes?: string[];
202
          token_url?: string;
203
          [k: string]: unknown;
204
        };
205
        [k: string]: unknown;
206
      })
207
    | ({
208
        config: { [k: string]: unknown };
209
        id?: string;
210
        name: string;
211
        scim_config?: {
212
          enabled?: boolean;
213
          group_member_deprovision?: boolean;
214
          seat_deprovision?: boolean;
215
          secret?: string;
216
          user_deprovision?: boolean;
217
          [k: string]: unknown;
218
        };
219
        type: string;
220
        [k: string]: unknown;
221
      } & {
222
        config?: {
223
          client_id?: string;
224
          client_secret?: string;
225
          [k: string]: unknown;
226
        } & { okta_account?: string; [k: string]: unknown };
227
        [k: string]: unknown;
228
      })
229
    | ({
230
        config: { [k: string]: unknown };
231
        id?: string;
232
        name: string;
233
        scim_config?: {
234
          enabled?: boolean;
235
          group_member_deprovision?: boolean;
236
          seat_deprovision?: boolean;
237
          secret?: string;
238
          user_deprovision?: boolean;
239
          [k: string]: unknown;
240
        };
241
        type: string;
242
        [k: string]: unknown;
243
      } & {
244
        config?: {
245
          client_id?: string;
246
          client_secret?: string;
247
          [k: string]: unknown;
248
        } & { onelogin_account?: string; [k: string]: unknown };
249
        [k: string]: unknown;
250
      })
251
    | ({
252
        config: { [k: string]: unknown };
253
        id?: string;
254
        name: string;
255
        scim_config?: {
256
          enabled?: boolean;
257
          group_member_deprovision?: boolean;
258
          seat_deprovision?: boolean;
259
          secret?: string;
260
          user_deprovision?: boolean;
261
          [k: string]: unknown;
262
        };
263
        type: string;
264
        [k: string]: unknown;
265
      } & {
266
        config?: {
267
          client_id?: string;
268
          client_secret?: string;
269
          [k: string]: unknown;
270
        } & { ping_env_id?: string; [k: string]: unknown };
271
        [k: string]: unknown;
272
      })
273
    | ({
274
        config: { [k: string]: unknown };
275
        id?: string;
276
        name: string;
277
        scim_config?: {
278
          enabled?: boolean;
279
          group_member_deprovision?: boolean;
280
          seat_deprovision?: boolean;
281
          secret?: string;
282
          user_deprovision?: boolean;
283
          [k: string]: unknown;
284
        };
285
        type: string;
286
        [k: string]: unknown;
287
      } & {
288
        config?: {
289
          attributes?: string[];
290
          email_attribute_name?: string;
291
          header_attributes?: {
292
            attribute_name?: string;
293
            header_name?: string;
294
            [k: string]: unknown;
295
          }[];
296
          idp_public_certs?: string[];
297
          issuer_url?: string;
298
          sign_request?: boolean;
299
          sso_target_url?: string;
300
          [k: string]: unknown;
301
        };
302
        [k: string]: unknown;
303
      })
304
    | ({
305
        config: { [k: string]: unknown };
306
        id?: string;
307
        name: string;
308
        scim_config?: {
309
          enabled?: boolean;
310
          group_member_deprovision?: boolean;
311
          seat_deprovision?: boolean;
312
          secret?: string;
313
          user_deprovision?: boolean;
314
          [k: string]: unknown;
315
        };
316
        type: string;
317
        [k: string]: unknown;
318
      } & {
319
        config?: {
320
          client_id?: string;
321
          client_secret?: string;
322
          [k: string]: unknown;
323
        };
324
        [k: string]: unknown;
325
      })
326
) {
327
  const url = new URL(
328
    `https://api.cloudflare.com/client/v4/zones/${identifier}/access/identity_providers/${uuid}`
329
  );
330

331
  const response = await fetch(url, {
332
    method: "PUT",
333
    headers: {
334
      "X-AUTH-EMAIL": auth.email,
335
      "X-AUTH-KEY": auth.key,
336
      "Content-Type": "application/json",
337
      Authorization: "Bearer " + auth.token,
338
    },
339
    body: JSON.stringify(body),
340
  });
341
  if (!response.ok) {
342
    const text = await response.text();
343
    throw new Error(`${response.status} ${text}`);
344
  }
345
  return await response.json();
346
}
347