Skip to content

Instantly share code, notes, and snippets.

@KaiWalter
Last active December 11, 2020 10:40
Show Gist options
  • Save KaiWalter/b4c42719d4341f498ad6ffc7a83fbdcb to your computer and use it in GitHub Desktop.
Save KaiWalter/b4c42719d4341f498ad6ffc7a83fbdcb to your computer and use it in GitHub Desktop.
class AccessPackageClient {
hidden [string]$baseGraphEntitlementManagementUri = 'https://graph.microsoft.com/beta/identityGovernance/entitlementManagement/'
AccessPackageClient() {
}
hidden [PSObject] httpGet([string]$url) {
$uri = $this.baseGraphEntitlementManagementUri + $url
return Invoke-MgGraphRequest -Uri $uri -Method Get
}
hidden [PSObject] httpDelete([string]$url) {
$uri = $this.baseGraphEntitlementManagementUri + $url
return Invoke-MgGraphRequest -Uri $uri -Method Delete
}
hidden [PSObject] httpPost([string]$url, [Hashtable]$body) {
$uri = $this.baseGraphEntitlementManagementUri + $url
return Invoke-MgGraphRequest -Uri $uri -Method Post -Body $body -ContentType "application/json"
}
hidden [PSObject] httpPut([string]$url, [Hashtable]$body) {
$uri = $this.baseGraphEntitlementManagementUri + $url
return Invoke-MgGraphRequest -Uri $uri -Method Put -Body $body -ContentType "application/json"
}
[PSObject] getAccessPackages() {
return $this.httpGet("accessPackages").value
}
[PSObject] getAccessPackagesByCatalogId([string]$catalogId) {
return $this.getAccessPackages() | ? { $_.catalogId -eq $catalogId }
}
[PSObject] getAccessPackageByDisplayName([string]$catalogId, [string] $displayName) {
return $this.getAccessPackages() | ? { $_.catalogId -eq $catalogId -and $_.displayName -eq $displayName }
}
[PSObject] getAccessPackageById([string]$id) {
$url = "accessPackages/{id}?`$expand=accessPackageResourceRoleScopes(`$expand=accessPackageResourceRole,accessPackageResourceScope),accessPackageAssignmentPolicies" -replace "{id}", $id
return $this.httpGet($url)
}
[PSObject] getAccessPackageCatalogs() {
return $this.httpGet("accessPackageCatalogs").value
}
[PSObject] getAccessPackageResourceRoleScopes() {
return $this.httpGet("accessPackageResourceRoleScopes").value
}
[PSObject] getAccessPackageCatalogResources([string] $catalogId) {
$url = "accessPackageCatalogs/{id}/accessPackageResources" -replace "{id}", $catalogId
return $this.httpGet($url).value
}
[PSObject] getAccessPackageCatalogByDisplayName([string]$displayName) {
return $this.getAccessPackageCatalogs() | ? { $_.displayName -eq $displayName }
}
[PSObject] postAccessPackage([Hashtable] $accessPackage) {
return $this.httpPost("accessPackages", $accessPackage)
}
[PSObject] postAccessPackageCatalog([Hashtable] $accessPackageCatalog) {
return $this.httpPost("accessPackageCatalogs", $accessPackageCatalog)
}
[PSObject] postAccessPackageResourceRequests([Hashtable] $accessPackageResourceRequests) {
return $this.httpPost("accessPackageResourceRequests", $accessPackageResourceRequests)
}
[PSObject] postAccessPackageAssignmentPolicies([Hashtable] $accessPackageAssignmentPolicies) {
return $this.httpPost("accessPackageAssignmentPolicies", $accessPackageAssignmentPolicies)
}
[PSObject] getAccessPackageAssignmentPolicies([string] $id) {
$url = "accessPackageAssignmentPolicies/{id}" -replace "{id}", $id
return $this.httpGet($url)
}
[PSObject] getAccessPackageAssignments([string] $id) {
$url = "accessPackageAssignments/?`$expand=target,accessPackageAssignmentPolicy&`$filter=accessPackageAssignmentPolicy/id eq '{id}'" -replace "{id}", $id
return $this.httpGet($url).value
}
[PSObject] getAccessPackageAssignmentsRequests([string] $id) {
$url = "accessPackageAssignmentRequests/?`$expand=accessPackage,accessPackageAssignment&`$filter=accessPackage/id eq '{id}'" -replace "{id}", $id
return $this.httpGet($url).value
}
[PSObject] putAccessPackageAssignmentPolicies([string] $id, [Hashtable] $accessPackageAssignmentPolicies) {
$url = "accessPackageAssignmentPolicies/{id}" -replace "{id}", $id
return $this.httpPut($url, $accessPackageAssignmentPolicies)
}
[PSObject] deleteAccessPackageAssignmentPolicies([string] $id) {
$url = "accessPackageAssignmentPolicies/{id}" -replace "{id}", $id
return $this.httpDelete($url)
}
[PSObject] postAccessPackageResourceRoleScope([string] $accessPackageId, [Hashtable] $accessPackageResourceRoleScopes) {
$url = "accessPackages/{id}/accessPackageResourceRoleScopes" -replace "{id}", $accessPackageId
return $this.httpPost($url, $accessPackageResourceRoleScopes)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment