Akamai.IAM.psm1
|
function Get-BodyObject { [CmdletBinding()] Param( [Parameter(Mandatory)] $Source ) if ($Source -is 'String') { # Trim whitespace $Source = $Source.Trim() # Handle JSON array if ($Source.StartsWith('[')) { $BodyObject = ConvertFrom-Json -InputObject $Source -AsArray -NoEnumerate } # Handle standard JSON object elseif ($Source.StartsWith('{') -and $Source.EndsWith('}')) { $BodyObject = ConvertFrom-Json -InputObject $Source } # If none of the above, just use string as-is else { $BodyObject = $Source } } elseif ($Source -is 'Hashtable') { $BodyObject = [PScustomObject] $Source } elseif ($Source -is 'PSCustomObject' -or $Source -is 'Object' -or $Source -is 'Object[]') { $BodyObject = $Source } else { throw "Source param is of an unhandled type '$($Source.GetType().Name)'" } return $BodyObject } function Block-IAMPropertyUsers { [CmdletBinding()] Param( [Parameter(Mandatory)] [Alias('PropertyID')] [int] $AssetID, [Parameter(Mandatory, ValueFromPipeline)] [string] $UIIdentityID, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) begin { if ($PSCmdlet.MyInvocation.ExpectingInput) { $CollatedIDs = New-Object -TypeName System.Collections.ArrayList } } process { if ($PSCmdlet.MyInvocation.ExpectingInput) { $CollatedIDs.Add($UIIdentityID) | Out-Null } } end { $Body = New-Object -TypeName System.Collections.ArrayList if (!$PSCmdlet.MyInvocation.ExpectingInput) { $CollatedIDs = $UIIdentityID } $CollatedIDs | ForEach-Object { $Body.Add(@{ "uiIdentityId" = $_ }) | Out-Null } $Path = "/identity-management/v3/user-admin/properties/$AssetID/users/block" $RequestParams = @{ 'Path' = $Path 'Method' = 'PUT' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Disable-IAMAPICredential { [CmdletBinding()] Param( [Parameter()] [string] $ClientID = 'self', [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [int] $CredentialID, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { if ($ClientID -eq 'self') { $Path = "/identity-management/v3/api-clients/self/credentials/deactivate" } else { $Path = "/identity-management/v3/api-clients/$ClientID/credentials/deactivate" } if ($CredentialID) { if ($ClientID -eq 'self') { $Path = "/identity-management/v3/api-clients/self/credentials/$CredentialId/deactivate" } else { $Path = "/identity-management/v3/api-clients/$ClientID/credentials/$CredentialId/deactivate" } } $RequestParams = @{ 'Path' = $Path 'Method' = 'POST' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Disable-IAMIPAllowList { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/ip-acl/allowlist/disable" $RequestParams = @{ 'Path' = $Path 'Method' = 'POST' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Enable-IAMIPAllowList { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/ip-acl/allowlist/enable" $RequestParams = @{ 'Path' = $Path 'Method' = 'POST' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-AccountSwitchKey { [CmdletBinding()] Param( [Parameter(Position = 0)] [string] $Search, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section ) process { $Path = "/identity-management/v3/api-clients/self/account-switch-keys" $QueryParameters = @{ 'search' = $Search } $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'QueryParameters' = $QueryParameters 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = 'none' } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMAccessibleGroups { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [Alias('uiUserName')] [string] $Username, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/users/$Username/group-access" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMAdminContactTypes { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/common/contact-types" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMAdminCountries { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/common/countries" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMAdminLanguages { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/common/supported-languages" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMAdminPasswordPolicy { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/common/password-policy" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMAdminProducts { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/common/notification-products" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMAdminStates { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline)] [ValidateSet('USA', 'Canada')] [string] $Country, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/common/countries/$Country/states" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMAdminTimeoutPolicy { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/common/timeout-policies" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMAdminTimeZones { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/common/timezones" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMAllowedAPIs { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [Alias('uiUserName')] [string] $Username, [Parameter()] [ValidateSet('CLIENT', 'USER_CLIENT', 'SERVICE_ACCOUNT')] [string] $ClientType, [Parameter()] [switch] $AllowAccountSwitch, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/users/$Username/allowed-apis" $QueryParameters = @{ 'clientType' = $ClientType 'allowAccountSwitch' = $PSBoundParameters.AllowAccountSwitch.IsPresent } $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'QueryParameters' = $QueryParameters 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMAllowedCPCodes { [CmdletBinding()] Param( [Parameter(Mandatory)] [Alias('uiUserName')] [string] $Username, [Parameter(Mandatory)] $Body, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/users/$Username/allowed-cpcodes" $RequestParams = @{ 'Path' = $Path 'Method' = 'POST' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMAPIClient { [CmdletBinding()] Param( [Parameter(ParameterSetName = 'Get one', ValueFromPipeline, ValueFromPipelineByPropertyName)] [string] $ClientID, [Parameter()] [switch] $Actions, [Parameter(ParameterSetName = 'Get one')] [switch] $GroupAccess, [Parameter(ParameterSetName = 'Get one')] [switch] $APIAccess, [Parameter(ParameterSetName = 'Get one')] [switch] $Credentials, [Parameter(ParameterSetName = 'Get one')] [switch] $IPACL, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { if ($ClientID) { if ($ClientID -eq 'self') { $Path = "/identity-management/v3/api-clients/self" } else { $Path = "/identity-management/v3/api-clients/$ClientID" } } else { $Path = "/identity-management/v3/api-clients" } $QueryParameters = @{ 'actions' = $PSBoundParameters.Actions.IsPresent 'groupAccess' = $PSBoundParameters.GroupAccess.IsPresent 'apiAccess' = $PSBoundParameters.APIAccess.IsPresent 'credentials' = $PSBoundParameters.Credentials.IsPresent 'ipAcl' = $PSBoundParameters.IPACL.IsPresent } $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'QueryParameters' = $QueryParameters 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMAPICredential { [CmdletBinding()] Param( [Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName)] [string] $ClientID = 'self', [Parameter(ValueFromPipelineByPropertyName)] [int] $CredentialID, [Parameter()] [switch] $Actions, [Parameter()] [switch] $ActiveOnly, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { if ($null -ne $PSBoundParameters.CredentialId) { if ($ClientID -eq 'self') { $Path = "/identity-management/v3/api-clients/self/credentials/$CredentialId" } else { $Path = "/identity-management/v3/api-clients/$ClientID/credentials/$CredentialId" } } else { if ($ClientID -eq 'self') { $Path = "/identity-management/v3/api-clients/self/credentials" } else { $Path = "/identity-management/v3/api-clients/$ClientID/credentials" } } $QueryParameters = @{ 'actions' = $Actions.IsPresent } $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'QueryParameters' = $QueryParameters 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams if ($ActiveOnly) { return $Response.Body | Where-Object { $_.status -eq 'ACTIVE' } } else { return $Response.Body } } } function Get-IAMAuthorizedUsers { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/users" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMCIDRBlock { [CmdletBinding()] Param( [Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName)] [int] $CIDRBlockID, [Parameter()] [switch] $Actions, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { if ($CIDRBlockID) { $Path = "/identity-management/v3/user-admin/ip-acl/allowlist/$CIDRBlockID" } else { $Path = "/identity-management/v3/user-admin/ip-acl/allowlist" } $QueryParameters = @{ 'actions' = $Actions.IsPresent } $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'QueryParameters' = $QueryParameters 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMGrantableRole { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/roles/grantable-roles" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMGroup { [CmdletBinding()] Param( [Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName)] [int] $GroupID, [Parameter()] [switch] $Actions, [Parameter()] [switch] $Flatten, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { function flatten($Group) { $Output = New-Object -TypeName System.Collections.Generic.List[Object] $Output.Add($Group) $Group.SubGroups | ForEach-Object { $SubGroups = flatten($_) foreach ($SubGroup in $SubGroups) { $Output.Add($SubGroup) } } return $Output } if ($GroupID) { $Path = "/identity-management/v3/user-admin/groups/$GroupID" } else { $Path = "/identity-management/v3/user-admin/groups" } $QueryParameters = @{ 'actions' = $PSBoundParameters.Actions.IsPresent } $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'QueryParameters' = $QueryParameters 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams if ($Flatten) { $FlattenedGroups = New-Object -TypeName System.Collections.Generic.List[Object] foreach ($Group in $Response.Body) { $FlattenedGroup = flatten($Group) if ($FlattenedGroup.count -eq 1) { $FlattenedGroups.Add($FlattenedGroup) } elseif ($FlattenedGroup.count -gt 1) { $FlattenedGroups.AddRange($FlattenedGroup) } } return $FlattenedGroups } else { return $Response.Body } } } function Get-IAMGroupMoveAffectedUsers { [CmdletBinding()] Param( [Parameter(Mandatory)] [int] $SourceGroupID, [Parameter(Mandatory)] [int] $DestinationGroupID, [Parameter()] [ValidateSet('lostAccess', 'gainAccess')] [string] $UserType, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/groups/move/$SourceGroupID/$DestinationGroupID/affected-users" $QueryParameters = @{ 'userType' = $UserType } $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'QueryParameters' = $QueryParameters 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMIPAllowListStatus { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/ip-acl/allowlist/status" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMProperty { [CmdletBinding(DefaultParameterSetName = 'Get all')] Param( [Parameter(ParameterSetName = 'Get one', Mandatory, ValueFromPipeline)] [Alias('PropertyID')] [int] $AssetID, [Parameter(ParameterSetName = 'Get one', Mandatory)] [Parameter(ParameterSetName = 'Get all')] [int] $GroupID, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { if ($AssetID) { $Path = "/identity-management/v3/user-admin/properties/$AssetID" } else { $Path = "/identity-management/v3/user-admin/properties" } if ($PSCmdlet.ParameterSetName -eq 'Get one') { $QueryParameters = @{ 'groupId' = $GroupID } } $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'QueryParameters' = $QueryParameters 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMPropertyResources { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [Alias('PropertyID')] [int] $AssetID, [Parameter(Mandatory, ValueFromPipelineByPropertyName)] [int] $GroupID, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/properties/$AssetID/resources" $QueryParameters = @{ 'groupId' = $GroupID } $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'QueryParameters' = $QueryParameters 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMPropertyUsers { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [Alias('PropertyID')] [int] $AssetID, [Parameter()] [string] [ValidateSet('lostAccess', 'gainAccess')] $UserType, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/properties/$AssetID/users" $QueryParameters = @{ 'userType' = $UserType } $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'QueryParameters' = $QueryParameters 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMRole { [CmdletBinding(DefaultParameterSetName = 'Get all')] Param( [Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName)] [int] $RoleID, [Parameter()] [switch] $Actions, [Parameter(ParameterSetName = 'Get one')] [switch] $GrantedRoles, [Parameter(ParameterSetName = 'Get all')] [int] $GroupID, [Parameter(ParameterSetName = 'Get all')] [switch] $Users, [Parameter(ParameterSetName = 'Get all')] [switch] $IgnoreContext, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { if ($RoleID) { $Path = "/identity-management/v3/user-admin/roles/$RoleID" } else { $Path = "/identity-management/v3/user-admin/roles" } if ($PSCmdlet.ParameterSetName -eq 'Get one') { $QueryParameters = @{ 'actions' = $Actions.IsPresent 'grantedRoles' = $GrantedRoles.IsPresent } } if ($PSCmdlet.ParameterSetName -eq 'Get all') { $QueryParameters = @{ 'actions' = $Actions.IsPresent 'groupId' = $GroupID 'users' = $Users.IsPresent 'ignoreContext' = $IgnoreContext.IsPresent } } $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'QueryParameters' = $QueryParameters 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMUser { [CmdletBinding(DefaultParameterSetName = 'Get all')] Param( [Parameter(ParameterSetName = 'Get one', ValueFromPipeline, ValueFromPipelineByPropertyName)] [string] $UIIdentityID, [Parameter()] [switch] $Actions, [Parameter()] [switch] $AuthGrants, [Parameter(ParameterSetName = 'Get one')] [switch] $Notifications, [Parameter(ParameterSetName = 'Get all')] [int] $GroupID, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { if ($UIIdentityID) { $Path = "/identity-management/v3/user-admin/ui-identities/$UIIdentityID" } else { $Path = "/identity-management/v3/user-admin/ui-identities" } if ($PSCmdlet.ParameterSetName -eq 'Get one') { $QueryParameters = @{ 'actions' = $PSBoundParameters.Actions.IsPresent 'authGrants' = $PSBoundParameters.AuthGrants.IsPresent 'notifications' = $PSBoundParameters.Notifications.IsPresent } } if ($PSCmdlet.ParameterSetName -eq 'Get all') { $QueryParameters = @{ 'actions' = $PSBoundParameters.Actions.IsPresent 'authGrants' = $PSBoundParameters.AuthGrants.IsPresent 'groupId' = $PSBoundParameters.GroupID } } $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'QueryParameters' = $QueryParameters 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMUserBlockedProperties { [CmdletBinding()] Param( [Parameter(Mandatory)] [string] $UIIdentityID, [Parameter(Mandatory)] [int] $GroupID, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/ui-identities/$UIIdentityID/groups/$GroupID/blocked-properties" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMUserContactTypes { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-profile/common/contact-types" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMUserCountries { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-profile/common/countries" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMUserLanguages { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-profile/common/supported-languages" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMUserPasswordPolicy { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-profile/common/password-policy" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMUserProducts { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-profile/common/notification-products" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMUserProfile { [CmdletBinding()] Param( [Parameter()] [switch] $Actions, [Parameter()] [switch] $AuthGrants, [Parameter()] [switch] $Notifications, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section ) process { $Path = "/identity-management/v3/user-profile" $QueryParameters = @{ 'actions' = $PSBoundParameters.Actions.IsPresent 'authGrants' = $PSBoundParameters.AuthGrants.IsPresent 'notifications' = $PSBoundParameters.Notifications.IsPresent } $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'QueryParameters' = $QueryParameters 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMUserStates { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline)] [ValidateSet('USA', 'Canada')] [string] $Country, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-profile/common/countries/$Country/states" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMUserTimeoutPolicy { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-profile/common/timeout-policies" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Get-IAMUserTimeZones { [CmdletBinding()] Param( [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-profile/common/timezones" $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Lock-IAMAPIClient { [CmdletBinding()] Param( [Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName)] [string] $ClientID = 'self', [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { if ($ClientID -eq 'self') { $Path = "/identity-management/v3/api-clients/self/lock" } else { $Path = "/identity-management/v3/api-clients/$ClientID/lock" } $RequestParams = @{ 'Path' = $Path 'Method' = 'PUT' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Lock-IAMUser { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [string] $UIIdentityID, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/ui-identities/$UIIdentityID/lock" $RequestParams = @{ 'Path' = $Path 'Method' = 'POST' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Move-IAMGroup { [CmdletBinding()] Param( [Parameter(Mandatory)] [int] $SourceGroupID, [Parameter(Mandatory)] [int] $DestinationGroupID, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/groups/move" $Body = @{ 'sourceGroupId' = $SourceGroupID 'destinationGroupId' = $DestinationGroupID } $RequestParams = @{ 'Path' = $Path 'Method' = 'POST' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Move-IAMProperty { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [Alias('PropertyID')] [int] $AssetID, [Parameter(Mandatory)] [int] $SourceGroupID, [Parameter(Mandatory)] [int] $DestinationGroupID, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/properties/$AssetID" $Body = @{ 'sourceGroupId' = $SourceGroupID 'destinationGroupId' = $DestinationGroupID } $RequestParams = @{ 'Path' = $Path 'Method' = 'PUT' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function New-IAMAPIClient { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline)] $Body, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/api-clients" $RequestParams = @{ 'Path' = $Path 'Method' = 'POST' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function New-IAMAPICredential { [CmdletBinding()] Param( [Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName)] [string] $ClientID = 'self', [Parameter()] [switch] $APIResponseOnly, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { if ($ClientID -eq 'self') { $Path = "/identity-management/v3/api-clients/self/credentials" } else { $Path = "/identity-management/v3/api-clients/$ClientID/credentials" } $RequestParams = @{ 'Path' = $Path 'Method' = 'POST' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request try { $Response = Invoke-AkamaiRequest @RequestParams # Unless user specifies, we should hydrate the response to include all creds for easier storage if (-not $APIResponseOnly) { if ($ClientID -eq 'self') { try { $EdgeGridCredentials = Get-EdgegridCredentials -EdgeRCFile $EdgeRCFile -Section $Section -AccountSwitchKey $AccountSwitchKey $Response.body | Add-Member -MemberType NoteProperty -Name 'accessToken' -Value $EdgeGridCredentials.AccessToken $Response.body | Add-Member -MemberType NoteProperty -Name 'host' -Value $EdgeGridCredentials.Host } catch { Write-Warning "Failed to retrieve EdgeGrid credentials. Output will not include accessToken and host: $_" } } else { try { $Client = Get-IAMAPIClient -ClientID $ClientID -EdgeRCFile $EdgeRCFile -Section $Section -AccountSwitchKey $AccountSwitchKey Write-Debug ($Client | ConvertTo-Json -Depth 5) $Response.body | Add-Member -MemberType NoteProperty -Name 'accessToken' -Value $Client.accessToken $Response.body | Add-Member -MemberType NoteProperty -Name 'Host' -Value $Client.baseURL.Replace("https://", "") } catch { Write-Warning "Failed to retrieve API Client details. Output will not include accessToken and host: $_" } } } return $Response.Body } catch { throw $_ } } } function New-IAMCIDRBlock { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline)] [string] $CIDRBlock, [Parameter()] [string] $Comments, [Parameter()] [switch] $Enabled, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/ip-acl/allowlist" $Body = @{ 'cidrBlock' = $CIDRBlock 'comments' = $Comments 'enabled' = $Enabled.IsPresent } $RequestParams = @{ 'Path' = $Path 'Method' = 'POST' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function New-IAMGroup { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline)] [string] $GroupName, [Parameter(Mandatory)] [int] $ParentGroupID, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/groups/$ParentGroupID" $Body = @{ 'groupName' = $GroupName } $RequestParams = @{ 'Path' = $Path 'Method' = 'POST' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function New-IAMRole { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline)] $Body, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/roles" $RequestParams = @{ 'Path' = $Path 'Method' = 'POST' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body }} function New-IAMUser { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline)] $Body, [Parameter()] [switch] $SendEmail, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/ui-identities" $QueryParameters = @{ 'sendEmail' = $PSBoundParameters.SendEmail.IsPresent } $RequestParams = @{ 'Path' = $Path 'Method' = 'POST' 'QueryParameters' = $QueryParameters 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body }} function Remove-IAMAPIClient { [CmdletBinding()] Param( [Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName)] [string] $ClientID = 'self', [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { if ($ClientID -eq 'self') { $Path = "/identity-management/v3/api-clients/self" } else { $Path = "/identity-management/v3/api-clients/$ClientID" } $RequestParams = @{ 'Path' = $Path 'Method' = 'DELETE' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Remove-IAMAPICredential { [CmdletBinding()] Param( [Parameter()] [string] $ClientID = 'self', [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [int] $CredentialID, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { if ($ClientID -eq 'self') { $Path = "/identity-management/v3/api-clients/self/credentials/$CredentialId" } else { $Path = "/identity-management/v3/api-clients/$ClientID/credentials/$CredentialId" } $RequestParams = @{ 'Path' = $Path 'Method' = 'DELETE' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Remove-IAMCIDRBlock { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [string] $CIDRBlockID, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/ip-acl/allowlist/$CIDRBlockID" $RequestParams = @{ 'Path' = $Path 'Method' = 'DELETE' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Remove-IAMGroup { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [int] $GroupID, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/groups/$GroupID" $RequestParams = @{ 'Path' = $Path 'Method' = 'DELETE' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Remove-IAMRole { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [int] $RoleID, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/roles/$RoleID" $RequestParams = @{ 'Path' = $Path 'Method' = 'DELETE' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Remove-IAMUser { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [string] $UIIdentityID, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/ui-identities/$UIIdentityID" $RequestParams = @{ 'Path' = $Path 'Method' = 'DELETE' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Reset-IAMUserMFA { [CmdletBinding()] Param( [Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName)] [string] $UIIdentityID, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { if ($UIIdentityID) { $Path = "/identity-management/v3/user-admin/ui-identities/$UIIdentityID/additionalAuthentication/reset" } else { $Path = '/identity-management/v3/user-profile/additionalAuthentication/reset' } $RequestParams = @{ 'Path' = $Path 'Method' = 'PUT' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Reset-IAMUserPassword { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [string] $UIIdentityID, [Parameter()] [switch] $SendEmail, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/ui-identities/$UIIdentityID/reset-password" $QueryParameters = @{ 'sendEmail' = $PSBoundParameters.SendEmail.IsPresent } $RequestParams = @{ 'Path' = $Path 'Method' = 'POST' 'QueryParameters' = $QueryParameters 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Set-IAMAPIClient { [CmdletBinding()] Param( [Parameter(ValueFromPipelineByPropertyName)] [string] $ClientID = 'self', [Parameter(ValueFromPipeline, Mandatory)] $Body, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { if ($ClientID -eq 'self') { $Path = "/identity-management/v3/api-clients/self" } else { $Path = "/identity-management/v3/api-clients/$ClientID" } $RequestParams = @{ 'Path' = $Path 'Method' = 'PUT' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Set-IAMAPICredential { [CmdletBinding(DefaultParameterSetName = 'Attributes')] Param( [Parameter()] [string] $ClientID = 'self', [Parameter(Mandatory, ValueFromPipelineByPropertyName)] [int] $CredentialID, [Parameter(ParameterSetName = 'Attributes', Mandatory)] [string] $ExpiresOn, [Parameter(ParameterSetName = 'Attributes', Mandatory)] [ValidateSet('ACTIVE', 'INACTIVE', 'DELETED')] [string] $Status, [Parameter(ParameterSetName = 'Attributes')] [string] $Description, [Parameter(ParameterSetName = 'Body', Mandatory, ValueFromPipeline)] $Body, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { if ($ClientID -eq 'self') { $Path = "/identity-management/v3/api-clients/self/credentials/$CredentialId" } else { $Path = "/identity-management/v3/api-clients/$ClientID/credentials/$CredentialId" } if ($PSCmdlet.ParameterSetName.contains('Attributes')) { $Body = @{ 'expiresOn' = $ExpiresOn 'status' = $Status } if ($Description) { $Body.description = $Description } } # Format expiresOn $Body = Get-BodyObject -Source $Body if ($Body.expiresOn -is 'DateTime') { $Body.expiresOn = $Body.expiresOn.toString('yyyy-MM-ddThh:mm:ss.000Z') } $RequestParams = @{ 'Path' = $Path 'Method' = 'PUT' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Set-IAMCIDRBlock { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipelineByPropertyName, ValueFromPipeline)] [int] $CIDRBlockID, [Parameter(Mandatory, ValueFromPipelineByPropertyName)] [string] $CIDRBlock, [Parameter(ValueFromPipelineByPropertyName)] [string] $Comments, [Parameter(ValueFromPipelineByPropertyName)] [switch] $Enabled, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/ip-acl/allowlist/$CIDRBlockID" $Body = @{ 'cidrBlock' = $CIDRBlock 'comments' = $Comments 'enabled' = $Enabled.IsPresent } $RequestParams = @{ 'Path' = $Path 'Method' = 'PUT' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Set-IAMGroup { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipelineByPropertyName)] [int] $GroupID, [Parameter(Mandatory, ValueFromPipelineByPropertyName)] [string] $GroupName, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/groups/$GroupID" $Body = @{ 'groupName' = $GroupName } $RequestParams = @{ 'Path' = $Path 'Method' = 'PUT' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Set-IAMRole { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipelineByPropertyName)] [int] $RoleID, [Parameter(Mandatory, ValueFromPipeline)] $Body, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/roles/$RoleID" $RequestParams = @{ 'Path' = $Path 'Method' = 'PUT' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Set-IAMUser { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipelineByPropertyName)] [string] $UIIdentityID, [Parameter(Mandatory, ValueFromPipeline)] $Body, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/ui-identities/$UIIdentityID/basic-info" $RequestParams = @{ 'Path' = $Path 'Method' = 'PUT' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Set-IAMUserBlockedProperties { [CmdletBinding()] Param( [Parameter(Mandatory)] [string] $UIIdentityID, [Parameter(Mandatory)] [int] $GroupID, [Parameter(Mandatory, ValueFromPipeline)] $Body, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) begin { if ($PSCmdlet.MyInvocation.ExpectingInput) { $CombinedProperties = New-Object -TypeName System.Collections.ArrayList } } process { if ($PSCmdlet.MyInvocation.ExpectingInput) { $CombinedProperties.Add($Body) | Out-Null } } end { if ($PSCmdlet.MyInvocation.ExpectingInput) { $Body = $CombinedProperties } $Path = "/identity-management/v3/user-admin/ui-identities/$UIIdentityID/groups/$GroupID/blocked-properties" $RequestParams = @{ 'Path' = $Path 'Method' = 'PUT' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Set-IAMUserGroupAndRole { [CmdletBinding()] Param( [Parameter(Mandatory)] [string] $UiIdentityID, [Parameter(Mandatory, ValueFromPipeline)] $Body, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) begin { if ($PSCmdlet.MyInvocation.ExpectingInput) { $CombinedAuthGrantsArray = New-Object -TypeName System.Collections.ArrayList } } process { if ($PSCmdlet.MyInvocation.ExpectingInput) { $CombinedAuthGrantsArray.Add($Body) | Out-Null } } end { if ($PSCmdlet.MyInvocation.ExpectingInput) { $Body = $CombinedAuthGrantsArray } $Path = "/identity-management/v3/user-admin/ui-identities/$UiIdentityID/auth-grants" $RequestParams = @{ 'Path' = $Path 'Method' = 'PUT' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Set-IAMUserMFA { [CmdletBinding()] Param( [Parameter()] [string] $UIIdentityID, [Parameter(Mandatory)] [ValidateSet('TFA', 'MFA', 'NONE')] $Value, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { if ($UIIdentityID) { $Path = "/identity-management/v3/user-admin/ui-identities/$UIIdentityID/additionalAuthentication" } else { $Path = '/identity-management/v3/user-profile/additionalAuthentication' } $Body = @{ 'value' = $Value } $RequestParams = @{ 'Path' = $Path 'Method' = 'PUT' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Set-IAMUserNotifications { [CmdletBinding()] Param( [Parameter()] [string] $UIIdentityID, [Parameter(Mandatory, ValueFromPipeline)] $Body, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { if ($UIIdentityID) { $Path = "/identity-management/v3/user-admin/ui-identities/$UIIdentityID/notifications" } else { $Path = "/identity-management/v3/user-profile/notifications" } $RequestParams = @{ 'Path' = $Path 'Method' = 'PUT' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body }} function Set-IAMUserPassword { [CmdletBinding(DefaultParameterSetName = 'Other users')] Param( [Parameter(ParameterSetName = 'Other users', Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [string] $UIIdentityID, [Parameter(ParameterSetName = 'Self', Mandatory)] [securestring] $CurrentPassword, [Parameter(Mandatory)] [securestring] $NewPassword, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { if ($PSCmdlet.ParameterSetName -eq 'Self') { $Path = "/identity-management/v3/user-profile/change-password" } else { $Path = "/identity-management/v3/user-admin/ui-identities/$UIIdentityID/set-password" } $Body = @{ 'newPassword' = (New-Object PSCredential 0, $NewPassword).GetNetworkCredential().Password } if ($PSCmdlet.ParameterSetName -eq 'Self') { $Body['currentPassword'] = (New-Object PSCredential 0, $CurrentPassword).GetNetworkCredential().Password } $RequestParams = @{ 'Path' = $Path 'Method' = 'POST' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Set-IAMUserProfile { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline)] $Body, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section ) process { $Path = "/identity-management/v3/user-profile/basic-info" $RequestParams = @{ 'Path' = $Path 'Method' = 'PUT' 'Body' = $Body 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Test-IAMCIDRBlock { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [string] $CIDRBlock, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/ip-acl/allowlist/validate" $QueryParameters = @{ 'cidrBlock' = $CIDRBlock } $RequestParams = @{ 'Path' = $Path 'Method' = 'GET' 'QueryParameters' = $QueryParameters 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Unlock-IAMAPIClient { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [string] $ClientID, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { if ($ClientID -eq 'self') { $Path = "/identity-management/v3/api-clients/self/unlock" } else { $Path = "/identity-management/v3/api-clients/$ClientID/unlock" } $RequestParams = @{ 'Path' = $Path 'Method' = 'PUT' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } function Unlock-IAMUser { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [string] $UIIdentityID, [Parameter()] [string] $EdgeRCFile, [Parameter()] [string] $Section, [Parameter()] [string] $AccountSwitchKey ) process { $Path = "/identity-management/v3/user-admin/ui-identities/$UIIdentityID/unlock" $RequestParams = @{ 'Path' = $Path 'Method' = 'POST' 'EdgeRCFile' = $EdgeRCFile 'Section' = $Section 'AccountSwitchKey' = $AccountSwitchKey 'Debug' = ($PSBoundParameters.Debug -eq $true) } # Make Request $Response = Invoke-AkamaiRequest @RequestParams return $Response.Body } } # SIG # Begin signature block # MIIKmAYJKoZIhvcNAQcCoIIKiTCCCoUCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBdonBrm1cQHJNb # bOGXZoOg8Z4opC4JKfmYEZWmfjAvwqCCB1owggdWMIIFPqADAgECAhAGRzH371Sh # X6hjGl1wSSyYMA0GCSqGSIb3DQEBCwUAMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQK # Ew5EaWdpQ2VydCwgSW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBD # b2RlIFNpZ25pbmcgUlNBNDA5NiBTSEEzODQgMjAyMSBDQTEwHhcNMjYwMjI1MDAw # MDAwWhcNMjcwMzEwMjM1OTU5WjCB3jETMBEGCysGAQQBgjc8AgEDEwJVUzEZMBcG # CysGAQQBgjc8AgECEwhEZWxhd2FyZTEdMBsGA1UEDwwUUHJpdmF0ZSBPcmdhbml6 # YXRpb24xEDAOBgNVBAUTBzI5MzM2MzcxCzAJBgNVBAYTAlVTMRYwFAYDVQQIEw1N # YXNzYWNodXNldHRzMRIwEAYDVQQHEwlDYW1icmlkZ2UxIDAeBgNVBAoTF0FrYW1h # aSBUZWNobm9sb2dpZXMgSW5jMSAwHgYDVQQDExdBa2FtYWkgVGVjaG5vbG9naWVz # IEluYzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAJeMKuhiUI5WSRdG # IPhNWLpaVPlXbSazhGuvzZxTi623Ht46hiPejDtWB8F8dT2pd+nOWsx5NVgkv7x/ # Tz35cZcWVMDxq/K7wYe9R2GndGgfEL02/j5rslwHr8e6qFzy1axuL/xaGXuBTVrS # Qw25019l1KalUHwInKLIP7Hw1HLPTacyJNNTsYmOpZNqKIiQe9ivzBd7SuPU0cGi # 1YHUk4ZQh6Ig5tBx8XZYjTmzbiQr2WWwk/CufaoIPME5zAvmW99S05rAtOqvoUr7 # eoLUQ/TcMMA6eOliAbO5m0w/pv5YDgzhzt9hQez189zZNOkMO6AcHNitJzzsEvCg # 7fhPHxoXvasRJ0EaCEze0nuVakLPf+mGCLoZYGRctayOn4HP6LEEOGmAnQBZkwFR # 6zxk0hzAMOkK/p7MV9V6QwOuk9q7WKnIdzS/4RjRtXNxXb2fMNyBEwrwJhdmEhWF # 0eS0Wd6Uz3IbSr0+XH8FHLflQXFCkPcZKiGPgSCp8rTP3KHr6wIDAQABo4ICAjCC # Af4wHwYDVR0jBBgwFoAUaDfg67Y7+F8Rhvv+YXsIiGX0TkIwHQYDVR0OBBYEFKT3 # RICOlmcsnPu7KwUf9HL4YegLMD0GA1UdIAQ2MDQwMgYFZ4EMAQMwKTAnBggrBgEF # BQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ1BTMA4GA1UdDwEB/wQEAwIH # gDATBgNVHSUEDDAKBggrBgEFBQcDAzCBtQYDVR0fBIGtMIGqMFOgUaBPhk1odHRw # Oi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmlu # Z1JTQTQwOTZTSEEzODQyMDIxQ0ExLmNybDBToFGgT4ZNaHR0cDovL2NybDQuZGln # aWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0Q29kZVNpZ25pbmdSU0E0MDk2U0hB # Mzg0MjAyMUNBMS5jcmwwgZQGCCsGAQUFBwEBBIGHMIGEMCQGCCsGAQUFBzABhhho # dHRwOi8vb2NzcC5kaWdpY2VydC5jb20wXAYIKwYBBQUHMAKGUGh0dHA6Ly9jYWNl # cnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNB # NDA5NlNIQTM4NDIwMjFDQTEuY3J0MAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQAD # ggIBAGSBrSnUReHUzGTy9VC6hy2oDSpu2QNu5j3o/uoaaAy2CgI0hVJRL/OfYinL # R4hJofuNNKORp2MWXpy52L5PCGtD6/Hf92bMkDl1AP6nXuplt5HvkFPh5kVDbQ7o # HfI1Pup2IOpKxb00UNwjtKy+38ZCX0dgkASP2vQFamBCG0eTaGUh/9ZH9rz11Nkr # 9p83Snz/3eW3vOeKAFL3S5RDEMkTvv09540mnzA4J5lKGES2eje/FhwCCQUQBvqC # voNFNZHyXvW9v8KqX/3CcN1LAtGCy4XnkFjQRPyn+o/OJv5M5yX2Rm5kq9dYpWnD # U2xgxMR1BZaDf+uDoqGsLo4OqbPV4Dftp2FDs8DHMD8xP6i/k4htaWShkdyjdijr # 9TBOi+pS9vNlcCKjwLq6aibcbkUk7ef3wxR5imhajsX22vy8Zd9ByAk07BJrccgg # JGczCtiKcD6LZtP3VjnqhYPSQ4jk6wCruqcTCTwwO7FrIROVrWb2Ro+ph+/a5Llj # 5ryLyp+6NAgtNwyrkp2WxZviLbh5AXnmg9Pnwrz64UE93LEjI23AWBJsLFdJTbis # Z/tTgozdVdPZf2Dy2k8xfYZoIq6V1oWiAoQCzb5B9nETV5NGjiMPskJ4GwnlzOvz # +4IgLQjl0V5I08Qw+3uvPQ8rHHMLbKgncTqSxqtZ73kItOztMYIClDCCApACAQEw # fTBpMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNV # BAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgQ29kZSBTaWduaW5nIFJTQTQwOTYgU0hB # Mzg0IDIwMjEgQ0ExAhAGRzH371ShX6hjGl1wSSyYMA0GCWCGSAFlAwQCAQUAoGow # GQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisG # AQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIM/OmuupzmuEaubgSQZuZVfhZl6BqyoD # ExJIIBRFtr+DMA0GCSqGSIb3DQEBAQUABIIBgCNhGSqpFpeuQG19wq8KmLfw2wLf # L6bkaQ1j1rkZlwOkstEmS+toLgL2Agklo41kY/l40mt6H1qckPI0SPIhGq9Im9tA # q2HhW4b8qPt6y95dtsevh//6iW8utggGrFFze/9670wabazc4cm2d6K++gw1LYNY # 9lptbhNQCwpntY2XTarMTr2EvIl/T48axI/ZIqG7Ckjc/r/lxxKd3pT7peMz+7Iz # TyASYeQiePtRfvTeORYiNR9f92wbvblAV4WU6bMxEWeiEVL48Dj/OLOX91j8id9d # qTXHIUdio14P9BWiWr07M+HemljWsYdkI1/0Ps9xiKAOwzqyGD5/5VxdGkPANLA2 # F8y7yliEl9NSDTbsyeTQjOzpXc6ZHpVSPuuqZuf1kgGjipgVEorZxRFuVzEsofhN # O4D2KZ3KJC1NyQclQNRvh2kIgG6JujDJKPn5mlCBC2a05RtdNPp9Jxni5GTt9vBO # bl3OtZZQQ7Gghpc3QcMGRHPV0CU7uQwklDzxRw== # SIG # End signature block |