diff --git a/packages_generated/iam/src/v1alpha1/api.gen.ts b/packages_generated/iam/src/v1alpha1/api.gen.ts index e7ec19cde..8ccf82c2f 100644 --- a/packages_generated/iam/src/v1alpha1/api.gen.ts +++ b/packages_generated/iam/src/v1alpha1/api.gen.ts @@ -7,7 +7,6 @@ import { urlParams, validatePathParam, } from '@scaleway/sdk-client' - import { marshalAddGroupMemberRequest, marshalAddGroupMembersRequest, @@ -20,6 +19,7 @@ import { marshalCreateSSHKeyRequest, marshalCreateUserRequest, marshalJoinUserConnectionRequest, + marshalParseSamlMetadataRequest, marshalRemoveGroupMemberRequest, marshalRemoveUserConnectionRequest, marshalSetGroupMembersRequest, @@ -61,6 +61,7 @@ import { unmarshalMFAOTP, unmarshalOrganization, unmarshalOrganizationSecuritySettings, + unmarshalParseSamlMetadataResponse, unmarshalPolicy, unmarshalQuotum, unmarshalSSHKey, @@ -147,6 +148,8 @@ import type { MFAOTP, Organization, OrganizationSecuritySettings, + ParseSamlMetadataRequest, + ParseSamlMetadataResponse, Policy, Quotum, RemoveGroupMemberRequest, @@ -1482,6 +1485,25 @@ export class API extends ParentAPI { path: `/iam/v1alpha1/saml/${validatePathParam('samlId', request.samlId)}`, }) + /** + * Parse SAML xml metadata file. + * + * @param request - The request {@link ParseSamlMetadataRequest} + * @returns A Promise of ParseSamlMetadataResponse + */ + parseSamlMetadata = async (request: Readonly) => + this.client.fetch( + { + body: JSON.stringify( + await marshalParseSamlMetadataRequest(request, this.client.settings), + ), + headers: jsonContentHeaders, + method: 'POST', + path: `/iam/v1alpha1/parse-saml-metadata`, + }, + unmarshalParseSamlMetadataResponse, + ) + /** * List SAML certificates. * diff --git a/packages_generated/iam/src/v1alpha1/index.gen.ts b/packages_generated/iam/src/v1alpha1/index.gen.ts index 47df34cae..417969aa9 100644 --- a/packages_generated/iam/src/v1alpha1/index.gen.ts +++ b/packages_generated/iam/src/v1alpha1/index.gen.ts @@ -99,6 +99,8 @@ export type { MFAOTP, Organization, OrganizationSecuritySettings, + ParseSamlMetadataRequest, + ParseSamlMetadataResponse, PermissionSet, PermissionSetScopeType, Policy, diff --git a/packages_generated/iam/src/v1alpha1/marshalling.gen.ts b/packages_generated/iam/src/v1alpha1/marshalling.gen.ts index 03a7b1b10..2db633b5a 100644 --- a/packages_generated/iam/src/v1alpha1/marshalling.gen.ts +++ b/packages_generated/iam/src/v1alpha1/marshalling.gen.ts @@ -3,6 +3,7 @@ import randomName from '@scaleway/random-name' import { isJSONObject, + marshalBlobToScwFile, resolveOneOf, unmarshalArrayOfObject, unmarshalDate, @@ -49,6 +50,8 @@ import type { MFAOTP, Organization, OrganizationSecuritySettings, + ParseSamlMetadataRequest, + ParseSamlMetadataResponse, PermissionSet, Policy, Quotum, @@ -703,6 +706,22 @@ export const unmarshalOrganizationSecuritySettings = ( } as OrganizationSecuritySettings } +export const unmarshalParseSamlMetadataResponse = ( + data: unknown, +): ParseSamlMetadataResponse => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'ParseSamlMetadataResponse' failed as data isn't a dictionary.`, + ) + } + + return { + entityId: data.entity_id, + signingCertificates: data.signing_certificates, + singleSignOnUrl: data.single_sign_on_url, + } as ParseSamlMetadataResponse +} + const unmarshalSamlServiceProvider = (data: unknown): SamlServiceProvider => { if (!isJSONObject(data)) { throw new TypeError( @@ -908,6 +927,13 @@ export const marshalJoinUserConnectionRequest = ( token: request.token, }) +export const marshalParseSamlMetadataRequest = async ( + request: ParseSamlMetadataRequest, + defaults: DefaultValues, +): Promise> => ({ + file: await marshalBlobToScwFile(request.file), +}) + export const marshalRemoveGroupMemberRequest = ( request: RemoveGroupMemberRequest, defaults: DefaultValues, diff --git a/packages_generated/iam/src/v1alpha1/types.gen.ts b/packages_generated/iam/src/v1alpha1/types.gen.ts index 6da347ad0..9cc0042e8 100644 --- a/packages_generated/iam/src/v1alpha1/types.gen.ts +++ b/packages_generated/iam/src/v1alpha1/types.gen.ts @@ -1814,6 +1814,16 @@ export interface OrganizationSecuritySettings { maxLoginSessionDuration?: string } +export type ParseSamlMetadataRequest = { + file: Blob +} + +export interface ParseSamlMetadataResponse { + singleSignOnUrl: string + entityId: string + signingCertificates: string[] +} + export type RemoveGroupMemberRequest = { /** * ID of the group.