@@ -16,49 +16,76 @@ function Invoke-ListExoRequest {
16
16
$Tenants = Get-Tenants - IncludeErrors
17
17
$Tenant = $Tenants | Where-Object { $_.defaultDomainName -eq $TenantFilter -or $_.customerId -eq $TenantFilter }
18
18
if ($Tenant.customerId -in $AllowedTenants -or $AllowedTenants -eq ' AllTenants' ) {
19
- if ($AllowedVerbs -notcontains $Verb ) {
20
- $Body = [pscustomobject ]@ {
21
- Results = " Invalid cmdlet: $Cmdlet "
19
+ if ($Request.Body.AvailableCmdlets ) {
20
+ $ExoRequest = @ {
21
+ TenantID = $TenantFilter
22
+ AvailableCmdlets = $true
23
+ }
24
+ if ($Request.Body.AsApp -eq $true ) {
25
+ $ExoRequest.AsApp = $true
26
+ }
27
+ if ($Request.Body.Compliance -eq $true ) {
28
+ $ExoRequest.Compliance = $true
29
+ }
30
+ $Results = New-ExoRequest @ExoRequest
31
+ $Body = [PSCustomObject ]@ {
32
+ Results = $Results | Select-Object @ { Name = ' Cmdlet' ; Expression = { $_ } }
33
+ Metadata = @ {
34
+ Count = ($Results | Measure-Object ).Count
35
+ }
36
+ }
37
+ } else {
38
+ if ($AllowedVerbs -notcontains $Verb ) {
39
+ $Body = [pscustomobject ]@ {
40
+ Results = " Invalid cmdlet: $Cmdlet "
41
+ }
42
+ Push-OutputBinding - Name Response - Value ([HttpResponseContext ]@ {
43
+ StatusCode = [HttpStatusCode ]::BadRequest
44
+ Body = $Body
45
+ })
46
+ return
47
+ }
48
+ $ExoParams = @ {
49
+ Cmdlet = $Cmdlet
50
+ cmdParams = $cmdParams
51
+ tenantid = $TenantFilter
22
52
}
23
- Push-OutputBinding - Name Response - Value ([HttpResponseContext ]@ {
24
- StatusCode = [HttpStatusCode ]::BadRequest
25
- Body = $Body
26
- })
27
- return
28
- }
29
- $ExoParams = @ {
30
- Cmdlet = $Cmdlet
31
- cmdParams = $cmdParams
32
- tenantid = $TenantFilter
33
- }
34
53
35
- if ($Request.Body.Select ) {
36
- $ExoParams.Select = $Request.Body.Select
37
- }
54
+ if ($Request.Body.Select ) {
55
+ $ExoParams.Select = $Request.Body.Select
56
+ }
38
57
39
- if ($Request.Body.UseSystemMailbox -eq $true ) {
40
- $ExoParams.useSystemMailbox = $true
41
- }
58
+ if ($Request.Body.UseSystemMailbox -eq $true ) {
59
+ $ExoParams.useSystemMailbox = $true
60
+ }
42
61
43
- if ($Request.Body.Anchor ) {
44
- $ExoParams.Anchor = $Request.Body.Anchor
45
- }
62
+ if ($Request.Body.Anchor ) {
63
+ $ExoParams.Anchor = $Request.Body.Anchor
64
+ }
46
65
47
- if ($Request.Body.Compliance -eq $true ) {
48
- $ExoParams.Compliance = $true
49
- }
66
+ if ($Request.Body.Compliance -eq $true ) {
67
+ $ExoParams.Compliance = $true
68
+ }
50
69
51
- if ($Request.Body.AsApp -eq $true ) {
52
- $ExoParams.AsApp = $true
53
- }
70
+ if ($Request.Body.AsApp -eq $true ) {
71
+ $ExoParams.AsApp = $true
72
+ }
54
73
55
- $Results = New-ExoRequest @ExoParams
56
- $Body = [pscustomobject ]@ {
57
- Results = $Results
58
- }
59
- } else {
60
- $Body = [pscustomobject ]@ {
61
- Results = " Invalid tenant: $TenantFilter "
74
+ try {
75
+ $Results = New-ExoRequest @ExoParams
76
+ $Body = [pscustomobject ]@ {
77
+ Results = $Results
78
+ }
79
+ } catch {
80
+ $ErrorMessage = Get-NormalizedError - Message $_.Exception.Message
81
+ $Body = [pscustomobject ]@ {
82
+ Results = @ (@ { Error = $ErrorMessage })
83
+ }
84
+ }
85
+ } else {
86
+ $Body = [pscustomobject ]@ {
87
+ Results = " Invalid tenant: $TenantFilter "
88
+ }
62
89
}
63
90
}
64
91
} catch {
0 commit comments