From ca44ce34117674506857ede893ccc3310df24371 Mon Sep 17 00:00:00 2001
From: Ryan Riddle <169712509+ryan-riddle-opal@users.noreply.github.com>
Date: Sun, 27 Jul 2025 10:01:44 -0400
Subject: [PATCH] add pagination support to mcp server
---
.github/codeql/codeql-config.yml | 19 +
.github/workflows/codeql-analysis.yml | 50 ++
.gitignore | 13 +-
.speakeasy/gen.lock | 95 +++-
.speakeasy/gen.yaml | 8 +-
.speakeasy/workflow.lock | 12 +-
README.md | 47 +-
docs/models/components/awsaccount.md | 8 +-
.../components/awsorganizationalunit.md | 21 +
docs/models/components/customconnector.md | 21 +
docs/models/components/googleworkspacerole.md | 19 +
docs/models/components/groupremoteinfo.md | 10 +-
docs/models/components/oktagrouprule.md | 19 +
docs/models/components/requestedge.md | 2 +-
docs/models/components/requesteditem.md | 4 +-
docs/models/components/requestlist.md | 2 +-
.../components/{request.md => requestt.md} | 8 +-
docs/models/components/resource.md | 6 +
docs/models/components/resourceremoteinfo.md | 15 +
.../components/rolepermissionnameenum.md | 17 +
.../rolepermissiontargettypeenum.md | 17 +
.../models/components/scopedrolepermission.md | 26 +
.../components/scopedrolepermissionlist.md | 27 ++
.../components/workdayusersecuritygroup.md | 19 +
.../operations/addbundlegrouprequest.md | 5 +
.../addgroupcontaininggrouprequest.md | 3 +
.../operations/approverequestrequest.md | 4 +
.../operations/approverequestresponse.md | 2 +-
.../operations/deletegroupuserrequest.md | 10 +-
docs/models/operations/eventsresponse.md | 36 ++
.../operations/getbundlegroupsresponse.md | 25 +
.../operations/getbundleresourcesresponse.md | 27 ++
docs/models/operations/getbundlesresponse.md | 38 ++
.../operations/getgroupbindingsresponse.md | 54 +++
docs/models/operations/getgroupsresponse.md | 41 ++
docs/models/operations/getnhisresponse.md | 39 ++
docs/models/operations/getownersresponse.md | 34 ++
docs/models/operations/getrequestrequest.md | 17 +
docs/models/operations/getrequestsresponse.md | 33 ++
...getresourcescopedrolepermissionsrequest.md | 17 +
.../models/operations/getresourcesresponse.md | 39 ++
docs/models/operations/gettagsresponse.md | 38 ++
docs/models/operations/getuarsresponse.md | 72 +++
docs/models/operations/getusersresponse.md | 38 ++
.../operations/setbundlevisibilityrequest.md | 7 +
.../setgroupmessagechannelsrequest.md | 6 +
.../setgrouponcallschedulesrequest.md | 6 +
.../operations/setgroupresourcesrequest.md | 8 +
.../operations/setgroupreviewersrequest.md | 6 +
.../setgroupreviewerstagesrequest.md | 12 +
.../operations/setgroupvisibilityrequest.md | 7 +
.../models/operations/setownerusersrequest.md | 6 +
.../setresourcemessagechannelsrequest.md | 6 +
.../operations/setresourcereviewersrequest.md | 6 +
.../setresourcereviewerstagesrequest.md | 12 +
...setresourcescopedrolepermissionsrequest.md | 31 ++
.../setresourcevisibilityrequest.md | 7 +
.../operations/updateaccessrulerequest.md | 12 +
docs/models/operations/updatebundlerequest.md | 5 +
.../operations/updategroupuserrequest.md | 4 +
.../updateidpgroupmappingsrequest.md | 5 +
.../operations/updateresourceuserrequest.md | 4 +
docs/sdks/accessrules/README.md | 2 +
docs/sdks/apps/README.md | 2 +
docs/sdks/bundles/README.md | 32 +-
docs/sdks/configurationtemplates/README.md | 2 +
docs/sdks/events/README.md | 12 +-
docs/sdks/groupbindings/README.md | 12 +-
docs/sdks/groups/README.md | 14 +-
docs/sdks/idpgroupmappings/README.md | 2 +
docs/sdks/messagechannels/README.md | 2 +
docs/sdks/nonhumanidentities/README.md | 12 +-
docs/sdks/oncallschedules/README.md | 2 +
docs/sdks/owners/README.md | 12 +-
docs/sdks/requests/README.md | 91 +++-
docs/sdks/resources/README.md | 184 ++++++-
docs/sdks/scopedrolepermissions/README.md | 181 +++++++
docs/sdks/sessions/README.md | 2 +
docs/sdks/tags/README.md | 12 +-
docs/sdks/uars/README.md | 12 +-
docs/sdks/users/README.md | 12 +-
jsr.json | 2 +-
mcp-scopes-and-endpoints-overlay.yaml | 216 ++++++++-
openapi.yaml | 447 ++++++++++++++++++
package-lock.json | 112 ++---
package.json | 9 +-
src/funcs/bundlesGetBundleGroups.ts | 131 +++--
src/funcs/bundlesGetBundleResources.ts | 131 +++--
src/funcs/bundlesGetBundles.ts | 129 +++--
src/funcs/eventsEvents.ts | 129 +++--
src/funcs/groupBindingsGetGroupBindings.ts | 131 +++--
src/funcs/groupsDeleteGroupUser.ts | 7 +-
src/funcs/groupsGetGroups.ts | 129 +++--
src/funcs/nonHumanIdentitiesGetNhis.ts | 129 +++--
src/funcs/ownersGetOwners.ts | 129 +++--
src/funcs/requestsGetRequest.ts | 164 +++++++
src/funcs/requestsGetRequests.ts | 131 +++--
src/funcs/requestsGetRequestsRelay.ts | 2 +
...sourcesGetResourceScopedRolePermissions.ts | 169 +++++++
src/funcs/resourcesGetResources.ts | 131 +++--
...sourcesSetResourceScopedRolePermissions.ts | 172 +++++++
src/funcs/tagsGetTags.ts | 129 +++--
src/funcs/uarsGetUARs.ts | 129 +++--
src/funcs/usersGetUsers.ts | 129 +++--
src/lib/config.ts | 6 +-
src/lib/security.ts | 4 +-
src/mcp-server/cli/start/command.ts | 19 +-
src/mcp-server/mcp-server.ts | 2 +-
src/mcp-server/server.ts | 8 +-
.../tools/bundlesGetBundleGroups.ts | 2 +-
.../tools/bundlesGetBundleResources.ts | 2 +-
src/mcp-server/tools/bundlesGetBundles.ts | 2 +-
src/mcp-server/tools/eventsEvents.ts | 2 +-
.../tools/groupBindingsGetGroupBindings.ts | 2 +-
src/mcp-server/tools/groupsGetGroups.ts | 2 +-
.../tools/nonHumanIdentitiesGetNhis.ts | 2 +-
src/mcp-server/tools/ownersGetOwners.ts | 2 +-
src/mcp-server/tools/requestsGetRequest.ts | 36 ++
src/mcp-server/tools/requestsGetRequests.ts | 2 +-
...sourcesGetResourceScopedRolePermissions.ts | 39 ++
src/mcp-server/tools/resourcesGetResources.ts | 2 +-
...sourcesSetResourceScopedRolePermissions.ts | 39 ++
src/mcp-server/tools/tagsGetTags.ts | 2 +-
src/mcp-server/tools/uarsGetUARs.ts | 2 +-
src/mcp-server/tools/usersGetUsers.ts | 2 +-
src/models/components/groupremoteinfo.ts | 162 +++++++
src/models/components/index.ts | 4 +
src/models/components/request.ts | 93 ++--
src/models/components/requestedge.ts | 16 +-
src/models/components/requesteditem.ts | 18 +
src/models/components/requestlist.ts | 16 +-
src/models/components/resourceremoteinfo.ts | 272 +++++++++++
.../components/rolepermissionnameenum.ts | 55 +++
.../rolepermissiontargettypeenum.ts | 45 ++
src/models/components/scopedrolepermission.ts | 112 +++++
.../components/scopedrolepermissionlist.ts | 72 +++
src/models/errors/apierror.ts | 10 +-
src/models/operations/approverequest.ts | 8 +-
src/models/operations/deletegroupuser.ts | 9 +
src/models/operations/events.ts | 63 +++
src/models/operations/getbundlegroups.ts | 67 +++
src/models/operations/getbundleresources.ts | 67 +++
src/models/operations/getbundles.ts | 67 +++
src/models/operations/getgroupbindings.ts | 67 +++
src/models/operations/getgroups.ts | 66 +++
src/models/operations/getnhis.ts | 65 +++
src/models/operations/getowners.ts | 67 +++
src/models/operations/getrequest.ts | 69 +++
src/models/operations/getrequests.ts | 67 +++
src/models/operations/getresources.ts | 66 +++
.../getresourcescopedrolepermissions.ts | 89 ++++
src/models/operations/gettags.ts | 65 +++
src/models/operations/getuars.ts | 65 +++
src/models/operations/getusers.ts | 67 +++
src/models/operations/index.ts | 3 +
.../setresourcescopedrolepermissions.ts | 96 ++++
src/sdk/bundles.ts | 17 +-
src/sdk/events.ts | 7 +-
src/sdk/groupbindings.ts | 7 +-
src/sdk/groups.ts | 5 +-
src/sdk/nonhumanidentities.ts | 7 +-
src/sdk/owners.ts | 5 +-
src/sdk/requests.ts | 22 +-
src/sdk/resources.ts | 37 +-
src/sdk/scopedrolepermissions.ts | 40 ++
src/sdk/sdk.ts | 8 +
src/sdk/tags.ts | 5 +-
src/sdk/uars.ts | 5 +-
src/sdk/users.ts | 5 +-
src/types/constdatetime.ts | 2 +-
tsconfig.json | 4 +-
171 files changed, 6462 insertions(+), 695 deletions(-)
create mode 100644 .github/codeql/codeql-config.yml
create mode 100644 .github/workflows/codeql-analysis.yml
create mode 100644 docs/models/components/awsorganizationalunit.md
create mode 100644 docs/models/components/customconnector.md
create mode 100644 docs/models/components/googleworkspacerole.md
create mode 100644 docs/models/components/oktagrouprule.md
rename docs/models/components/{request.md => requestt.md} (99%)
create mode 100644 docs/models/components/rolepermissionnameenum.md
create mode 100644 docs/models/components/rolepermissiontargettypeenum.md
create mode 100644 docs/models/components/scopedrolepermission.md
create mode 100644 docs/models/components/scopedrolepermissionlist.md
create mode 100644 docs/models/components/workdayusersecuritygroup.md
create mode 100644 docs/models/operations/eventsresponse.md
create mode 100644 docs/models/operations/getbundlegroupsresponse.md
create mode 100644 docs/models/operations/getbundleresourcesresponse.md
create mode 100644 docs/models/operations/getbundlesresponse.md
create mode 100644 docs/models/operations/getgroupbindingsresponse.md
create mode 100644 docs/models/operations/getgroupsresponse.md
create mode 100644 docs/models/operations/getnhisresponse.md
create mode 100644 docs/models/operations/getownersresponse.md
create mode 100644 docs/models/operations/getrequestrequest.md
create mode 100644 docs/models/operations/getrequestsresponse.md
create mode 100644 docs/models/operations/getresourcescopedrolepermissionsrequest.md
create mode 100644 docs/models/operations/getresourcesresponse.md
create mode 100644 docs/models/operations/gettagsresponse.md
create mode 100644 docs/models/operations/getuarsresponse.md
create mode 100644 docs/models/operations/getusersresponse.md
create mode 100644 docs/models/operations/setresourcescopedrolepermissionsrequest.md
create mode 100644 docs/sdks/scopedrolepermissions/README.md
create mode 100644 src/funcs/requestsGetRequest.ts
create mode 100644 src/funcs/resourcesGetResourceScopedRolePermissions.ts
create mode 100644 src/funcs/resourcesSetResourceScopedRolePermissions.ts
create mode 100644 src/mcp-server/tools/requestsGetRequest.ts
create mode 100644 src/mcp-server/tools/resourcesGetResourceScopedRolePermissions.ts
create mode 100644 src/mcp-server/tools/resourcesSetResourceScopedRolePermissions.ts
create mode 100644 src/models/components/rolepermissionnameenum.ts
create mode 100644 src/models/components/rolepermissiontargettypeenum.ts
create mode 100644 src/models/components/scopedrolepermission.ts
create mode 100644 src/models/components/scopedrolepermissionlist.ts
create mode 100644 src/models/operations/getrequest.ts
create mode 100644 src/models/operations/getresourcescopedrolepermissions.ts
create mode 100644 src/models/operations/setresourcescopedrolepermissions.ts
create mode 100644 src/sdk/scopedrolepermissions.ts
diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml
new file mode 100644
index 0000000..c79c256
--- /dev/null
+++ b/.github/codeql/codeql-config.yml
@@ -0,0 +1,19 @@
+name: "CodeQL Config"
+
+queries:
+ - uses: security-and-quality
+ - uses: security-extended
+
+paths:
+ - src
+ - "**/*.ts"
+ - "**/*.js"
+
+paths-ignore:
+ - node_modules
+ - dist
+ - "**/*.test.ts"
+ - "**/*.spec.ts"
+ - "**/*.d.ts"
+
+build-mode: manual
\ No newline at end of file
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
new file mode 100644
index 0000000..824b49f
--- /dev/null
+++ b/.github/workflows/codeql-analysis.yml
@@ -0,0 +1,50 @@
+name: "CodeQL"
+
+on:
+ push:
+ branches: [ "main" ]
+ pull_request:
+ branches: [ "main" ]
+ schedule:
+ - cron: '30 1 * * 0'
+
+jobs:
+ analyze:
+ name: Analyze
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ contents: read
+ security-events: write
+
+ strategy:
+ fail-fast: false
+ matrix:
+ language: [ 'javascript-typescript' ]
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v3
+ with:
+ languages: ${{ matrix.language }}
+ config-file: ./.github/codeql/codeql-config.yml
+
+ - name: Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20'
+ cache: 'npm'
+
+ - name: Install dependencies
+ run: npm ci
+
+ - name: Build project
+ run: npm run build:codeql
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v3
+ with:
+ category: "/language:${{matrix.language}}"
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 8e7bd19..5f8dc03 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,8 @@
-/models
-/models/errors
-/types
+/examples/node_modules
+.env.local
+.env.*.local
/node_modules
-/lib
-/sdk
-/funcs
/react-query
-/mcp-server
-/hooks
-/index.*
-/core.*
/bin
/cjs
/esm
diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock
index 1f905b7..9e14658 100644
--- a/.speakeasy/gen.lock
+++ b/.speakeasy/gen.lock
@@ -1,12 +1,12 @@
lockVersion: 2.0.0
id: 4f4a8d8c-90c5-4992-8800-17a249fd1e0f
management:
- docChecksum: ffe4ac660cd1dd7c56128d992f81eb05
+ docChecksum: a070e20ec33f91e3b59ac713238493c3
docVersion: "1.0"
- speakeasyVersion: 1.561.0
- generationVersion: 2.628.0
- releaseVersion: 0.6.2
- configChecksum: 475ae8407d3b2abbdf5125b9139a66ef
+ speakeasyVersion: 1.590.0
+ generationVersion: 2.666.0
+ releaseVersion: 0.7.1
+ configChecksum: 940a4f008612273b581c9f352905e301
repoURL: https://github.com/opalsecurity/opal-mcp.git
installationURL: https://github.com/opalsecurity/opal-mcp
published: true
@@ -14,7 +14,7 @@ features:
typescript:
additionalDependencies: 0.1.0
additionalProperties: 0.1.1
- core: 3.21.11
+ core: 3.21.15
defaultEnabledRetries: 0.1.0
deprecations: 2.81.1
devContainers: 2.90.0
@@ -25,12 +25,13 @@ features:
globalSecurityFlattening: 0.1.0
globalServerURLs: 2.82.5
inputOutputModels: 2.82.0
- mcpServer: 0.9.2
+ mcpServer: 0.9.3
nullables: 0.1.1
+ pagination: 2.83.0
responseFormat: 0.2.3
retries: 2.83.0
sdkHooks: 0.3.0
- unions: 2.85.9
+ unions: 2.85.11
generatedFiles:
- .devcontainer/README.md
- .devcontainer/devcontainer.json
@@ -56,6 +57,7 @@ generatedFiles:
- docs/models/components/awsec2instance.md
- docs/models/components/awsekscluster.md
- docs/models/components/awsiamrole.md
+ - docs/models/components/awsorganizationalunit.md
- docs/models/components/awspermissionset.md
- docs/models/components/awsrdsinstance.md
- docs/models/components/azureadmicrosoft365group.md
@@ -81,6 +83,7 @@ generatedFiles:
- docs/models/components/createresourceinfo.md
- docs/models/components/createtaginfo.md
- docs/models/components/createuarinfo.md
+ - docs/models/components/customconnector.md
- docs/models/components/custommetadatum.md
- docs/models/components/duogroup.md
- docs/models/components/entitytypeenum.md
@@ -102,6 +105,7 @@ generatedFiles:
- docs/models/components/gitlabgroup.md
- docs/models/components/gitlabproject.md
- docs/models/components/googlegroup.md
+ - docs/models/components/googleworkspacerole.md
- docs/models/components/group.md
- docs/models/components/groupaccesslevel.md
- docs/models/components/groupbinding.md
@@ -126,6 +130,7 @@ generatedFiles:
- docs/models/components/oktaapp.md
- docs/models/components/oktacustomrole.md
- docs/models/components/oktagroup.md
+ - docs/models/components/oktagrouprule.md
- docs/models/components/oktastandardrole.md
- docs/models/components/oncallschedule.md
- docs/models/components/oncallscheduleidlist.md
@@ -149,7 +154,6 @@ generatedFiles:
- docs/models/components/paginateduserslist.md
- docs/models/components/propagationstatus.md
- docs/models/components/propagationstatusenum.md
- - docs/models/components/request.md
- docs/models/components/requestconfiguration.md
- docs/models/components/requestconnection.md
- docs/models/components/requestcustomfieldresponse.md
@@ -161,6 +165,7 @@ generatedFiles:
- docs/models/components/requestreviewerstatus.md
- docs/models/components/requeststage.md
- docs/models/components/requeststatusenum.md
+ - docs/models/components/requestt.md
- docs/models/components/requesttemplatecustomfieldtypeenum.md
- docs/models/components/resource.md
- docs/models/components/resourceaccesslevel.md
@@ -179,12 +184,16 @@ generatedFiles:
- docs/models/components/reviewerstagelist.md
- docs/models/components/reviewstageoperator.md
- docs/models/components/risksensitivityenum.md
+ - docs/models/components/rolepermissionnameenum.md
+ - docs/models/components/rolepermissiontargettypeenum.md
- docs/models/components/ruleclauses.md
- docs/models/components/ruleconjunction.md
- docs/models/components/ruledisjunction.md
- docs/models/components/salesforcepermissionset.md
- docs/models/components/salesforceprofile.md
- docs/models/components/salesforcerole.md
+ - docs/models/components/scopedrolepermission.md
+ - docs/models/components/scopedrolepermissionlist.md
- docs/models/components/security.md
- docs/models/components/session.md
- docs/models/components/sessionslist.md
@@ -222,6 +231,7 @@ generatedFiles:
- docs/models/components/userlist.md
- docs/models/components/visibilityinfo.md
- docs/models/components/visibilitytypeenum.md
+ - docs/models/components/workdayusersecuritygroup.md
- docs/models/operations/addbundlegrouprequest.md
- docs/models/operations/addbundlegrouprequestbody.md
- docs/models/operations/addbundleresourcerequest.md
@@ -256,16 +266,21 @@ generatedFiles:
- docs/models/operations/deleteresourceuserrequest.md
- docs/models/operations/deletetagbyidrequest.md
- docs/models/operations/eventsrequest.md
+ - docs/models/operations/eventsresponse.md
- docs/models/operations/getaccessrulerequest.md
- docs/models/operations/getapprequest.md
- docs/models/operations/getappsrequest.md
- docs/models/operations/getbundlegroupsrequest.md
+ - docs/models/operations/getbundlegroupsresponse.md
- docs/models/operations/getbundlerequest.md
- docs/models/operations/getbundleresourcesrequest.md
+ - docs/models/operations/getbundleresourcesresponse.md
- docs/models/operations/getbundlesrequest.md
+ - docs/models/operations/getbundlesresponse.md
- docs/models/operations/getbundlevisibilityrequest.md
- docs/models/operations/getgroupbindingrequest.md
- docs/models/operations/getgroupbindingsrequest.md
+ - docs/models/operations/getgroupbindingsresponse.md
- docs/models/operations/getgroupcontaininggrouprequest.md
- docs/models/operations/getgroupcontaininggroupsrequest.md
- docs/models/operations/getgroupmessagechannelsrequest.md
@@ -275,25 +290,32 @@ generatedFiles:
- docs/models/operations/getgroupreviewersrequest.md
- docs/models/operations/getgroupreviewerstagesrequest.md
- docs/models/operations/getgroupsrequest.md
+ - docs/models/operations/getgroupsresponse.md
- docs/models/operations/getgrouptagsrequest.md
- docs/models/operations/getgroupusersrequest.md
- docs/models/operations/getgroupvisibilityrequest.md
- docs/models/operations/getidpgroupmappingsrequest.md
- docs/models/operations/getmessagechannelrequest.md
- docs/models/operations/getnhisrequest.md
+ - docs/models/operations/getnhisresponse.md
- docs/models/operations/getoncallschedulerequest.md
- docs/models/operations/getownerfromnamerequest.md
- docs/models/operations/getownerrequest.md
- docs/models/operations/getownersrequest.md
+ - docs/models/operations/getownersresponse.md
- docs/models/operations/getownerusersrequest.md
+ - docs/models/operations/getrequestrequest.md
- docs/models/operations/getrequestsrelayrequest.md
- docs/models/operations/getrequestsrequest.md
+ - docs/models/operations/getrequestsresponse.md
- docs/models/operations/getresourcemessagechannelsrequest.md
- docs/models/operations/getresourcenhisrequest.md
- docs/models/operations/getresourcerequest.md
- docs/models/operations/getresourcereviewersrequest.md
- docs/models/operations/getresourcereviewerstagesrequest.md
+ - docs/models/operations/getresourcescopedrolepermissionsrequest.md
- docs/models/operations/getresourcesrequest.md
+ - docs/models/operations/getresourcesresponse.md
- docs/models/operations/getresourcetagsrequest.md
- docs/models/operations/getresourceuserrequest.md
- docs/models/operations/getresourceuserresponse.md
@@ -303,9 +325,12 @@ generatedFiles:
- docs/models/operations/gettagbyidrequest.md
- docs/models/operations/gettagrequest.md
- docs/models/operations/gettagsrequest.md
+ - docs/models/operations/gettagsresponse.md
- docs/models/operations/getuarrequest.md
- docs/models/operations/getuarsrequest.md
+ - docs/models/operations/getuarsresponse.md
- docs/models/operations/getusersrequest.md
+ - docs/models/operations/getusersresponse.md
- docs/models/operations/getusertagsrequest.md
- docs/models/operations/level.md
- docs/models/operations/mapping.md
@@ -328,6 +353,7 @@ generatedFiles:
- docs/models/operations/setresourcemessagechannelsrequest.md
- docs/models/operations/setresourcereviewersrequest.md
- docs/models/operations/setresourcereviewerstagesrequest.md
+ - docs/models/operations/setresourcescopedrolepermissionsrequest.md
- docs/models/operations/setresourcevisibilityrequest.md
- docs/models/operations/updateaccessrulerequest.md
- docs/models/operations/updatebundlerequest.md
@@ -353,11 +379,16 @@ generatedFiles:
- docs/sdks/owners/README.md
- docs/sdks/requests/README.md
- docs/sdks/resources/README.md
+ - docs/sdks/scopedrolepermissions/README.md
- docs/sdks/sessions/README.md
- docs/sdks/tags/README.md
- docs/sdks/uars/README.md
- docs/sdks/users/README.md
- eslint.config.mjs
+ - examples/.env.template
+ - examples/README.md
+ - examples/appsGetApps.example.ts
+ - examples/package.json
- jsr.json
- package.json
- src/core.ts
@@ -437,6 +468,7 @@ generatedFiles:
- src/funcs/ownersUpdateOwners.ts
- src/funcs/requestsApproveRequest.ts
- src/funcs/requestsCreateRequest.ts
+ - src/funcs/requestsGetRequest.ts
- src/funcs/requestsGetRequests.ts
- src/funcs/requestsGetRequestsRelay.ts
- src/funcs/resourcesAddResourceNhi.ts
@@ -450,6 +482,7 @@ generatedFiles:
- src/funcs/resourcesGetResourceNhis.ts
- src/funcs/resourcesGetResourceReviewerStages.ts
- src/funcs/resourcesGetResourceReviewers.ts
+ - src/funcs/resourcesGetResourceScopedRolePermissions.ts
- src/funcs/resourcesGetResourceTags.ts
- src/funcs/resourcesGetResourceUser.ts
- src/funcs/resourcesGetResourceUsers.ts
@@ -459,6 +492,7 @@ generatedFiles:
- src/funcs/resourcesSetResourceMessageChannels.ts
- src/funcs/resourcesSetResourceReviewerStages.ts
- src/funcs/resourcesSetResourceReviewers.ts
+ - src/funcs/resourcesSetResourceScopedRolePermissions.ts
- src/funcs/resourcesSetResourceVisibility.ts
- src/funcs/resourcesUpdateResourceUser.ts
- src/funcs/resourcesUpdateResources.ts
@@ -589,6 +623,7 @@ generatedFiles:
- src/mcp-server/tools/ownersUpdateOwners.ts
- src/mcp-server/tools/requestsApproveRequest.ts
- src/mcp-server/tools/requestsCreateRequest.ts
+ - src/mcp-server/tools/requestsGetRequest.ts
- src/mcp-server/tools/requestsGetRequests.ts
- src/mcp-server/tools/requestsGetRequestsRelay.ts
- src/mcp-server/tools/resourcesAddResourceNhi.ts
@@ -602,6 +637,7 @@ generatedFiles:
- src/mcp-server/tools/resourcesGetResourceNhis.ts
- src/mcp-server/tools/resourcesGetResourceReviewerStages.ts
- src/mcp-server/tools/resourcesGetResourceReviewers.ts
+ - src/mcp-server/tools/resourcesGetResourceScopedRolePermissions.ts
- src/mcp-server/tools/resourcesGetResourceTags.ts
- src/mcp-server/tools/resourcesGetResourceUser.ts
- src/mcp-server/tools/resourcesGetResourceUsers.ts
@@ -611,6 +647,7 @@ generatedFiles:
- src/mcp-server/tools/resourcesSetResourceMessageChannels.ts
- src/mcp-server/tools/resourcesSetResourceReviewerStages.ts
- src/mcp-server/tools/resourcesSetResourceReviewers.ts
+ - src/mcp-server/tools/resourcesSetResourceScopedRolePermissions.ts
- src/mcp-server/tools/resourcesSetResourceVisibility.ts
- src/mcp-server/tools/resourcesUpdateResourceUser.ts
- src/mcp-server/tools/resourcesUpdateResources.ts
@@ -728,9 +765,13 @@ generatedFiles:
- src/models/components/reviewerstagelist.ts
- src/models/components/reviewstageoperator.ts
- src/models/components/risksensitivityenum.ts
+ - src/models/components/rolepermissionnameenum.ts
+ - src/models/components/rolepermissiontargettypeenum.ts
- src/models/components/ruleclauses.ts
- src/models/components/ruleconjunction.ts
- src/models/components/ruledisjunction.ts
+ - src/models/components/scopedrolepermission.ts
+ - src/models/components/scopedrolepermissionlist.ts
- src/models/components/security.ts
- src/models/components/session.ts
- src/models/components/sessionslist.ts
@@ -824,6 +865,7 @@ generatedFiles:
- src/models/operations/getownerfromname.ts
- src/models/operations/getowners.ts
- src/models/operations/getownerusers.ts
+ - src/models/operations/getrequest.ts
- src/models/operations/getrequests.ts
- src/models/operations/getrequestsrelay.ts
- src/models/operations/getresource.ts
@@ -832,6 +874,7 @@ generatedFiles:
- src/models/operations/getresourcereviewers.ts
- src/models/operations/getresourcereviewerstages.ts
- src/models/operations/getresources.ts
+ - src/models/operations/getresourcescopedrolepermissions.ts
- src/models/operations/getresourcetags.ts
- src/models/operations/getresourceuser.ts
- src/models/operations/getresourceusers.ts
@@ -864,6 +907,7 @@ generatedFiles:
- src/models/operations/setresourcemessagechannels.ts
- src/models/operations/setresourcereviewers.ts
- src/models/operations/setresourcereviewerstages.ts
+ - src/models/operations/setresourcescopedrolepermissions.ts
- src/models/operations/setresourcevisibility.ts
- src/models/operations/updateaccessrule.ts
- src/models/operations/updatebundle.ts
@@ -886,6 +930,7 @@ generatedFiles:
- src/sdk/owners.ts
- src/sdk/requests.ts
- src/sdk/resources.ts
+ - src/sdk/scopedrolepermissions.ts
- src/sdk/sdk.ts
- src/sdk/sessions.ts
- src/sdk/tags.ts
@@ -1650,6 +1695,8 @@ examples:
path:
group_id: "4baf8423-db0a-4037-a4cf-f79c60cb67a5"
user_id: "f92aa855-cea9-4814-b9d8-f2a60d3e4a06"
+ query:
+ access_level_remote_id: "30"
getGroupBindings:
"":
parameters:
@@ -1967,7 +2014,7 @@ examples:
application/json: {"name": "Okta Engineering Super Admin", "description": "Okta super admin role.", "resource_type": "OKTA_ROLE", "app_id": "f454d283-ca87-4a8a-bdbb-df212eca5353", "remote_resource_id": "API_ACCESS_MANAGEMENT_ADMIN-51d203da-313a-4fd9-8fcf-420ce6312345", "metadata": "{\n \"okta_directory_role\":\n {\n \"role_id\": \"SUPER_ADMIN-b52aa037-4a35-4ac3-9350-f6260fd12345\",\n \"role_type\": \"SUPER_ADMIN\",\n },\n}"}
responses:
"200":
- application/json: {"resource_id": "f454d283-ca87-4a8a-bdbb-df212eca5353", "app_id": "b5a5ca27-0ea3-4d86-9199-2126d57d1fbd", "description": "This resource represents AWS IAM role \"SupportUser\".", "admin_owner_id": "7c86c85d-0651-43e2-a748-d69d658418e8", "max_duration": 120, "require_manager_approval": false, "require_support_ticket": false, "parent_resource_id": "f454d283-ca67-4a8a-bdbb-df212eca5345"}
+ application/json: {"resource_id": "f454d283-ca87-4a8a-bdbb-df212eca5353", "app_id": "b5a5ca27-0ea3-4d86-9199-2126d57d1fbd", "description": "This resource represents AWS IAM role \"SupportUser\".", "admin_owner_id": "7c86c85d-0651-43e2-a748-d69d658418e8", "max_duration": 120, "require_manager_approval": false, "require_support_ticket": false, "parent_resource_id": "f454d283-ca67-4a8a-bdbb-df212eca5345", "ancestor_resource_ids": ["f454d283-ca67-4a8a-bdbb-df212eca5345"], "descendant_resource_ids": ["f454d283-ca67-4a8a-bdbb-df212eca5345"]}
get_resource:
"":
parameters:
@@ -1982,7 +2029,7 @@ examples:
resource_id: "4baf8423-db0a-4037-a4cf-f79c60cb67a5"
responses:
"200":
- application/json: {"resource_id": "f454d283-ca87-4a8a-bdbb-df212eca5353", "app_id": "b5a5ca27-0ea3-4d86-9199-2126d57d1fbd", "description": "This resource represents AWS IAM role \"SupportUser\".", "admin_owner_id": "7c86c85d-0651-43e2-a748-d69d658418e8", "max_duration": 120, "require_manager_approval": false, "require_support_ticket": false, "parent_resource_id": "f454d283-ca67-4a8a-bdbb-df212eca5345"}
+ application/json: {"resource_id": "f454d283-ca87-4a8a-bdbb-df212eca5353", "app_id": "b5a5ca27-0ea3-4d86-9199-2126d57d1fbd", "description": "This resource represents AWS IAM role \"SupportUser\".", "admin_owner_id": "7c86c85d-0651-43e2-a748-d69d658418e8", "max_duration": 120, "require_manager_approval": false, "require_support_ticket": false, "parent_resource_id": "f454d283-ca67-4a8a-bdbb-df212eca5345", "ancestor_resource_ids": ["f454d283-ca67-4a8a-bdbb-df212eca5345"], "descendant_resource_ids": ["f454d283-ca67-4a8a-bdbb-df212eca5345"]}
delete_resource:
"":
parameters:
@@ -2693,5 +2740,31 @@ examples:
responses:
"200":
application/json: {"group_id": "1b978423-db0a-4037-a4cf-f79c60cb67b3", "user_id": "29827fb8-f2dd-4e80-9576-28e31e9934ac", "full_name": "Jake Barnes", "email": "jake@company.dev", "expiration_date": "2022-01-23T04:56:07Z"}
+ getRequest:
+ speakeasy-default-get-request:
+ parameters:
+ path:
+ id: "4baf8423-db0a-4037-a4cf-f79c60cb67a5"
+ responses:
+ "200":
+ application/json: {"id": "7c86c85d-0651-43e2-a748-d69d658418e8", "created_at": "2021-01-06T20:00:00Z", "updated_at": "2021-01-06T20:00:00Z", "requester_id": "c86c85d-0651-43e2-a748-d69d658418e8", "target_user_id": "r86c85d-0651-43e2-a748-d69d658418e8", "target_group_id": "r86c85d-0651-43e2-a748-d69d658418e8", "status": "APPROVED", "reason": "I need this resource.", "duration_minutes": 1440, "stages": {"requestedRoleName": "Admin", "requestedItemName": "AWS Production Account", "stages": [{"stage": 1, "operator": "AND", "reviewers": [{"id": "7c86c85d-0651-43e2-a748-d69d658418e8", "status": "PENDING"}]}, {"stage": 2, "operator": "OR", "reviewers": [{"id": "8d86c85d-0651-43e2-a748-d69d658418e9", "status": "APPROVED"}]}]}}
+ get_resource_scoped_role_permissions:
+ speakeasy-default-get-resource-scoped-role-permissions:
+ parameters:
+ path:
+ resource_id: "1b978423-db0a-4037-a4cf-f79c60cb67b3"
+ responses:
+ "200":
+ application/json: {"permissions": [{"target_ids": ["a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1", "8294e9c9-deb6-48e9-9c99-da2a1e04a87f"], "target_type": "RESOURCE", "permission_name": "READ", "allow_all": true}]}
+ set_resource_scoped_role_permissions:
+ speakeasy-default-set-resource-scoped-role-permissions:
+ parameters:
+ path:
+ resource_id: "1b978423-db0a-4037-a4cf-f79c60cb67b3"
+ requestBody:
+ application/json: {"permissions": [{"target_ids": ["a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1", "8294e9c9-deb6-48e9-9c99-da2a1e04a87f"], "target_type": "RESOURCE", "permission_name": "READ", "allow_all": false}]}
+ responses:
+ "200":
+ application/json: {"permissions": [{"target_ids": ["a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1", "8294e9c9-deb6-48e9-9c99-da2a1e04a87f"], "target_type": "RESOURCE", "permission_name": "READ", "allow_all": false}]}
examplesVersion: 1.0.2
generatedTests: {}
diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml
index eaaaf61..c0ed3c7 100644
--- a/.speakeasy/gen.yaml
+++ b/.speakeasy/gen.yaml
@@ -19,8 +19,12 @@ generation:
auth:
oAuth2ClientCredentialsEnabled: true
oAuth2PasswordEnabled: true
+ tests:
+ generateTests: true
+ generateNewTests: false
+ skipResponseBodyAssertions: false
typescript:
- version: 0.6.2
+ version: 0.7.1
additionalDependencies:
dependencies: {}
devDependencies: {}
@@ -29,6 +33,7 @@ typescript:
author: Speakeasy
baseErrorName: OpalMcpError
clientServerStatusCodesAsErrors: true
+ constFieldsAlwaysOptional: true
defaultErrorName: APIError
enableCustomCodeRegions: false
enableMCPServer: true
@@ -37,6 +42,7 @@ typescript:
envVarPrefix: OPALMCP
flattenGlobalSecurity: true
flatteningOrder: parameters-first
+ generateExamples: true
imports:
option: openapi
paths:
diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock
index 10e9705..83c0a99 100644
--- a/.speakeasy/workflow.lock
+++ b/.speakeasy/workflow.lock
@@ -1,9 +1,9 @@
-speakeasyVersion: 1.561.0
+speakeasyVersion: 1.590.0
sources:
Opal API:
sourceNamespace: opal-api
- sourceRevisionDigest: sha256:1fdd8c27236a9027881385b6639278ce0427267c3ebf65716fb68c1c9a11cf50
- sourceBlobDigest: sha256:b25c0d572405319604a058093680a7fab5ba152bd2c55232be98f78e73023961
+ sourceRevisionDigest: sha256:067c5383611892ea1a3f8c0c384da4a0b10b3703e6fb4dbd342edb2fa87830d1
+ sourceBlobDigest: sha256:67fb11fb473e55687e0248d684376946d36de786a48503150ae4ba0c8ffcd0b4
tags:
- latest
- "1.0"
@@ -11,10 +11,10 @@ targets:
opal-mcp:
source: Opal API
sourceNamespace: opal-api
- sourceRevisionDigest: sha256:1fdd8c27236a9027881385b6639278ce0427267c3ebf65716fb68c1c9a11cf50
- sourceBlobDigest: sha256:b25c0d572405319604a058093680a7fab5ba152bd2c55232be98f78e73023961
+ sourceRevisionDigest: sha256:067c5383611892ea1a3f8c0c384da4a0b10b3703e6fb4dbd342edb2fa87830d1
+ sourceBlobDigest: sha256:67fb11fb473e55687e0248d684376946d36de786a48503150ae4ba0c8ffcd0b4
codeSamplesNamespace: opal-api-typescript-code-samples
- codeSamplesRevisionDigest: sha256:959aa2e08e579270541d2411016d735d2a085d333207d82c51b547eed1444dbf
+ codeSamplesRevisionDigest: sha256:bb41675b65d70039fffb25478f0b1c5930e88436903a1524737b390200b3d127
workflow:
workflowVersion: 1.0.0
speakeasyVersion: latest
diff --git a/README.md b/README.md
index 7e40674..f7ec725 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,6 @@ Opal API: The Opal API is a RESTful API that allows you to interact with the Opa
* [opal-mcp](#opal-mcp)
* [Build the image](#build-the-image)
* [Run the container](#run-the-container)
- * [Available Resources and Operations](#available-resources-and-operations)
* [Maturity](#maturity)
* [Contributions](#contributions)
@@ -399,7 +398,8 @@ For additional help, you can:
* [getRequests](docs/sdks/requests/README.md#getrequests) - Returns a list of requests for your organization that is visible by the admin.
* [createRequest](docs/sdks/requests/README.md#createrequest) - Create an access request
-* [getRequestsRelay](docs/sdks/requests/README.md#getrequestsrelay) - Returns a paginated list of requests using Relay-style cursor pagination.
+* [~~getRequestsRelay~~](docs/sdks/requests/README.md#getrequestsrelay) - Returns a paginated list of requests using Relay-style cursor pagination. :warning: **Deprecated**
+* [getRequest](docs/sdks/requests/README.md#getrequest) - Returns a request by ID.
* [approveRequest](docs/sdks/requests/README.md#approverequest) - Approve an access request
### [resources](docs/sdks/resources/README.md)
@@ -427,6 +427,13 @@ For additional help, you can:
* [getResourceUser](docs/sdks/resources/README.md#getresourceuser) - Returns information about a specific user's access to a resource.
* [~~resourceUserAccessStatusRetrieve~~](docs/sdks/resources/README.md#resourceuseraccessstatusretrieve) - Get user's access status to a resource. :warning: **Deprecated**
* [getResourceTags](docs/sdks/resources/README.md#getresourcetags) - Returns all tags applied to the resource.
+* [getResourceScopedRolePermissions](docs/sdks/resources/README.md#getresourcescopedrolepermissions) - Returns all the scoped role permissions that apply to the given resource. Only OPAL_SCOPED_ROLE resource type supports this field.
+* [setResourceScopedRolePermissions](docs/sdks/resources/README.md#setresourcescopedrolepermissions) - Sets all the scoped role permissions on an OPAL_SCOPED_ROLE resource.
+
+### [scopedRolePermissions](docs/sdks/scopedrolepermissions/README.md)
+
+* [getResourceScopedRolePermissions](docs/sdks/scopedrolepermissions/README.md#getresourcescopedrolepermissions) - Returns all the scoped role permissions that apply to the given resource. Only OPAL_SCOPED_ROLE resource type supports this field.
+* [setResourceScopedRolePermissions](docs/sdks/scopedrolepermissions/README.md#setresourcescopedrolepermissions) - Sets all the scoped role permissions on an OPAL_SCOPED_ROLE resource.
### [sessions](docs/sdks/sessions/README.md)
@@ -486,6 +493,42 @@ Authentication:
+
+## Pagination
+
+Some of the endpoints in this SDK support pagination. To use pagination, you
+make your SDK calls as usual, but the returned response object will also be an
+async iterable that can be consumed using the [`for await...of`][for-await-of]
+syntax.
+
+[for-await-of]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of
+
+Here's an example of one such pagination call:
+
+```typescript
+import { OpalMcp } from "opal-mcp";
+
+const opalMcp = new OpalMcp({
+ bearerAuth: process.env["OPALMCP_BEARER_AUTH"] ?? "",
+});
+
+async function run() {
+ const result = await opalMcp.bundles.getBundles({
+ pageSize: 200,
+ cursor: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
+ contains: "Engineering",
+ });
+
+ for await (const page of result) {
+ console.log(page);
+ }
+}
+
+run();
+
+```
+
+
## Maturity
diff --git a/docs/models/components/awsaccount.md b/docs/models/components/awsaccount.md
index 531b223..f0dbf21 100644
--- a/docs/models/components/awsaccount.md
+++ b/docs/models/components/awsaccount.md
@@ -9,11 +9,13 @@ import { AwsAccount } from "opal-mcp/models/components";
let value: AwsAccount = {
accountId: "234234234234",
+ organizationalUnitId: "ou-1234",
};
```
## Fields
-| Field | Type | Required | Description | Example |
-| -------------------------- | -------------------------- | -------------------------- | -------------------------- | -------------------------- |
-| `accountId` | *string* | :heavy_check_mark: | The id of the AWS account. | 234234234234 |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
+| `accountId` | *string* | :heavy_check_mark: | The id of the AWS account. | 234234234234 |
+| `organizationalUnitId` | *string* | :heavy_minus_sign: | The id of the AWS organizational unit. Required only if customer has OUs enabled. | ou-1234 |
\ No newline at end of file
diff --git a/docs/models/components/awsorganizationalunit.md b/docs/models/components/awsorganizationalunit.md
new file mode 100644
index 0000000..2a1d2ef
--- /dev/null
+++ b/docs/models/components/awsorganizationalunit.md
@@ -0,0 +1,21 @@
+# AwsOrganizationalUnit
+
+Remote info for AWS organizational unit.
+
+## Example Usage
+
+```typescript
+import { AwsOrganizationalUnit } from "opal-mcp/models/components";
+
+let value: AwsOrganizationalUnit = {
+ parentId: "ou-1234",
+ organizationalUnitId: "ou-1234",
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
+| `parentId` | *string* | :heavy_minus_sign: | The id of the parent organizational unit. | ou-1234 |
+| `organizationalUnitId` | *string* | :heavy_check_mark: | The id of the AWS organizational unit that is being created. | ou-1234 |
\ No newline at end of file
diff --git a/docs/models/components/customconnector.md b/docs/models/components/customconnector.md
new file mode 100644
index 0000000..9f6bb08
--- /dev/null
+++ b/docs/models/components/customconnector.md
@@ -0,0 +1,21 @@
+# CustomConnector
+
+Remote info for a custom connector resource.
+
+## Example Usage
+
+```typescript
+import { CustomConnector } from "opal-mcp/models/components";
+
+let value: CustomConnector = {
+ remoteResourceId: "01fa7402-01d8-103b-8deb-5f3a0ab7884",
+ canHaveUsageEvents: false,
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- |
+| `remoteResourceId` | *string* | :heavy_check_mark: | The id of the resource in the end system | 01fa7402-01d8-103b-8deb-5f3a0ab7884 |
+| `canHaveUsageEvents` | *boolean* | :heavy_check_mark: | A bool representing whether or not the resource can have usage data. | false |
\ No newline at end of file
diff --git a/docs/models/components/googleworkspacerole.md b/docs/models/components/googleworkspacerole.md
new file mode 100644
index 0000000..edd60e6
--- /dev/null
+++ b/docs/models/components/googleworkspacerole.md
@@ -0,0 +1,19 @@
+# GoogleWorkspaceRole
+
+Remote info for GCP workspace role.
+
+## Example Usage
+
+```typescript
+import { GoogleWorkspaceRole } from "opal-mcp/models/components";
+
+let value: GoogleWorkspaceRole = {
+ roleId: "google-workspace-role:01234567890123456",
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| --------------------------------------- | --------------------------------------- | --------------------------------------- | --------------------------------------- | --------------------------------------- |
+| `roleId` | *string* | :heavy_check_mark: | The id of the role. | google-workspace-role:01234567890123456 |
\ No newline at end of file
diff --git a/docs/models/components/groupremoteinfo.md b/docs/models/components/groupremoteinfo.md
index 0d625e5..bbbe6b4 100644
--- a/docs/models/components/groupremoteinfo.md
+++ b/docs/models/components/groupremoteinfo.md
@@ -38,6 +38,12 @@ let value: GroupRemoteInfo = {
snowflakeRole: {
roleId: "01fa7402-01d8-103b-8deb-5f3a0ab7884",
},
+ oktaGroupRule: {
+ ruleId: "0pr3f7zMZZHPgUoWO0g4",
+ },
+ workdayUserSecurityGroup: {
+ groupId: "123abc456def",
+ },
};
```
@@ -54,4 +60,6 @@ let value: GroupRemoteInfo = {
| `duoGroup` | [components.DuoGroup](../../models/components/duogroup.md) | :heavy_minus_sign: | Remote info for Duo Security group. |
| `azureAdSecurityGroup` | [components.AzureAdSecurityGroup](../../models/components/azureadsecuritygroup.md) | :heavy_minus_sign: | Remote info for Microsoft Entra ID Security group. |
| `azureAdMicrosoft365Group` | [components.AzureAdMicrosoft365Group](../../models/components/azureadmicrosoft365group.md) | :heavy_minus_sign: | Remote info for Microsoft Entra ID Microsoft 365 group. |
-| `snowflakeRole` | [components.SnowflakeRole](../../models/components/snowflakerole.md) | :heavy_minus_sign: | Remote info for Snowflake role. |
\ No newline at end of file
+| `snowflakeRole` | [components.SnowflakeRole](../../models/components/snowflakerole.md) | :heavy_minus_sign: | Remote info for Snowflake role. |
+| `oktaGroupRule` | [components.OktaGroupRule](../../models/components/oktagrouprule.md) | :heavy_minus_sign: | Remote info for Okta Directory group rule. |
+| `workdayUserSecurityGroup` | [components.WorkdayUserSecurityGroup](../../models/components/workdayusersecuritygroup.md) | :heavy_minus_sign: | Remote info for Workday User Security group. |
\ No newline at end of file
diff --git a/docs/models/components/oktagrouprule.md b/docs/models/components/oktagrouprule.md
new file mode 100644
index 0000000..0fb9491
--- /dev/null
+++ b/docs/models/components/oktagrouprule.md
@@ -0,0 +1,19 @@
+# OktaGroupRule
+
+Remote info for Okta Directory group rule.
+
+## Example Usage
+
+```typescript
+import { OktaGroupRule } from "opal-mcp/models/components";
+
+let value: OktaGroupRule = {
+ ruleId: "0pr3f7zMZZHPgUoWO0g4",
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ |
+| `ruleId` | *string* | :heavy_check_mark: | The id of the Okta group rule. | 0pr3f7zMZZHPgUoWO0g4 |
\ No newline at end of file
diff --git a/docs/models/components/requestedge.md b/docs/models/components/requestedge.md
index 0d2388d..0052b8e 100644
--- a/docs/models/components/requestedge.md
+++ b/docs/models/components/requestedge.md
@@ -51,5 +51,5 @@ let value: RequestEdge = {
| Field | Type | Required | Description | Example |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| `node` | [components.Request](../../models/components/request.md) | :heavy_check_mark: | # Request Object
### Description
The `Request` object is used to represent a request.
### Usage Example
Returned from the `GET Requests` endpoint. | {
"id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"created_at": "2021-01-06T20:00:00Z",
"updated_at": "2021-01-06T20:00:00Z",
"requester_id": "c86c85d-0651-43e2-a748-d69d658418e8",
"target_user_id": "r86c85d-0651-43e2-a748-d69d658418e8",
"target_group_id": "r86c85d-0651-43e2-a748-d69d658418e8",
"status": "pending",
"reason": "I need this resource.",
"duration_minutes": 1440,
"request_comments": [
{
"id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"created_at": "2021-01-06T20:00:00Z",
"updated_at": "2021-01-06T20:00:00Z",
"request_id": "4c86c85d-0651-43e2-a748-d69d658418e8",
"user_id": "c86c85d-0651-43e2-a748-d69d658418e8",
"comment": "This is a comment."
}
],
"stages": {
"requestedRoleName": "Admin",
"requestedItemName": "AWS Production Account",
"stages": [
{
"stage": 1,
"operator": "AND",
"reviewers": [
{
"id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"status": "PENDING"
}
]
},
{
"stage": 2,
"operator": "OR",
"reviewers": [
{
"id": "8d86c85d-0651-43e2-a748-d69d658418e9",
"status": "APPROVED"
}
]
}
]
}
} |
+| `node` | [components.RequestT](../../models/components/requestt.md) | :heavy_check_mark: | # Request Object
### Description
The `Request` object is used to represent a request.
### Usage Example
Returned from the `GET Requests` endpoint. | {
"id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"created_at": "2021-01-06T20:00:00Z",
"updated_at": "2021-01-06T20:00:00Z",
"requester_id": "c86c85d-0651-43e2-a748-d69d658418e8",
"target_user_id": "r86c85d-0651-43e2-a748-d69d658418e8",
"target_group_id": "r86c85d-0651-43e2-a748-d69d658418e8",
"status": "pending",
"reason": "I need this resource.",
"duration_minutes": 1440,
"request_comments": [
{
"id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"created_at": "2021-01-06T20:00:00Z",
"updated_at": "2021-01-06T20:00:00Z",
"request_id": "4c86c85d-0651-43e2-a748-d69d658418e8",
"user_id": "c86c85d-0651-43e2-a748-d69d658418e8",
"comment": "This is a comment."
}
],
"stages": {
"requestedRoleName": "Admin",
"requestedItemName": "AWS Production Account",
"stages": [
{
"stage": 1,
"operator": "AND",
"reviewers": [
{
"id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"status": "PENDING"
}
]
},
{
"stage": 2,
"operator": "OR",
"reviewers": [
{
"id": "8d86c85d-0651-43e2-a748-d69d658418e9",
"status": "APPROVED"
}
]
}
]
}
} |
| `cursor` | *string* | :heavy_check_mark: | The cursor for this request edge | |
\ No newline at end of file
diff --git a/docs/models/components/requesteditem.md b/docs/models/components/requesteditem.md
index db6531f..3bd86f2 100644
--- a/docs/models/components/requesteditem.md
+++ b/docs/models/components/requesteditem.md
@@ -29,4 +29,6 @@ let value: RequestedItem = {
| `groupId` | *string* | :heavy_minus_sign: | The ID of the group requested. | f454d283-ca87-4a8a-bdbb-df212eca5353 |
| `accessLevelName` | *string* | :heavy_minus_sign: | The name of the access level requested. | admin |
| `accessLevelRemoteId` | *string* | :heavy_minus_sign: | The ID of the access level requested on the remote system. | arn:aws:iam::490306337630:role/SupportUser |
-| `name` | *string* | :heavy_minus_sign: | The name of the target. | Engineering Team |
\ No newline at end of file
+| `name` | *string* | :heavy_minus_sign: | The name of the target. | Engineering Team |
+| `remoteId` | *string* | :heavy_minus_sign: | The ID of the target on the remote system. | arn:aws:iam::490306337630:role/SupportUser |
+| `remoteName` | *string* | :heavy_minus_sign: | The name of the target on the remote system. | SupportUser |
\ No newline at end of file
diff --git a/docs/models/components/requestlist.md b/docs/models/components/requestlist.md
index b66a725..1b45a83 100644
--- a/docs/models/components/requestlist.md
+++ b/docs/models/components/requestlist.md
@@ -35,5 +35,5 @@ let value: RequestList = {
| Field | Type | Required | Description | Example |
| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ |
-| `requests` | [components.Request](../../models/components/request.md)[] | :heavy_minus_sign: | The list of requests. | |
+| `requests` | [components.RequestT](../../models/components/requestt.md)[] | :heavy_minus_sign: | The list of requests. | |
| `cursor` | *string* | :heavy_minus_sign: | The cursor to use in the next request to get the next page of results. | eyJjcmVhdGVkX2F0IjoiMjAyMS0wMS0wNlQyMDo0NzowMFoiLCJ2YWx1ZSI6ImFkbWluIn0= |
\ No newline at end of file
diff --git a/docs/models/components/request.md b/docs/models/components/requestt.md
similarity index 99%
rename from docs/models/components/request.md
rename to docs/models/components/requestt.md
index 18cd8cf..dcc56f9 100644
--- a/docs/models/components/request.md
+++ b/docs/models/components/requestt.md
@@ -1,4 +1,4 @@
-# Request
+# RequestT
# Request Object
### Description
@@ -10,16 +10,16 @@ Returned from the `GET Requests` endpoint.
## Example Usage
```typescript
-import { Request } from "opal-mcp/models/components";
+import { RequestT } from "opal-mcp/models/components";
-let value: Request = {
+let value: RequestT = {
id: "7c86c85d-0651-43e2-a748-d69d658418e8",
createdAt: new Date("2021-01-06T20:00:00Z"),
updatedAt: new Date("2021-01-06T20:00:00Z"),
requesterId: "c86c85d-0651-43e2-a748-d69d658418e8",
targetUserId: "r86c85d-0651-43e2-a748-d69d658418e8",
targetGroupId: "r86c85d-0651-43e2-a748-d69d658418e8",
- status: "CANCELED",
+ status: "DENIED",
reason: "I need this resource.",
durationMinutes: 1440,
stages: {
diff --git a/docs/models/components/resource.md b/docs/models/components/resource.md
index bfcdbab..6a70127 100644
--- a/docs/models/components/resource.md
+++ b/docs/models/components/resource.md
@@ -21,6 +21,12 @@ let value: Resource = {
requireManagerApproval: false,
requireSupportTicket: false,
parentResourceId: "f454d283-ca67-4a8a-bdbb-df212eca5345",
+ ancestorResourceIds: [
+ "f454d283-ca67-4a8a-bdbb-df212eca5345",
+ ],
+ descendantResourceIds: [
+ "f454d283-ca67-4a8a-bdbb-df212eca5345",
+ ],
};
```
diff --git a/docs/models/components/resourceremoteinfo.md b/docs/models/components/resourceremoteinfo.md
index 1f86efc..049a20a 100644
--- a/docs/models/components/resourceremoteinfo.md
+++ b/docs/models/components/resourceremoteinfo.md
@@ -8,8 +8,13 @@ Information that defines the remote resource. This replaces the deprecated remot
import { ResourceRemoteInfo } from "opal-mcp/models/components";
let value: ResourceRemoteInfo = {
+ awsOrganizationalUnit: {
+ parentId: "ou-1234",
+ organizationalUnitId: "ou-1234",
+ },
awsAccount: {
accountId: "234234234234",
+ organizationalUnitId: "ou-1234",
},
awsPermissionSet: {
arn: "arn:aws:sso:::permissionSet/asdf-32139302d201d32/ps-f03323201211e1b9",
@@ -34,6 +39,10 @@ let value: ResourceRemoteInfo = {
arn: "arn:aws:eks:us-east-2:234234234234:cluster/testcluster",
accountId: "234234234234",
},
+ customConnector: {
+ remoteResourceId: "01fa7402-01d8-103b-8deb-5f3a0ab7884",
+ canHaveUsageEvents: false,
+ },
gcpOrganization: {
organizationId: "organizations/898931321",
},
@@ -72,6 +81,9 @@ let value: ResourceRemoteInfo = {
serviceAccountId: "103561576023829460000",
projectId: "example-project-898931321",
},
+ googleWorkspaceRole: {
+ roleId: "google-workspace-role:01234567890123456",
+ },
githubRepo: {
repoName: "Opal Security",
},
@@ -110,12 +122,14 @@ let value: ResourceRemoteInfo = {
| Field | Type | Required | Description |
| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
+| `awsOrganizationalUnit` | [components.AwsOrganizationalUnit](../../models/components/awsorganizationalunit.md) | :heavy_minus_sign: | Remote info for AWS organizational unit. |
| `awsAccount` | [components.AwsAccount](../../models/components/awsaccount.md) | :heavy_minus_sign: | Remote info for AWS account. |
| `awsPermissionSet` | [components.AwsPermissionSet](../../models/components/awspermissionset.md) | :heavy_minus_sign: | Remote info for AWS Identity Center permission set. |
| `awsIamRole` | [components.AwsIamRole](../../models/components/awsiamrole.md) | :heavy_minus_sign: | Remote info for AWS IAM role. |
| `awsEc2Instance` | [components.AwsEc2Instance](../../models/components/awsec2instance.md) | :heavy_minus_sign: | Remote info for AWS EC2 instance. |
| `awsRdsInstance` | [components.AwsRdsInstance](../../models/components/awsrdsinstance.md) | :heavy_minus_sign: | Remote info for AWS RDS instance. |
| `awsEksCluster` | [components.AwsEksCluster](../../models/components/awsekscluster.md) | :heavy_minus_sign: | Remote info for AWS EKS cluster. |
+| `customConnector` | [components.CustomConnector](../../models/components/customconnector.md) | :heavy_minus_sign: | Remote info for a custom connector resource. |
| `gcpOrganization` | [components.GcpOrganization](../../models/components/gcporganization.md) | :heavy_minus_sign: | Remote info for GCP organization. |
| `gcpBucket` | [components.GcpBucket](../../models/components/gcpbucket.md) | :heavy_minus_sign: | Remote info for GCP bucket. |
| `gcpComputeInstance` | [components.GcpComputeInstance](../../models/components/gcpcomputeinstance.md) | :heavy_minus_sign: | Remote info for GCP compute instance. |
@@ -126,6 +140,7 @@ let value: ResourceRemoteInfo = {
| `gcpProject` | [components.GcpProject](../../models/components/gcpproject.md) | :heavy_minus_sign: | Remote info for GCP project. |
| `gcpSqlInstance` | [components.GcpSqlInstance](../../models/components/gcpsqlinstance.md) | :heavy_minus_sign: | Remote info for GCP SQL instance. |
| `gcpServiceAccount` | [components.GcpServiceAccount](../../models/components/gcpserviceaccount.md) | :heavy_minus_sign: | Remote info for a GCP service account. |
+| `googleWorkspaceRole` | [components.GoogleWorkspaceRole](../../models/components/googleworkspacerole.md) | :heavy_minus_sign: | Remote info for GCP workspace role. |
| `githubRepo` | [components.GithubRepo](../../models/components/githubrepo.md) | :heavy_minus_sign: | Remote info for GitHub repository. |
| `gitlabProject` | [components.GitlabProject](../../models/components/gitlabproject.md) | :heavy_minus_sign: | Remote info for Gitlab project. |
| `oktaApp` | [components.OktaApp](../../models/components/oktaapp.md) | :heavy_minus_sign: | Remote info for Okta directory app. |
diff --git a/docs/models/components/rolepermissionnameenum.md b/docs/models/components/rolepermissionnameenum.md
new file mode 100644
index 0000000..ae81cc5
--- /dev/null
+++ b/docs/models/components/rolepermissionnameenum.md
@@ -0,0 +1,17 @@
+# RolePermissionNameEnum
+
+The name of the role permission.
+
+## Example Usage
+
+```typescript
+import { RolePermissionNameEnum } from "opal-mcp/models/components";
+
+let value: RolePermissionNameEnum = "READ";
+```
+
+## Values
+
+```typescript
+"READ" | "READ_ASSIGNMENTS" | "CREATE" | "IMPORT" | "EXPORT" | "SYNC" | "DELETE" | "READ_SETTINGS" | "EDIT_TAGS" | "EDIT_SETTINGS" | "EDIT_SYNC_SETTINGS" | "EDIT_ASSIGNMENTS" | "EDIT_REQUEST_CONFIGURATIONS" | "EDIT_EVENT_STREAM" | "ASSIGN_UAR_REVIEWERS" | "SEND_REMINDERS" | "STOP" | "REQUEST_ON_BEHALF"
+```
\ No newline at end of file
diff --git a/docs/models/components/rolepermissiontargettypeenum.md b/docs/models/components/rolepermissiontargettypeenum.md
new file mode 100644
index 0000000..31151f1
--- /dev/null
+++ b/docs/models/components/rolepermissiontargettypeenum.md
@@ -0,0 +1,17 @@
+# RolePermissionTargetTypeEnum
+
+The type of the target for the role permission.
+
+## Example Usage
+
+```typescript
+import { RolePermissionTargetTypeEnum } from "opal-mcp/models/components";
+
+let value: RolePermissionTargetTypeEnum = "RESOURCE";
+```
+
+## Values
+
+```typescript
+"RESOURCE" | "CONNECTION" | "GROUP" | "BUNDLE" | "USER" | "ACCESS_REVIEW"
+```
\ No newline at end of file
diff --git a/docs/models/components/scopedrolepermission.md b/docs/models/components/scopedrolepermission.md
new file mode 100644
index 0000000..6df15d0
--- /dev/null
+++ b/docs/models/components/scopedrolepermission.md
@@ -0,0 +1,26 @@
+# ScopedRolePermission
+
+## Example Usage
+
+```typescript
+import { ScopedRolePermission } from "opal-mcp/models/components";
+
+let value: ScopedRolePermission = {
+ targetIds: [
+ "a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1",
+ "8294e9c9-deb6-48e9-9c99-da2a1e04a87f",
+ ],
+ targetType: "RESOURCE",
+ permissionName: "READ",
+ allowAll: false,
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ |
+| `targetIds` | *string*[] | :heavy_minus_sign: | The IDs of the entities that this permission applies to. If empty of missing, the permission will have untargeted scope. | [
"a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1",
"8294e9c9-deb6-48e9-9c99-da2a1e04a87f"
] |
+| `targetType` | [components.RolePermissionTargetTypeEnum](../../models/components/rolepermissiontargettypeenum.md) | :heavy_check_mark: | The type of the target for the role permission. | RESOURCE |
+| `permissionName` | [components.RolePermissionNameEnum](../../models/components/rolepermissionnameenum.md) | :heavy_check_mark: | The name of the role permission. | READ |
+| `allowAll` | *boolean* | :heavy_check_mark: | N/A | |
\ No newline at end of file
diff --git a/docs/models/components/scopedrolepermissionlist.md b/docs/models/components/scopedrolepermissionlist.md
new file mode 100644
index 0000000..25658ec
--- /dev/null
+++ b/docs/models/components/scopedrolepermissionlist.md
@@ -0,0 +1,27 @@
+# ScopedRolePermissionList
+
+## Example Usage
+
+```typescript
+import { ScopedRolePermissionList } from "opal-mcp/models/components";
+
+let value: ScopedRolePermissionList = {
+ permissions: [
+ {
+ targetIds: [
+ "a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1",
+ "8294e9c9-deb6-48e9-9c99-da2a1e04a87f",
+ ],
+ targetType: "RESOURCE",
+ permissionName: "READ",
+ allowAll: true,
+ },
+ ],
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description |
+| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ |
+| `permissions` | [components.ScopedRolePermission](../../models/components/scopedrolepermission.md)[] | :heavy_check_mark: | N/A |
\ No newline at end of file
diff --git a/docs/models/components/workdayusersecuritygroup.md b/docs/models/components/workdayusersecuritygroup.md
new file mode 100644
index 0000000..a39dafc
--- /dev/null
+++ b/docs/models/components/workdayusersecuritygroup.md
@@ -0,0 +1,19 @@
+# WorkdayUserSecurityGroup
+
+Remote info for Workday User Security group.
+
+## Example Usage
+
+```typescript
+import { WorkdayUserSecurityGroup } from "opal-mcp/models/components";
+
+let value: WorkdayUserSecurityGroup = {
+ groupId: "123abc456def",
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | ------------------------------------------ |
+| `groupId` | *string* | :heavy_check_mark: | The id of the Workday User Security group. | 123abc456def |
\ No newline at end of file
diff --git a/docs/models/operations/addbundlegrouprequest.md b/docs/models/operations/addbundlegrouprequest.md
index 99b89c0..18e614f 100644
--- a/docs/models/operations/addbundlegrouprequest.md
+++ b/docs/models/operations/addbundlegrouprequest.md
@@ -7,6 +7,11 @@ import { AddBundleGroupRequest } from "opal-mcp/models/operations";
let value: AddBundleGroupRequest = {
bundleId: "32acc112-21ff-4669-91c2-21e27683eaa1",
+ requestBody: {
+ groupId: "72e75a6f-7183-48c5-94ff-6013f213314b",
+ accessLevelRemoteId: "arn:aws:iam::590304332660:role/AdministratorAccess",
+ accessLevelName: "AdministratorAccess",
+ },
};
```
diff --git a/docs/models/operations/addgroupcontaininggrouprequest.md b/docs/models/operations/addgroupcontaininggrouprequest.md
index 60509a7..d1a91ff 100644
--- a/docs/models/operations/addgroupcontaininggrouprequest.md
+++ b/docs/models/operations/addgroupcontaininggrouprequest.md
@@ -7,6 +7,9 @@ import { AddGroupContainingGroupRequest } from "opal-mcp/models/operations";
let value: AddGroupContainingGroupRequest = {
groupId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
+ groupContainingGroup: {
+ containingGroupId: "f454d283-ca87-4a8a-bdbb-df212eca5353",
+ },
};
```
diff --git a/docs/models/operations/approverequestrequest.md b/docs/models/operations/approverequestrequest.md
index 26b02f1..7cfe113 100644
--- a/docs/models/operations/approverequestrequest.md
+++ b/docs/models/operations/approverequestrequest.md
@@ -7,6 +7,10 @@ import { ApproveRequestRequest } from "opal-mcp/models/operations";
let value: ApproveRequestRequest = {
id: "ae5ef234-75fd-4108-95f7-05f65b859c51",
+ requestBody: {
+ level: "REGULAR",
+ comment: "Approved after security review",
+ },
};
```
diff --git a/docs/models/operations/approverequestresponse.md b/docs/models/operations/approverequestresponse.md
index 637e2cc..162793a 100644
--- a/docs/models/operations/approverequestresponse.md
+++ b/docs/models/operations/approverequestresponse.md
@@ -53,5 +53,5 @@ let value: ApproveRequestResponse = {
| Field | Type | Required | Description | Example |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| `request` | [components.Request](../../models/components/request.md) | :heavy_minus_sign: | # Request Object
### Description
The `Request` object is used to represent a request.
### Usage Example
Returned from the `GET Requests` endpoint. | {
"id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"created_at": "2021-01-06T20:00:00Z",
"updated_at": "2021-01-06T20:00:00Z",
"requester_id": "c86c85d-0651-43e2-a748-d69d658418e8",
"target_user_id": "r86c85d-0651-43e2-a748-d69d658418e8",
"target_group_id": "r86c85d-0651-43e2-a748-d69d658418e8",
"status": "pending",
"reason": "I need this resource.",
"duration_minutes": 1440,
"request_comments": [
{
"id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"created_at": "2021-01-06T20:00:00Z",
"updated_at": "2021-01-06T20:00:00Z",
"request_id": "4c86c85d-0651-43e2-a748-d69d658418e8",
"user_id": "c86c85d-0651-43e2-a748-d69d658418e8",
"comment": "This is a comment."
}
],
"stages": {
"requestedRoleName": "Admin",
"requestedItemName": "AWS Production Account",
"stages": [
{
"stage": 1,
"operator": "AND",
"reviewers": [
{
"id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"status": "PENDING"
}
]
},
{
"stage": 2,
"operator": "OR",
"reviewers": [
{
"id": "8d86c85d-0651-43e2-a748-d69d658418e9",
"status": "APPROVED"
}
]
}
]
}
} |
+| `request` | [components.RequestT](../../models/components/requestt.md) | :heavy_minus_sign: | # Request Object
### Description
The `Request` object is used to represent a request.
### Usage Example
Returned from the `GET Requests` endpoint. | {
"id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"created_at": "2021-01-06T20:00:00Z",
"updated_at": "2021-01-06T20:00:00Z",
"requester_id": "c86c85d-0651-43e2-a748-d69d658418e8",
"target_user_id": "r86c85d-0651-43e2-a748-d69d658418e8",
"target_group_id": "r86c85d-0651-43e2-a748-d69d658418e8",
"status": "pending",
"reason": "I need this resource.",
"duration_minutes": 1440,
"request_comments": [
{
"id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"created_at": "2021-01-06T20:00:00Z",
"updated_at": "2021-01-06T20:00:00Z",
"request_id": "4c86c85d-0651-43e2-a748-d69d658418e8",
"user_id": "c86c85d-0651-43e2-a748-d69d658418e8",
"comment": "This is a comment."
}
],
"stages": {
"requestedRoleName": "Admin",
"requestedItemName": "AWS Production Account",
"stages": [
{
"stage": 1,
"operator": "AND",
"reviewers": [
{
"id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"status": "PENDING"
}
]
},
{
"stage": 2,
"operator": "OR",
"reviewers": [
{
"id": "8d86c85d-0651-43e2-a748-d69d658418e9",
"status": "APPROVED"
}
]
}
]
}
} |
| `taskId` | *string* | :heavy_minus_sign: | ID of the task created for propagating access | c6f85bfb-3fe7-4936-a68d-7a5e1e3d0f6a |
\ No newline at end of file
diff --git a/docs/models/operations/deletegroupuserrequest.md b/docs/models/operations/deletegroupuserrequest.md
index 3e98670..ae773f8 100644
--- a/docs/models/operations/deletegroupuserrequest.md
+++ b/docs/models/operations/deletegroupuserrequest.md
@@ -8,12 +8,14 @@ import { DeleteGroupUserRequest } from "opal-mcp/models/operations";
let value: DeleteGroupUserRequest = {
groupId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
userId: "f92aa855-cea9-4814-b9d8-f2a60d3e4a06",
+ accessLevelRemoteId: "30",
};
```
## Fields
-| Field | Type | Required | Description | Example |
-| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- |
-| `groupId` | *string* | :heavy_check_mark: | The ID of the group. | 4baf8423-db0a-4037-a4cf-f79c60cb67a5 |
-| `userId` | *string* | :heavy_check_mark: | The ID of a user to remove from this group. | f92aa855-cea9-4814-b9d8-f2a60d3e4a06 |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `groupId` | *string* | :heavy_check_mark: | The ID of the group. | 4baf8423-db0a-4037-a4cf-f79c60cb67a5 |
+| `userId` | *string* | :heavy_check_mark: | The ID of a user to remove from this group. | f92aa855-cea9-4814-b9d8-f2a60d3e4a06 |
+| `accessLevelRemoteId` | *string* | :heavy_minus_sign: | The remote ID of the access level for which this user has direct access. If omitted, the default access level remote ID value (empty string) is assumed. | 30 |
\ No newline at end of file
diff --git a/docs/models/operations/eventsresponse.md b/docs/models/operations/eventsresponse.md
new file mode 100644
index 0000000..9e58c33
--- /dev/null
+++ b/docs/models/operations/eventsresponse.md
@@ -0,0 +1,36 @@
+# EventsResponse
+
+## Example Usage
+
+```typescript
+import { EventsResponse } from "opal-mcp/models/operations";
+
+let value: EventsResponse = {
+ result: {
+ next: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
+ previous: "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
+ results: [
+ {
+ eventId: "29827fb8-f2dd-4e80-9576-28e31e9934ac",
+ actorUserId: "1b978423-db0a-4037-a4cf-f79c60cb67b3",
+ actorName: "John Smith",
+ eventType: "USERS_CREATED",
+ createdAt: new Date("2022-01-23T04:56:07Z"),
+ },
+ {
+ eventId: "7646aa9a-e2ee-4eb5-8c62-91f29038a373",
+ actorUserId: "1b978423-db0a-4037-a4cf-f79c60cb67b3",
+ actorName: "John Smith",
+ eventType: "USER_TEAM_UPDATED",
+ createdAt: new Date("2022-02-03T12:33:02Z"),
+ },
+ ],
+ },
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | [components.PaginatedEventList](../../models/components/paginatedeventlist.md) | :heavy_check_mark: | N/A | {
"next": "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
"previous": "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
"results": [
{
"event_id": "29827fb8-f2dd-4e80-9576-28e31e9934ac",
"actor_user_id": "1b978423-db0a-4037-a4cf-f79c60cb67b3",
"created_at": "2022-01-23T04:56:07Z",
"event_type": "USERS_CREATED"
},
{
"event_id": "7646aa9a-e2ee-4eb5-8c62-91f29038a373",
"actor_user_id": "1b978423-db0a-4037-a4cf-f79c60cb67b3",
"created_at": "2022-02-03T12:33:02Z",
"event_type": "USER_TEAM_UPDATED"
}
]
} |
\ No newline at end of file
diff --git a/docs/models/operations/getbundlegroupsresponse.md b/docs/models/operations/getbundlegroupsresponse.md
new file mode 100644
index 0000000..9b70187
--- /dev/null
+++ b/docs/models/operations/getbundlegroupsresponse.md
@@ -0,0 +1,25 @@
+# GetBundleGroupsResponse
+
+## Example Usage
+
+```typescript
+import { GetBundleGroupsResponse } from "opal-mcp/models/operations";
+
+let value: GetBundleGroupsResponse = {
+ result: {
+ previous: "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
+ next: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
+ totalCount: 2,
+ bundleGroups: [
+ {},
+ {},
+ ],
+ },
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | [components.PaginatedBundleGroupList](../../models/components/paginatedbundlegrouplist.md) | :heavy_check_mark: | N/A | {
"next": "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
"previous": "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
"total_count": 2,
"bundle_groups": [
{
"id": "a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1",
"name": "Group 1"
},
{
"id": "8294e9c9-deb6-48e9-9c99-da2a1e04a87f",
"name": "Group 2"
}
]
} |
\ No newline at end of file
diff --git a/docs/models/operations/getbundleresourcesresponse.md b/docs/models/operations/getbundleresourcesresponse.md
new file mode 100644
index 0000000..38fa764
--- /dev/null
+++ b/docs/models/operations/getbundleresourcesresponse.md
@@ -0,0 +1,27 @@
+# GetBundleResourcesResponse
+
+## Example Usage
+
+```typescript
+import { GetBundleResourcesResponse } from "opal-mcp/models/operations";
+
+let value: GetBundleResourcesResponse = {
+ result: {
+ previous: "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
+ next: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
+ totalCount: 3,
+ bundleResources: [
+ {
+ accessLevelName: "read",
+ accessLevelRemoteId: "pull",
+ },
+ ],
+ },
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | [components.PaginatedBundleResourceList](../../models/components/paginatedbundleresourcelist.md) | :heavy_check_mark: | N/A | {
"next": "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
"previous": "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
"total_count": 3,
"bundle_resources": [
{
"id": "a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1",
"name": "Resource 1",
"access_level_name": "read",
"access_level_remote_id": "pull"
}
]
} |
\ No newline at end of file
diff --git a/docs/models/operations/getbundlesresponse.md b/docs/models/operations/getbundlesresponse.md
new file mode 100644
index 0000000..ecd90e3
--- /dev/null
+++ b/docs/models/operations/getbundlesresponse.md
@@ -0,0 +1,38 @@
+# GetBundlesResponse
+
+## Example Usage
+
+```typescript
+import { GetBundlesResponse } from "opal-mcp/models/operations";
+
+let value: GetBundlesResponse = {
+ result: {
+ previous: "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
+ next: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
+ bundles: [
+ {
+ name: "Bundle 1",
+ description: "Description of bundle 1",
+ adminOwnerId: "4aed3e8a-727b-4d72-8010-3b8710c50bec",
+ totalNumItems: 0,
+ totalNumResources: 0,
+ totalNumGroups: 0,
+ },
+ {
+ name: "Bundle 2",
+ description: "Description of bundle 2",
+ adminOwnerId: "4aed3e8a-727b-4d72-8010-3b8710c50bec",
+ totalNumItems: 0,
+ totalNumResources: 0,
+ totalNumGroups: 0,
+ },
+ ],
+ },
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | [components.PaginatedBundleList](../../models/components/paginatedbundlelist.md) | :heavy_check_mark: | N/A | {
"next": "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
"previous": "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
"totalCount": 2,
"bundles": [
{
"id": "a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1",
"name": "Bundle 1",
"description": "Description of bundle 1",
"admin_owner_id": "4aed3e8a-727b-4d72-8010-3b8710c50bec",
"total_num_items": 0,
"total_num_resources": 0,
"total_num_groups": 0
},
{
"id": "8294e9c9-deb6-48e9-9c99-da2a1e04a87f",
"name": "Bundle 2",
"description": "Description of bundle 2",
"admin_owner_id": "4aed3e8a-727b-4d72-8010-3b8710c50bec",
"total_num_items": 0,
"total_num_resources": 0,
"total_num_groups": 0
}
]
} |
\ No newline at end of file
diff --git a/docs/models/operations/getgroupbindingsresponse.md b/docs/models/operations/getgroupbindingsresponse.md
new file mode 100644
index 0000000..00411e4
--- /dev/null
+++ b/docs/models/operations/getgroupbindingsresponse.md
@@ -0,0 +1,54 @@
+# GetGroupBindingsResponse
+
+## Example Usage
+
+```typescript
+import { GetGroupBindingsResponse } from "opal-mcp/models/operations";
+
+let value: GetGroupBindingsResponse = {
+ result: {
+ next: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
+ previous: "cj1sZXdwd2VycWtJ",
+ results: [
+ {
+ groupBindingId: "f454d283-ca87-4a8a-bdbb-df212eca5353",
+ createdById: "99d0b81d-14be-4cf6-bd27-348b4af1d11b",
+ createdAt: new Date("2022-01-23T04:56:07Z"),
+ sourceGroupId: "f454d283-ca87-4a8a-bdbb-df212eca5353",
+ groups: [
+ {
+ groupId: "f454d283-ca87-4a8a-bdbb-df212eca5353",
+ groupType: "OKTA_GROUP",
+ },
+ {
+ groupId: "99d0b81d-14be-4cf6-bd27-348b4af1d11b",
+ groupType: "AWS_SSO_GROUP",
+ },
+ ],
+ },
+ {
+ groupBindingId: "99d0b81d-14be-4cf6-bd27-348b4af1d11b",
+ createdById: "99d0b81d-14be-4cf6-bd27-348b4af1d11b",
+ createdAt: new Date("2022-01-23T04:56:07Z"),
+ sourceGroupId: "99d0b81d-14be-4cf6-bd27-348b4af1d11b",
+ groups: [
+ {
+ groupId: "99d0b81d-14be-4cf6-bd27-348b4af1d11b",
+ groupType: "AWS_SSO_GROUP",
+ },
+ {
+ groupId: "f454d283-ca87-4a8a-bdbb-df212eca5353",
+ groupType: "OKTA_GROUP",
+ },
+ ],
+ },
+ ],
+ },
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | [components.PaginatedGroupBindingsList](../../models/components/paginatedgroupbindingslist.md) | :heavy_check_mark: | N/A | {
"next": "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
"previous": "cj1sZXdwd2VycWtJ",
"results": [
{
"group_binding_id": "f454d283-ca87-4a8a-bdbb-df212eca5353",
"created_by_id": "99d0b81d-14be-4cf6-bd27-348b4af1d11b",
"created_at": "2022-01-23T04:56:07Z",
"source_group_id": "f454d283-ca87-4a8a-bdbb-df212eca5353",
"groups": [
{
"group_id": "f454d283-ca87-4a8a-bdbb-df212eca5353",
"group_type": "OKTA_GROUP"
},
{
"group_id": "99d0b81d-14be-4cf6-bd27-348b4af1d11b",
"group_type": "AWS_SSO_GROUP"
}
]
},
{
"group_binding_id": "99d0b81d-14be-4cf6-bd27-348b4af1d11b",
"created_by_id": "99d0b81d-14be-4cf6-bd27-348b4af1d11b",
"source_group_id": "99d0b81d-14be-4cf6-bd27-348b4af1d11b",
"created_at": "2022-01-23T04:56:07Z",
"groups": [
{
"group_id": "99d0b81d-14be-4cf6-bd27-348b4af1d11b",
"group_type": "AWS_SSO_GROUP"
},
{
"group_id": "f454d283-ca87-4a8a-bdbb-df212eca5353",
"group_type": "OKTA_GROUP"
}
]
}
]
} |
\ No newline at end of file
diff --git a/docs/models/operations/getgroupsresponse.md b/docs/models/operations/getgroupsresponse.md
new file mode 100644
index 0000000..a2194fb
--- /dev/null
+++ b/docs/models/operations/getgroupsresponse.md
@@ -0,0 +1,41 @@
+# GetGroupsResponse
+
+## Example Usage
+
+```typescript
+import { GetGroupsResponse } from "opal-mcp/models/operations";
+
+let value: GetGroupsResponse = {
+ result: {
+ next: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
+ previous: "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
+ results: [
+ {
+ groupId: "f454d283-ca87-4a8a-bdbb-df212eca5353",
+ appId: "b5a5ca27-0ea3-4d86-9199-2126d57d1fbd",
+ description:
+ "This group represents Active Directory group \"Payments Production Admin\". We use this AD group to facilitate staging deployments and qualifying new releases.",
+ adminOwnerId: "7c86c85d-0651-43e2-a748-d69d658418e8",
+ maxDuration: 120,
+ requireManagerApproval: false,
+ requireSupportTicket: false,
+ },
+ {
+ groupId: "99d0b81d-14be-4cf6-bd27-348b4af1d11b",
+ description:
+ "Manages the Integrations Team on-call privileged resources. This group is automatically synced with the on-call rotation defined in PagerDuty.",
+ adminOwnerId: "4220bc12-ab8a-4b5d-be7b-f6bbcf9159f3",
+ maxDuration: 360,
+ requireManagerApproval: false,
+ requireSupportTicket: true,
+ },
+ ],
+ },
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | [components.PaginatedGroupsList](../../models/components/paginatedgroupslist.md) | :heavy_check_mark: | N/A | {
"next": "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
"previous": "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
"results": [
{
"group_id": "f454d283-ca87-4a8a-bdbb-df212eca5353",
"app_id": "b5a5ca27-0ea3-4d86-9199-2126d57d1fbd",
"description": "This group represents Active Directory group \"Payments Production Admin\". We use this AD group to facilitate staging deployments and qualifying new releases.",
"admin_owner_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"max_duration": 120,
"require_manager_approval": false,
"require_support_ticket": false
},
{
"group_id": "99d0b81d-14be-4cf6-bd27-348b4af1d11b",
"description": "Manages the Integrations Team on-call privileged resources. This group is automatically synced with the on-call rotation defined in PagerDuty.",
"admin_owner_id": "4220bc12-ab8a-4b5d-be7b-f6bbcf9159f3",
"max_duration": 360,
"require_manager_approval": false,
"require_support_ticket": true
}
]
} |
\ No newline at end of file
diff --git a/docs/models/operations/getnhisresponse.md b/docs/models/operations/getnhisresponse.md
new file mode 100644
index 0000000..78916d6
--- /dev/null
+++ b/docs/models/operations/getnhisresponse.md
@@ -0,0 +1,39 @@
+# GetNhisResponse
+
+## Example Usage
+
+```typescript
+import { GetNhisResponse } from "opal-mcp/models/operations";
+
+let value: GetNhisResponse = {
+ result: {
+ next: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
+ previous: "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
+ results: [
+ {
+ resourceId: "f454d283-ca67-4a8a-bdbb-df212eca5353",
+ description: "This resource represents AWS IAM role \"SupportUser\".",
+ adminOwnerId: "7c86c85d-0651-43e2-a748-d69d658418e8",
+ maxDuration: 120,
+ requireManagerApproval: false,
+ requireSupportTicket: false,
+ parentResourceId: "f454d283-ca67-4a8a-bdbb-df212eca5345",
+ },
+ {
+ resourceId: "99d0b81d-14be-4cf6-bd27-348b4af1d11b",
+ description: "This resource represents GCP project \"app-demo\".",
+ adminOwnerId: "7c86c85d-0651-43e2-a748-d69d658418e8",
+ maxDuration: 360,
+ requireManagerApproval: false,
+ requireSupportTicket: true,
+ },
+ ],
+ },
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | [components.PaginatedResourcesList](../../models/components/paginatedresourceslist.md) | :heavy_check_mark: | N/A | {
"next": "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
"previous": "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
"results": [
{
"resource_id": "f454d283-ca67-4a8a-bdbb-df212eca5353",
"description": "This resource represents AWS IAM role \"SupportUser\".",
"admin_owner_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"remote_id": "arn:aws:iam::490306337630:role/SupportUser",
"remote_name": "SupportUser",
"max_duration": 120,
"require_manager_approval": false,
"require_support_ticket": false,
"parent_resource_id": "f454d283-ca67-4a8a-bdbb-df212eca5345"
},
{
"resource_id": "99d0b81d-14be-4cf6-bd27-348b4af1d11b",
"description": "This resource represents GCP project \"app-demo\".",
"remote_id": "app-demo-307223",
"remote_name": "app-demo",
"admin_owner_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"max_duration": 360,
"require_manager_approval": false,
"require_support_ticket": true
}
]
} |
\ No newline at end of file
diff --git a/docs/models/operations/getownersresponse.md b/docs/models/operations/getownersresponse.md
new file mode 100644
index 0000000..08aded5
--- /dev/null
+++ b/docs/models/operations/getownersresponse.md
@@ -0,0 +1,34 @@
+# GetOwnersResponse
+
+## Example Usage
+
+```typescript
+import { GetOwnersResponse } from "opal-mcp/models/operations";
+
+let value: GetOwnersResponse = {
+ result: {
+ next: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
+ previous: "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
+ results: [
+ {
+ ownerId: "f454d283-ca87-4a8a-bdbb-df212eca5353",
+ name: "API Owner",
+ description: "This owner represents the API team owners.",
+ accessRequestEscalationPeriod: 120,
+ },
+ {
+ ownerId: "e8581682-04f7-473a-a419-472f0fb26d46",
+ name: "Finance Owner",
+ description: "This owner represents the Finance team owners.",
+ accessRequestEscalationPeriod: 120,
+ },
+ ],
+ },
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | [components.PaginatedOwnersList](../../models/components/paginatedownerslist.md) | :heavy_check_mark: | N/A | {
"next": "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
"previous": "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
"results": [
{
"owner_id": "f454d283-ca87-4a8a-bdbb-df212eca5353",
"name": "API Owner",
"description": "This owner represents the API team owners.",
"access_request_escalation_period": 120
},
{
"owner_id": "e8581682-04f7-473a-a419-472f0fb26d46",
"name": "Finance Owner",
"description": "This owner represents the Finance team owners.",
"access_request_escalation_period": 120
}
]
} |
\ No newline at end of file
diff --git a/docs/models/operations/getrequestrequest.md b/docs/models/operations/getrequestrequest.md
new file mode 100644
index 0000000..7ff1aa0
--- /dev/null
+++ b/docs/models/operations/getrequestrequest.md
@@ -0,0 +1,17 @@
+# GetRequestRequest
+
+## Example Usage
+
+```typescript
+import { GetRequestRequest } from "opal-mcp/models/operations";
+
+let value: GetRequestRequest = {
+ id: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ |
+| `id` | *string* | :heavy_check_mark: | The ID of the request. | 4baf8423-db0a-4037-a4cf-f79c60cb67a5 |
\ No newline at end of file
diff --git a/docs/models/operations/getrequestsresponse.md b/docs/models/operations/getrequestsresponse.md
new file mode 100644
index 0000000..1ba01d6
--- /dev/null
+++ b/docs/models/operations/getrequestsresponse.md
@@ -0,0 +1,33 @@
+# GetRequestsResponse
+
+## Example Usage
+
+```typescript
+import { GetRequestsResponse } from "opal-mcp/models/operations";
+
+let value: GetRequestsResponse = {
+ result: {
+ requests: [
+ {
+ id: "7c86c85d-0651-43e2-a748-d69d658418e8",
+ createdAt: new Date("2021-01-06T20:00:00Z"),
+ updatedAt: new Date("2021-01-06T20:00:00Z"),
+ requesterId: "c86c85d-0651-43e2-a748-d69d658418e8",
+ targetUserId: "r86c85d-0651-43e2-a748-d69d658418e8",
+ targetGroupId: "g86c85d-0651-43e2-a748-d69d658418e8",
+ status: "PENDING",
+ reason: "I need this resource.",
+ durationMinutes: 1440,
+ },
+ ],
+ cursor:
+ "eyJjcmVhdGVkX2F0IjoiMjAyMS0wMS0wNlQyMDo0NzowMFoiLCJ2YWx1ZSI6ImFkbWluIn0=",
+ },
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | [components.RequestList](../../models/components/requestlist.md) | :heavy_check_mark: | N/A | {
"requests": [
{
"id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"organization_id": "w86c85d-0651-43e2-a748-d69d658418e8",
"created_at": "2021-01-06T20:00:00Z",
"updated_at": "2021-01-06T20:00:00Z",
"requester_id": "c86c85d-0651-43e2-a748-d69d658418e8",
"target_user_id": "r86c85d-0651-43e2-a748-d69d658418e8",
"target_group_id": "g86c85d-0651-43e2-a748-d69d658418e8",
"status": "pending",
"reason": "I need this resource.",
"duration_minutes": 1440,
"request_comments": [
{
"id": "4c86c85d-0651-43e2-a748-d69d658418e8",
"created_at": "2021-01-06T20:00:00Z",
"updated_at": "2021-01-06T20:00:00Z",
"request_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"user_id": "c86c85d-0651-43e2-a748-d69d658418e8",
"comment": "This is a comment."
}
]
}
],
"cursor": "eyJjcmVhdGVkX2F0IjoiMjAyMS0wMS0wNlQyMDo0NzowMFoiLCJ2YWx1ZSI6ImFkbWluIn0="
} |
\ No newline at end of file
diff --git a/docs/models/operations/getresourcescopedrolepermissionsrequest.md b/docs/models/operations/getresourcescopedrolepermissionsrequest.md
new file mode 100644
index 0000000..9c06173
--- /dev/null
+++ b/docs/models/operations/getresourcescopedrolepermissionsrequest.md
@@ -0,0 +1,17 @@
+# GetResourceScopedRolePermissionsRequest
+
+## Example Usage
+
+```typescript
+import { GetResourceScopedRolePermissionsRequest } from "opal-mcp/models/operations";
+
+let value: GetResourceScopedRolePermissionsRequest = {
+ resourceId: "1b978423-db0a-4037-a4cf-f79c60cb67b3",
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- |
+| `resourceId` | *string* | :heavy_check_mark: | The ID of the resource whose scoped role permissions belong to. | 1b978423-db0a-4037-a4cf-f79c60cb67b3 |
\ No newline at end of file
diff --git a/docs/models/operations/getresourcesresponse.md b/docs/models/operations/getresourcesresponse.md
new file mode 100644
index 0000000..8208f36
--- /dev/null
+++ b/docs/models/operations/getresourcesresponse.md
@@ -0,0 +1,39 @@
+# GetResourcesResponse
+
+## Example Usage
+
+```typescript
+import { GetResourcesResponse } from "opal-mcp/models/operations";
+
+let value: GetResourcesResponse = {
+ result: {
+ next: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
+ previous: "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
+ results: [
+ {
+ resourceId: "f454d283-ca67-4a8a-bdbb-df212eca5353",
+ description: "This resource represents AWS IAM role \"SupportUser\".",
+ adminOwnerId: "7c86c85d-0651-43e2-a748-d69d658418e8",
+ maxDuration: 120,
+ requireManagerApproval: false,
+ requireSupportTicket: false,
+ parentResourceId: "f454d283-ca67-4a8a-bdbb-df212eca5345",
+ },
+ {
+ resourceId: "99d0b81d-14be-4cf6-bd27-348b4af1d11b",
+ description: "This resource represents GCP project \"app-demo\".",
+ adminOwnerId: "7c86c85d-0651-43e2-a748-d69d658418e8",
+ maxDuration: 360,
+ requireManagerApproval: false,
+ requireSupportTicket: true,
+ },
+ ],
+ },
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | [components.PaginatedResourcesList](../../models/components/paginatedresourceslist.md) | :heavy_check_mark: | N/A | {
"next": "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
"previous": "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
"results": [
{
"resource_id": "f454d283-ca67-4a8a-bdbb-df212eca5353",
"description": "This resource represents AWS IAM role \"SupportUser\".",
"admin_owner_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"remote_id": "arn:aws:iam::490306337630:role/SupportUser",
"remote_name": "SupportUser",
"max_duration": 120,
"require_manager_approval": false,
"require_support_ticket": false,
"parent_resource_id": "f454d283-ca67-4a8a-bdbb-df212eca5345"
},
{
"resource_id": "99d0b81d-14be-4cf6-bd27-348b4af1d11b",
"description": "This resource represents GCP project \"app-demo\".",
"remote_id": "app-demo-307223",
"remote_name": "app-demo",
"admin_owner_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"max_duration": 360,
"require_manager_approval": false,
"require_support_ticket": true
}
]
} |
\ No newline at end of file
diff --git a/docs/models/operations/gettagsresponse.md b/docs/models/operations/gettagsresponse.md
new file mode 100644
index 0000000..a4b55ae
--- /dev/null
+++ b/docs/models/operations/gettagsresponse.md
@@ -0,0 +1,38 @@
+# GetTagsResponse
+
+## Example Usage
+
+```typescript
+import { GetTagsResponse } from "opal-mcp/models/operations";
+
+let value: GetTagsResponse = {
+ result: {
+ next: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
+ previous: "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
+ results: [
+ {
+ tagId: "f290a738-5f9f-43c2-ad67-fa31ff0eb946",
+ createdAt: new Date("2022-01-23T04:56:07Z"),
+ updatedAt: new Date("2022-02-23T01:34:07Z"),
+ userCreatorId: "d4a7d928-783e-4599-8ec6-088d635a5bcc",
+ key: "database-name",
+ value: "redis_db",
+ },
+ {
+ tagId: "92f0a738-5f9f-43c2-ad67-fa31ff0eb052",
+ createdAt: new Date("2022-03-23T04:56:07Z"),
+ updatedAt: new Date("2022-04-23T01:34:07Z"),
+ userCreatorId: "a4d7d928-783e-4599-8ec6-088d635af4ac",
+ key: "database-type",
+ value: "sql",
+ },
+ ],
+ },
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | [components.PaginatedTagsList](../../models/components/paginatedtagslist.md) | :heavy_check_mark: | N/A | {
"next": "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
"previous": "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
"results": [
{
"tag_id": "f290a738-5f9f-43c2-ad67-fa31ff0eb946",
"created_at": "2022-01-23T04:56:07Z",
"updated_at": "2022-02-23T01:34:07Z",
"user_creator_id": "d4a7d928-783e-4599-8ec6-088d635a5bcc",
"admin_owner_id": "bfb518b1-3f5b-4e3b-8eb8-3b3fabd4ea2b",
"key": "database-name",
"value": "redis_db"
},
{
"tag_id": "92f0a738-5f9f-43c2-ad67-fa31ff0eb052",
"created_at": "2022-03-23T04:56:07Z",
"updated_at": "2022-04-23T01:34:07Z",
"user_creator_id": "a4d7d928-783e-4599-8ec6-088d635af4ac",
"admin_owner_id": "gtg418b1-3f5b-4e3b-8eb8-3b3fabd4eaa1",
"key": "database-type",
"value": "sql"
}
]
} |
\ No newline at end of file
diff --git a/docs/models/operations/getuarsresponse.md b/docs/models/operations/getuarsresponse.md
new file mode 100644
index 0000000..888f6a7
--- /dev/null
+++ b/docs/models/operations/getuarsresponse.md
@@ -0,0 +1,72 @@
+# GetUARsResponse
+
+## Example Usage
+
+```typescript
+import { GetUARsResponse } from "opal-mcp/models/operations";
+
+let value: GetUARsResponse = {
+ result: {
+ next: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
+ previous: "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
+ results: [
+ {
+ uarId: "f454d283-ca87-4a8a-bdbb-df212eca5353",
+ name: "Monthly UAR (July)",
+ reviewerAssignmentPolicy: "MANUALLY",
+ sendReviewerAssignmentNotification: false,
+ deadline: new Date("2022-07-14T06:59:59Z"),
+ timeZone: "America/Los_Angeles",
+ selfReviewAllowed: false,
+ uarScope: {
+ admins: [
+ "f454d283-ca87-4a8a-bdbb-df212eca5353",
+ "8763d283-ca87-4a8a-bdbb-df212ecab139",
+ ],
+ tags: [
+ {
+ key: "uar_scope",
+ value: "high_priority",
+ },
+ ],
+ names: [
+ "demo",
+ "api",
+ ],
+ },
+ },
+ {
+ uarId: "39a4d283-ca87-4a8a-bdbb-df212eca5fdb",
+ name: "Monthly UAR (August)",
+ reviewerAssignmentPolicy: "MANUALLY",
+ sendReviewerAssignmentNotification: true,
+ deadline: new Date("2022-08-14T06:59:59Z"),
+ timeZone: "America/Los_Angeles",
+ selfReviewAllowed: false,
+ uarScope: {
+ admins: [
+ "f454d283-ca87-4a8a-bdbb-df212eca5353",
+ "8763d283-ca87-4a8a-bdbb-df212ecab139",
+ ],
+ tags: [
+ {
+ key: "uar_scope",
+ value: "high_priority",
+ },
+ ],
+ names: [
+ "demo",
+ "api",
+ ],
+ },
+ },
+ ],
+ },
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | [components.PaginatedUARsList](../../models/components/paginateduarslist.md) | :heavy_check_mark: | N/A | {
"next": "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
"previous": "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
"results": [
{
"uar_id": "f454d283-ca87-4a8a-bdbb-df212eca5353",
"name": "Monthly UAR (July)",
"send_reviewer_assignment_notification": false,
"deadline": "2022-07-14T06:59:59Z",
"time_zone": "America/Los_Angeles",
"self_review_allowed": false,
"uar_scope": {
"tags": [
{
"key": "uar_scope",
"value": "high_priority"
}
],
"names": [
"demo",
"api"
],
"admins": [
"f454d283-ca87-4a8a-bdbb-df212eca5353",
"8763d283-ca87-4a8a-bdbb-df212ecab139"
]
}
},
{
"uar_id": "39a4d283-ca87-4a8a-bdbb-df212eca5fdb",
"name": "Monthly UAR (August)",
"send_reviewer_assignment_notification": true,
"deadline": "2022-08-14T06:59:59Z",
"time_zone": "America/Los_Angeles",
"self_review_allowed": false,
"uar_scope": {
"tags": [
{
"key": "uar_scope",
"value": "high_priority"
}
],
"names": [
"demo",
"api"
],
"admins": [
"f454d283-ca87-4a8a-bdbb-df212eca5353",
"8763d283-ca87-4a8a-bdbb-df212ecab139"
]
}
}
]
} |
\ No newline at end of file
diff --git a/docs/models/operations/getusersresponse.md b/docs/models/operations/getusersresponse.md
new file mode 100644
index 0000000..efaecd5
--- /dev/null
+++ b/docs/models/operations/getusersresponse.md
@@ -0,0 +1,38 @@
+# GetUsersResponse
+
+## Example Usage
+
+```typescript
+import { GetUsersResponse } from "opal-mcp/models/operations";
+
+let value: GetUsersResponse = {
+ result: {
+ next: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
+ previous: "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
+ results: [
+ {
+ userId: "29827fb8-f2dd-4e80-9576-28e31e9934ac",
+ email: "john.doe@company.dev",
+ fullName: "John Doe",
+ firstName: "John",
+ lastName: "Doe",
+ position: "Senior Engineer",
+ },
+ {
+ userId: "e8581682-04f7-473a-a419-472f0fb26d46",
+ email: "jane.smith@company.dev",
+ fullName: "Jane Smith",
+ firstName: "John",
+ lastName: "Doe",
+ position: "Product Marketing Lead",
+ },
+ ],
+ },
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `result` | [components.PaginatedUsersList](../../models/components/paginateduserslist.md) | :heavy_check_mark: | N/A | {
"next": "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
"previous": "cj1sZXdwd2VycWVtY29zZnNkc2NzUWxNMEUxTXk0ME16UXpNallsTWtJ",
"results": [
{
"user_id": "29827fb8-f2dd-4e80-9576-28e31e9934ac",
"email": "john.doe@company.dev",
"full_name": "John Doe",
"position": "Senior Engineer"
},
{
"user_id": "e8581682-04f7-473a-a419-472f0fb26d46",
"email": "jane.smith@company.dev",
"full_name": "Jane Smith",
"position": "Product Marketing Lead"
}
]
} |
\ No newline at end of file
diff --git a/docs/models/operations/setbundlevisibilityrequest.md b/docs/models/operations/setbundlevisibilityrequest.md
index 69d9181..35d40df 100644
--- a/docs/models/operations/setbundlevisibilityrequest.md
+++ b/docs/models/operations/setbundlevisibilityrequest.md
@@ -7,6 +7,13 @@ import { SetBundleVisibilityRequest } from "opal-mcp/models/operations";
let value: SetBundleVisibilityRequest = {
bundleId: "32acc112-21ff-4669-91c2-21e27683eaa1",
+ visibilityInfo: {
+ visibility: "LIMITED",
+ visibilityGroupIds: [
+ "7870617d-e72a-47f5-a84c-693817ab4567",
+ "1520617d-e72a-47f5-a84c-693817ab48ad2",
+ ],
+ },
};
```
diff --git a/docs/models/operations/setgroupmessagechannelsrequest.md b/docs/models/operations/setgroupmessagechannelsrequest.md
index 97a5856..f39b775 100644
--- a/docs/models/operations/setgroupmessagechannelsrequest.md
+++ b/docs/models/operations/setgroupmessagechannelsrequest.md
@@ -7,6 +7,12 @@ import { SetGroupMessageChannelsRequest } from "opal-mcp/models/operations";
let value: SetGroupMessageChannelsRequest = {
groupId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
+ messageChannelIDList: {
+ messageChannelIds: [
+ "7870617d-e72a-47f5-a84c-693817ab4567",
+ "1520617d-e72a-47f5-a84c-693817ab48ad2",
+ ],
+ },
};
```
diff --git a/docs/models/operations/setgrouponcallschedulesrequest.md b/docs/models/operations/setgrouponcallschedulesrequest.md
index 8812f3d..5101c06 100644
--- a/docs/models/operations/setgrouponcallschedulesrequest.md
+++ b/docs/models/operations/setgrouponcallschedulesrequest.md
@@ -7,6 +7,12 @@ import { SetGroupOnCallSchedulesRequest } from "opal-mcp/models/operations";
let value: SetGroupOnCallSchedulesRequest = {
groupId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
+ onCallScheduleIDList: {
+ onCallScheduleIds: [
+ "9546209c-42c2-4801-96d7-9ec42df0f59c",
+ "bb0197c0-5ea5-45d9-b3b7-b6c439be6435",
+ ],
+ },
};
```
diff --git a/docs/models/operations/setgroupresourcesrequest.md b/docs/models/operations/setgroupresourcesrequest.md
index 23f3112..d562398 100644
--- a/docs/models/operations/setgroupresourcesrequest.md
+++ b/docs/models/operations/setgroupresourcesrequest.md
@@ -7,6 +7,14 @@ import { SetGroupResourcesRequest } from "opal-mcp/models/operations";
let value: SetGroupResourcesRequest = {
groupId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
+ updateGroupResourcesInfo: {
+ resources: [
+ {
+ resourceId: "b5a5ca27-0ea3-4d86-9199-2126d57d1fbd",
+ accessLevelRemoteId: "write",
+ },
+ ],
+ },
};
```
diff --git a/docs/models/operations/setgroupreviewersrequest.md b/docs/models/operations/setgroupreviewersrequest.md
index f0e67b4..e3238ba 100644
--- a/docs/models/operations/setgroupreviewersrequest.md
+++ b/docs/models/operations/setgroupreviewersrequest.md
@@ -7,6 +7,12 @@ import { SetGroupReviewersRequest } from "opal-mcp/models/operations";
let value: SetGroupReviewersRequest = {
groupId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
+ reviewerIDList: {
+ reviewerIds: [
+ "7870617d-e72a-47f5-a84c-693817ab4567",
+ "1520617d-e72a-47f5-a84c-693817ab48ad2",
+ ],
+ },
};
```
diff --git a/docs/models/operations/setgroupreviewerstagesrequest.md b/docs/models/operations/setgroupreviewerstagesrequest.md
index 6e80404..9a0cec8 100644
--- a/docs/models/operations/setgroupreviewerstagesrequest.md
+++ b/docs/models/operations/setgroupreviewerstagesrequest.md
@@ -7,6 +7,18 @@ import { SetGroupReviewerStagesRequest } from "opal-mcp/models/operations";
let value: SetGroupReviewerStagesRequest = {
groupId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
+ reviewerStageList: {
+ stages: [
+ {
+ requireManagerApproval: false,
+ operator: "AND",
+ ownerIds: [
+ "7870617d-e72a-47f5-a84c-693817ab4567",
+ "1520617d-e72a-47f5-a84c-693817ab48ad2",
+ ],
+ },
+ ],
+ },
};
```
diff --git a/docs/models/operations/setgroupvisibilityrequest.md b/docs/models/operations/setgroupvisibilityrequest.md
index 19b473e..191f86c 100644
--- a/docs/models/operations/setgroupvisibilityrequest.md
+++ b/docs/models/operations/setgroupvisibilityrequest.md
@@ -7,6 +7,13 @@ import { SetGroupVisibilityRequest } from "opal-mcp/models/operations";
let value: SetGroupVisibilityRequest = {
groupId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
+ visibilityInfo: {
+ visibility: "LIMITED",
+ visibilityGroupIds: [
+ "7870617d-e72a-47f5-a84c-693817ab4567",
+ "1520617d-e72a-47f5-a84c-693817ab48ad2",
+ ],
+ },
};
```
diff --git a/docs/models/operations/setownerusersrequest.md b/docs/models/operations/setownerusersrequest.md
index 79de668..e9dd97b 100644
--- a/docs/models/operations/setownerusersrequest.md
+++ b/docs/models/operations/setownerusersrequest.md
@@ -7,6 +7,12 @@ import { SetOwnerUsersRequest } from "opal-mcp/models/operations";
let value: SetOwnerUsersRequest = {
ownerId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
+ userIDList: {
+ userIds: [
+ "7870617d-e72a-47f5-a84c-693817ab4567",
+ "1520617d-e72a-47f5-a84c-693817ab48ad2",
+ ],
+ },
};
```
diff --git a/docs/models/operations/setresourcemessagechannelsrequest.md b/docs/models/operations/setresourcemessagechannelsrequest.md
index 58aa7ca..25a4bbb 100644
--- a/docs/models/operations/setresourcemessagechannelsrequest.md
+++ b/docs/models/operations/setresourcemessagechannelsrequest.md
@@ -7,6 +7,12 @@ import { SetResourceMessageChannelsRequest } from "opal-mcp/models/operations";
let value: SetResourceMessageChannelsRequest = {
resourceId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
+ messageChannelIDList: {
+ messageChannelIds: [
+ "7870617d-e72a-47f5-a84c-693817ab4567",
+ "1520617d-e72a-47f5-a84c-693817ab48ad2",
+ ],
+ },
};
```
diff --git a/docs/models/operations/setresourcereviewersrequest.md b/docs/models/operations/setresourcereviewersrequest.md
index ee48487..723599e 100644
--- a/docs/models/operations/setresourcereviewersrequest.md
+++ b/docs/models/operations/setresourcereviewersrequest.md
@@ -7,6 +7,12 @@ import { SetResourceReviewersRequest } from "opal-mcp/models/operations";
let value: SetResourceReviewersRequest = {
resourceId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
+ reviewerIDList: {
+ reviewerIds: [
+ "7870617d-e72a-47f5-a84c-693817ab4567",
+ "1520617d-e72a-47f5-a84c-693817ab48ad2",
+ ],
+ },
};
```
diff --git a/docs/models/operations/setresourcereviewerstagesrequest.md b/docs/models/operations/setresourcereviewerstagesrequest.md
index fade558..2e43f8d 100644
--- a/docs/models/operations/setresourcereviewerstagesrequest.md
+++ b/docs/models/operations/setresourcereviewerstagesrequest.md
@@ -7,6 +7,18 @@ import { SetResourceReviewerStagesRequest } from "opal-mcp/models/operations";
let value: SetResourceReviewerStagesRequest = {
resourceId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
+ reviewerStageList: {
+ stages: [
+ {
+ requireManagerApproval: false,
+ operator: "AND",
+ ownerIds: [
+ "7870617d-e72a-47f5-a84c-693817ab4567",
+ "1520617d-e72a-47f5-a84c-693817ab48ad2",
+ ],
+ },
+ ],
+ },
};
```
diff --git a/docs/models/operations/setresourcescopedrolepermissionsrequest.md b/docs/models/operations/setresourcescopedrolepermissionsrequest.md
new file mode 100644
index 0000000..3ad6363
--- /dev/null
+++ b/docs/models/operations/setresourcescopedrolepermissionsrequest.md
@@ -0,0 +1,31 @@
+# SetResourceScopedRolePermissionsRequest
+
+## Example Usage
+
+```typescript
+import { SetResourceScopedRolePermissionsRequest } from "opal-mcp/models/operations";
+
+let value: SetResourceScopedRolePermissionsRequest = {
+ resourceId: "1b978423-db0a-4037-a4cf-f79c60cb67b3",
+ scopedRolePermissionList: {
+ permissions: [
+ {
+ targetIds: [
+ "a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1",
+ "8294e9c9-deb6-48e9-9c99-da2a1e04a87f",
+ ],
+ targetType: "RESOURCE",
+ permissionName: "READ",
+ allowAll: false,
+ },
+ ],
+ },
+};
+```
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `resourceId` | *string* | :heavy_check_mark: | The ID of the resource whose scoped role permissions belong to. Must be of OPAL_SCOPED_ROLE resource type. | 1b978423-db0a-4037-a4cf-f79c60cb67b3 |
+| `scopedRolePermissionList` | [components.ScopedRolePermissionList](../../models/components/scopedrolepermissionlist.md) | :heavy_check_mark: | N/A | {
"permissions": [
{
"target_ids": [
"a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1",
"8294e9c9-deb6-48e9-9c99-da2a1e04a87f"
],
"target_type": "RESOURCE",
"permission_name": "READ"
}
]
} |
\ No newline at end of file
diff --git a/docs/models/operations/setresourcevisibilityrequest.md b/docs/models/operations/setresourcevisibilityrequest.md
index ce50a65..6b1c24f 100644
--- a/docs/models/operations/setresourcevisibilityrequest.md
+++ b/docs/models/operations/setresourcevisibilityrequest.md
@@ -7,6 +7,13 @@ import { SetResourceVisibilityRequest } from "opal-mcp/models/operations";
let value: SetResourceVisibilityRequest = {
resourceId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
+ visibilityInfo: {
+ visibility: "LIMITED",
+ visibilityGroupIds: [
+ "7870617d-e72a-47f5-a84c-693817ab4567",
+ "1520617d-e72a-47f5-a84c-693817ab48ad2",
+ ],
+ },
};
```
diff --git a/docs/models/operations/updateaccessrulerequest.md b/docs/models/operations/updateaccessrulerequest.md
index 6d07ff1..711d098 100644
--- a/docs/models/operations/updateaccessrulerequest.md
+++ b/docs/models/operations/updateaccessrulerequest.md
@@ -7,6 +7,18 @@ import { UpdateAccessRuleRequest } from "opal-mcp/models/operations";
let value: UpdateAccessRuleRequest = {
accessRuleId: "1b978423-db0a-4037-a4cf-f79c60cb67b3",
+ updateAccessRuleInfo: {
+ name: "Platform Engineering",
+ description:
+ "This access rule represents all platform engineers in the company.",
+ adminOwnerId: "7c86c85d-0651-43e2-a748-d69d658418e8",
+ status: "ACTIVE",
+ ruleClauses: {
+ when: {
+ clauses: [],
+ },
+ },
+ },
};
```
diff --git a/docs/models/operations/updatebundlerequest.md b/docs/models/operations/updatebundlerequest.md
index a693280..60c7131 100644
--- a/docs/models/operations/updatebundlerequest.md
+++ b/docs/models/operations/updatebundlerequest.md
@@ -7,6 +7,11 @@ import { UpdateBundleRequest } from "opal-mcp/models/operations";
let value: UpdateBundleRequest = {
bundleId: "32acc112-21ff-4669-91c2-21e27683eaa1",
+ bundle: {
+ name: "Bundle 1",
+ description: "Description of bundle 1",
+ adminOwnerId: "4aed3e8a-727b-4d72-8010-3b8710c50bec",
+ },
};
```
diff --git a/docs/models/operations/updategroupuserrequest.md b/docs/models/operations/updategroupuserrequest.md
index 5047e9e..0dd34df 100644
--- a/docs/models/operations/updategroupuserrequest.md
+++ b/docs/models/operations/updategroupuserrequest.md
@@ -8,6 +8,10 @@ import { UpdateGroupUserRequest } from "opal-mcp/models/operations";
let value: UpdateGroupUserRequest = {
groupId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
userId: "f92aa855-cea9-4814-b9d8-f2a60d3e4a06",
+ requestBody: {
+ durationMinutes: 60,
+ accessLevelRemoteId: "arn:aws:iam::590304332660:role/AdministratorAccess",
+ },
};
```
diff --git a/docs/models/operations/updateidpgroupmappingsrequest.md b/docs/models/operations/updateidpgroupmappingsrequest.md
index 1ad523e..22708f3 100644
--- a/docs/models/operations/updateidpgroupmappingsrequest.md
+++ b/docs/models/operations/updateidpgroupmappingsrequest.md
@@ -7,6 +7,11 @@ import { UpdateIdpGroupMappingsRequest } from "opal-mcp/models/operations";
let value: UpdateIdpGroupMappingsRequest = {
appResourceId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
+ requestBody: {
+ mappings: [
+ {},
+ ],
+ },
};
```
diff --git a/docs/models/operations/updateresourceuserrequest.md b/docs/models/operations/updateresourceuserrequest.md
index 2ed3a13..dfe46e1 100644
--- a/docs/models/operations/updateresourceuserrequest.md
+++ b/docs/models/operations/updateresourceuserrequest.md
@@ -8,6 +8,10 @@ import { UpdateResourceUserRequest } from "opal-mcp/models/operations";
let value: UpdateResourceUserRequest = {
resourceId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
userId: "f92aa855-cea9-4814-b9d8-f2a60d3e4a06",
+ requestBody: {
+ durationMinutes: 60,
+ accessLevelRemoteId: "arn:aws:iam::590304332660:role/AdministratorAccess",
+ },
};
```
diff --git a/docs/sdks/accessrules/README.md b/docs/sdks/accessrules/README.md
index 14c9585..d874bbc 100644
--- a/docs/sdks/accessrules/README.md
+++ b/docs/sdks/accessrules/README.md
@@ -3,6 +3,8 @@
## Overview
+Operations related to access rules
+
### Available Operations
* [createAccessRule](#createaccessrule) - Creates a new access rule config for the given group_id.
diff --git a/docs/sdks/apps/README.md b/docs/sdks/apps/README.md
index 5f2dc49..6f86079 100644
--- a/docs/sdks/apps/README.md
+++ b/docs/sdks/apps/README.md
@@ -3,6 +3,8 @@
## Overview
+Operations related to apps
+
### Available Operations
* [getApps](#getapps) - Returns a list of `App` objects.
diff --git a/docs/sdks/bundles/README.md b/docs/sdks/bundles/README.md
index e7d821d..2851f8c 100644
--- a/docs/sdks/bundles/README.md
+++ b/docs/sdks/bundles/README.md
@@ -3,6 +3,8 @@
## Overview
+Operations related to bundles
+
### Available Operations
* [getBundles](#getbundles) - Returns a list of `Bundle` objects.
@@ -39,7 +41,9 @@ async function run() {
contains: "Engineering",
});
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
}
run();
@@ -67,7 +71,9 @@ async function run() {
});
if (res.ok) {
const { value: result } = res;
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
} else {
console.log("bundlesGetBundles failed:", res.error);
}
@@ -87,7 +93,7 @@ run();
### Response
-**Promise\<[components.PaginatedBundleList](../../models/components/paginatedbundlelist.md)\>**
+**Promise\<[operations.GetBundlesResponse](../../models/operations/getbundlesresponse.md)\>**
### Errors
@@ -417,7 +423,9 @@ async function run() {
cursor: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
});
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
}
run();
@@ -445,7 +453,9 @@ async function run() {
});
if (res.ok) {
const { value: result } = res;
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
} else {
console.log("bundlesGetBundleResources failed:", res.error);
}
@@ -465,7 +475,7 @@ run();
### Response
-**Promise\<[components.PaginatedBundleResourceList](../../models/components/paginatedbundleresourcelist.md)\>**
+**Promise\<[operations.GetBundleResourcesResponse](../../models/operations/getbundleresourcesresponse.md)\>**
### Errors
@@ -651,7 +661,9 @@ async function run() {
cursor: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
});
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
}
run();
@@ -679,7 +691,9 @@ async function run() {
});
if (res.ok) {
const { value: result } = res;
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
} else {
console.log("bundlesGetBundleGroups failed:", res.error);
}
@@ -699,7 +713,7 @@ run();
### Response
-**Promise\<[components.PaginatedBundleGroupList](../../models/components/paginatedbundlegrouplist.md)\>**
+**Promise\<[operations.GetBundleGroupsResponse](../../models/operations/getbundlegroupsresponse.md)\>**
### Errors
diff --git a/docs/sdks/configurationtemplates/README.md b/docs/sdks/configurationtemplates/README.md
index 500fb54..f5473bd 100644
--- a/docs/sdks/configurationtemplates/README.md
+++ b/docs/sdks/configurationtemplates/README.md
@@ -3,6 +3,8 @@
## Overview
+Operations related to configuration templates
+
### Available Operations
* [getConfigurationTemplates](#getconfigurationtemplates) - Returns a list of `ConfigurationTemplate` objects.
diff --git a/docs/sdks/events/README.md b/docs/sdks/events/README.md
index 9a91998..6864a54 100644
--- a/docs/sdks/events/README.md
+++ b/docs/sdks/events/README.md
@@ -3,6 +3,8 @@
## Overview
+Operations related to events
+
### Available Operations
* [events](#events) - Returns a list of `Event` objects.
@@ -32,7 +34,9 @@ async function run() {
pageSize: 200,
});
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
}
run();
@@ -65,7 +69,9 @@ async function run() {
});
if (res.ok) {
const { value: result } = res;
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
} else {
console.log("eventsEvents failed:", res.error);
}
@@ -85,7 +91,7 @@ run();
### Response
-**Promise\<[components.PaginatedEventList](../../models/components/paginatedeventlist.md)\>**
+**Promise\<[operations.EventsResponse](../../models/operations/eventsresponse.md)\>**
### Errors
diff --git a/docs/sdks/groupbindings/README.md b/docs/sdks/groupbindings/README.md
index 0e575f1..6aaa095 100644
--- a/docs/sdks/groupbindings/README.md
+++ b/docs/sdks/groupbindings/README.md
@@ -3,6 +3,8 @@
## Overview
+Operations related to group bindings
+
### Available Operations
* [getGroupBindings](#getgroupbindings) - Returns a list of `GroupBinding` objects.
@@ -30,7 +32,9 @@ async function run() {
pageSize: 200,
});
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
}
run();
@@ -57,7 +61,9 @@ async function run() {
});
if (res.ok) {
const { value: result } = res;
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
} else {
console.log("groupBindingsGetGroupBindings failed:", res.error);
}
@@ -77,7 +83,7 @@ run();
### Response
-**Promise\<[components.PaginatedGroupBindingsList](../../models/components/paginatedgroupbindingslist.md)\>**
+**Promise\<[operations.GetGroupBindingsResponse](../../models/operations/getgroupbindingsresponse.md)\>**
### Errors
diff --git a/docs/sdks/groups/README.md b/docs/sdks/groups/README.md
index 9bb5e82..ff8f4e0 100644
--- a/docs/sdks/groups/README.md
+++ b/docs/sdks/groups/README.md
@@ -3,6 +3,8 @@
## Overview
+Operations related to groups
+
### Available Operations
* [getGroups](#getgroups) - Returns a list of groups for your organization.
@@ -58,7 +60,9 @@ async function run() {
groupName: "example-name",
});
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
}
run();
@@ -91,7 +95,9 @@ async function run() {
});
if (res.ok) {
const { value: result } = res;
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
} else {
console.log("groupsGetGroups failed:", res.error);
}
@@ -111,7 +117,7 @@ run();
### Response
-**Promise\<[components.PaginatedGroupsList](../../models/components/paginatedgroupslist.md)\>**
+**Promise\<[operations.GetGroupsResponse](../../models/operations/getgroupsresponse.md)\>**
### Errors
@@ -2128,6 +2134,7 @@ async function run() {
await opalMcp.groups.deleteGroupUser({
groupId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
userId: "f92aa855-cea9-4814-b9d8-f2a60d3e4a06",
+ accessLevelRemoteId: "30",
});
@@ -2154,6 +2161,7 @@ async function run() {
const res = await groupsDeleteGroupUser(opalMcp, {
groupId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
userId: "f92aa855-cea9-4814-b9d8-f2a60d3e4a06",
+ accessLevelRemoteId: "30",
});
if (res.ok) {
const { value: result } = res;
diff --git a/docs/sdks/idpgroupmappings/README.md b/docs/sdks/idpgroupmappings/README.md
index 1d8a417..2b23076 100644
--- a/docs/sdks/idpgroupmappings/README.md
+++ b/docs/sdks/idpgroupmappings/README.md
@@ -3,6 +3,8 @@
## Overview
+Operations related to IDP group mappings
+
### Available Operations
* [getIdpGroupMappings](#getidpgroupmappings) - Returns the configured set of available `IdpGroupMapping` objects for an Okta app.
diff --git a/docs/sdks/messagechannels/README.md b/docs/sdks/messagechannels/README.md
index 97db6f5..46826fb 100644
--- a/docs/sdks/messagechannels/README.md
+++ b/docs/sdks/messagechannels/README.md
@@ -3,6 +3,8 @@
## Overview
+Operations related to message channels
+
### Available Operations
* [getMessageChannels](#getmessagechannels) - Returns a list of `MessageChannel` objects.
diff --git a/docs/sdks/nonhumanidentities/README.md b/docs/sdks/nonhumanidentities/README.md
index 98a9de5..dfe084b 100644
--- a/docs/sdks/nonhumanidentities/README.md
+++ b/docs/sdks/nonhumanidentities/README.md
@@ -3,6 +3,8 @@
## Overview
+Operations related to non-human identities
+
### Available Operations
* [getNhis](#getnhis) - Returns a list of non-human identities for your organization.
@@ -26,7 +28,9 @@ async function run() {
pageSize: 200,
});
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
}
run();
@@ -53,7 +57,9 @@ async function run() {
});
if (res.ok) {
const { value: result } = res;
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
} else {
console.log("nonHumanIdentitiesGetNhis failed:", res.error);
}
@@ -73,7 +79,7 @@ run();
### Response
-**Promise\<[components.PaginatedResourcesList](../../models/components/paginatedresourceslist.md)\>**
+**Promise\<[operations.GetNhisResponse](../../models/operations/getnhisresponse.md)\>**
### Errors
diff --git a/docs/sdks/oncallschedules/README.md b/docs/sdks/oncallschedules/README.md
index 4fe6c76..d276e9c 100644
--- a/docs/sdks/oncallschedules/README.md
+++ b/docs/sdks/oncallschedules/README.md
@@ -3,6 +3,8 @@
## Overview
+Operations related to on-call schedules
+
### Available Operations
* [getOnCallSchedules](#getoncallschedules) - Returns a list of `OnCallSchedule` objects.
diff --git a/docs/sdks/owners/README.md b/docs/sdks/owners/README.md
index eda318f..60b481b 100644
--- a/docs/sdks/owners/README.md
+++ b/docs/sdks/owners/README.md
@@ -3,6 +3,8 @@
## Overview
+Operations related to owners
+
### Available Operations
* [getOwners](#getowners) - Returns a list of `Owner` objects.
@@ -34,7 +36,9 @@ async function run() {
name: "200",
});
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
}
run();
@@ -62,7 +66,9 @@ async function run() {
});
if (res.ok) {
const { value: result } = res;
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
} else {
console.log("ownersGetOwners failed:", res.error);
}
@@ -82,7 +88,7 @@ run();
### Response
-**Promise\<[components.PaginatedOwnersList](../../models/components/paginatedownerslist.md)\>**
+**Promise\<[operations.GetOwnersResponse](../../models/operations/getownersresponse.md)\>**
### Errors
diff --git a/docs/sdks/requests/README.md b/docs/sdks/requests/README.md
index 3108f3b..1c3ee20 100644
--- a/docs/sdks/requests/README.md
+++ b/docs/sdks/requests/README.md
@@ -3,11 +3,14 @@
## Overview
+Operations related to requests
+
### Available Operations
* [getRequests](#getrequests) - Returns a list of requests for your organization that is visible by the admin.
* [createRequest](#createrequest) - Create an access request
-* [getRequestsRelay](#getrequestsrelay) - Returns a paginated list of requests using Relay-style cursor pagination.
+* [~~getRequestsRelay~~](#getrequestsrelay) - Returns a paginated list of requests using Relay-style cursor pagination. :warning: **Deprecated**
+* [getRequest](#getrequest) - Returns a request by ID.
* [approveRequest](#approverequest) - Approve an access request
## getRequests
@@ -31,7 +34,9 @@ async function run() {
pageSize: 200,
});
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
}
run();
@@ -60,7 +65,9 @@ async function run() {
});
if (res.ok) {
const { value: result } = res;
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
} else {
console.log("requestsGetRequests failed:", res.error);
}
@@ -80,7 +87,7 @@ run();
### Response
-**Promise\<[components.RequestList](../../models/components/requestlist.md)\>**
+**Promise\<[operations.GetRequestsResponse](../../models/operations/getrequestsresponse.md)\>**
### Errors
@@ -214,10 +221,12 @@ run();
| --------------- | --------------- | --------------- |
| errors.APIError | 4XX, 5XX | \*/\* |
-## getRequestsRelay
+## ~~getRequestsRelay~~
Returns a paginated list of requests using Relay-style cursor pagination.
+> :warning: **DEPRECATED**: This will be removed in a future release, please migrate away from it as soon as possible.
+
### Example Usage
```typescript
@@ -298,6 +307,78 @@ run();
| --------------- | --------------- | --------------- |
| errors.APIError | 4XX, 5XX | \*/\* |
+## getRequest
+
+Returns a request by ID.
+
+### Example Usage
+
+```typescript
+import { OpalMcp } from "opal-mcp";
+
+const opalMcp = new OpalMcp({
+ bearerAuth: process.env["OPALMCP_BEARER_AUTH"] ?? "",
+});
+
+async function run() {
+ const result = await opalMcp.requests.getRequest({
+ id: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
+ });
+
+ console.log(result);
+}
+
+run();
+```
+
+### Standalone function
+
+The standalone function version of this method:
+
+```typescript
+import { OpalMcpCore } from "opal-mcp/core.js";
+import { requestsGetRequest } from "opal-mcp/funcs/requestsGetRequest.js";
+
+// Use `OpalMcpCore` for best tree-shaking performance.
+// You can create one instance of it to use across an application.
+const opalMcp = new OpalMcpCore({
+ bearerAuth: process.env["OPALMCP_BEARER_AUTH"] ?? "",
+});
+
+async function run() {
+ const res = await requestsGetRequest(opalMcp, {
+ id: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
+ });
+ if (res.ok) {
+ const { value: result } = res;
+ console.log(result);
+ } else {
+ console.log("requestsGetRequest failed:", res.error);
+ }
+}
+
+run();
+```
+
+### Parameters
+
+| Parameter | Type | Required | Description |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `request` | [operations.GetRequestRequest](../../models/operations/getrequestrequest.md) | :heavy_check_mark: | The request object to use for the request. |
+| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. |
+| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. |
+| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. |
+
+### Response
+
+**Promise\<[components.RequestT](../../models/components/requestt.md)\>**
+
+### Errors
+
+| Error Type | Status Code | Content Type |
+| --------------- | --------------- | --------------- |
+| errors.APIError | 4XX, 5XX | \*/\* |
+
## approveRequest
Approve an access request
diff --git a/docs/sdks/resources/README.md b/docs/sdks/resources/README.md
index 24d0139..e6cef93 100644
--- a/docs/sdks/resources/README.md
+++ b/docs/sdks/resources/README.md
@@ -3,6 +3,8 @@
## Overview
+Operations related to resources
+
### Available Operations
* [getResources](#getresources) - Returns a list of resources for your organization.
@@ -28,6 +30,8 @@
* [getResourceUser](#getresourceuser) - Returns information about a specific user's access to a resource.
* [~~resourceUserAccessStatusRetrieve~~](#resourceuseraccessstatusretrieve) - Get user's access status to a resource. :warning: **Deprecated**
* [getResourceTags](#getresourcetags) - Returns all tags applied to the resource.
+* [getResourceScopedRolePermissions](#getresourcescopedrolepermissions) - Returns all the scoped role permissions that apply to the given resource. Only OPAL_SCOPED_ROLE resource type supports this field.
+* [setResourceScopedRolePermissions](#setresourcescopedrolepermissions) - Sets all the scoped role permissions on an OPAL_SCOPED_ROLE resource.
## getResources
@@ -56,7 +60,9 @@ async function run() {
ancestorResourceId: "4baf8423-db0a-4037-a4cf-f79c60cb67a5",
});
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
}
run();
@@ -91,7 +97,9 @@ async function run() {
});
if (res.ok) {
const { value: result } = res;
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
} else {
console.log("resourcesGetResources failed:", res.error);
}
@@ -111,7 +119,7 @@ run();
### Response
-**Promise\<[components.PaginatedResourcesList](../../models/components/paginatedresourceslist.md)\>**
+**Promise\<[operations.GetResourcesResponse](../../models/operations/getresourcesresponse.md)\>**
### Errors
@@ -1881,6 +1889,176 @@ run();
### Errors
+| Error Type | Status Code | Content Type |
+| --------------- | --------------- | --------------- |
+| errors.APIError | 4XX, 5XX | \*/\* |
+
+## getResourceScopedRolePermissions
+
+Returns all the scoped role permissions that apply to the given resource. Only OPAL_SCOPED_ROLE resource type supports this field.
+
+### Example Usage
+
+```typescript
+import { OpalMcp } from "opal-mcp";
+
+const opalMcp = new OpalMcp({
+ bearerAuth: process.env["OPALMCP_BEARER_AUTH"] ?? "",
+});
+
+async function run() {
+ const result = await opalMcp.resources.getResourceScopedRolePermissions({
+ resourceId: "1b978423-db0a-4037-a4cf-f79c60cb67b3",
+ });
+
+ console.log(result);
+}
+
+run();
+```
+
+### Standalone function
+
+The standalone function version of this method:
+
+```typescript
+import { OpalMcpCore } from "opal-mcp/core.js";
+import { resourcesGetResourceScopedRolePermissions } from "opal-mcp/funcs/resourcesGetResourceScopedRolePermissions.js";
+
+// Use `OpalMcpCore` for best tree-shaking performance.
+// You can create one instance of it to use across an application.
+const opalMcp = new OpalMcpCore({
+ bearerAuth: process.env["OPALMCP_BEARER_AUTH"] ?? "",
+});
+
+async function run() {
+ const res = await resourcesGetResourceScopedRolePermissions(opalMcp, {
+ resourceId: "1b978423-db0a-4037-a4cf-f79c60cb67b3",
+ });
+ if (res.ok) {
+ const { value: result } = res;
+ console.log(result);
+ } else {
+ console.log("resourcesGetResourceScopedRolePermissions failed:", res.error);
+ }
+}
+
+run();
+```
+
+### Parameters
+
+| Parameter | Type | Required | Description |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `request` | [operations.GetResourceScopedRolePermissionsRequest](../../models/operations/getresourcescopedrolepermissionsrequest.md) | :heavy_check_mark: | The request object to use for the request. |
+| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. |
+| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. |
+| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. |
+
+### Response
+
+**Promise\<[components.ScopedRolePermissionList](../../models/components/scopedrolepermissionlist.md)\>**
+
+### Errors
+
+| Error Type | Status Code | Content Type |
+| --------------- | --------------- | --------------- |
+| errors.APIError | 4XX, 5XX | \*/\* |
+
+## setResourceScopedRolePermissions
+
+Sets all the scoped role permissions on an OPAL_SCOPED_ROLE resource.
+
+### Example Usage
+
+```typescript
+import { OpalMcp } from "opal-mcp";
+
+const opalMcp = new OpalMcp({
+ bearerAuth: process.env["OPALMCP_BEARER_AUTH"] ?? "",
+});
+
+async function run() {
+ const result = await opalMcp.resources.setResourceScopedRolePermissions({
+ resourceId: "1b978423-db0a-4037-a4cf-f79c60cb67b3",
+ scopedRolePermissionList: {
+ permissions: [
+ {
+ targetIds: [
+ "a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1",
+ "8294e9c9-deb6-48e9-9c99-da2a1e04a87f",
+ ],
+ targetType: "RESOURCE",
+ permissionName: "READ",
+ allowAll: false,
+ },
+ ],
+ },
+ });
+
+ console.log(result);
+}
+
+run();
+```
+
+### Standalone function
+
+The standalone function version of this method:
+
+```typescript
+import { OpalMcpCore } from "opal-mcp/core.js";
+import { resourcesSetResourceScopedRolePermissions } from "opal-mcp/funcs/resourcesSetResourceScopedRolePermissions.js";
+
+// Use `OpalMcpCore` for best tree-shaking performance.
+// You can create one instance of it to use across an application.
+const opalMcp = new OpalMcpCore({
+ bearerAuth: process.env["OPALMCP_BEARER_AUTH"] ?? "",
+});
+
+async function run() {
+ const res = await resourcesSetResourceScopedRolePermissions(opalMcp, {
+ resourceId: "1b978423-db0a-4037-a4cf-f79c60cb67b3",
+ scopedRolePermissionList: {
+ permissions: [
+ {
+ targetIds: [
+ "a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1",
+ "8294e9c9-deb6-48e9-9c99-da2a1e04a87f",
+ ],
+ targetType: "RESOURCE",
+ permissionName: "READ",
+ allowAll: false,
+ },
+ ],
+ },
+ });
+ if (res.ok) {
+ const { value: result } = res;
+ console.log(result);
+ } else {
+ console.log("resourcesSetResourceScopedRolePermissions failed:", res.error);
+ }
+}
+
+run();
+```
+
+### Parameters
+
+| Parameter | Type | Required | Description |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `request` | [operations.SetResourceScopedRolePermissionsRequest](../../models/operations/setresourcescopedrolepermissionsrequest.md) | :heavy_check_mark: | The request object to use for the request. |
+| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. |
+| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. |
+| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. |
+
+### Response
+
+**Promise\<[components.ScopedRolePermissionList](../../models/components/scopedrolepermissionlist.md)\>**
+
+### Errors
+
| Error Type | Status Code | Content Type |
| --------------- | --------------- | --------------- |
| errors.APIError | 4XX, 5XX | \*/\* |
\ No newline at end of file
diff --git a/docs/sdks/scopedrolepermissions/README.md b/docs/sdks/scopedrolepermissions/README.md
new file mode 100644
index 0000000..f705969
--- /dev/null
+++ b/docs/sdks/scopedrolepermissions/README.md
@@ -0,0 +1,181 @@
+# ScopedRolePermissions
+(*scopedRolePermissions*)
+
+## Overview
+
+Operations related to scoped role permissions
+
+### Available Operations
+
+* [getResourceScopedRolePermissions](#getresourcescopedrolepermissions) - Returns all the scoped role permissions that apply to the given resource. Only OPAL_SCOPED_ROLE resource type supports this field.
+* [setResourceScopedRolePermissions](#setresourcescopedrolepermissions) - Sets all the scoped role permissions on an OPAL_SCOPED_ROLE resource.
+
+## getResourceScopedRolePermissions
+
+Returns all the scoped role permissions that apply to the given resource. Only OPAL_SCOPED_ROLE resource type supports this field.
+
+### Example Usage
+
+```typescript
+import { OpalMcp } from "opal-mcp";
+
+const opalMcp = new OpalMcp({
+ bearerAuth: process.env["OPALMCP_BEARER_AUTH"] ?? "",
+});
+
+async function run() {
+ const result = await opalMcp.scopedRolePermissions.getResourceScopedRolePermissions({
+ resourceId: "1b978423-db0a-4037-a4cf-f79c60cb67b3",
+ });
+
+ console.log(result);
+}
+
+run();
+```
+
+### Standalone function
+
+The standalone function version of this method:
+
+```typescript
+import { OpalMcpCore } from "opal-mcp/core.js";
+import { resourcesGetResourceScopedRolePermissions } from "opal-mcp/funcs/resourcesGetResourceScopedRolePermissions.js";
+
+// Use `OpalMcpCore` for best tree-shaking performance.
+// You can create one instance of it to use across an application.
+const opalMcp = new OpalMcpCore({
+ bearerAuth: process.env["OPALMCP_BEARER_AUTH"] ?? "",
+});
+
+async function run() {
+ const res = await resourcesGetResourceScopedRolePermissions(opalMcp, {
+ resourceId: "1b978423-db0a-4037-a4cf-f79c60cb67b3",
+ });
+ if (res.ok) {
+ const { value: result } = res;
+ console.log(result);
+ } else {
+ console.log("resourcesGetResourceScopedRolePermissions failed:", res.error);
+ }
+}
+
+run();
+```
+
+### Parameters
+
+| Parameter | Type | Required | Description |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `request` | [operations.GetResourceScopedRolePermissionsRequest](../../models/operations/getresourcescopedrolepermissionsrequest.md) | :heavy_check_mark: | The request object to use for the request. |
+| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. |
+| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. |
+| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. |
+
+### Response
+
+**Promise\<[components.ScopedRolePermissionList](../../models/components/scopedrolepermissionlist.md)\>**
+
+### Errors
+
+| Error Type | Status Code | Content Type |
+| --------------- | --------------- | --------------- |
+| errors.APIError | 4XX, 5XX | \*/\* |
+
+## setResourceScopedRolePermissions
+
+Sets all the scoped role permissions on an OPAL_SCOPED_ROLE resource.
+
+### Example Usage
+
+```typescript
+import { OpalMcp } from "opal-mcp";
+
+const opalMcp = new OpalMcp({
+ bearerAuth: process.env["OPALMCP_BEARER_AUTH"] ?? "",
+});
+
+async function run() {
+ const result = await opalMcp.scopedRolePermissions.setResourceScopedRolePermissions({
+ resourceId: "1b978423-db0a-4037-a4cf-f79c60cb67b3",
+ scopedRolePermissionList: {
+ permissions: [
+ {
+ targetIds: [
+ "a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1",
+ "8294e9c9-deb6-48e9-9c99-da2a1e04a87f",
+ ],
+ targetType: "RESOURCE",
+ permissionName: "READ",
+ allowAll: false,
+ },
+ ],
+ },
+ });
+
+ console.log(result);
+}
+
+run();
+```
+
+### Standalone function
+
+The standalone function version of this method:
+
+```typescript
+import { OpalMcpCore } from "opal-mcp/core.js";
+import { resourcesSetResourceScopedRolePermissions } from "opal-mcp/funcs/resourcesSetResourceScopedRolePermissions.js";
+
+// Use `OpalMcpCore` for best tree-shaking performance.
+// You can create one instance of it to use across an application.
+const opalMcp = new OpalMcpCore({
+ bearerAuth: process.env["OPALMCP_BEARER_AUTH"] ?? "",
+});
+
+async function run() {
+ const res = await resourcesSetResourceScopedRolePermissions(opalMcp, {
+ resourceId: "1b978423-db0a-4037-a4cf-f79c60cb67b3",
+ scopedRolePermissionList: {
+ permissions: [
+ {
+ targetIds: [
+ "a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1",
+ "8294e9c9-deb6-48e9-9c99-da2a1e04a87f",
+ ],
+ targetType: "RESOURCE",
+ permissionName: "READ",
+ allowAll: false,
+ },
+ ],
+ },
+ });
+ if (res.ok) {
+ const { value: result } = res;
+ console.log(result);
+ } else {
+ console.log("resourcesSetResourceScopedRolePermissions failed:", res.error);
+ }
+}
+
+run();
+```
+
+### Parameters
+
+| Parameter | Type | Required | Description |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `request` | [operations.SetResourceScopedRolePermissionsRequest](../../models/operations/setresourcescopedrolepermissionsrequest.md) | :heavy_check_mark: | The request object to use for the request. |
+| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. |
+| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. |
+| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. |
+
+### Response
+
+**Promise\<[components.ScopedRolePermissionList](../../models/components/scopedrolepermissionlist.md)\>**
+
+### Errors
+
+| Error Type | Status Code | Content Type |
+| --------------- | --------------- | --------------- |
+| errors.APIError | 4XX, 5XX | \*/\* |
\ No newline at end of file
diff --git a/docs/sdks/sessions/README.md b/docs/sdks/sessions/README.md
index e12a2c0..7ef2018 100644
--- a/docs/sdks/sessions/README.md
+++ b/docs/sdks/sessions/README.md
@@ -3,6 +3,8 @@
## Overview
+Operations related to sessions
+
### Available Operations
* [sessions](#sessions) - Returns a list of `Session` objects.
diff --git a/docs/sdks/tags/README.md b/docs/sdks/tags/README.md
index f53264d..868675a 100644
--- a/docs/sdks/tags/README.md
+++ b/docs/sdks/tags/README.md
@@ -3,6 +3,8 @@
## Overview
+Operations related to tags
+
### Available Operations
* [getTagByID](#gettagbyid) - UNSTABLE. May be removed at any time. Gets a tag with the given id.
@@ -338,7 +340,9 @@ async function run() {
pageSize: 200,
});
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
}
run();
@@ -365,7 +369,9 @@ async function run() {
});
if (res.ok) {
const { value: result } = res;
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
} else {
console.log("tagsGetTags failed:", res.error);
}
@@ -385,7 +391,7 @@ run();
### Response
-**Promise\<[components.PaginatedTagsList](../../models/components/paginatedtagslist.md)\>**
+**Promise\<[operations.GetTagsResponse](../../models/operations/gettagsresponse.md)\>**
### Errors
diff --git a/docs/sdks/uars/README.md b/docs/sdks/uars/README.md
index f5ae0b0..7ce9e01 100644
--- a/docs/sdks/uars/README.md
+++ b/docs/sdks/uars/README.md
@@ -3,6 +3,8 @@
## Overview
+Operations related to UARs
+
### Available Operations
* [getUARs](#getuars) - Returns a list of `UAR` objects.
@@ -28,7 +30,9 @@ async function run() {
pageSize: 200,
});
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
}
run();
@@ -55,7 +59,9 @@ async function run() {
});
if (res.ok) {
const { value: result } = res;
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
} else {
console.log("uarsGetUARs failed:", res.error);
}
@@ -75,7 +81,7 @@ run();
### Response
-**Promise\<[components.PaginatedUARsList](../../models/components/paginateduarslist.md)\>**
+**Promise\<[operations.GetUARsResponse](../../models/operations/getuarsresponse.md)\>**
### Errors
diff --git a/docs/sdks/users/README.md b/docs/sdks/users/README.md
index 7b6159c..295e1fb 100644
--- a/docs/sdks/users/README.md
+++ b/docs/sdks/users/README.md
@@ -3,6 +3,8 @@
## Overview
+Operations related to users
+
### Available Operations
* [user](#user) - Retrieves detailed user information from Opal. This endpoint is designed to fetch user details by
@@ -128,7 +130,9 @@ async function run() {
pageSize: 200,
});
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
}
run();
@@ -155,7 +159,9 @@ async function run() {
});
if (res.ok) {
const { value: result } = res;
- console.log(result);
+ for await (const page of result) {
+ console.log(page);
+ }
} else {
console.log("usersGetUsers failed:", res.error);
}
@@ -175,7 +181,7 @@ run();
### Response
-**Promise\<[components.PaginatedUsersList](../../models/components/paginateduserslist.md)\>**
+**Promise\<[operations.GetUsersResponse](../../models/operations/getusersresponse.md)\>**
### Errors
diff --git a/jsr.json b/jsr.json
index 7beb25b..a24622a 100644
--- a/jsr.json
+++ b/jsr.json
@@ -2,7 +2,7 @@
{
"name": "opal-mcp",
- "version": "0.6.2",
+ "version": "0.7.1",
"exports": {
".": "./src/index.ts",
"./models/errors": "./src/models/errors/index.ts",
diff --git a/mcp-scopes-and-endpoints-overlay.yaml b/mcp-scopes-and-endpoints-overlay.yaml
index 7086219..cb66517 100644
--- a/mcp-scopes-and-endpoints-overlay.yaml
+++ b/mcp-scopes-and-endpoints-overlay.yaml
@@ -17,26 +17,198 @@ actions:
scopes: [write]
disabled: false
- # # Disable depricated endpoints that should not be used by the MCP server
- # - target: $.paths["/groups/{group_id}/reviewers"].get
- # update:
- # x-speakeasy-mcp:
- # disabled: true
- # - target: $.paths["/groups/{group_id}/reviewers"].put
- # update:
- # x-speakeasy-mcp:
- # disabled: true
- # - target: $.paths["/groups/{group_id}/reviewer-stages"].get
- # update:
- # x-speakeasy-mcp:
- # disabled: true
- # - target: $.paths["/groups/{group_id}/reviewer-stages"].put
- # update:
- # x-speakeasy-mcp:
- # disabled: true
+ # Add pagination configuration for cursor-based endpoints
+ - target: $.paths["/bundles"].get
+ update:
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.bundles
+ nextCursor: $.next
- # Disable endpoints that are not relevant for the MCP server
- # - target: $.paths["/sessions"].get
- # update:
- # x-speakeasy-mcp:
- # disabled: true
\ No newline at end of file
+ - target: $.paths["/bundles/{bundle_id}/resources"].get
+ update:
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.bundle_resources
+ nextCursor: $.next
+
+ - target: $.paths["/bundles/{bundle_id}/groups"].get
+ update:
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.bundle_groups
+ nextCursor: $.next
+
+ - target: $.paths["/events"].get
+ update:
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.results
+ nextCursor: $.next
+
+ - target: $.paths["/groups"].get
+ update:
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.results
+ nextCursor: $.next
+
+ - target: $.paths["/group-bindings"].get
+ update:
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.results
+ nextCursor: $.next
+
+ - target: $.paths["/owners"].get
+ update:
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.results
+ nextCursor: $.next
+
+ - target: $.paths["/requests"].get
+ update:
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.requests
+ nextCursor: $.cursor
+
+ - target: $.paths["/resources"].get
+ update:
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.results
+ nextCursor: $.next
+
+ - target: $.paths["/non-human-identities"].get
+ update:
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.results
+ nextCursor: $.next
+
+ - target: $.paths["/users"].get
+ update:
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.results
+ nextCursor: $.next
+
+ - target: $.paths["/tags"].get
+ update:
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.results
+ nextCursor: $.next
+
+ - target: $.paths["/uars"].get
+ update:
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.results
+ nextCursor: $.next
diff --git a/openapi.yaml b/openapi.yaml
index b2e823b..0c19624 100644
--- a/openapi.yaml
+++ b/openapi.yaml
@@ -10,6 +10,46 @@ info:
servers:
- description: Production
url: https://api.opal.dev/v1
+# keep tags alphabetized, also add any new tags to the list below
+tags:
+ - name: access-rules
+ description: Operations related to access rules
+ - name: apps
+ description: Operations related to apps
+ - name: bundles
+ description: Operations related to bundles
+ - name: configuration-templates
+ description: Operations related to configuration templates
+ - name: events
+ description: Operations related to events
+ - name: groups
+ description: Operations related to groups
+ - name: group-bindings
+ description: Operations related to group bindings
+ - name: idp-group-mappings
+ description: Operations related to IDP group mappings
+ - name: message-channels
+ description: Operations related to message channels
+ - name: non-human-identities
+ description: Operations related to non-human identities
+ - name: on-call-schedules
+ description: Operations related to on-call schedules
+ - name: owners
+ description: Operations related to owners
+ - name: requests
+ description: Operations related to requests
+ - name: resources
+ description: Operations related to resources
+ - name: scoped-role-permissions
+ description: Operations related to scoped role permissions
+ - name: sessions
+ description: Operations related to sessions
+ - name: tags
+ description: Operations related to tags
+ - name: uars
+ description: Operations related to UARs
+ - name: users
+ description: Operations related to users
paths:
/apps:
get:
@@ -128,6 +168,18 @@ paths:
x-speakeasy-mcp:
scopes: [read]
disabled: false
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.bundles
+ nextCursor: $.next
post:
description: Creates a bundle.
operationId: createBundle
@@ -285,6 +337,18 @@ paths:
x-speakeasy-mcp:
scopes: [read]
disabled: false
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.bundle_resources
+ nextCursor: $.next
post:
description: Adds a resource to a bundle.
operationId: addBundleResource
@@ -418,6 +482,18 @@ paths:
x-speakeasy-mcp:
scopes: [read]
disabled: false
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.bundle_groups
+ nextCursor: $.next
post:
description: Adds a group to a bundle.
operationId: addBundleGroup
@@ -758,6 +834,18 @@ paths:
x-speakeasy-mcp:
scopes: [read]
disabled: false
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.results
+ nextCursor: $.next
/groups:
get:
description: Returns a list of groups for your organization.
@@ -829,6 +917,18 @@ paths:
x-speakeasy-mcp:
scopes: [read]
disabled: false
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.results
+ nextCursor: $.next
put:
description: Bulk updates a list of groups.
operationId: updateGroups
@@ -1753,6 +1853,15 @@ paths:
format: uuid
type: string
style: simple
+ - description: The remote ID of the access level for which this user has direct access. If omitted, the default access level remote ID value (empty string) is assumed.
+ example: 30
+ explode: true
+ in: query
+ name: access_level_remote_id
+ required: false
+ schema:
+ type: string
+ style: form
responses:
"200":
description: This user's access was successfully removed from this group.
@@ -1800,6 +1909,18 @@ paths:
x-speakeasy-mcp:
scopes: [read]
disabled: false
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.results
+ nextCursor: $.next
post:
description: Creates a group binding.
operationId: createGroupBinding
@@ -2052,6 +2173,18 @@ paths:
x-speakeasy-mcp:
scopes: [read]
disabled: false
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.results
+ nextCursor: $.next
post:
description: Creates an owner.
operationId: createOwner
@@ -2319,6 +2452,18 @@ paths:
x-speakeasy-mcp:
scopes: [read]
disabled: false
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.requests
+ nextCursor: $.cursor
post:
description: "Create an access request"
operationId: "createRequest"
@@ -2351,6 +2496,7 @@ paths:
get:
description: Returns a paginated list of requests using Relay-style cursor pagination.
operationId: getRequestsRelay
+ deprecated: true
parameters:
- description: Number of results to return after the cursor. Use either first/after or last/before, not both.
example: 10
@@ -2421,6 +2567,35 @@ paths:
x-speakeasy-mcp:
scopes: [read]
disabled: false
+ /requests/{id}:
+ get:
+ description: Returns a request by ID.
+ operationId: getRequest
+ parameters:
+ - description: The ID of the request.
+ example: 4baf8423-db0a-4037-a4cf-f79c60cb67a5
+ explode: false
+ in: path
+ name: id
+ required: true
+ schema:
+ format: uuid
+ type: string
+ style: simple
+ responses:
+ "200":
+ description: The requested request object.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Request"
+ security:
+ - BearerAuth: []
+ tags:
+ - requests
+ x-speakeasy-mcp:
+ scopes: [read]
+ disabled: false
/requests/{id}/approve:
post:
description: "Approve an access request"
@@ -2567,6 +2742,18 @@ paths:
x-speakeasy-mcp:
scopes: [read]
disabled: false
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.results
+ nextCursor: $.next
put:
description: Bulk updates a list of resources.
operationId: updateResources
@@ -2975,6 +3162,18 @@ paths:
x-speakeasy-mcp:
scopes: [read]
disabled: false
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.results
+ nextCursor: $.next
/resources/{resource_id}/non-human-identities:
get:
description: Gets the list of non-human identities with access to this resource.
@@ -3494,6 +3693,71 @@ paths:
x-speakeasy-mcp:
scopes: [read]
disabled: false
+ /resources/{resource_id}/scoped-role-permissions:
+ get:
+ description: Returns all the scoped role permissions that apply to the given resource. Only OPAL_SCOPED_ROLE resource type supports this field.
+ operationId: get_resource_scoped_role_permissions
+ parameters:
+ - description: The ID of the resource whose scoped role permissions belong to.
+ name: resource_id
+ example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
+ explode: false
+ in: path
+ required: true
+ schema:
+ format: uuid
+ type: string
+ style: simple
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ScopedRolePermissionList"
+ description: The role permissions that this Opal Scoped Role has.
+ security:
+ - BearerAuth: []
+ tags:
+ - resources
+ - scoped-role-permissions
+ x-speakeasy-mcp:
+ scopes: [read]
+ disabled: false
+ put:
+ description: Sets all the scoped role permissions on an OPAL_SCOPED_ROLE resource.
+ operationId: set_resource_scoped_role_permissions
+ parameters:
+ - description: The ID of the resource whose scoped role permissions belong to. Must be of OPAL_SCOPED_ROLE resource type.
+ name: resource_id
+ example: 1b978423-db0a-4037-a4cf-f79c60cb67b3
+ explode: false
+ in: path
+ required: true
+ schema:
+ format: uuid
+ type: string
+ style: simple
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ScopedRolePermissionList"
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ScopedRolePermissionList"
+ description: The role permissions that this Opal Scoped Role has.
+ security:
+ - BearerAuth: []
+ tags:
+ - resources
+ - scoped-role-permissions
+ x-speakeasy-mcp:
+ scopes: [write]
+ disabled: false
/sessions:
get:
description: Returns a list of `Session` objects.
@@ -3621,6 +3885,18 @@ paths:
x-speakeasy-mcp:
scopes: [read]
disabled: false
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.results
+ nextCursor: $.next
/users/{user_id}/tags:
get:
description: Returns all tags applied to the user.
@@ -3919,6 +4195,18 @@ paths:
x-speakeasy-mcp:
scopes: [read]
disabled: false
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.results
+ nextCursor: $.next
/tags/{tag_id}/users/{user_id}:
post:
description: Applies a tag to a user.
@@ -4312,6 +4600,18 @@ paths:
x-speakeasy-mcp:
scopes: [read]
disabled: false
+ x-speakeasy-pagination:
+ type: cursor
+ inputs:
+ - name: cursor
+ in: parameters
+ type: cursor
+ - name: page_size
+ in: parameters
+ type: limit
+ outputs:
+ results: $.results
+ nextCursor: $.next
/uar:
post:
description: Starts a User Access Review.
@@ -6216,6 +6516,40 @@ components:
- LIMITED
example: GLOBAL
type: string
+ RolePermissionNameEnum:
+ description: The name of the role permission.
+ enum:
+ - READ
+ - READ_ASSIGNMENTS
+ - CREATE
+ - IMPORT
+ - EXPORT
+ - SYNC
+ - DELETE
+ - READ_SETTINGS
+ - EDIT_TAGS
+ - EDIT_SETTINGS
+ - EDIT_SYNC_SETTINGS
+ - EDIT_ASSIGNMENTS
+ - EDIT_REQUEST_CONFIGURATIONS
+ - EDIT_EVENT_STREAM
+ - ASSIGN_UAR_REVIEWERS
+ - SEND_REMINDERS
+ - STOP
+ - REQUEST_ON_BEHALF
+ example: READ
+ type: string
+ RolePermissionTargetTypeEnum:
+ description: The type of the target for the role permission.
+ enum:
+ - RESOURCE
+ - CONNECTION
+ - GROUP
+ - BUNDLE
+ - USER
+ - ACCESS_REVIEW
+ example: RESOURCE
+ type: string
UpdateGroupResourcesInfo:
example:
group_resources:
@@ -6720,10 +7054,44 @@ components:
type: object
required:
- role_id
+ okta_group_rule:
+ description: Remote info for Okta Directory group rule.
+ properties:
+ rule_id:
+ description: The id of the Okta group rule.
+ example: 0pr3f7zMZZHPgUoWO0g4
+ type: string
+ type: object
+ required:
+ - rule_id
+ workday_user_security_group:
+ description: Remote info for Workday User Security group.
+ properties:
+ group_id:
+ description: The id of the Workday User Security group.
+ example: 123abc456def
+ type: string
+ type: object
+ required:
+ - group_id
type: object
ResourceRemoteInfo:
description: Information that defines the remote resource. This replaces the deprecated remote_id and metadata fields.
properties:
+ aws_organizational_unit:
+ description: Remote info for AWS organizational unit.
+ properties:
+ parent_id:
+ description: The id of the parent organizational unit.
+ example: ou-1234
+ type: string
+ organizational_unit_id:
+ description: The id of the AWS organizational unit that is being created.
+ example: ou-1234
+ type: string
+ type: object
+ required:
+ - organizational_unit_id
aws_account:
description: Remote info for AWS account.
properties:
@@ -6731,6 +7099,10 @@ components:
description: The id of the AWS account.
example: 234234234234
type: string
+ organizational_unit_id:
+ description: The id of the AWS organizational unit. Required only if customer has OUs enabled.
+ example: ou-1234
+ type: string
type: object
required:
- account_id
@@ -6820,6 +7192,21 @@ components:
type: object
required:
- arn
+ custom_connector:
+ description: Remote info for a custom connector resource.
+ properties:
+ remote_resource_id:
+ description: The id of the resource in the end system
+ example: 01fa7402-01d8-103b-8deb-5f3a0ab7884
+ type: string
+ can_have_usage_events:
+ description: A bool representing whether or not the resource can have usage data.
+ example: False
+ type: boolean
+ type: object
+ required:
+ - remote_resource_id
+ - can_have_usage_events
gcp_organization:
description: Remote info for GCP organization.
properties:
@@ -6960,6 +7347,16 @@ components:
- email
- service_account_id
- project_id
+ google_workspace_role:
+ description: Remote info for GCP workspace role.
+ properties:
+ role_id:
+ description: The id of the role.
+ example: google-workspace-role:01234567890123456
+ type: string
+ type: object
+ required:
+ - role_id
github_repo:
description: Remote info for GitHub repository.
properties:
@@ -7790,6 +8187,14 @@ components:
description: The name of the target.
example: Engineering Team
type: string
+ remote_id:
+ description: The ID of the target on the remote system.
+ example: arn:aws:iam::490306337630:role/SupportUser
+ type: string
+ remote_name:
+ description: The name of the target on the remote system.
+ example: SupportUser
+ type: string
example:
resource_id: null
group_id: f454d283-ca87-4a8a-bdbb-df212eca5353
@@ -7878,6 +8283,10 @@ components:
require_manager_approval: False
require_support_ticket: False
parent_resource_id: f454d283-ca67-4a8a-bdbb-df212eca5345
+ ancestor_resource_ids:
+ - f454d283-ca67-4a8a-bdbb-df212eca5345
+ descendant_resource_ids:
+ - f454d283-ca67-4a8a-bdbb-df212eca5345
properties:
resource_id:
description: The ID of the resource.
@@ -9770,6 +10179,44 @@ components:
type: object
required:
- bundle_groups
+ ScopedRolePermissionList:
+ example:
+ permissions:
+ - target_ids:
+ - a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1
+ - 8294e9c9-deb6-48e9-9c99-da2a1e04a87f
+ target_type: RESOURCE
+ permission_name: READ
+ properties:
+ permissions:
+ type: array
+ items:
+ $ref: "#/components/schemas/ScopedRolePermission"
+ type: object
+ required:
+ - permissions
+ ScopedRolePermission:
+ type: object
+ properties:
+ target_ids:
+ description: The IDs of the entities that this permission applies to. If empty of missing, the permission will have untargeted scope.
+ example:
+ - a381e7a3-e5e0-4c48-b1d6-4ccb4c191bc1
+ - 8294e9c9-deb6-48e9-9c99-da2a1e04a87f
+ items:
+ type: string
+ format: uuid
+ type: array
+ target_type:
+ $ref: "#/components/schemas/RolePermissionTargetTypeEnum"
+ permission_name:
+ $ref: "#/components/schemas/RolePermissionNameEnum"
+ allow_all:
+ type: boolean
+ required:
+ - target_type
+ - permission_name
+ - allow_all
securitySchemes:
BearerAuth:
scheme: bearer
diff --git a/package-lock.json b/package-lock.json
index b96a700..0e0d1ba 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "opal-mcp",
- "version": "0.6.2",
+ "version": "0.7.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "opal-mcp",
- "version": "0.6.2",
+ "version": "0.7.1",
"bin": {
"mcp": "bin/mcp-server.js"
},
@@ -15,8 +15,8 @@
"@modelcontextprotocol/sdk": ">=1.5.0 <1.10.0",
"@stricli/core": "^1.1.1",
"@types/express": "^4.17.21",
- "bun": "^1.2.2",
- "bun-types": "^1.2.2",
+ "bun": "1.2.17",
+ "bun-types": "1.2.17",
"eslint": "^9.19.0",
"express": "^4.21.2",
"globals": "^15.14.0",
@@ -27,7 +27,7 @@
},
"peerDependencies": {
"@modelcontextprotocol/sdk": ">=1.5.0 <1.10.0",
- "zod": ">= 3"
+ "zod": "^3"
},
"peerDependenciesMeta": {
"@modelcontextprotocol/sdk": {
@@ -599,9 +599,9 @@
}
},
"node_modules/@oven/bun-darwin-aarch64": {
- "version": "1.2.16",
- "resolved": "https://registry.npmjs.org/@oven/bun-darwin-aarch64/-/bun-darwin-aarch64-1.2.16.tgz",
- "integrity": "sha512-NLVU9YDORq/3WuJOE5TQv5of3R99n56gYZPfdqP4U0/5nllbC8yzRxA2BWwAS2RxxD0Y3bxqEVUsIGiTNN2jxg==",
+ "version": "1.2.17",
+ "resolved": "https://registry.npmjs.org/@oven/bun-darwin-aarch64/-/bun-darwin-aarch64-1.2.17.tgz",
+ "integrity": "sha512-66Xjz3NZXUUWKZJPvWKuwEkaqMZpir1Gm4SbhbB2iiRSSTW8jqwdkSb9RhgTCDt5OnSPd3+Cq0WsP/T5ExJbhA==",
"cpu": [
"arm64"
],
@@ -612,9 +612,9 @@
]
},
"node_modules/@oven/bun-darwin-x64": {
- "version": "1.2.16",
- "resolved": "https://registry.npmjs.org/@oven/bun-darwin-x64/-/bun-darwin-x64-1.2.16.tgz",
- "integrity": "sha512-HpcSVCTH9n+9bG2zu3OUJ9h22m6HzNgZpqib9r4NEVZg7Z2U86bOUMKlTCA0ZANaWsK9czl2VIhMWbLF4fgvLA==",
+ "version": "1.2.17",
+ "resolved": "https://registry.npmjs.org/@oven/bun-darwin-x64/-/bun-darwin-x64-1.2.17.tgz",
+ "integrity": "sha512-OMJMHpcpBlWcVnWfSQ6x+8fF7HpkQLqBfoIvzxgUjIZZvj2d8K46XX4N/h62RglDEinRC9VDGxt24vwvlk5tTw==",
"cpu": [
"x64"
],
@@ -625,9 +625,9 @@
]
},
"node_modules/@oven/bun-darwin-x64-baseline": {
- "version": "1.2.16",
- "resolved": "https://registry.npmjs.org/@oven/bun-darwin-x64-baseline/-/bun-darwin-x64-baseline-1.2.16.tgz",
- "integrity": "sha512-FtKr6FwLN+QfrF0/vJtOwBMU72krmrHlxhRSElbKEOWox2n2vWSZ/sNNkHePEsrxGfqaHC5GhEZk2lnaZTavBQ==",
+ "version": "1.2.17",
+ "resolved": "https://registry.npmjs.org/@oven/bun-darwin-x64-baseline/-/bun-darwin-x64-baseline-1.2.17.tgz",
+ "integrity": "sha512-VSIctl90tV8yg1LRMvPg/8LgUzl55Q7Jcxe+u6PfuvLQIJOTIPbNn7HtRpJg7MGc3+qyztB5KDd70xC7qI2yEg==",
"cpu": [
"x64"
],
@@ -638,9 +638,9 @@
]
},
"node_modules/@oven/bun-linux-aarch64": {
- "version": "1.2.16",
- "resolved": "https://registry.npmjs.org/@oven/bun-linux-aarch64/-/bun-linux-aarch64-1.2.16.tgz",
- "integrity": "sha512-nd0eZhihfgrDtfI/NdEqOAQ8KY87SWNQLZKjRB8WoYkqcY1BGwtZqvJOc2bEn2oERJ8K2etJRynXz+MKngiYxw==",
+ "version": "1.2.17",
+ "resolved": "https://registry.npmjs.org/@oven/bun-linux-aarch64/-/bun-linux-aarch64-1.2.17.tgz",
+ "integrity": "sha512-KPoMqaibCXcSv+VZ3uMqKUNZqMxE6Hho1be6+laolYGOIJxJTMnZPfmKfIlQmnnW3vLlm3g2Rm8pPPC7doSHWg==",
"cpu": [
"arm64"
],
@@ -651,9 +651,9 @@
]
},
"node_modules/@oven/bun-linux-aarch64-musl": {
- "version": "1.2.16",
- "resolved": "https://registry.npmjs.org/@oven/bun-linux-aarch64-musl/-/bun-linux-aarch64-musl-1.2.16.tgz",
- "integrity": "sha512-MhvQ0hecunZnbac9cEOqA1CGk/ISDhhnF35i9l90Jgc/osfgGndViLkMp3wk1EO5UG4/Kbil1OlfLmyOHKq0SQ==",
+ "version": "1.2.17",
+ "resolved": "https://registry.npmjs.org/@oven/bun-linux-aarch64-musl/-/bun-linux-aarch64-musl-1.2.17.tgz",
+ "integrity": "sha512-PH+hUV+I6DGD1VRHdAIAKEAOed+GSdvn6S1b3qqX27/VuHBU781V+hzt+6DBlcWBHYLw8PIg9sfIdNp485gQmw==",
"cpu": [
"aarch64"
],
@@ -664,9 +664,9 @@
]
},
"node_modules/@oven/bun-linux-x64": {
- "version": "1.2.16",
- "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64/-/bun-linux-x64-1.2.16.tgz",
- "integrity": "sha512-qYUXPXbT4S+MImv51+dLBHKFYy40QIowwCRtzUFGf3TG+9MQQUXHNXryMNSdHveHqecd9rO1EIQ8hroAPBl+Sg==",
+ "version": "1.2.17",
+ "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64/-/bun-linux-x64-1.2.17.tgz",
+ "integrity": "sha512-BfySnrTxp7D9hVUi9JEpviJl8ndsuESiRiQKTzgmdTLrMjUxP4SwrwMtYt6R9X20n9rREG6a47C0IyQMhbwG/g==",
"cpu": [
"x64"
],
@@ -677,9 +677,9 @@
]
},
"node_modules/@oven/bun-linux-x64-baseline": {
- "version": "1.2.16",
- "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64-baseline/-/bun-linux-x64-baseline-1.2.16.tgz",
- "integrity": "sha512-ZysDeqDfUAqKrQu2R+ddRgSCY30qSnn0LQLr6fAm7Pw9lU2yhWVNa8R3DavddmZQc1vUw6j3ITIAE+DDT9OBCg==",
+ "version": "1.2.17",
+ "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64-baseline/-/bun-linux-x64-baseline-1.2.17.tgz",
+ "integrity": "sha512-IrnFMUwYWxoKICQgK8ZlJ6rI/HU2gITFNEW0MIOPIcuT0s3j0/33631M9EzYDoL4NuLQPks6569JDvSHEVqdeA==",
"cpu": [
"x64"
],
@@ -690,9 +690,9 @@
]
},
"node_modules/@oven/bun-linux-x64-musl": {
- "version": "1.2.16",
- "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64-musl/-/bun-linux-x64-musl-1.2.16.tgz",
- "integrity": "sha512-6o5Oi5ARKYErF6nIBrewxtl20PGhM97faPemJ+v26D47dRNAlUWN5lMVuOqZOhYjqzOe4V+NpxIFBHtXWEmoNQ==",
+ "version": "1.2.17",
+ "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64-musl/-/bun-linux-x64-musl-1.2.17.tgz",
+ "integrity": "sha512-fW9qn/WqO131/qSIkIPW8zN+thQnYUWa/k98EWubLG87htKSPh1v023E5ikKb7WlUv4Yb6UlE/z4NmMYKffmAg==",
"cpu": [
"x64"
],
@@ -703,9 +703,9 @@
]
},
"node_modules/@oven/bun-linux-x64-musl-baseline": {
- "version": "1.2.16",
- "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64-musl-baseline/-/bun-linux-x64-musl-baseline-1.2.16.tgz",
- "integrity": "sha512-cWwny3cxYkvV9fYnSDb2brXodWV7IcG+Bwd3q3b8OUYbeC3ekHN3zm+TYdSxIVhMm7z46CkiDz5QnnQWVVfZ5A==",
+ "version": "1.2.17",
+ "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64-musl-baseline/-/bun-linux-x64-musl-baseline-1.2.17.tgz",
+ "integrity": "sha512-YE5wQ/YA79BykMLhuwgdoF8Yjj5dRipD8dwmXs8n7gzR+/L9tL7Q69NQgskW2KkAalmWPoGAv3TV0IwbU+1dFw==",
"cpu": [
"x64"
],
@@ -716,9 +716,9 @@
]
},
"node_modules/@oven/bun-windows-x64": {
- "version": "1.2.16",
- "resolved": "https://registry.npmjs.org/@oven/bun-windows-x64/-/bun-windows-x64-1.2.16.tgz",
- "integrity": "sha512-1xUlHHbMZ3DMZlEcppBAQ5vQDgNHDMIGB/AXO+dxQJl/3GiO/Ek4pMDzcqMnlbGDaDcTmTXyZ6cEXEF4C2qygQ==",
+ "version": "1.2.17",
+ "resolved": "https://registry.npmjs.org/@oven/bun-windows-x64/-/bun-windows-x64-1.2.17.tgz",
+ "integrity": "sha512-GJUg1oA59DWH6eyV8uccpgfTEVxjmgfTWQCOl2ySMXR3IfRoFwS4aQfpjcVzNmEZrv8eYt+yMuw1K7aNcWTTIg==",
"cpu": [
"x64"
],
@@ -729,9 +729,9 @@
]
},
"node_modules/@oven/bun-windows-x64-baseline": {
- "version": "1.2.16",
- "resolved": "https://registry.npmjs.org/@oven/bun-windows-x64-baseline/-/bun-windows-x64-baseline-1.2.16.tgz",
- "integrity": "sha512-tHdtHqH6c5ScNusLWOzZCTeuV2rSc3mvlLQQ+DYefTy+XwtjXmY47MbBSgNuBWVYePIob9BqDFOtTHYIWRZTww==",
+ "version": "1.2.17",
+ "resolved": "https://registry.npmjs.org/@oven/bun-windows-x64-baseline/-/bun-windows-x64-baseline-1.2.17.tgz",
+ "integrity": "sha512-aVkq4l1yZ9VKfBOtZ2HEj0OCU5kUe3Fx6LbAG6oY6OglWVYj051i3RGaE2OdR4L4F2jDyxzfGYRTM/qs8nU5qA==",
"cpu": [
"x64"
],
@@ -1299,9 +1299,9 @@
}
},
"node_modules/bun": {
- "version": "1.2.16",
- "resolved": "https://registry.npmjs.org/bun/-/bun-1.2.16.tgz",
- "integrity": "sha512-sjZH6rr1P6yu44+XPA8r+ZojwmK9Kbz9lO6KAA/4HRIupdpC31k7b93crLBm19wEYmd6f2+3+57/7tbOcmHbGg==",
+ "version": "1.2.17",
+ "resolved": "https://registry.npmjs.org/bun/-/bun-1.2.17.tgz",
+ "integrity": "sha512-lrUZTWS24eVy6v+Eph8VTwqFPcG7/XQ0rLBQEMNoQs2Vd7ctVdMGAzJKKGZRUQH+rgkD8rBeHGIVoWxX4vJLCA==",
"cpu": [
"arm64",
"x64",
@@ -1316,26 +1316,26 @@
],
"bin": {
"bun": "bin/bun.exe",
- "bunx": "bin/bun.exe"
+ "bunx": "bin/bunx.exe"
},
"optionalDependencies": {
- "@oven/bun-darwin-aarch64": "1.2.16",
- "@oven/bun-darwin-x64": "1.2.16",
- "@oven/bun-darwin-x64-baseline": "1.2.16",
- "@oven/bun-linux-aarch64": "1.2.16",
- "@oven/bun-linux-aarch64-musl": "1.2.16",
- "@oven/bun-linux-x64": "1.2.16",
- "@oven/bun-linux-x64-baseline": "1.2.16",
- "@oven/bun-linux-x64-musl": "1.2.16",
- "@oven/bun-linux-x64-musl-baseline": "1.2.16",
- "@oven/bun-windows-x64": "1.2.16",
- "@oven/bun-windows-x64-baseline": "1.2.16"
+ "@oven/bun-darwin-aarch64": "1.2.17",
+ "@oven/bun-darwin-x64": "1.2.17",
+ "@oven/bun-darwin-x64-baseline": "1.2.17",
+ "@oven/bun-linux-aarch64": "1.2.17",
+ "@oven/bun-linux-aarch64-musl": "1.2.17",
+ "@oven/bun-linux-x64": "1.2.17",
+ "@oven/bun-linux-x64-baseline": "1.2.17",
+ "@oven/bun-linux-x64-musl": "1.2.17",
+ "@oven/bun-linux-x64-musl-baseline": "1.2.17",
+ "@oven/bun-windows-x64": "1.2.17",
+ "@oven/bun-windows-x64-baseline": "1.2.17"
}
},
"node_modules/bun-types": {
- "version": "1.2.16",
- "resolved": "https://registry.npmjs.org/bun-types/-/bun-types-1.2.16.tgz",
- "integrity": "sha512-ciXLrHV4PXax9vHvUrkvun9VPVGOVwbbbBF/Ev1cXz12lyEZMoJpIJABOfPcN9gDJRaiKF9MVbSygLg4NXu3/A==",
+ "version": "1.2.17",
+ "resolved": "https://registry.npmjs.org/bun-types/-/bun-types-1.2.17.tgz",
+ "integrity": "sha512-ElC7ItwT3SCQwYZDYoAH+q6KT4Fxjl8DtZ6qDulUFBmXA8YB4xo+l54J9ZJN+k2pphfn9vk7kfubeSd5QfTVJQ==",
"dev": true,
"dependencies": {
"@types/node": "*"
diff --git a/package.json b/package.json
index fa117bd..ec21c8a 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "opal-mcp",
- "version": "0.6.2",
+ "version": "0.7.1",
"author": "Speakeasy",
"type": "module",
"bin": {
@@ -30,11 +30,12 @@
"lint": "eslint --cache --max-warnings=0 src",
"build:mcp": "bun src/mcp-server/build.mts",
"build": "npm run build:mcp && tshy",
+ "build:codeql": "npm run build:mcp && tshy && tsc --noEmit",
"prepublishOnly": "npm run build"
},
"peerDependencies": {
"@modelcontextprotocol/sdk": ">=1.5.0 <1.10.0",
- "zod": ">= 3"
+ "zod": "^3"
},
"peerDependenciesMeta": {
"@modelcontextprotocol/sdk": {
@@ -46,8 +47,8 @@
"@modelcontextprotocol/sdk": ">=1.5.0 <1.10.0",
"@stricli/core": "^1.1.1",
"@types/express": "^4.17.21",
- "bun": "^1.2.2",
- "bun-types": "^1.2.2",
+ "bun": "1.2.17",
+ "bun-types": "1.2.17",
"eslint": "^9.19.0",
"express": "^4.21.2",
"globals": "^15.14.0",
diff --git a/src/funcs/bundlesGetBundleGroups.ts b/src/funcs/bundlesGetBundleGroups.ts
index 140b936..b32fa70 100644
--- a/src/funcs/bundlesGetBundleGroups.ts
+++ b/src/funcs/bundlesGetBundleGroups.ts
@@ -3,6 +3,7 @@
*/
import { OpalMcpCore } from "../core.js";
+import { dlv } from "../lib/dlv.js";
import { encodeFormQuery, encodeSimple } from "../lib/encodings.js";
import * as M from "../lib/matchers.js";
import { compactMap } from "../lib/primitives.js";
@@ -10,7 +11,6 @@ import { safeParse } from "../lib/schemas.js";
import { RequestOptions } from "../lib/sdks.js";
import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
import { pathToFunc } from "../lib/url.js";
-import * as components from "../models/components/index.js";
import {
ConnectionError,
InvalidRequestError,
@@ -24,6 +24,12 @@ import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
import * as operations from "../models/operations/index.js";
import { APICall, APIPromise } from "../types/async.js";
import { Result } from "../types/fp.js";
+import {
+ createPageIterator,
+ haltIterator,
+ PageIterator,
+ Paginator,
+} from "../types/operations.js";
/**
* Returns a list of `Group` objects in a given bundle.
@@ -33,16 +39,19 @@ export function bundlesGetBundleGroups(
request: operations.GetBundleGroupsRequest,
options?: RequestOptions,
): APIPromise<
- Result<
- components.PaginatedBundleGroupList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetBundleGroupsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>
> {
return new APIPromise($do(
@@ -58,16 +67,19 @@ async function $do(
options?: RequestOptions,
): Promise<
[
- Result<
- components.PaginatedBundleGroupList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetBundleGroupsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>,
APICall,
]
@@ -78,7 +90,7 @@ async function $do(
"Input validation failed",
);
if (!parsed.ok) {
- return [parsed, { status: "invalid" }];
+ return [haltIterator(parsed), { status: "invalid" }];
}
const payload = parsed.value;
const body = null;
@@ -132,7 +144,7 @@ async function $do(
timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
}, options);
if (!requestRes.ok) {
- return [requestRes, { status: "invalid" }];
+ return [haltIterator(requestRes), { status: "invalid" }];
}
const req = requestRes.value;
@@ -143,12 +155,16 @@ async function $do(
retryCodes: context.retryCodes,
});
if (!doResult.ok) {
- return [doResult, { status: "request-error", request: req }];
+ return [haltIterator(doResult), { status: "request-error", request: req }];
}
const response = doResult.value;
- const [result] = await M.match<
- components.PaginatedBundleGroupList,
+ const responseFields = {
+ HttpMeta: { Response: response, Request: req },
+ };
+
+ const [result, raw] = await M.match<
+ operations.GetBundleGroupsResponse,
| OpalMcpError
| ResponseValidationError
| ConnectionError
@@ -158,13 +174,68 @@ async function $do(
| UnexpectedClientError
| SDKValidationError
>(
- M.json(200, components.PaginatedBundleGroupList$inboundSchema),
+ M.json(200, operations.GetBundleGroupsResponse$inboundSchema, {
+ key: "Result",
+ }),
M.fail("4XX"),
M.fail("5XX"),
- )(response, req);
+ )(response, req, { extraFields: responseFields });
if (!result.ok) {
- return [result, { status: "complete", request: req, response }];
+ return [haltIterator(result), {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
- return [result, { status: "complete", request: req, response }];
+ const nextFunc = (
+ responseData: unknown,
+ ): {
+ next: Paginator<
+ Result<
+ operations.GetBundleGroupsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >
+ >;
+ "~next"?: { cursor: string };
+ } => {
+ const nextCursor = dlv(responseData, "next");
+ if (typeof nextCursor !== "string") {
+ return { next: () => null };
+ }
+ const results = dlv(responseData, "bundle_groups");
+ if (!Array.isArray(results) || !results.length) {
+ return { next: () => null };
+ }
+ const limit = request?.pageSize ?? 0;
+ if (results.length < limit) {
+ return { next: () => null };
+ }
+
+ const nextVal = () =>
+ bundlesGetBundleGroups(
+ client,
+ {
+ ...request,
+ cursor: nextCursor,
+ },
+ options,
+ );
+
+ return { next: nextVal, "~next": { cursor: nextCursor } };
+ };
+
+ const page = { ...result, ...nextFunc(raw) };
+ return [{ ...page, ...createPageIterator(page, (v) => !v.ok) }, {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
diff --git a/src/funcs/bundlesGetBundleResources.ts b/src/funcs/bundlesGetBundleResources.ts
index 9c5b496..633db0a 100644
--- a/src/funcs/bundlesGetBundleResources.ts
+++ b/src/funcs/bundlesGetBundleResources.ts
@@ -3,6 +3,7 @@
*/
import { OpalMcpCore } from "../core.js";
+import { dlv } from "../lib/dlv.js";
import { encodeFormQuery, encodeSimple } from "../lib/encodings.js";
import * as M from "../lib/matchers.js";
import { compactMap } from "../lib/primitives.js";
@@ -10,7 +11,6 @@ import { safeParse } from "../lib/schemas.js";
import { RequestOptions } from "../lib/sdks.js";
import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
import { pathToFunc } from "../lib/url.js";
-import * as components from "../models/components/index.js";
import {
ConnectionError,
InvalidRequestError,
@@ -24,6 +24,12 @@ import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
import * as operations from "../models/operations/index.js";
import { APICall, APIPromise } from "../types/async.js";
import { Result } from "../types/fp.js";
+import {
+ createPageIterator,
+ haltIterator,
+ PageIterator,
+ Paginator,
+} from "../types/operations.js";
/**
* Returns a list of `Resource` objects in a given bundle.
@@ -33,16 +39,19 @@ export function bundlesGetBundleResources(
request: operations.GetBundleResourcesRequest,
options?: RequestOptions,
): APIPromise<
- Result<
- components.PaginatedBundleResourceList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetBundleResourcesResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>
> {
return new APIPromise($do(
@@ -58,16 +67,19 @@ async function $do(
options?: RequestOptions,
): Promise<
[
- Result<
- components.PaginatedBundleResourceList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetBundleResourcesResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>,
APICall,
]
@@ -78,7 +90,7 @@ async function $do(
"Input validation failed",
);
if (!parsed.ok) {
- return [parsed, { status: "invalid" }];
+ return [haltIterator(parsed), { status: "invalid" }];
}
const payload = parsed.value;
const body = null;
@@ -132,7 +144,7 @@ async function $do(
timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
}, options);
if (!requestRes.ok) {
- return [requestRes, { status: "invalid" }];
+ return [haltIterator(requestRes), { status: "invalid" }];
}
const req = requestRes.value;
@@ -143,12 +155,16 @@ async function $do(
retryCodes: context.retryCodes,
});
if (!doResult.ok) {
- return [doResult, { status: "request-error", request: req }];
+ return [haltIterator(doResult), { status: "request-error", request: req }];
}
const response = doResult.value;
- const [result] = await M.match<
- components.PaginatedBundleResourceList,
+ const responseFields = {
+ HttpMeta: { Response: response, Request: req },
+ };
+
+ const [result, raw] = await M.match<
+ operations.GetBundleResourcesResponse,
| OpalMcpError
| ResponseValidationError
| ConnectionError
@@ -158,13 +174,68 @@ async function $do(
| UnexpectedClientError
| SDKValidationError
>(
- M.json(200, components.PaginatedBundleResourceList$inboundSchema),
+ M.json(200, operations.GetBundleResourcesResponse$inboundSchema, {
+ key: "Result",
+ }),
M.fail("4XX"),
M.fail("5XX"),
- )(response, req);
+ )(response, req, { extraFields: responseFields });
if (!result.ok) {
- return [result, { status: "complete", request: req, response }];
+ return [haltIterator(result), {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
- return [result, { status: "complete", request: req, response }];
+ const nextFunc = (
+ responseData: unknown,
+ ): {
+ next: Paginator<
+ Result<
+ operations.GetBundleResourcesResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >
+ >;
+ "~next"?: { cursor: string };
+ } => {
+ const nextCursor = dlv(responseData, "next");
+ if (typeof nextCursor !== "string") {
+ return { next: () => null };
+ }
+ const results = dlv(responseData, "bundle_resources");
+ if (!Array.isArray(results) || !results.length) {
+ return { next: () => null };
+ }
+ const limit = request?.pageSize ?? 0;
+ if (results.length < limit) {
+ return { next: () => null };
+ }
+
+ const nextVal = () =>
+ bundlesGetBundleResources(
+ client,
+ {
+ ...request,
+ cursor: nextCursor,
+ },
+ options,
+ );
+
+ return { next: nextVal, "~next": { cursor: nextCursor } };
+ };
+
+ const page = { ...result, ...nextFunc(raw) };
+ return [{ ...page, ...createPageIterator(page, (v) => !v.ok) }, {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
diff --git a/src/funcs/bundlesGetBundles.ts b/src/funcs/bundlesGetBundles.ts
index ee1766f..f357657 100644
--- a/src/funcs/bundlesGetBundles.ts
+++ b/src/funcs/bundlesGetBundles.ts
@@ -3,6 +3,7 @@
*/
import { OpalMcpCore } from "../core.js";
+import { dlv } from "../lib/dlv.js";
import { encodeFormQuery } from "../lib/encodings.js";
import * as M from "../lib/matchers.js";
import { compactMap } from "../lib/primitives.js";
@@ -10,7 +11,6 @@ import { safeParse } from "../lib/schemas.js";
import { RequestOptions } from "../lib/sdks.js";
import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
import { pathToFunc } from "../lib/url.js";
-import * as components from "../models/components/index.js";
import {
ConnectionError,
InvalidRequestError,
@@ -24,6 +24,12 @@ import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
import * as operations from "../models/operations/index.js";
import { APICall, APIPromise } from "../types/async.js";
import { Result } from "../types/fp.js";
+import {
+ createPageIterator,
+ haltIterator,
+ PageIterator,
+ Paginator,
+} from "../types/operations.js";
/**
* Returns a list of `Bundle` objects.
@@ -33,16 +39,19 @@ export function bundlesGetBundles(
request: operations.GetBundlesRequest,
options?: RequestOptions,
): APIPromise<
- Result<
- components.PaginatedBundleList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetBundlesResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>
> {
return new APIPromise($do(
@@ -58,16 +67,19 @@ async function $do(
options?: RequestOptions,
): Promise<
[
- Result<
- components.PaginatedBundleList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetBundlesResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>,
APICall,
]
@@ -78,7 +90,7 @@ async function $do(
"Input validation failed",
);
if (!parsed.ok) {
- return [parsed, { status: "invalid" }];
+ return [haltIterator(parsed), { status: "invalid" }];
}
const payload = parsed.value;
const body = null;
@@ -126,7 +138,7 @@ async function $do(
timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
}, options);
if (!requestRes.ok) {
- return [requestRes, { status: "invalid" }];
+ return [haltIterator(requestRes), { status: "invalid" }];
}
const req = requestRes.value;
@@ -137,12 +149,16 @@ async function $do(
retryCodes: context.retryCodes,
});
if (!doResult.ok) {
- return [doResult, { status: "request-error", request: req }];
+ return [haltIterator(doResult), { status: "request-error", request: req }];
}
const response = doResult.value;
- const [result] = await M.match<
- components.PaginatedBundleList,
+ const responseFields = {
+ HttpMeta: { Response: response, Request: req },
+ };
+
+ const [result, raw] = await M.match<
+ operations.GetBundlesResponse,
| OpalMcpError
| ResponseValidationError
| ConnectionError
@@ -152,13 +168,66 @@ async function $do(
| UnexpectedClientError
| SDKValidationError
>(
- M.json(200, components.PaginatedBundleList$inboundSchema),
+ M.json(200, operations.GetBundlesResponse$inboundSchema, { key: "Result" }),
M.fail("4XX"),
M.fail("5XX"),
- )(response, req);
+ )(response, req, { extraFields: responseFields });
if (!result.ok) {
- return [result, { status: "complete", request: req, response }];
+ return [haltIterator(result), {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
- return [result, { status: "complete", request: req, response }];
+ const nextFunc = (
+ responseData: unknown,
+ ): {
+ next: Paginator<
+ Result<
+ operations.GetBundlesResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >
+ >;
+ "~next"?: { cursor: string };
+ } => {
+ const nextCursor = dlv(responseData, "next");
+ if (typeof nextCursor !== "string") {
+ return { next: () => null };
+ }
+ const results = dlv(responseData, "bundles");
+ if (!Array.isArray(results) || !results.length) {
+ return { next: () => null };
+ }
+ const limit = request?.pageSize ?? 0;
+ if (results.length < limit) {
+ return { next: () => null };
+ }
+
+ const nextVal = () =>
+ bundlesGetBundles(
+ client,
+ {
+ ...request,
+ cursor: nextCursor,
+ },
+ options,
+ );
+
+ return { next: nextVal, "~next": { cursor: nextCursor } };
+ };
+
+ const page = { ...result, ...nextFunc(raw) };
+ return [{ ...page, ...createPageIterator(page, (v) => !v.ok) }, {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
diff --git a/src/funcs/eventsEvents.ts b/src/funcs/eventsEvents.ts
index 69d522b..0d2cf32 100644
--- a/src/funcs/eventsEvents.ts
+++ b/src/funcs/eventsEvents.ts
@@ -3,6 +3,7 @@
*/
import { OpalMcpCore } from "../core.js";
+import { dlv } from "../lib/dlv.js";
import { encodeFormQuery } from "../lib/encodings.js";
import * as M from "../lib/matchers.js";
import { compactMap } from "../lib/primitives.js";
@@ -10,7 +11,6 @@ import { safeParse } from "../lib/schemas.js";
import { RequestOptions } from "../lib/sdks.js";
import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
import { pathToFunc } from "../lib/url.js";
-import * as components from "../models/components/index.js";
import {
ConnectionError,
InvalidRequestError,
@@ -24,6 +24,12 @@ import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
import * as operations from "../models/operations/index.js";
import { APICall, APIPromise } from "../types/async.js";
import { Result } from "../types/fp.js";
+import {
+ createPageIterator,
+ haltIterator,
+ PageIterator,
+ Paginator,
+} from "../types/operations.js";
/**
* Returns a list of `Event` objects.
@@ -33,16 +39,19 @@ export function eventsEvents(
request: operations.EventsRequest,
options?: RequestOptions,
): APIPromise<
- Result<
- components.PaginatedEventList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.EventsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>
> {
return new APIPromise($do(
@@ -58,16 +67,19 @@ async function $do(
options?: RequestOptions,
): Promise<
[
- Result<
- components.PaginatedEventList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.EventsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>,
APICall,
]
@@ -78,7 +90,7 @@ async function $do(
"Input validation failed",
);
if (!parsed.ok) {
- return [parsed, { status: "invalid" }];
+ return [haltIterator(parsed), { status: "invalid" }];
}
const payload = parsed.value;
const body = null;
@@ -131,7 +143,7 @@ async function $do(
timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
}, options);
if (!requestRes.ok) {
- return [requestRes, { status: "invalid" }];
+ return [haltIterator(requestRes), { status: "invalid" }];
}
const req = requestRes.value;
@@ -142,12 +154,16 @@ async function $do(
retryCodes: context.retryCodes,
});
if (!doResult.ok) {
- return [doResult, { status: "request-error", request: req }];
+ return [haltIterator(doResult), { status: "request-error", request: req }];
}
const response = doResult.value;
- const [result] = await M.match<
- components.PaginatedEventList,
+ const responseFields = {
+ HttpMeta: { Response: response, Request: req },
+ };
+
+ const [result, raw] = await M.match<
+ operations.EventsResponse,
| OpalMcpError
| ResponseValidationError
| ConnectionError
@@ -157,13 +173,66 @@ async function $do(
| UnexpectedClientError
| SDKValidationError
>(
- M.json(200, components.PaginatedEventList$inboundSchema),
+ M.json(200, operations.EventsResponse$inboundSchema, { key: "Result" }),
M.fail("4XX"),
M.fail("5XX"),
- )(response, req);
+ )(response, req, { extraFields: responseFields });
if (!result.ok) {
- return [result, { status: "complete", request: req, response }];
+ return [haltIterator(result), {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
- return [result, { status: "complete", request: req, response }];
+ const nextFunc = (
+ responseData: unknown,
+ ): {
+ next: Paginator<
+ Result<
+ operations.EventsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >
+ >;
+ "~next"?: { cursor: string };
+ } => {
+ const nextCursor = dlv(responseData, "next");
+ if (typeof nextCursor !== "string") {
+ return { next: () => null };
+ }
+ const results = dlv(responseData, "results");
+ if (!Array.isArray(results) || !results.length) {
+ return { next: () => null };
+ }
+ const limit = request?.pageSize ?? 0;
+ if (results.length < limit) {
+ return { next: () => null };
+ }
+
+ const nextVal = () =>
+ eventsEvents(
+ client,
+ {
+ ...request,
+ cursor: nextCursor,
+ },
+ options,
+ );
+
+ return { next: nextVal, "~next": { cursor: nextCursor } };
+ };
+
+ const page = { ...result, ...nextFunc(raw) };
+ return [{ ...page, ...createPageIterator(page, (v) => !v.ok) }, {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
diff --git a/src/funcs/groupBindingsGetGroupBindings.ts b/src/funcs/groupBindingsGetGroupBindings.ts
index 1b294e6..494344a 100644
--- a/src/funcs/groupBindingsGetGroupBindings.ts
+++ b/src/funcs/groupBindingsGetGroupBindings.ts
@@ -3,6 +3,7 @@
*/
import { OpalMcpCore } from "../core.js";
+import { dlv } from "../lib/dlv.js";
import { encodeFormQuery } from "../lib/encodings.js";
import * as M from "../lib/matchers.js";
import { compactMap } from "../lib/primitives.js";
@@ -10,7 +11,6 @@ import { safeParse } from "../lib/schemas.js";
import { RequestOptions } from "../lib/sdks.js";
import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
import { pathToFunc } from "../lib/url.js";
-import * as components from "../models/components/index.js";
import {
ConnectionError,
InvalidRequestError,
@@ -24,6 +24,12 @@ import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
import * as operations from "../models/operations/index.js";
import { APICall, APIPromise } from "../types/async.js";
import { Result } from "../types/fp.js";
+import {
+ createPageIterator,
+ haltIterator,
+ PageIterator,
+ Paginator,
+} from "../types/operations.js";
/**
* Returns a list of `GroupBinding` objects.
@@ -33,16 +39,19 @@ export function groupBindingsGetGroupBindings(
request: operations.GetGroupBindingsRequest,
options?: RequestOptions,
): APIPromise<
- Result<
- components.PaginatedGroupBindingsList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetGroupBindingsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>
> {
return new APIPromise($do(
@@ -58,16 +67,19 @@ async function $do(
options?: RequestOptions,
): Promise<
[
- Result<
- components.PaginatedGroupBindingsList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetGroupBindingsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>,
APICall,
]
@@ -78,7 +90,7 @@ async function $do(
"Input validation failed",
);
if (!parsed.ok) {
- return [parsed, { status: "invalid" }];
+ return [haltIterator(parsed), { status: "invalid" }];
}
const payload = parsed.value;
const body = null;
@@ -125,7 +137,7 @@ async function $do(
timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
}, options);
if (!requestRes.ok) {
- return [requestRes, { status: "invalid" }];
+ return [haltIterator(requestRes), { status: "invalid" }];
}
const req = requestRes.value;
@@ -136,12 +148,16 @@ async function $do(
retryCodes: context.retryCodes,
});
if (!doResult.ok) {
- return [doResult, { status: "request-error", request: req }];
+ return [haltIterator(doResult), { status: "request-error", request: req }];
}
const response = doResult.value;
- const [result] = await M.match<
- components.PaginatedGroupBindingsList,
+ const responseFields = {
+ HttpMeta: { Response: response, Request: req },
+ };
+
+ const [result, raw] = await M.match<
+ operations.GetGroupBindingsResponse,
| OpalMcpError
| ResponseValidationError
| ConnectionError
@@ -151,13 +167,68 @@ async function $do(
| UnexpectedClientError
| SDKValidationError
>(
- M.json(200, components.PaginatedGroupBindingsList$inboundSchema),
+ M.json(200, operations.GetGroupBindingsResponse$inboundSchema, {
+ key: "Result",
+ }),
M.fail("4XX"),
M.fail("5XX"),
- )(response, req);
+ )(response, req, { extraFields: responseFields });
if (!result.ok) {
- return [result, { status: "complete", request: req, response }];
+ return [haltIterator(result), {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
- return [result, { status: "complete", request: req, response }];
+ const nextFunc = (
+ responseData: unknown,
+ ): {
+ next: Paginator<
+ Result<
+ operations.GetGroupBindingsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >
+ >;
+ "~next"?: { cursor: string };
+ } => {
+ const nextCursor = dlv(responseData, "next");
+ if (typeof nextCursor !== "string") {
+ return { next: () => null };
+ }
+ const results = dlv(responseData, "results");
+ if (!Array.isArray(results) || !results.length) {
+ return { next: () => null };
+ }
+ const limit = request?.pageSize ?? 0;
+ if (results.length < limit) {
+ return { next: () => null };
+ }
+
+ const nextVal = () =>
+ groupBindingsGetGroupBindings(
+ client,
+ {
+ ...request,
+ cursor: nextCursor,
+ },
+ options,
+ );
+
+ return { next: nextVal, "~next": { cursor: nextCursor } };
+ };
+
+ const page = { ...result, ...nextFunc(raw) };
+ return [{ ...page, ...createPageIterator(page, (v) => !v.ok) }, {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
diff --git a/src/funcs/groupsDeleteGroupUser.ts b/src/funcs/groupsDeleteGroupUser.ts
index 83ac19a..eb2addb 100644
--- a/src/funcs/groupsDeleteGroupUser.ts
+++ b/src/funcs/groupsDeleteGroupUser.ts
@@ -4,7 +4,7 @@
import * as z from "zod";
import { OpalMcpCore } from "../core.js";
-import { encodeSimple } from "../lib/encodings.js";
+import { encodeFormQuery, encodeSimple } from "../lib/encodings.js";
import * as M from "../lib/matchers.js";
import { compactMap } from "../lib/primitives.js";
import { safeParse } from "../lib/schemas.js";
@@ -96,6 +96,10 @@ async function $do(
const path = pathToFunc("/groups/{group_id}/users/{user_id}")(pathParams);
+ const query = encodeFormQuery({
+ "access_level_remote_id": payload.access_level_remote_id,
+ });
+
const headers = new Headers(compactMap({
Accept: "*/*",
}));
@@ -125,6 +129,7 @@ async function $do(
baseURL: options?.serverURL,
path: path,
headers: headers,
+ query: query,
body: body,
userAgent: client._options.userAgent,
timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
diff --git a/src/funcs/groupsGetGroups.ts b/src/funcs/groupsGetGroups.ts
index 8c429ca..3f9ca37 100644
--- a/src/funcs/groupsGetGroups.ts
+++ b/src/funcs/groupsGetGroups.ts
@@ -3,6 +3,7 @@
*/
import { OpalMcpCore } from "../core.js";
+import { dlv } from "../lib/dlv.js";
import { encodeFormQuery, queryJoin } from "../lib/encodings.js";
import * as M from "../lib/matchers.js";
import { compactMap } from "../lib/primitives.js";
@@ -10,7 +11,6 @@ import { safeParse } from "../lib/schemas.js";
import { RequestOptions } from "../lib/sdks.js";
import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
import { pathToFunc } from "../lib/url.js";
-import * as components from "../models/components/index.js";
import {
ConnectionError,
InvalidRequestError,
@@ -24,6 +24,12 @@ import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
import * as operations from "../models/operations/index.js";
import { APICall, APIPromise } from "../types/async.js";
import { Result } from "../types/fp.js";
+import {
+ createPageIterator,
+ haltIterator,
+ PageIterator,
+ Paginator,
+} from "../types/operations.js";
/**
* Returns a list of groups for your organization.
@@ -33,16 +39,19 @@ export function groupsGetGroups(
request: operations.GetGroupsRequest,
options?: RequestOptions,
): APIPromise<
- Result<
- components.PaginatedGroupsList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetGroupsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>
> {
return new APIPromise($do(
@@ -58,16 +67,19 @@ async function $do(
options?: RequestOptions,
): Promise<
[
- Result<
- components.PaginatedGroupsList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetGroupsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>,
APICall,
]
@@ -78,7 +90,7 @@ async function $do(
"Input validation failed",
);
if (!parsed.ok) {
- return [parsed, { status: "invalid" }];
+ return [haltIterator(parsed), { status: "invalid" }];
}
const payload = parsed.value;
const body = null;
@@ -132,7 +144,7 @@ async function $do(
timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
}, options);
if (!requestRes.ok) {
- return [requestRes, { status: "invalid" }];
+ return [haltIterator(requestRes), { status: "invalid" }];
}
const req = requestRes.value;
@@ -143,12 +155,16 @@ async function $do(
retryCodes: context.retryCodes,
});
if (!doResult.ok) {
- return [doResult, { status: "request-error", request: req }];
+ return [haltIterator(doResult), { status: "request-error", request: req }];
}
const response = doResult.value;
- const [result] = await M.match<
- components.PaginatedGroupsList,
+ const responseFields = {
+ HttpMeta: { Response: response, Request: req },
+ };
+
+ const [result, raw] = await M.match<
+ operations.GetGroupsResponse,
| OpalMcpError
| ResponseValidationError
| ConnectionError
@@ -158,13 +174,66 @@ async function $do(
| UnexpectedClientError
| SDKValidationError
>(
- M.json(200, components.PaginatedGroupsList$inboundSchema),
+ M.json(200, operations.GetGroupsResponse$inboundSchema, { key: "Result" }),
M.fail("4XX"),
M.fail("5XX"),
- )(response, req);
+ )(response, req, { extraFields: responseFields });
if (!result.ok) {
- return [result, { status: "complete", request: req, response }];
+ return [haltIterator(result), {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
- return [result, { status: "complete", request: req, response }];
+ const nextFunc = (
+ responseData: unknown,
+ ): {
+ next: Paginator<
+ Result<
+ operations.GetGroupsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >
+ >;
+ "~next"?: { cursor: string };
+ } => {
+ const nextCursor = dlv(responseData, "next");
+ if (typeof nextCursor !== "string") {
+ return { next: () => null };
+ }
+ const results = dlv(responseData, "results");
+ if (!Array.isArray(results) || !results.length) {
+ return { next: () => null };
+ }
+ const limit = request?.pageSize ?? 0;
+ if (results.length < limit) {
+ return { next: () => null };
+ }
+
+ const nextVal = () =>
+ groupsGetGroups(
+ client,
+ {
+ ...request,
+ cursor: nextCursor,
+ },
+ options,
+ );
+
+ return { next: nextVal, "~next": { cursor: nextCursor } };
+ };
+
+ const page = { ...result, ...nextFunc(raw) };
+ return [{ ...page, ...createPageIterator(page, (v) => !v.ok) }, {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
diff --git a/src/funcs/nonHumanIdentitiesGetNhis.ts b/src/funcs/nonHumanIdentitiesGetNhis.ts
index 68a05aa..770d0f4 100644
--- a/src/funcs/nonHumanIdentitiesGetNhis.ts
+++ b/src/funcs/nonHumanIdentitiesGetNhis.ts
@@ -3,6 +3,7 @@
*/
import { OpalMcpCore } from "../core.js";
+import { dlv } from "../lib/dlv.js";
import { encodeFormQuery } from "../lib/encodings.js";
import * as M from "../lib/matchers.js";
import { compactMap } from "../lib/primitives.js";
@@ -10,7 +11,6 @@ import { safeParse } from "../lib/schemas.js";
import { RequestOptions } from "../lib/sdks.js";
import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
import { pathToFunc } from "../lib/url.js";
-import * as components from "../models/components/index.js";
import {
ConnectionError,
InvalidRequestError,
@@ -24,6 +24,12 @@ import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
import * as operations from "../models/operations/index.js";
import { APICall, APIPromise } from "../types/async.js";
import { Result } from "../types/fp.js";
+import {
+ createPageIterator,
+ haltIterator,
+ PageIterator,
+ Paginator,
+} from "../types/operations.js";
/**
* Returns a list of non-human identities for your organization.
@@ -33,16 +39,19 @@ export function nonHumanIdentitiesGetNhis(
request: operations.GetNhisRequest,
options?: RequestOptions,
): APIPromise<
- Result<
- components.PaginatedResourcesList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetNhisResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>
> {
return new APIPromise($do(
@@ -58,16 +67,19 @@ async function $do(
options?: RequestOptions,
): Promise<
[
- Result<
- components.PaginatedResourcesList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetNhisResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>,
APICall,
]
@@ -78,7 +90,7 @@ async function $do(
"Input validation failed",
);
if (!parsed.ok) {
- return [parsed, { status: "invalid" }];
+ return [haltIterator(parsed), { status: "invalid" }];
}
const payload = parsed.value;
const body = null;
@@ -125,7 +137,7 @@ async function $do(
timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
}, options);
if (!requestRes.ok) {
- return [requestRes, { status: "invalid" }];
+ return [haltIterator(requestRes), { status: "invalid" }];
}
const req = requestRes.value;
@@ -136,12 +148,16 @@ async function $do(
retryCodes: context.retryCodes,
});
if (!doResult.ok) {
- return [doResult, { status: "request-error", request: req }];
+ return [haltIterator(doResult), { status: "request-error", request: req }];
}
const response = doResult.value;
- const [result] = await M.match<
- components.PaginatedResourcesList,
+ const responseFields = {
+ HttpMeta: { Response: response, Request: req },
+ };
+
+ const [result, raw] = await M.match<
+ operations.GetNhisResponse,
| OpalMcpError
| ResponseValidationError
| ConnectionError
@@ -151,13 +167,66 @@ async function $do(
| UnexpectedClientError
| SDKValidationError
>(
- M.json(200, components.PaginatedResourcesList$inboundSchema),
+ M.json(200, operations.GetNhisResponse$inboundSchema, { key: "Result" }),
M.fail("4XX"),
M.fail("5XX"),
- )(response, req);
+ )(response, req, { extraFields: responseFields });
if (!result.ok) {
- return [result, { status: "complete", request: req, response }];
+ return [haltIterator(result), {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
- return [result, { status: "complete", request: req, response }];
+ const nextFunc = (
+ responseData: unknown,
+ ): {
+ next: Paginator<
+ Result<
+ operations.GetNhisResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >
+ >;
+ "~next"?: { cursor: string };
+ } => {
+ const nextCursor = dlv(responseData, "next");
+ if (typeof nextCursor !== "string") {
+ return { next: () => null };
+ }
+ const results = dlv(responseData, "results");
+ if (!Array.isArray(results) || !results.length) {
+ return { next: () => null };
+ }
+ const limit = request?.pageSize ?? 0;
+ if (results.length < limit) {
+ return { next: () => null };
+ }
+
+ const nextVal = () =>
+ nonHumanIdentitiesGetNhis(
+ client,
+ {
+ ...request,
+ cursor: nextCursor,
+ },
+ options,
+ );
+
+ return { next: nextVal, "~next": { cursor: nextCursor } };
+ };
+
+ const page = { ...result, ...nextFunc(raw) };
+ return [{ ...page, ...createPageIterator(page, (v) => !v.ok) }, {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
diff --git a/src/funcs/ownersGetOwners.ts b/src/funcs/ownersGetOwners.ts
index 96b6794..0b35072 100644
--- a/src/funcs/ownersGetOwners.ts
+++ b/src/funcs/ownersGetOwners.ts
@@ -3,6 +3,7 @@
*/
import { OpalMcpCore } from "../core.js";
+import { dlv } from "../lib/dlv.js";
import { encodeFormQuery } from "../lib/encodings.js";
import * as M from "../lib/matchers.js";
import { compactMap } from "../lib/primitives.js";
@@ -10,7 +11,6 @@ import { safeParse } from "../lib/schemas.js";
import { RequestOptions } from "../lib/sdks.js";
import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
import { pathToFunc } from "../lib/url.js";
-import * as components from "../models/components/index.js";
import {
ConnectionError,
InvalidRequestError,
@@ -24,6 +24,12 @@ import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
import * as operations from "../models/operations/index.js";
import { APICall, APIPromise } from "../types/async.js";
import { Result } from "../types/fp.js";
+import {
+ createPageIterator,
+ haltIterator,
+ PageIterator,
+ Paginator,
+} from "../types/operations.js";
/**
* Returns a list of `Owner` objects.
@@ -33,16 +39,19 @@ export function ownersGetOwners(
request: operations.GetOwnersRequest,
options?: RequestOptions,
): APIPromise<
- Result<
- components.PaginatedOwnersList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetOwnersResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>
> {
return new APIPromise($do(
@@ -58,16 +67,19 @@ async function $do(
options?: RequestOptions,
): Promise<
[
- Result<
- components.PaginatedOwnersList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetOwnersResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>,
APICall,
]
@@ -78,7 +90,7 @@ async function $do(
"Input validation failed",
);
if (!parsed.ok) {
- return [parsed, { status: "invalid" }];
+ return [haltIterator(parsed), { status: "invalid" }];
}
const payload = parsed.value;
const body = null;
@@ -126,7 +138,7 @@ async function $do(
timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
}, options);
if (!requestRes.ok) {
- return [requestRes, { status: "invalid" }];
+ return [haltIterator(requestRes), { status: "invalid" }];
}
const req = requestRes.value;
@@ -137,12 +149,16 @@ async function $do(
retryCodes: context.retryCodes,
});
if (!doResult.ok) {
- return [doResult, { status: "request-error", request: req }];
+ return [haltIterator(doResult), { status: "request-error", request: req }];
}
const response = doResult.value;
- const [result] = await M.match<
- components.PaginatedOwnersList,
+ const responseFields = {
+ HttpMeta: { Response: response, Request: req },
+ };
+
+ const [result, raw] = await M.match<
+ operations.GetOwnersResponse,
| OpalMcpError
| ResponseValidationError
| ConnectionError
@@ -152,13 +168,66 @@ async function $do(
| UnexpectedClientError
| SDKValidationError
>(
- M.json(200, components.PaginatedOwnersList$inboundSchema),
+ M.json(200, operations.GetOwnersResponse$inboundSchema, { key: "Result" }),
M.fail("4XX"),
M.fail("5XX"),
- )(response, req);
+ )(response, req, { extraFields: responseFields });
if (!result.ok) {
- return [result, { status: "complete", request: req, response }];
+ return [haltIterator(result), {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
- return [result, { status: "complete", request: req, response }];
+ const nextFunc = (
+ responseData: unknown,
+ ): {
+ next: Paginator<
+ Result<
+ operations.GetOwnersResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >
+ >;
+ "~next"?: { cursor: string };
+ } => {
+ const nextCursor = dlv(responseData, "next");
+ if (typeof nextCursor !== "string") {
+ return { next: () => null };
+ }
+ const results = dlv(responseData, "results");
+ if (!Array.isArray(results) || !results.length) {
+ return { next: () => null };
+ }
+ const limit = request?.pageSize ?? 0;
+ if (results.length < limit) {
+ return { next: () => null };
+ }
+
+ const nextVal = () =>
+ ownersGetOwners(
+ client,
+ {
+ ...request,
+ cursor: nextCursor,
+ },
+ options,
+ );
+
+ return { next: nextVal, "~next": { cursor: nextCursor } };
+ };
+
+ const page = { ...result, ...nextFunc(raw) };
+ return [{ ...page, ...createPageIterator(page, (v) => !v.ok) }, {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
diff --git a/src/funcs/requestsGetRequest.ts b/src/funcs/requestsGetRequest.ts
new file mode 100644
index 0000000..5593685
--- /dev/null
+++ b/src/funcs/requestsGetRequest.ts
@@ -0,0 +1,164 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+import { OpalMcpCore } from "../core.js";
+import { encodeSimple } from "../lib/encodings.js";
+import * as M from "../lib/matchers.js";
+import { compactMap } from "../lib/primitives.js";
+import { safeParse } from "../lib/schemas.js";
+import { RequestOptions } from "../lib/sdks.js";
+import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
+import { pathToFunc } from "../lib/url.js";
+import * as components from "../models/components/index.js";
+import {
+ ConnectionError,
+ InvalidRequestError,
+ RequestAbortedError,
+ RequestTimeoutError,
+ UnexpectedClientError,
+} from "../models/errors/httpclienterrors.js";
+import { OpalMcpError } from "../models/errors/opalmcperror.js";
+import { ResponseValidationError } from "../models/errors/responsevalidationerror.js";
+import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
+import * as operations from "../models/operations/index.js";
+import { APICall, APIPromise } from "../types/async.js";
+import { Result } from "../types/fp.js";
+
+/**
+ * Returns a request by ID.
+ */
+export function requestsGetRequest(
+ client: OpalMcpCore,
+ request: operations.GetRequestRequest,
+ options?: RequestOptions,
+): APIPromise<
+ Result<
+ components.RequestT,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >
+> {
+ return new APIPromise($do(
+ client,
+ request,
+ options,
+ ));
+}
+
+async function $do(
+ client: OpalMcpCore,
+ request: operations.GetRequestRequest,
+ options?: RequestOptions,
+): Promise<
+ [
+ Result<
+ components.RequestT,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ APICall,
+ ]
+> {
+ const parsed = safeParse(
+ request,
+ (value) => operations.GetRequestRequest$outboundSchema.parse(value),
+ "Input validation failed",
+ );
+ if (!parsed.ok) {
+ return [parsed, { status: "invalid" }];
+ }
+ const payload = parsed.value;
+ const body = null;
+
+ const pathParams = {
+ id: encodeSimple("id", payload.id, {
+ explode: false,
+ charEncoding: "percent",
+ }),
+ };
+
+ const path = pathToFunc("/requests/{id}")(pathParams);
+
+ const headers = new Headers(compactMap({
+ Accept: "application/json",
+ }));
+
+ const secConfig = await extractSecurity(client._options.bearerAuth);
+ const securityInput = secConfig == null ? {} : { bearerAuth: secConfig };
+ const requestSecurity = resolveGlobalSecurity(securityInput);
+
+ const context = {
+ options: client._options,
+ baseURL: options?.serverURL ?? client._baseURL ?? "",
+ operationID: "getRequest",
+ oAuth2Scopes: [],
+
+ resolvedSecurity: requestSecurity,
+
+ securitySource: client._options.bearerAuth,
+ retryConfig: options?.retries
+ || client._options.retryConfig
+ || { strategy: "none" },
+ retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"],
+ };
+
+ const requestRes = client._createRequest(context, {
+ security: requestSecurity,
+ method: "GET",
+ baseURL: options?.serverURL,
+ path: path,
+ headers: headers,
+ body: body,
+ userAgent: client._options.userAgent,
+ timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
+ }, options);
+ if (!requestRes.ok) {
+ return [requestRes, { status: "invalid" }];
+ }
+ const req = requestRes.value;
+
+ const doResult = await client._do(req, {
+ context,
+ errorCodes: ["4XX", "5XX"],
+ retryConfig: context.retryConfig,
+ retryCodes: context.retryCodes,
+ });
+ if (!doResult.ok) {
+ return [doResult, { status: "request-error", request: req }];
+ }
+ const response = doResult.value;
+
+ const [result] = await M.match<
+ components.RequestT,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >(
+ M.json(200, components.RequestT$inboundSchema),
+ M.fail("4XX"),
+ M.fail("5XX"),
+ )(response, req);
+ if (!result.ok) {
+ return [result, { status: "complete", request: req, response }];
+ }
+
+ return [result, { status: "complete", request: req, response }];
+}
diff --git a/src/funcs/requestsGetRequests.ts b/src/funcs/requestsGetRequests.ts
index a7f82b3..b2beb70 100644
--- a/src/funcs/requestsGetRequests.ts
+++ b/src/funcs/requestsGetRequests.ts
@@ -3,6 +3,7 @@
*/
import { OpalMcpCore } from "../core.js";
+import { dlv } from "../lib/dlv.js";
import { encodeFormQuery } from "../lib/encodings.js";
import * as M from "../lib/matchers.js";
import { compactMap } from "../lib/primitives.js";
@@ -10,7 +11,6 @@ import { safeParse } from "../lib/schemas.js";
import { RequestOptions } from "../lib/sdks.js";
import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
import { pathToFunc } from "../lib/url.js";
-import * as components from "../models/components/index.js";
import {
ConnectionError,
InvalidRequestError,
@@ -24,6 +24,12 @@ import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
import * as operations from "../models/operations/index.js";
import { APICall, APIPromise } from "../types/async.js";
import { Result } from "../types/fp.js";
+import {
+ createPageIterator,
+ haltIterator,
+ PageIterator,
+ Paginator,
+} from "../types/operations.js";
/**
* Returns a list of requests for your organization that is visible by the admin.
@@ -33,16 +39,19 @@ export function requestsGetRequests(
request: operations.GetRequestsRequest,
options?: RequestOptions,
): APIPromise<
- Result<
- components.RequestList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetRequestsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>
> {
return new APIPromise($do(
@@ -58,16 +67,19 @@ async function $do(
options?: RequestOptions,
): Promise<
[
- Result<
- components.RequestList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetRequestsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>,
APICall,
]
@@ -78,7 +90,7 @@ async function $do(
"Input validation failed",
);
if (!parsed.ok) {
- return [parsed, { status: "invalid" }];
+ return [haltIterator(parsed), { status: "invalid" }];
}
const payload = parsed.value;
const body = null;
@@ -128,7 +140,7 @@ async function $do(
timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
}, options);
if (!requestRes.ok) {
- return [requestRes, { status: "invalid" }];
+ return [haltIterator(requestRes), { status: "invalid" }];
}
const req = requestRes.value;
@@ -139,12 +151,16 @@ async function $do(
retryCodes: context.retryCodes,
});
if (!doResult.ok) {
- return [doResult, { status: "request-error", request: req }];
+ return [haltIterator(doResult), { status: "request-error", request: req }];
}
const response = doResult.value;
- const [result] = await M.match<
- components.RequestList,
+ const responseFields = {
+ HttpMeta: { Response: response, Request: req },
+ };
+
+ const [result, raw] = await M.match<
+ operations.GetRequestsResponse,
| OpalMcpError
| ResponseValidationError
| ConnectionError
@@ -154,13 +170,68 @@ async function $do(
| UnexpectedClientError
| SDKValidationError
>(
- M.json(200, components.RequestList$inboundSchema),
+ M.json(200, operations.GetRequestsResponse$inboundSchema, {
+ key: "Result",
+ }),
M.fail("4XX"),
M.fail("5XX"),
- )(response, req);
+ )(response, req, { extraFields: responseFields });
if (!result.ok) {
- return [result, { status: "complete", request: req, response }];
+ return [haltIterator(result), {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
- return [result, { status: "complete", request: req, response }];
+ const nextFunc = (
+ responseData: unknown,
+ ): {
+ next: Paginator<
+ Result<
+ operations.GetRequestsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >
+ >;
+ "~next"?: { cursor: string };
+ } => {
+ const nextCursor = dlv(responseData, "cursor");
+ if (typeof nextCursor !== "string") {
+ return { next: () => null };
+ }
+ const results = dlv(responseData, "requests");
+ if (!Array.isArray(results) || !results.length) {
+ return { next: () => null };
+ }
+ const limit = request?.pageSize ?? 0;
+ if (results.length < limit) {
+ return { next: () => null };
+ }
+
+ const nextVal = () =>
+ requestsGetRequests(
+ client,
+ {
+ ...request,
+ cursor: nextCursor,
+ },
+ options,
+ );
+
+ return { next: nextVal, "~next": { cursor: nextCursor } };
+ };
+
+ const page = { ...result, ...nextFunc(raw) };
+ return [{ ...page, ...createPageIterator(page, (v) => !v.ok) }, {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
diff --git a/src/funcs/requestsGetRequestsRelay.ts b/src/funcs/requestsGetRequestsRelay.ts
index bc5d4ce..c0ff296 100644
--- a/src/funcs/requestsGetRequestsRelay.ts
+++ b/src/funcs/requestsGetRequestsRelay.ts
@@ -27,6 +27,8 @@ import { Result } from "../types/fp.js";
/**
* Returns a paginated list of requests using Relay-style cursor pagination.
+ *
+ * @deprecated method: This will be removed in a future release, please migrate away from it as soon as possible.
*/
export function requestsGetRequestsRelay(
client: OpalMcpCore,
diff --git a/src/funcs/resourcesGetResourceScopedRolePermissions.ts b/src/funcs/resourcesGetResourceScopedRolePermissions.ts
new file mode 100644
index 0000000..b7ffd24
--- /dev/null
+++ b/src/funcs/resourcesGetResourceScopedRolePermissions.ts
@@ -0,0 +1,169 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+import { OpalMcpCore } from "../core.js";
+import { encodeSimple } from "../lib/encodings.js";
+import * as M from "../lib/matchers.js";
+import { compactMap } from "../lib/primitives.js";
+import { safeParse } from "../lib/schemas.js";
+import { RequestOptions } from "../lib/sdks.js";
+import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
+import { pathToFunc } from "../lib/url.js";
+import * as components from "../models/components/index.js";
+import {
+ ConnectionError,
+ InvalidRequestError,
+ RequestAbortedError,
+ RequestTimeoutError,
+ UnexpectedClientError,
+} from "../models/errors/httpclienterrors.js";
+import { OpalMcpError } from "../models/errors/opalmcperror.js";
+import { ResponseValidationError } from "../models/errors/responsevalidationerror.js";
+import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
+import * as operations from "../models/operations/index.js";
+import { APICall, APIPromise } from "../types/async.js";
+import { Result } from "../types/fp.js";
+
+/**
+ * Returns all the scoped role permissions that apply to the given resource. Only OPAL_SCOPED_ROLE resource type supports this field.
+ */
+export function resourcesGetResourceScopedRolePermissions(
+ client: OpalMcpCore,
+ request: operations.GetResourceScopedRolePermissionsRequest,
+ options?: RequestOptions,
+): APIPromise<
+ Result<
+ components.ScopedRolePermissionList,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >
+> {
+ return new APIPromise($do(
+ client,
+ request,
+ options,
+ ));
+}
+
+async function $do(
+ client: OpalMcpCore,
+ request: operations.GetResourceScopedRolePermissionsRequest,
+ options?: RequestOptions,
+): Promise<
+ [
+ Result<
+ components.ScopedRolePermissionList,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ APICall,
+ ]
+> {
+ const parsed = safeParse(
+ request,
+ (value) =>
+ operations.GetResourceScopedRolePermissionsRequest$outboundSchema.parse(
+ value,
+ ),
+ "Input validation failed",
+ );
+ if (!parsed.ok) {
+ return [parsed, { status: "invalid" }];
+ }
+ const payload = parsed.value;
+ const body = null;
+
+ const pathParams = {
+ resource_id: encodeSimple("resource_id", payload.resource_id, {
+ explode: false,
+ charEncoding: "percent",
+ }),
+ };
+
+ const path = pathToFunc("/resources/{resource_id}/scoped-role-permissions")(
+ pathParams,
+ );
+
+ const headers = new Headers(compactMap({
+ Accept: "application/json",
+ }));
+
+ const secConfig = await extractSecurity(client._options.bearerAuth);
+ const securityInput = secConfig == null ? {} : { bearerAuth: secConfig };
+ const requestSecurity = resolveGlobalSecurity(securityInput);
+
+ const context = {
+ options: client._options,
+ baseURL: options?.serverURL ?? client._baseURL ?? "",
+ operationID: "get_resource_scoped_role_permissions",
+ oAuth2Scopes: [],
+
+ resolvedSecurity: requestSecurity,
+
+ securitySource: client._options.bearerAuth,
+ retryConfig: options?.retries
+ || client._options.retryConfig
+ || { strategy: "none" },
+ retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"],
+ };
+
+ const requestRes = client._createRequest(context, {
+ security: requestSecurity,
+ method: "GET",
+ baseURL: options?.serverURL,
+ path: path,
+ headers: headers,
+ body: body,
+ userAgent: client._options.userAgent,
+ timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
+ }, options);
+ if (!requestRes.ok) {
+ return [requestRes, { status: "invalid" }];
+ }
+ const req = requestRes.value;
+
+ const doResult = await client._do(req, {
+ context,
+ errorCodes: ["4XX", "5XX"],
+ retryConfig: context.retryConfig,
+ retryCodes: context.retryCodes,
+ });
+ if (!doResult.ok) {
+ return [doResult, { status: "request-error", request: req }];
+ }
+ const response = doResult.value;
+
+ const [result] = await M.match<
+ components.ScopedRolePermissionList,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >(
+ M.json(200, components.ScopedRolePermissionList$inboundSchema),
+ M.fail("4XX"),
+ M.fail("5XX"),
+ )(response, req);
+ if (!result.ok) {
+ return [result, { status: "complete", request: req, response }];
+ }
+
+ return [result, { status: "complete", request: req, response }];
+}
diff --git a/src/funcs/resourcesGetResources.ts b/src/funcs/resourcesGetResources.ts
index df35b22..f598c5c 100644
--- a/src/funcs/resourcesGetResources.ts
+++ b/src/funcs/resourcesGetResources.ts
@@ -3,6 +3,7 @@
*/
import { OpalMcpCore } from "../core.js";
+import { dlv } from "../lib/dlv.js";
import { encodeFormQuery, queryJoin } from "../lib/encodings.js";
import * as M from "../lib/matchers.js";
import { compactMap } from "../lib/primitives.js";
@@ -10,7 +11,6 @@ import { safeParse } from "../lib/schemas.js";
import { RequestOptions } from "../lib/sdks.js";
import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
import { pathToFunc } from "../lib/url.js";
-import * as components from "../models/components/index.js";
import {
ConnectionError,
InvalidRequestError,
@@ -24,6 +24,12 @@ import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
import * as operations from "../models/operations/index.js";
import { APICall, APIPromise } from "../types/async.js";
import { Result } from "../types/fp.js";
+import {
+ createPageIterator,
+ haltIterator,
+ PageIterator,
+ Paginator,
+} from "../types/operations.js";
/**
* Returns a list of resources for your organization.
@@ -33,16 +39,19 @@ export function resourcesGetResources(
request: operations.GetResourcesRequest,
options?: RequestOptions,
): APIPromise<
- Result<
- components.PaginatedResourcesList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetResourcesResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>
> {
return new APIPromise($do(
@@ -58,16 +67,19 @@ async function $do(
options?: RequestOptions,
): Promise<
[
- Result<
- components.PaginatedResourcesList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetResourcesResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>,
APICall,
]
@@ -78,7 +90,7 @@ async function $do(
"Input validation failed",
);
if (!parsed.ok) {
- return [parsed, { status: "invalid" }];
+ return [haltIterator(parsed), { status: "invalid" }];
}
const payload = parsed.value;
const body = null;
@@ -134,7 +146,7 @@ async function $do(
timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
}, options);
if (!requestRes.ok) {
- return [requestRes, { status: "invalid" }];
+ return [haltIterator(requestRes), { status: "invalid" }];
}
const req = requestRes.value;
@@ -145,12 +157,16 @@ async function $do(
retryCodes: context.retryCodes,
});
if (!doResult.ok) {
- return [doResult, { status: "request-error", request: req }];
+ return [haltIterator(doResult), { status: "request-error", request: req }];
}
const response = doResult.value;
- const [result] = await M.match<
- components.PaginatedResourcesList,
+ const responseFields = {
+ HttpMeta: { Response: response, Request: req },
+ };
+
+ const [result, raw] = await M.match<
+ operations.GetResourcesResponse,
| OpalMcpError
| ResponseValidationError
| ConnectionError
@@ -160,13 +176,68 @@ async function $do(
| UnexpectedClientError
| SDKValidationError
>(
- M.json(200, components.PaginatedResourcesList$inboundSchema),
+ M.json(200, operations.GetResourcesResponse$inboundSchema, {
+ key: "Result",
+ }),
M.fail("4XX"),
M.fail("5XX"),
- )(response, req);
+ )(response, req, { extraFields: responseFields });
if (!result.ok) {
- return [result, { status: "complete", request: req, response }];
+ return [haltIterator(result), {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
- return [result, { status: "complete", request: req, response }];
+ const nextFunc = (
+ responseData: unknown,
+ ): {
+ next: Paginator<
+ Result<
+ operations.GetResourcesResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >
+ >;
+ "~next"?: { cursor: string };
+ } => {
+ const nextCursor = dlv(responseData, "next");
+ if (typeof nextCursor !== "string") {
+ return { next: () => null };
+ }
+ const results = dlv(responseData, "results");
+ if (!Array.isArray(results) || !results.length) {
+ return { next: () => null };
+ }
+ const limit = request?.pageSize ?? 0;
+ if (results.length < limit) {
+ return { next: () => null };
+ }
+
+ const nextVal = () =>
+ resourcesGetResources(
+ client,
+ {
+ ...request,
+ cursor: nextCursor,
+ },
+ options,
+ );
+
+ return { next: nextVal, "~next": { cursor: nextCursor } };
+ };
+
+ const page = { ...result, ...nextFunc(raw) };
+ return [{ ...page, ...createPageIterator(page, (v) => !v.ok) }, {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
diff --git a/src/funcs/resourcesSetResourceScopedRolePermissions.ts b/src/funcs/resourcesSetResourceScopedRolePermissions.ts
new file mode 100644
index 0000000..9e6d338
--- /dev/null
+++ b/src/funcs/resourcesSetResourceScopedRolePermissions.ts
@@ -0,0 +1,172 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+import { OpalMcpCore } from "../core.js";
+import { encodeJSON, encodeSimple } from "../lib/encodings.js";
+import * as M from "../lib/matchers.js";
+import { compactMap } from "../lib/primitives.js";
+import { safeParse } from "../lib/schemas.js";
+import { RequestOptions } from "../lib/sdks.js";
+import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
+import { pathToFunc } from "../lib/url.js";
+import * as components from "../models/components/index.js";
+import {
+ ConnectionError,
+ InvalidRequestError,
+ RequestAbortedError,
+ RequestTimeoutError,
+ UnexpectedClientError,
+} from "../models/errors/httpclienterrors.js";
+import { OpalMcpError } from "../models/errors/opalmcperror.js";
+import { ResponseValidationError } from "../models/errors/responsevalidationerror.js";
+import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
+import * as operations from "../models/operations/index.js";
+import { APICall, APIPromise } from "../types/async.js";
+import { Result } from "../types/fp.js";
+
+/**
+ * Sets all the scoped role permissions on an OPAL_SCOPED_ROLE resource.
+ */
+export function resourcesSetResourceScopedRolePermissions(
+ client: OpalMcpCore,
+ request: operations.SetResourceScopedRolePermissionsRequest,
+ options?: RequestOptions,
+): APIPromise<
+ Result<
+ components.ScopedRolePermissionList,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >
+> {
+ return new APIPromise($do(
+ client,
+ request,
+ options,
+ ));
+}
+
+async function $do(
+ client: OpalMcpCore,
+ request: operations.SetResourceScopedRolePermissionsRequest,
+ options?: RequestOptions,
+): Promise<
+ [
+ Result<
+ components.ScopedRolePermissionList,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ APICall,
+ ]
+> {
+ const parsed = safeParse(
+ request,
+ (value) =>
+ operations.SetResourceScopedRolePermissionsRequest$outboundSchema.parse(
+ value,
+ ),
+ "Input validation failed",
+ );
+ if (!parsed.ok) {
+ return [parsed, { status: "invalid" }];
+ }
+ const payload = parsed.value;
+ const body = encodeJSON("body", payload.ScopedRolePermissionList, {
+ explode: true,
+ });
+
+ const pathParams = {
+ resource_id: encodeSimple("resource_id", payload.resource_id, {
+ explode: false,
+ charEncoding: "percent",
+ }),
+ };
+
+ const path = pathToFunc("/resources/{resource_id}/scoped-role-permissions")(
+ pathParams,
+ );
+
+ const headers = new Headers(compactMap({
+ "Content-Type": "application/json",
+ Accept: "application/json",
+ }));
+
+ const secConfig = await extractSecurity(client._options.bearerAuth);
+ const securityInput = secConfig == null ? {} : { bearerAuth: secConfig };
+ const requestSecurity = resolveGlobalSecurity(securityInput);
+
+ const context = {
+ options: client._options,
+ baseURL: options?.serverURL ?? client._baseURL ?? "",
+ operationID: "set_resource_scoped_role_permissions",
+ oAuth2Scopes: [],
+
+ resolvedSecurity: requestSecurity,
+
+ securitySource: client._options.bearerAuth,
+ retryConfig: options?.retries
+ || client._options.retryConfig
+ || { strategy: "none" },
+ retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"],
+ };
+
+ const requestRes = client._createRequest(context, {
+ security: requestSecurity,
+ method: "PUT",
+ baseURL: options?.serverURL,
+ path: path,
+ headers: headers,
+ body: body,
+ userAgent: client._options.userAgent,
+ timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
+ }, options);
+ if (!requestRes.ok) {
+ return [requestRes, { status: "invalid" }];
+ }
+ const req = requestRes.value;
+
+ const doResult = await client._do(req, {
+ context,
+ errorCodes: ["4XX", "5XX"],
+ retryConfig: context.retryConfig,
+ retryCodes: context.retryCodes,
+ });
+ if (!doResult.ok) {
+ return [doResult, { status: "request-error", request: req }];
+ }
+ const response = doResult.value;
+
+ const [result] = await M.match<
+ components.ScopedRolePermissionList,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >(
+ M.json(200, components.ScopedRolePermissionList$inboundSchema),
+ M.fail("4XX"),
+ M.fail("5XX"),
+ )(response, req);
+ if (!result.ok) {
+ return [result, { status: "complete", request: req, response }];
+ }
+
+ return [result, { status: "complete", request: req, response }];
+}
diff --git a/src/funcs/tagsGetTags.ts b/src/funcs/tagsGetTags.ts
index 2ffbc0e..3dbd9ac 100644
--- a/src/funcs/tagsGetTags.ts
+++ b/src/funcs/tagsGetTags.ts
@@ -3,6 +3,7 @@
*/
import { OpalMcpCore } from "../core.js";
+import { dlv } from "../lib/dlv.js";
import { encodeFormQuery } from "../lib/encodings.js";
import * as M from "../lib/matchers.js";
import { compactMap } from "../lib/primitives.js";
@@ -10,7 +11,6 @@ import { safeParse } from "../lib/schemas.js";
import { RequestOptions } from "../lib/sdks.js";
import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
import { pathToFunc } from "../lib/url.js";
-import * as components from "../models/components/index.js";
import {
ConnectionError,
InvalidRequestError,
@@ -24,6 +24,12 @@ import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
import * as operations from "../models/operations/index.js";
import { APICall, APIPromise } from "../types/async.js";
import { Result } from "../types/fp.js";
+import {
+ createPageIterator,
+ haltIterator,
+ PageIterator,
+ Paginator,
+} from "../types/operations.js";
/**
* Returns a list of tags created by your organization.
@@ -33,16 +39,19 @@ export function tagsGetTags(
request: operations.GetTagsRequest,
options?: RequestOptions,
): APIPromise<
- Result<
- components.PaginatedTagsList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetTagsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>
> {
return new APIPromise($do(
@@ -58,16 +67,19 @@ async function $do(
options?: RequestOptions,
): Promise<
[
- Result<
- components.PaginatedTagsList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetTagsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>,
APICall,
]
@@ -78,7 +90,7 @@ async function $do(
"Input validation failed",
);
if (!parsed.ok) {
- return [parsed, { status: "invalid" }];
+ return [haltIterator(parsed), { status: "invalid" }];
}
const payload = parsed.value;
const body = null;
@@ -125,7 +137,7 @@ async function $do(
timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
}, options);
if (!requestRes.ok) {
- return [requestRes, { status: "invalid" }];
+ return [haltIterator(requestRes), { status: "invalid" }];
}
const req = requestRes.value;
@@ -136,12 +148,16 @@ async function $do(
retryCodes: context.retryCodes,
});
if (!doResult.ok) {
- return [doResult, { status: "request-error", request: req }];
+ return [haltIterator(doResult), { status: "request-error", request: req }];
}
const response = doResult.value;
- const [result] = await M.match<
- components.PaginatedTagsList,
+ const responseFields = {
+ HttpMeta: { Response: response, Request: req },
+ };
+
+ const [result, raw] = await M.match<
+ operations.GetTagsResponse,
| OpalMcpError
| ResponseValidationError
| ConnectionError
@@ -151,13 +167,66 @@ async function $do(
| UnexpectedClientError
| SDKValidationError
>(
- M.json(200, components.PaginatedTagsList$inboundSchema),
+ M.json(200, operations.GetTagsResponse$inboundSchema, { key: "Result" }),
M.fail("4XX"),
M.fail("5XX"),
- )(response, req);
+ )(response, req, { extraFields: responseFields });
if (!result.ok) {
- return [result, { status: "complete", request: req, response }];
+ return [haltIterator(result), {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
- return [result, { status: "complete", request: req, response }];
+ const nextFunc = (
+ responseData: unknown,
+ ): {
+ next: Paginator<
+ Result<
+ operations.GetTagsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >
+ >;
+ "~next"?: { cursor: string };
+ } => {
+ const nextCursor = dlv(responseData, "next");
+ if (typeof nextCursor !== "string") {
+ return { next: () => null };
+ }
+ const results = dlv(responseData, "results");
+ if (!Array.isArray(results) || !results.length) {
+ return { next: () => null };
+ }
+ const limit = request?.pageSize ?? 0;
+ if (results.length < limit) {
+ return { next: () => null };
+ }
+
+ const nextVal = () =>
+ tagsGetTags(
+ client,
+ {
+ ...request,
+ cursor: nextCursor,
+ },
+ options,
+ );
+
+ return { next: nextVal, "~next": { cursor: nextCursor } };
+ };
+
+ const page = { ...result, ...nextFunc(raw) };
+ return [{ ...page, ...createPageIterator(page, (v) => !v.ok) }, {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
diff --git a/src/funcs/uarsGetUARs.ts b/src/funcs/uarsGetUARs.ts
index 77a2f6a..ec1fd85 100644
--- a/src/funcs/uarsGetUARs.ts
+++ b/src/funcs/uarsGetUARs.ts
@@ -3,6 +3,7 @@
*/
import { OpalMcpCore } from "../core.js";
+import { dlv } from "../lib/dlv.js";
import { encodeFormQuery } from "../lib/encodings.js";
import * as M from "../lib/matchers.js";
import { compactMap } from "../lib/primitives.js";
@@ -10,7 +11,6 @@ import { safeParse } from "../lib/schemas.js";
import { RequestOptions } from "../lib/sdks.js";
import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
import { pathToFunc } from "../lib/url.js";
-import * as components from "../models/components/index.js";
import {
ConnectionError,
InvalidRequestError,
@@ -24,6 +24,12 @@ import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
import * as operations from "../models/operations/index.js";
import { APICall, APIPromise } from "../types/async.js";
import { Result } from "../types/fp.js";
+import {
+ createPageIterator,
+ haltIterator,
+ PageIterator,
+ Paginator,
+} from "../types/operations.js";
/**
* Returns a list of `UAR` objects.
@@ -33,16 +39,19 @@ export function uarsGetUARs(
request: operations.GetUARsRequest,
options?: RequestOptions,
): APIPromise<
- Result<
- components.PaginatedUARsList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetUARsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>
> {
return new APIPromise($do(
@@ -58,16 +67,19 @@ async function $do(
options?: RequestOptions,
): Promise<
[
- Result<
- components.PaginatedUARsList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetUARsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>,
APICall,
]
@@ -78,7 +90,7 @@ async function $do(
"Input validation failed",
);
if (!parsed.ok) {
- return [parsed, { status: "invalid" }];
+ return [haltIterator(parsed), { status: "invalid" }];
}
const payload = parsed.value;
const body = null;
@@ -125,7 +137,7 @@ async function $do(
timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
}, options);
if (!requestRes.ok) {
- return [requestRes, { status: "invalid" }];
+ return [haltIterator(requestRes), { status: "invalid" }];
}
const req = requestRes.value;
@@ -136,12 +148,16 @@ async function $do(
retryCodes: context.retryCodes,
});
if (!doResult.ok) {
- return [doResult, { status: "request-error", request: req }];
+ return [haltIterator(doResult), { status: "request-error", request: req }];
}
const response = doResult.value;
- const [result] = await M.match<
- components.PaginatedUARsList,
+ const responseFields = {
+ HttpMeta: { Response: response, Request: req },
+ };
+
+ const [result, raw] = await M.match<
+ operations.GetUARsResponse,
| OpalMcpError
| ResponseValidationError
| ConnectionError
@@ -151,13 +167,66 @@ async function $do(
| UnexpectedClientError
| SDKValidationError
>(
- M.json(200, components.PaginatedUARsList$inboundSchema),
+ M.json(200, operations.GetUARsResponse$inboundSchema, { key: "Result" }),
M.fail("4XX"),
M.fail("5XX"),
- )(response, req);
+ )(response, req, { extraFields: responseFields });
if (!result.ok) {
- return [result, { status: "complete", request: req, response }];
+ return [haltIterator(result), {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
- return [result, { status: "complete", request: req, response }];
+ const nextFunc = (
+ responseData: unknown,
+ ): {
+ next: Paginator<
+ Result<
+ operations.GetUARsResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >
+ >;
+ "~next"?: { cursor: string };
+ } => {
+ const nextCursor = dlv(responseData, "next");
+ if (typeof nextCursor !== "string") {
+ return { next: () => null };
+ }
+ const results = dlv(responseData, "results");
+ if (!Array.isArray(results) || !results.length) {
+ return { next: () => null };
+ }
+ const limit = request?.pageSize ?? 0;
+ if (results.length < limit) {
+ return { next: () => null };
+ }
+
+ const nextVal = () =>
+ uarsGetUARs(
+ client,
+ {
+ ...request,
+ cursor: nextCursor,
+ },
+ options,
+ );
+
+ return { next: nextVal, "~next": { cursor: nextCursor } };
+ };
+
+ const page = { ...result, ...nextFunc(raw) };
+ return [{ ...page, ...createPageIterator(page, (v) => !v.ok) }, {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
diff --git a/src/funcs/usersGetUsers.ts b/src/funcs/usersGetUsers.ts
index 1d794ea..d8dfce2 100644
--- a/src/funcs/usersGetUsers.ts
+++ b/src/funcs/usersGetUsers.ts
@@ -3,6 +3,7 @@
*/
import { OpalMcpCore } from "../core.js";
+import { dlv } from "../lib/dlv.js";
import { encodeFormQuery } from "../lib/encodings.js";
import * as M from "../lib/matchers.js";
import { compactMap } from "../lib/primitives.js";
@@ -10,7 +11,6 @@ import { safeParse } from "../lib/schemas.js";
import { RequestOptions } from "../lib/sdks.js";
import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
import { pathToFunc } from "../lib/url.js";
-import * as components from "../models/components/index.js";
import {
ConnectionError,
InvalidRequestError,
@@ -24,6 +24,12 @@ import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
import * as operations from "../models/operations/index.js";
import { APICall, APIPromise } from "../types/async.js";
import { Result } from "../types/fp.js";
+import {
+ createPageIterator,
+ haltIterator,
+ PageIterator,
+ Paginator,
+} from "../types/operations.js";
/**
* Returns a list of users for your organization.
@@ -33,16 +39,19 @@ export function usersGetUsers(
request: operations.GetUsersRequest,
options?: RequestOptions,
): APIPromise<
- Result<
- components.PaginatedUsersList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetUsersResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>
> {
return new APIPromise($do(
@@ -58,16 +67,19 @@ async function $do(
options?: RequestOptions,
): Promise<
[
- Result<
- components.PaginatedUsersList,
- | OpalMcpError
- | ResponseValidationError
- | ConnectionError
- | RequestAbortedError
- | RequestTimeoutError
- | InvalidRequestError
- | UnexpectedClientError
- | SDKValidationError
+ PageIterator<
+ Result<
+ operations.GetUsersResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >,
+ { cursor: string }
>,
APICall,
]
@@ -78,7 +90,7 @@ async function $do(
"Input validation failed",
);
if (!parsed.ok) {
- return [parsed, { status: "invalid" }];
+ return [haltIterator(parsed), { status: "invalid" }];
}
const payload = parsed.value;
const body = null;
@@ -125,7 +137,7 @@ async function $do(
timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
}, options);
if (!requestRes.ok) {
- return [requestRes, { status: "invalid" }];
+ return [haltIterator(requestRes), { status: "invalid" }];
}
const req = requestRes.value;
@@ -136,12 +148,16 @@ async function $do(
retryCodes: context.retryCodes,
});
if (!doResult.ok) {
- return [doResult, { status: "request-error", request: req }];
+ return [haltIterator(doResult), { status: "request-error", request: req }];
}
const response = doResult.value;
- const [result] = await M.match<
- components.PaginatedUsersList,
+ const responseFields = {
+ HttpMeta: { Response: response, Request: req },
+ };
+
+ const [result, raw] = await M.match<
+ operations.GetUsersResponse,
| OpalMcpError
| ResponseValidationError
| ConnectionError
@@ -151,13 +167,66 @@ async function $do(
| UnexpectedClientError
| SDKValidationError
>(
- M.json(200, components.PaginatedUsersList$inboundSchema),
+ M.json(200, operations.GetUsersResponse$inboundSchema, { key: "Result" }),
M.fail("4XX"),
M.fail("5XX"),
- )(response, req);
+ )(response, req, { extraFields: responseFields });
if (!result.ok) {
- return [result, { status: "complete", request: req, response }];
+ return [haltIterator(result), {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
- return [result, { status: "complete", request: req, response }];
+ const nextFunc = (
+ responseData: unknown,
+ ): {
+ next: Paginator<
+ Result<
+ operations.GetUsersResponse,
+ | OpalMcpError
+ | ResponseValidationError
+ | ConnectionError
+ | RequestAbortedError
+ | RequestTimeoutError
+ | InvalidRequestError
+ | UnexpectedClientError
+ | SDKValidationError
+ >
+ >;
+ "~next"?: { cursor: string };
+ } => {
+ const nextCursor = dlv(responseData, "next");
+ if (typeof nextCursor !== "string") {
+ return { next: () => null };
+ }
+ const results = dlv(responseData, "results");
+ if (!Array.isArray(results) || !results.length) {
+ return { next: () => null };
+ }
+ const limit = request?.pageSize ?? 0;
+ if (results.length < limit) {
+ return { next: () => null };
+ }
+
+ const nextVal = () =>
+ usersGetUsers(
+ client,
+ {
+ ...request,
+ cursor: nextCursor,
+ },
+ options,
+ );
+
+ return { next: nextVal, "~next": { cursor: nextCursor } };
+ };
+
+ const page = { ...result, ...nextFunc(raw) };
+ return [{ ...page, ...createPageIterator(page, (v) => !v.ok) }, {
+ status: "complete",
+ request: req,
+ response,
+ }];
}
diff --git a/src/lib/config.ts b/src/lib/config.ts
index 9585f46..e93c4b5 100644
--- a/src/lib/config.ts
+++ b/src/lib/config.ts
@@ -61,7 +61,7 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
export const SDK_METADATA = {
language: "typescript",
openapiDocVersion: "1.0",
- sdkVersion: "0.6.2",
- genVersion: "2.628.0",
- userAgent: "speakeasy-sdk/typescript 0.6.2 2.628.0 1.0 opal-mcp",
+ sdkVersion: "0.7.1",
+ genVersion: "2.666.0",
+ userAgent: "speakeasy-sdk/typescript 0.7.1 2.666.0 1.0 opal-mcp",
} as const;
diff --git a/src/lib/security.ts b/src/lib/security.ts
index 92d9c51..093d179 100644
--- a/src/lib/security.ts
+++ b/src/lib/security.ts
@@ -7,8 +7,8 @@ import { env } from "./env.js";
type OAuth2PasswordFlow = {
username: string;
- password?: string | undefined;
- clientID: string;
+ password: string;
+ clientID?: string | undefined;
clientSecret?: string | undefined;
tokenURL: string;
};
diff --git a/src/mcp-server/cli/start/command.ts b/src/mcp-server/cli/start/command.ts
index 259f49e..1e29d61 100644
--- a/src/mcp-server/cli/start/command.ts
+++ b/src/mcp-server/cli/start/command.ts
@@ -37,18 +37,13 @@ export const startCommand = buildCommand({
return z.string().parse(value);
},
},
- ...(mcpScopes.length
- ? {
- scope: {
- kind: "enum",
- brief:
- "Mount tools/resources that match given scope (repeatable flag)",
- values: mcpScopes,
- variadic: true,
- optional: true,
- },
- }
- : {}),
+ scope: {
+ kind: "enum",
+ brief: "Mount tools/resources that match given scope (repeatable flag)",
+ values: mcpScopes,
+ variadic: true,
+ optional: true,
+ },
"bearer-auth": {
kind: "parsed",
brief: "Sets the bearerAuth auth field for the API",
diff --git a/src/mcp-server/mcp-server.ts b/src/mcp-server/mcp-server.ts
index d250a25..2c78f74 100644
--- a/src/mcp-server/mcp-server.ts
+++ b/src/mcp-server/mcp-server.ts
@@ -19,7 +19,7 @@ const routes = buildRouteMap({
export const app = buildApplication(routes, {
name: "mcp",
versionInfo: {
- currentVersion: "0.6.2",
+ currentVersion: "0.7.1",
},
});
diff --git a/src/mcp-server/server.ts b/src/mcp-server/server.ts
index 8643683..2e641e2 100644
--- a/src/mcp-server/server.ts
+++ b/src/mcp-server/server.ts
@@ -89,6 +89,7 @@ import { tool$ownersSetOwnerUsers } from "./tools/ownersSetOwnerUsers.js";
import { tool$ownersUpdateOwners } from "./tools/ownersUpdateOwners.js";
import { tool$requestsApproveRequest } from "./tools/requestsApproveRequest.js";
import { tool$requestsCreateRequest } from "./tools/requestsCreateRequest.js";
+import { tool$requestsGetRequest } from "./tools/requestsGetRequest.js";
import { tool$requestsGetRequests } from "./tools/requestsGetRequests.js";
import { tool$requestsGetRequestsRelay } from "./tools/requestsGetRequestsRelay.js";
import { tool$resourcesAddResourceNhi } from "./tools/resourcesAddResourceNhi.js";
@@ -103,6 +104,7 @@ import { tool$resourcesGetResourceNhis } from "./tools/resourcesGetResourceNhis.
import { tool$resourcesGetResourceReviewers } from "./tools/resourcesGetResourceReviewers.js";
import { tool$resourcesGetResourceReviewerStages } from "./tools/resourcesGetResourceReviewerStages.js";
import { tool$resourcesGetResources } from "./tools/resourcesGetResources.js";
+import { tool$resourcesGetResourceScopedRolePermissions } from "./tools/resourcesGetResourceScopedRolePermissions.js";
import { tool$resourcesGetResourceTags } from "./tools/resourcesGetResourceTags.js";
import { tool$resourcesGetResourceUser } from "./tools/resourcesGetResourceUser.js";
import { tool$resourcesGetResourceUsers } from "./tools/resourcesGetResourceUsers.js";
@@ -111,6 +113,7 @@ import { tool$resourcesResourceUserAccessStatusRetrieve } from "./tools/resource
import { tool$resourcesSetResourceMessageChannels } from "./tools/resourcesSetResourceMessageChannels.js";
import { tool$resourcesSetResourceReviewers } from "./tools/resourcesSetResourceReviewers.js";
import { tool$resourcesSetResourceReviewerStages } from "./tools/resourcesSetResourceReviewerStages.js";
+import { tool$resourcesSetResourceScopedRolePermissions } from "./tools/resourcesSetResourceScopedRolePermissions.js";
import { tool$resourcesSetResourceVisibility } from "./tools/resourcesSetResourceVisibility.js";
import { tool$resourcesUpdateResources } from "./tools/resourcesUpdateResources.js";
import { tool$resourcesUpdateResourceUser } from "./tools/resourcesUpdateResourceUser.js";
@@ -143,7 +146,7 @@ export function createMCPServer(deps: {
}) {
const server = new McpServer({
name: "OpalMcp",
- version: "0.6.2",
+ version: "0.7.1",
});
const client = new OpalMcpCore({
@@ -240,6 +243,7 @@ export function createMCPServer(deps: {
tool(tool$requestsGetRequests);
tool(tool$requestsCreateRequest);
tool(tool$requestsGetRequestsRelay);
+ tool(tool$requestsGetRequest);
tool(tool$requestsApproveRequest);
tool(tool$resourcesGetResources);
tool(tool$resourcesUpdateResources);
@@ -264,6 +268,8 @@ export function createMCPServer(deps: {
tool(tool$resourcesGetResourceUser);
tool(tool$resourcesResourceUserAccessStatusRetrieve);
tool(tool$resourcesGetResourceTags);
+ tool(tool$resourcesGetResourceScopedRolePermissions);
+ tool(tool$resourcesSetResourceScopedRolePermissions);
tool(tool$nonHumanIdentitiesGetNhis);
tool(tool$sessionsSessions);
tool(tool$usersUser);
diff --git a/src/mcp-server/tools/bundlesGetBundleGroups.ts b/src/mcp-server/tools/bundlesGetBundleGroups.ts
index d6cf411..c0d30e6 100644
--- a/src/mcp-server/tools/bundlesGetBundleGroups.ts
+++ b/src/mcp-server/tools/bundlesGetBundleGroups.ts
@@ -29,7 +29,7 @@ export const tool$bundlesGetBundleGroups: ToolDefinition = {
};
}
- const value = result.value;
+ const value = result.value.result;
return formatResult(value, apiCall);
},
diff --git a/src/mcp-server/tools/bundlesGetBundleResources.ts b/src/mcp-server/tools/bundlesGetBundleResources.ts
index e7adae2..babeebb 100644
--- a/src/mcp-server/tools/bundlesGetBundleResources.ts
+++ b/src/mcp-server/tools/bundlesGetBundleResources.ts
@@ -29,7 +29,7 @@ export const tool$bundlesGetBundleResources: ToolDefinition = {
};
}
- const value = result.value;
+ const value = result.value.result;
return formatResult(value, apiCall);
},
diff --git a/src/mcp-server/tools/bundlesGetBundles.ts b/src/mcp-server/tools/bundlesGetBundles.ts
index 3191580..11c4941 100644
--- a/src/mcp-server/tools/bundlesGetBundles.ts
+++ b/src/mcp-server/tools/bundlesGetBundles.ts
@@ -29,7 +29,7 @@ export const tool$bundlesGetBundles: ToolDefinition = {
};
}
- const value = result.value;
+ const value = result.value.result;
return formatResult(value, apiCall);
},
diff --git a/src/mcp-server/tools/eventsEvents.ts b/src/mcp-server/tools/eventsEvents.ts
index 1c95c31..36b204a 100644
--- a/src/mcp-server/tools/eventsEvents.ts
+++ b/src/mcp-server/tools/eventsEvents.ts
@@ -29,7 +29,7 @@ export const tool$eventsEvents: ToolDefinition = {
};
}
- const value = result.value;
+ const value = result.value.result;
return formatResult(value, apiCall);
},
diff --git a/src/mcp-server/tools/groupBindingsGetGroupBindings.ts b/src/mcp-server/tools/groupBindingsGetGroupBindings.ts
index 54dbfa5..cfcda6d 100644
--- a/src/mcp-server/tools/groupBindingsGetGroupBindings.ts
+++ b/src/mcp-server/tools/groupBindingsGetGroupBindings.ts
@@ -29,7 +29,7 @@ export const tool$groupBindingsGetGroupBindings: ToolDefinition = {
};
}
- const value = result.value;
+ const value = result.value.result;
return formatResult(value, apiCall);
},
diff --git a/src/mcp-server/tools/groupsGetGroups.ts b/src/mcp-server/tools/groupsGetGroups.ts
index 279ae0b..df90388 100644
--- a/src/mcp-server/tools/groupsGetGroups.ts
+++ b/src/mcp-server/tools/groupsGetGroups.ts
@@ -29,7 +29,7 @@ export const tool$groupsGetGroups: ToolDefinition = {
};
}
- const value = result.value;
+ const value = result.value.result;
return formatResult(value, apiCall);
},
diff --git a/src/mcp-server/tools/nonHumanIdentitiesGetNhis.ts b/src/mcp-server/tools/nonHumanIdentitiesGetNhis.ts
index d2a1bf4..d539254 100644
--- a/src/mcp-server/tools/nonHumanIdentitiesGetNhis.ts
+++ b/src/mcp-server/tools/nonHumanIdentitiesGetNhis.ts
@@ -29,7 +29,7 @@ export const tool$nonHumanIdentitiesGetNhis: ToolDefinition = {
};
}
- const value = result.value;
+ const value = result.value.result;
return formatResult(value, apiCall);
},
diff --git a/src/mcp-server/tools/ownersGetOwners.ts b/src/mcp-server/tools/ownersGetOwners.ts
index 68306cb..9a315a2 100644
--- a/src/mcp-server/tools/ownersGetOwners.ts
+++ b/src/mcp-server/tools/ownersGetOwners.ts
@@ -29,7 +29,7 @@ export const tool$ownersGetOwners: ToolDefinition = {
};
}
- const value = result.value;
+ const value = result.value.result;
return formatResult(value, apiCall);
},
diff --git a/src/mcp-server/tools/requestsGetRequest.ts b/src/mcp-server/tools/requestsGetRequest.ts
new file mode 100644
index 0000000..18d2804
--- /dev/null
+++ b/src/mcp-server/tools/requestsGetRequest.ts
@@ -0,0 +1,36 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+import { requestsGetRequest } from "../../funcs/requestsGetRequest.js";
+import * as operations from "../../models/operations/index.js";
+import { formatResult, ToolDefinition } from "../tools.js";
+
+const args = {
+ request: operations.GetRequestRequest$inboundSchema,
+};
+
+export const tool$requestsGetRequest: ToolDefinition = {
+ name: "requests-get-request",
+ description: `Returns a request by ID.`,
+ scopes: ["read"],
+ args,
+ tool: async (client, args, ctx) => {
+ const [result, apiCall] = await requestsGetRequest(
+ client,
+ args.request,
+ { fetchOptions: { signal: ctx.signal } },
+ ).$inspect();
+
+ if (!result.ok) {
+ return {
+ content: [{ type: "text", text: result.error.message }],
+ isError: true,
+ };
+ }
+
+ const value = result.value;
+
+ return formatResult(value, apiCall);
+ },
+};
diff --git a/src/mcp-server/tools/requestsGetRequests.ts b/src/mcp-server/tools/requestsGetRequests.ts
index d9d8130..d232748 100644
--- a/src/mcp-server/tools/requestsGetRequests.ts
+++ b/src/mcp-server/tools/requestsGetRequests.ts
@@ -30,7 +30,7 @@ export const tool$requestsGetRequests: ToolDefinition = {
};
}
- const value = result.value;
+ const value = result.value.result;
return formatResult(value, apiCall);
},
diff --git a/src/mcp-server/tools/resourcesGetResourceScopedRolePermissions.ts b/src/mcp-server/tools/resourcesGetResourceScopedRolePermissions.ts
new file mode 100644
index 0000000..623b18e
--- /dev/null
+++ b/src/mcp-server/tools/resourcesGetResourceScopedRolePermissions.ts
@@ -0,0 +1,39 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+import { resourcesGetResourceScopedRolePermissions } from "../../funcs/resourcesGetResourceScopedRolePermissions.js";
+import * as operations from "../../models/operations/index.js";
+import { formatResult, ToolDefinition } from "../tools.js";
+
+const args = {
+ request: operations.GetResourceScopedRolePermissionsRequest$inboundSchema,
+};
+
+export const tool$resourcesGetResourceScopedRolePermissions: ToolDefinition<
+ typeof args
+> = {
+ name: "resources-get-resource-scoped-role-permissions",
+ description:
+ `Returns all the scoped role permissions that apply to the given resource. Only OPAL_SCOPED_ROLE resource type supports this field.`,
+ scopes: ["read"],
+ args,
+ tool: async (client, args, ctx) => {
+ const [result, apiCall] = await resourcesGetResourceScopedRolePermissions(
+ client,
+ args.request,
+ { fetchOptions: { signal: ctx.signal } },
+ ).$inspect();
+
+ if (!result.ok) {
+ return {
+ content: [{ type: "text", text: result.error.message }],
+ isError: true,
+ };
+ }
+
+ const value = result.value;
+
+ return formatResult(value, apiCall);
+ },
+};
diff --git a/src/mcp-server/tools/resourcesGetResources.ts b/src/mcp-server/tools/resourcesGetResources.ts
index 813bb67..83d1a56 100644
--- a/src/mcp-server/tools/resourcesGetResources.ts
+++ b/src/mcp-server/tools/resourcesGetResources.ts
@@ -29,7 +29,7 @@ export const tool$resourcesGetResources: ToolDefinition = {
};
}
- const value = result.value;
+ const value = result.value.result;
return formatResult(value, apiCall);
},
diff --git a/src/mcp-server/tools/resourcesSetResourceScopedRolePermissions.ts b/src/mcp-server/tools/resourcesSetResourceScopedRolePermissions.ts
new file mode 100644
index 0000000..c1f0bd2
--- /dev/null
+++ b/src/mcp-server/tools/resourcesSetResourceScopedRolePermissions.ts
@@ -0,0 +1,39 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+import { resourcesSetResourceScopedRolePermissions } from "../../funcs/resourcesSetResourceScopedRolePermissions.js";
+import * as operations from "../../models/operations/index.js";
+import { formatResult, ToolDefinition } from "../tools.js";
+
+const args = {
+ request: operations.SetResourceScopedRolePermissionsRequest$inboundSchema,
+};
+
+export const tool$resourcesSetResourceScopedRolePermissions: ToolDefinition<
+ typeof args
+> = {
+ name: "resources-set-resource-scoped-role-permissions",
+ description:
+ `Sets all the scoped role permissions on an OPAL_SCOPED_ROLE resource.`,
+ scopes: ["write"],
+ args,
+ tool: async (client, args, ctx) => {
+ const [result, apiCall] = await resourcesSetResourceScopedRolePermissions(
+ client,
+ args.request,
+ { fetchOptions: { signal: ctx.signal } },
+ ).$inspect();
+
+ if (!result.ok) {
+ return {
+ content: [{ type: "text", text: result.error.message }],
+ isError: true,
+ };
+ }
+
+ const value = result.value;
+
+ return formatResult(value, apiCall);
+ },
+};
diff --git a/src/mcp-server/tools/tagsGetTags.ts b/src/mcp-server/tools/tagsGetTags.ts
index df1bf82..6cd51cc 100644
--- a/src/mcp-server/tools/tagsGetTags.ts
+++ b/src/mcp-server/tools/tagsGetTags.ts
@@ -29,7 +29,7 @@ export const tool$tagsGetTags: ToolDefinition = {
};
}
- const value = result.value;
+ const value = result.value.result;
return formatResult(value, apiCall);
},
diff --git a/src/mcp-server/tools/uarsGetUARs.ts b/src/mcp-server/tools/uarsGetUARs.ts
index 5f20ee2..e2764eb 100644
--- a/src/mcp-server/tools/uarsGetUARs.ts
+++ b/src/mcp-server/tools/uarsGetUARs.ts
@@ -29,7 +29,7 @@ export const tool$uarsGetUARs: ToolDefinition = {
};
}
- const value = result.value;
+ const value = result.value.result;
return formatResult(value, apiCall);
},
diff --git a/src/mcp-server/tools/usersGetUsers.ts b/src/mcp-server/tools/usersGetUsers.ts
index 6c6c001..0a5af20 100644
--- a/src/mcp-server/tools/usersGetUsers.ts
+++ b/src/mcp-server/tools/usersGetUsers.ts
@@ -29,7 +29,7 @@ export const tool$usersGetUsers: ToolDefinition = {
};
}
- const value = result.value;
+ const value = result.value.result;
return formatResult(value, apiCall);
},
diff --git a/src/models/components/groupremoteinfo.ts b/src/models/components/groupremoteinfo.ts
index e918eb6..688785e 100644
--- a/src/models/components/groupremoteinfo.ts
+++ b/src/models/components/groupremoteinfo.ts
@@ -114,6 +114,26 @@ export type SnowflakeRole = {
roleId: string;
};
+/**
+ * Remote info for Okta Directory group rule.
+ */
+export type OktaGroupRule = {
+ /**
+ * The id of the Okta group rule.
+ */
+ ruleId: string;
+};
+
+/**
+ * Remote info for Workday User Security group.
+ */
+export type WorkdayUserSecurityGroup = {
+ /**
+ * The id of the Workday User Security group.
+ */
+ groupId: string;
+};
+
/**
* Information that defines the remote group. This replaces the deprecated remote_id and metadata fields.
*/
@@ -158,6 +178,14 @@ export type GroupRemoteInfo = {
* Remote info for Snowflake role.
*/
snowflakeRole?: SnowflakeRole | undefined;
+ /**
+ * Remote info for Okta Directory group rule.
+ */
+ oktaGroupRule?: OktaGroupRule | undefined;
+ /**
+ * Remote info for Workday User Security group.
+ */
+ workdayUserSecurityGroup?: WorkdayUserSecurityGroup | undefined;
};
/** @internal */
@@ -757,6 +785,126 @@ export function snowflakeRoleFromJSON(
);
}
+/** @internal */
+export const OktaGroupRule$inboundSchema: z.ZodType<
+ OktaGroupRule,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ rule_id: z.string(),
+}).transform((v) => {
+ return remap$(v, {
+ "rule_id": "ruleId",
+ });
+});
+
+/** @internal */
+export type OktaGroupRule$Outbound = {
+ rule_id: string;
+};
+
+/** @internal */
+export const OktaGroupRule$outboundSchema: z.ZodType<
+ OktaGroupRule$Outbound,
+ z.ZodTypeDef,
+ OktaGroupRule
+> = z.object({
+ ruleId: z.string(),
+}).transform((v) => {
+ return remap$(v, {
+ ruleId: "rule_id",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace OktaGroupRule$ {
+ /** @deprecated use `OktaGroupRule$inboundSchema` instead. */
+ export const inboundSchema = OktaGroupRule$inboundSchema;
+ /** @deprecated use `OktaGroupRule$outboundSchema` instead. */
+ export const outboundSchema = OktaGroupRule$outboundSchema;
+ /** @deprecated use `OktaGroupRule$Outbound` instead. */
+ export type Outbound = OktaGroupRule$Outbound;
+}
+
+export function oktaGroupRuleToJSON(oktaGroupRule: OktaGroupRule): string {
+ return JSON.stringify(OktaGroupRule$outboundSchema.parse(oktaGroupRule));
+}
+
+export function oktaGroupRuleFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => OktaGroupRule$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'OktaGroupRule' from JSON`,
+ );
+}
+
+/** @internal */
+export const WorkdayUserSecurityGroup$inboundSchema: z.ZodType<
+ WorkdayUserSecurityGroup,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ group_id: z.string(),
+}).transform((v) => {
+ return remap$(v, {
+ "group_id": "groupId",
+ });
+});
+
+/** @internal */
+export type WorkdayUserSecurityGroup$Outbound = {
+ group_id: string;
+};
+
+/** @internal */
+export const WorkdayUserSecurityGroup$outboundSchema: z.ZodType<
+ WorkdayUserSecurityGroup$Outbound,
+ z.ZodTypeDef,
+ WorkdayUserSecurityGroup
+> = z.object({
+ groupId: z.string(),
+}).transform((v) => {
+ return remap$(v, {
+ groupId: "group_id",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace WorkdayUserSecurityGroup$ {
+ /** @deprecated use `WorkdayUserSecurityGroup$inboundSchema` instead. */
+ export const inboundSchema = WorkdayUserSecurityGroup$inboundSchema;
+ /** @deprecated use `WorkdayUserSecurityGroup$outboundSchema` instead. */
+ export const outboundSchema = WorkdayUserSecurityGroup$outboundSchema;
+ /** @deprecated use `WorkdayUserSecurityGroup$Outbound` instead. */
+ export type Outbound = WorkdayUserSecurityGroup$Outbound;
+}
+
+export function workdayUserSecurityGroupToJSON(
+ workdayUserSecurityGroup: WorkdayUserSecurityGroup,
+): string {
+ return JSON.stringify(
+ WorkdayUserSecurityGroup$outboundSchema.parse(workdayUserSecurityGroup),
+ );
+}
+
+export function workdayUserSecurityGroupFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => WorkdayUserSecurityGroup$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'WorkdayUserSecurityGroup' from JSON`,
+ );
+}
+
/** @internal */
export const GroupRemoteInfo$inboundSchema: z.ZodType<
GroupRemoteInfo,
@@ -777,6 +925,10 @@ export const GroupRemoteInfo$inboundSchema: z.ZodType<
AzureAdMicrosoft365Group$inboundSchema
).optional(),
snowflake_role: z.lazy(() => SnowflakeRole$inboundSchema).optional(),
+ okta_group_rule: z.lazy(() => OktaGroupRule$inboundSchema).optional(),
+ workday_user_security_group: z.lazy(() =>
+ WorkdayUserSecurityGroup$inboundSchema
+ ).optional(),
}).transform((v) => {
return remap$(v, {
"active_directory_group": "activeDirectoryGroup",
@@ -789,6 +941,8 @@ export const GroupRemoteInfo$inboundSchema: z.ZodType<
"azure_ad_security_group": "azureAdSecurityGroup",
"azure_ad_microsoft_365_group": "azureAdMicrosoft365Group",
"snowflake_role": "snowflakeRole",
+ "okta_group_rule": "oktaGroupRule",
+ "workday_user_security_group": "workdayUserSecurityGroup",
});
});
@@ -804,6 +958,8 @@ export type GroupRemoteInfo$Outbound = {
azure_ad_security_group?: AzureAdSecurityGroup$Outbound | undefined;
azure_ad_microsoft_365_group?: AzureAdMicrosoft365Group$Outbound | undefined;
snowflake_role?: SnowflakeRole$Outbound | undefined;
+ okta_group_rule?: OktaGroupRule$Outbound | undefined;
+ workday_user_security_group?: WorkdayUserSecurityGroup$Outbound | undefined;
};
/** @internal */
@@ -826,6 +982,10 @@ export const GroupRemoteInfo$outboundSchema: z.ZodType<
AzureAdMicrosoft365Group$outboundSchema
).optional(),
snowflakeRole: z.lazy(() => SnowflakeRole$outboundSchema).optional(),
+ oktaGroupRule: z.lazy(() => OktaGroupRule$outboundSchema).optional(),
+ workdayUserSecurityGroup: z.lazy(() =>
+ WorkdayUserSecurityGroup$outboundSchema
+ ).optional(),
}).transform((v) => {
return remap$(v, {
activeDirectoryGroup: "active_directory_group",
@@ -838,6 +998,8 @@ export const GroupRemoteInfo$outboundSchema: z.ZodType<
azureAdSecurityGroup: "azure_ad_security_group",
azureAdMicrosoft365Group: "azure_ad_microsoft_365_group",
snowflakeRole: "snowflake_role",
+ oktaGroupRule: "okta_group_rule",
+ workdayUserSecurityGroup: "workday_user_security_group",
});
});
diff --git a/src/models/components/index.ts b/src/models/components/index.ts
index 3d7e286..17512f0 100644
--- a/src/models/components/index.ts
+++ b/src/models/components/index.ts
@@ -97,9 +97,13 @@ export * from "./reviewerstage.js";
export * from "./reviewerstagelist.js";
export * from "./reviewstageoperator.js";
export * from "./risksensitivityenum.js";
+export * from "./rolepermissionnameenum.js";
+export * from "./rolepermissiontargettypeenum.js";
export * from "./ruleclauses.js";
export * from "./ruleconjunction.js";
export * from "./ruledisjunction.js";
+export * from "./scopedrolepermission.js";
+export * from "./scopedrolepermissionlist.js";
export * from "./security.js";
export * from "./session.js";
export * from "./sessionslist.js";
diff --git a/src/models/components/request.ts b/src/models/components/request.ts
index 3900347..a228614 100644
--- a/src/models/components/request.ts
+++ b/src/models/components/request.ts
@@ -41,7 +41,7 @@ import {
* ### Usage Example
* Returned from the `GET Requests` endpoint.
*/
-export type Request = {
+export type RequestT = {
/**
* The unique identifier of the request.
*/
@@ -100,40 +100,39 @@ export type Request = {
};
/** @internal */
-export const Request$inboundSchema: z.ZodType =
- z.object({
- id: z.string(),
- created_at: z.string().datetime({ offset: true }).transform(v =>
- new Date(v)
- ),
- updated_at: z.string().datetime({ offset: true }).transform(v =>
- new Date(v)
- ),
- requester_id: z.string(),
- target_user_id: z.string().optional(),
- target_group_id: z.string().optional(),
- status: RequestStatusEnum$inboundSchema,
- reason: z.string(),
- duration_minutes: z.number().int().optional(),
- requested_items_list: z.array(RequestedItem$inboundSchema).optional(),
- custom_fields_responses: z.array(RequestCustomFieldResponse$inboundSchema)
- .optional(),
- stages: RequestItemStages$inboundSchema.optional(),
- }).transform((v) => {
- return remap$(v, {
- "created_at": "createdAt",
- "updated_at": "updatedAt",
- "requester_id": "requesterId",
- "target_user_id": "targetUserId",
- "target_group_id": "targetGroupId",
- "duration_minutes": "durationMinutes",
- "requested_items_list": "requestedItemsList",
- "custom_fields_responses": "customFieldsResponses",
- });
+export const RequestT$inboundSchema: z.ZodType<
+ RequestT,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ id: z.string(),
+ created_at: z.string().datetime({ offset: true }).transform(v => new Date(v)),
+ updated_at: z.string().datetime({ offset: true }).transform(v => new Date(v)),
+ requester_id: z.string(),
+ target_user_id: z.string().optional(),
+ target_group_id: z.string().optional(),
+ status: RequestStatusEnum$inboundSchema,
+ reason: z.string(),
+ duration_minutes: z.number().int().optional(),
+ requested_items_list: z.array(RequestedItem$inboundSchema).optional(),
+ custom_fields_responses: z.array(RequestCustomFieldResponse$inboundSchema)
+ .optional(),
+ stages: RequestItemStages$inboundSchema.optional(),
+}).transform((v) => {
+ return remap$(v, {
+ "created_at": "createdAt",
+ "updated_at": "updatedAt",
+ "requester_id": "requesterId",
+ "target_user_id": "targetUserId",
+ "target_group_id": "targetGroupId",
+ "duration_minutes": "durationMinutes",
+ "requested_items_list": "requestedItemsList",
+ "custom_fields_responses": "customFieldsResponses",
});
+});
/** @internal */
-export type Request$Outbound = {
+export type RequestT$Outbound = {
id: string;
created_at: string;
updated_at: string;
@@ -151,10 +150,10 @@ export type Request$Outbound = {
};
/** @internal */
-export const Request$outboundSchema: z.ZodType<
- Request$Outbound,
+export const RequestT$outboundSchema: z.ZodType<
+ RequestT$Outbound,
z.ZodTypeDef,
- Request
+ RequestT
> = z.object({
id: z.string(),
createdAt: z.date().transform(v => v.toISOString()),
@@ -186,25 +185,25 @@ export const Request$outboundSchema: z.ZodType<
* @internal
* @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
*/
-export namespace Request$ {
- /** @deprecated use `Request$inboundSchema` instead. */
- export const inboundSchema = Request$inboundSchema;
- /** @deprecated use `Request$outboundSchema` instead. */
- export const outboundSchema = Request$outboundSchema;
- /** @deprecated use `Request$Outbound` instead. */
- export type Outbound = Request$Outbound;
+export namespace RequestT$ {
+ /** @deprecated use `RequestT$inboundSchema` instead. */
+ export const inboundSchema = RequestT$inboundSchema;
+ /** @deprecated use `RequestT$outboundSchema` instead. */
+ export const outboundSchema = RequestT$outboundSchema;
+ /** @deprecated use `RequestT$Outbound` instead. */
+ export type Outbound = RequestT$Outbound;
}
-export function requestToJSON(request: Request): string {
- return JSON.stringify(Request$outboundSchema.parse(request));
+export function requestToJSON(requestT: RequestT): string {
+ return JSON.stringify(RequestT$outboundSchema.parse(requestT));
}
export function requestFromJSON(
jsonString: string,
-): SafeParseResult {
+): SafeParseResult {
return safeParse(
jsonString,
- (x) => Request$inboundSchema.parse(JSON.parse(x)),
- `Failed to parse 'Request' from JSON`,
+ (x) => RequestT$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'RequestT' from JSON`,
);
}
diff --git a/src/models/components/requestedge.ts b/src/models/components/requestedge.ts
index 190b378..22cbc78 100644
--- a/src/models/components/requestedge.ts
+++ b/src/models/components/requestedge.ts
@@ -7,10 +7,10 @@ import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import {
- Request,
- Request$inboundSchema,
- Request$Outbound,
- Request$outboundSchema,
+ RequestT,
+ RequestT$inboundSchema,
+ RequestT$Outbound,
+ RequestT$outboundSchema,
} from "./request.js";
export type RequestEdge = {
@@ -24,7 +24,7 @@ export type RequestEdge = {
* ### Usage Example
* Returned from the `GET Requests` endpoint.
*/
- node: Request;
+ node: RequestT;
/**
* The cursor for this request edge
*/
@@ -37,13 +37,13 @@ export const RequestEdge$inboundSchema: z.ZodType<
z.ZodTypeDef,
unknown
> = z.object({
- node: Request$inboundSchema,
+ node: RequestT$inboundSchema,
cursor: z.string(),
});
/** @internal */
export type RequestEdge$Outbound = {
- node: Request$Outbound;
+ node: RequestT$Outbound;
cursor: string;
};
@@ -53,7 +53,7 @@ export const RequestEdge$outboundSchema: z.ZodType<
z.ZodTypeDef,
RequestEdge
> = z.object({
- node: Request$outboundSchema,
+ node: RequestT$outboundSchema,
cursor: z.string(),
});
diff --git a/src/models/components/requesteditem.ts b/src/models/components/requesteditem.ts
index 05d31c7..11a3b1b 100644
--- a/src/models/components/requesteditem.ts
+++ b/src/models/components/requesteditem.ts
@@ -39,6 +39,14 @@ export type RequestedItem = {
* The name of the target.
*/
name?: string | undefined;
+ /**
+ * The ID of the target on the remote system.
+ */
+ remoteId?: string | undefined;
+ /**
+ * The name of the target on the remote system.
+ */
+ remoteName?: string | undefined;
};
/** @internal */
@@ -52,12 +60,16 @@ export const RequestedItem$inboundSchema: z.ZodType<
access_level_name: z.string().optional(),
access_level_remote_id: z.string().optional(),
name: z.string().optional(),
+ remote_id: z.string().optional(),
+ remote_name: z.string().optional(),
}).transform((v) => {
return remap$(v, {
"resource_id": "resourceId",
"group_id": "groupId",
"access_level_name": "accessLevelName",
"access_level_remote_id": "accessLevelRemoteId",
+ "remote_id": "remoteId",
+ "remote_name": "remoteName",
});
});
@@ -68,6 +80,8 @@ export type RequestedItem$Outbound = {
access_level_name?: string | undefined;
access_level_remote_id?: string | undefined;
name?: string | undefined;
+ remote_id?: string | undefined;
+ remote_name?: string | undefined;
};
/** @internal */
@@ -81,12 +95,16 @@ export const RequestedItem$outboundSchema: z.ZodType<
accessLevelName: z.string().optional(),
accessLevelRemoteId: z.string().optional(),
name: z.string().optional(),
+ remoteId: z.string().optional(),
+ remoteName: z.string().optional(),
}).transform((v) => {
return remap$(v, {
resourceId: "resource_id",
groupId: "group_id",
accessLevelName: "access_level_name",
accessLevelRemoteId: "access_level_remote_id",
+ remoteId: "remote_id",
+ remoteName: "remote_name",
});
});
diff --git a/src/models/components/requestlist.ts b/src/models/components/requestlist.ts
index d248902..bfbc407 100644
--- a/src/models/components/requestlist.ts
+++ b/src/models/components/requestlist.ts
@@ -7,10 +7,10 @@ import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import {
- Request,
- Request$inboundSchema,
- Request$Outbound,
- Request$outboundSchema,
+ RequestT,
+ RequestT$inboundSchema,
+ RequestT$Outbound,
+ RequestT$outboundSchema,
} from "./request.js";
/**
@@ -27,7 +27,7 @@ export type RequestList = {
/**
* The list of requests.
*/
- requests?: Array | undefined;
+ requests?: Array | undefined;
/**
* The cursor to use in the next request to get the next page of results.
*/
@@ -40,13 +40,13 @@ export const RequestList$inboundSchema: z.ZodType<
z.ZodTypeDef,
unknown
> = z.object({
- requests: z.array(Request$inboundSchema).optional(),
+ requests: z.array(RequestT$inboundSchema).optional(),
cursor: z.string().optional(),
});
/** @internal */
export type RequestList$Outbound = {
- requests?: Array | undefined;
+ requests?: Array | undefined;
cursor?: string | undefined;
};
@@ -56,7 +56,7 @@ export const RequestList$outboundSchema: z.ZodType<
z.ZodTypeDef,
RequestList
> = z.object({
- requests: z.array(Request$outboundSchema).optional(),
+ requests: z.array(RequestT$outboundSchema).optional(),
cursor: z.string().optional(),
});
diff --git a/src/models/components/resourceremoteinfo.ts b/src/models/components/resourceremoteinfo.ts
index f3faeb0..b271ff3 100644
--- a/src/models/components/resourceremoteinfo.ts
+++ b/src/models/components/resourceremoteinfo.ts
@@ -8,6 +8,20 @@ import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
+/**
+ * Remote info for AWS organizational unit.
+ */
+export type AwsOrganizationalUnit = {
+ /**
+ * The id of the parent organizational unit.
+ */
+ parentId?: string | undefined;
+ /**
+ * The id of the AWS organizational unit that is being created.
+ */
+ organizationalUnitId: string;
+};
+
/**
* Remote info for AWS account.
*/
@@ -16,6 +30,10 @@ export type AwsAccount = {
* The id of the AWS account.
*/
accountId: string;
+ /**
+ * The id of the AWS organizational unit. Required only if customer has OUs enabled.
+ */
+ organizationalUnitId?: string | undefined;
};
/**
@@ -100,6 +118,20 @@ export type AwsEksCluster = {
accountId?: string | undefined;
};
+/**
+ * Remote info for a custom connector resource.
+ */
+export type CustomConnector = {
+ /**
+ * The id of the resource in the end system
+ */
+ remoteResourceId: string;
+ /**
+ * A bool representing whether or not the resource can have usage data.
+ */
+ canHaveUsageEvents: boolean;
+};
+
/**
* Remote info for GCP organization.
*/
@@ -232,6 +264,16 @@ export type GcpServiceAccount = {
projectId: string;
};
+/**
+ * Remote info for GCP workspace role.
+ */
+export type GoogleWorkspaceRole = {
+ /**
+ * The id of the role.
+ */
+ roleId: string;
+};
+
/**
* Remote info for GitHub repository.
*/
@@ -346,6 +388,10 @@ export type TeleportRole = {
* Information that defines the remote resource. This replaces the deprecated remote_id and metadata fields.
*/
export type ResourceRemoteInfo = {
+ /**
+ * Remote info for AWS organizational unit.
+ */
+ awsOrganizationalUnit?: AwsOrganizationalUnit | undefined;
/**
* Remote info for AWS account.
*/
@@ -370,6 +416,10 @@ export type ResourceRemoteInfo = {
* Remote info for AWS EKS cluster.
*/
awsEksCluster?: AwsEksCluster | undefined;
+ /**
+ * Remote info for a custom connector resource.
+ */
+ customConnector?: CustomConnector | undefined;
/**
* Remote info for GCP organization.
*/
@@ -410,6 +460,10 @@ export type ResourceRemoteInfo = {
* Remote info for a GCP service account.
*/
gcpServiceAccount?: GcpServiceAccount | undefined;
+ /**
+ * Remote info for GCP workspace role.
+ */
+ googleWorkspaceRole?: GoogleWorkspaceRole | undefined;
/**
* Remote info for GitHub repository.
*/
@@ -452,6 +506,73 @@ export type ResourceRemoteInfo = {
teleportRole?: TeleportRole | undefined;
};
+/** @internal */
+export const AwsOrganizationalUnit$inboundSchema: z.ZodType<
+ AwsOrganizationalUnit,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ parent_id: z.string().optional(),
+ organizational_unit_id: z.string(),
+}).transform((v) => {
+ return remap$(v, {
+ "parent_id": "parentId",
+ "organizational_unit_id": "organizationalUnitId",
+ });
+});
+
+/** @internal */
+export type AwsOrganizationalUnit$Outbound = {
+ parent_id?: string | undefined;
+ organizational_unit_id: string;
+};
+
+/** @internal */
+export const AwsOrganizationalUnit$outboundSchema: z.ZodType<
+ AwsOrganizationalUnit$Outbound,
+ z.ZodTypeDef,
+ AwsOrganizationalUnit
+> = z.object({
+ parentId: z.string().optional(),
+ organizationalUnitId: z.string(),
+}).transform((v) => {
+ return remap$(v, {
+ parentId: "parent_id",
+ organizationalUnitId: "organizational_unit_id",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace AwsOrganizationalUnit$ {
+ /** @deprecated use `AwsOrganizationalUnit$inboundSchema` instead. */
+ export const inboundSchema = AwsOrganizationalUnit$inboundSchema;
+ /** @deprecated use `AwsOrganizationalUnit$outboundSchema` instead. */
+ export const outboundSchema = AwsOrganizationalUnit$outboundSchema;
+ /** @deprecated use `AwsOrganizationalUnit$Outbound` instead. */
+ export type Outbound = AwsOrganizationalUnit$Outbound;
+}
+
+export function awsOrganizationalUnitToJSON(
+ awsOrganizationalUnit: AwsOrganizationalUnit,
+): string {
+ return JSON.stringify(
+ AwsOrganizationalUnit$outboundSchema.parse(awsOrganizationalUnit),
+ );
+}
+
+export function awsOrganizationalUnitFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => AwsOrganizationalUnit$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'AwsOrganizationalUnit' from JSON`,
+ );
+}
+
/** @internal */
export const AwsAccount$inboundSchema: z.ZodType<
AwsAccount,
@@ -459,15 +580,18 @@ export const AwsAccount$inboundSchema: z.ZodType<
unknown
> = z.object({
account_id: z.string(),
+ organizational_unit_id: z.string().optional(),
}).transform((v) => {
return remap$(v, {
"account_id": "accountId",
+ "organizational_unit_id": "organizationalUnitId",
});
});
/** @internal */
export type AwsAccount$Outbound = {
account_id: string;
+ organizational_unit_id?: string | undefined;
};
/** @internal */
@@ -477,9 +601,11 @@ export const AwsAccount$outboundSchema: z.ZodType<
AwsAccount
> = z.object({
accountId: z.string(),
+ organizationalUnitId: z.string().optional(),
}).transform((v) => {
return remap$(v, {
accountId: "account_id",
+ organizationalUnitId: "organizational_unit_id",
});
});
@@ -834,6 +960,71 @@ export function awsEksClusterFromJSON(
);
}
+/** @internal */
+export const CustomConnector$inboundSchema: z.ZodType<
+ CustomConnector,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ remote_resource_id: z.string(),
+ can_have_usage_events: z.boolean(),
+}).transform((v) => {
+ return remap$(v, {
+ "remote_resource_id": "remoteResourceId",
+ "can_have_usage_events": "canHaveUsageEvents",
+ });
+});
+
+/** @internal */
+export type CustomConnector$Outbound = {
+ remote_resource_id: string;
+ can_have_usage_events: boolean;
+};
+
+/** @internal */
+export const CustomConnector$outboundSchema: z.ZodType<
+ CustomConnector$Outbound,
+ z.ZodTypeDef,
+ CustomConnector
+> = z.object({
+ remoteResourceId: z.string(),
+ canHaveUsageEvents: z.boolean(),
+}).transform((v) => {
+ return remap$(v, {
+ remoteResourceId: "remote_resource_id",
+ canHaveUsageEvents: "can_have_usage_events",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace CustomConnector$ {
+ /** @deprecated use `CustomConnector$inboundSchema` instead. */
+ export const inboundSchema = CustomConnector$inboundSchema;
+ /** @deprecated use `CustomConnector$outboundSchema` instead. */
+ export const outboundSchema = CustomConnector$outboundSchema;
+ /** @deprecated use `CustomConnector$Outbound` instead. */
+ export type Outbound = CustomConnector$Outbound;
+}
+
+export function customConnectorToJSON(
+ customConnector: CustomConnector,
+): string {
+ return JSON.stringify(CustomConnector$outboundSchema.parse(customConnector));
+}
+
+export function customConnectorFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => CustomConnector$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'CustomConnector' from JSON`,
+ );
+}
+
/** @internal */
export const GcpOrganization$inboundSchema: z.ZodType<
GcpOrganization,
@@ -1468,6 +1659,68 @@ export function gcpServiceAccountFromJSON(
);
}
+/** @internal */
+export const GoogleWorkspaceRole$inboundSchema: z.ZodType<
+ GoogleWorkspaceRole,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ role_id: z.string(),
+}).transform((v) => {
+ return remap$(v, {
+ "role_id": "roleId",
+ });
+});
+
+/** @internal */
+export type GoogleWorkspaceRole$Outbound = {
+ role_id: string;
+};
+
+/** @internal */
+export const GoogleWorkspaceRole$outboundSchema: z.ZodType<
+ GoogleWorkspaceRole$Outbound,
+ z.ZodTypeDef,
+ GoogleWorkspaceRole
+> = z.object({
+ roleId: z.string(),
+}).transform((v) => {
+ return remap$(v, {
+ roleId: "role_id",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace GoogleWorkspaceRole$ {
+ /** @deprecated use `GoogleWorkspaceRole$inboundSchema` instead. */
+ export const inboundSchema = GoogleWorkspaceRole$inboundSchema;
+ /** @deprecated use `GoogleWorkspaceRole$outboundSchema` instead. */
+ export const outboundSchema = GoogleWorkspaceRole$outboundSchema;
+ /** @deprecated use `GoogleWorkspaceRole$Outbound` instead. */
+ export type Outbound = GoogleWorkspaceRole$Outbound;
+}
+
+export function googleWorkspaceRoleToJSON(
+ googleWorkspaceRole: GoogleWorkspaceRole,
+): string {
+ return JSON.stringify(
+ GoogleWorkspaceRole$outboundSchema.parse(googleWorkspaceRole),
+ );
+}
+
+export function googleWorkspaceRoleFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => GoogleWorkspaceRole$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'GoogleWorkspaceRole' from JSON`,
+ );
+}
+
/** @internal */
export const GithubRepo$inboundSchema: z.ZodType<
GithubRepo,
@@ -2073,12 +2326,15 @@ export const ResourceRemoteInfo$inboundSchema: z.ZodType<
z.ZodTypeDef,
unknown
> = z.object({
+ aws_organizational_unit: z.lazy(() => AwsOrganizationalUnit$inboundSchema)
+ .optional(),
aws_account: z.lazy(() => AwsAccount$inboundSchema).optional(),
aws_permission_set: z.lazy(() => AwsPermissionSet$inboundSchema).optional(),
aws_iam_role: z.lazy(() => AwsIamRole$inboundSchema).optional(),
aws_ec2_instance: z.lazy(() => AwsEc2Instance$inboundSchema).optional(),
aws_rds_instance: z.lazy(() => AwsRdsInstance$inboundSchema).optional(),
aws_eks_cluster: z.lazy(() => AwsEksCluster$inboundSchema).optional(),
+ custom_connector: z.lazy(() => CustomConnector$inboundSchema).optional(),
gcp_organization: z.lazy(() => GcpOrganization$inboundSchema).optional(),
gcp_bucket: z.lazy(() => GcpBucket$inboundSchema).optional(),
gcp_compute_instance: z.lazy(() => GcpComputeInstance$inboundSchema)
@@ -2091,6 +2347,8 @@ export const ResourceRemoteInfo$inboundSchema: z.ZodType<
gcp_project: z.lazy(() => GcpProject$inboundSchema).optional(),
gcp_sql_instance: z.lazy(() => GcpSqlInstance$inboundSchema).optional(),
gcp_service_account: z.lazy(() => GcpServiceAccount$inboundSchema).optional(),
+ google_workspace_role: z.lazy(() => GoogleWorkspaceRole$inboundSchema)
+ .optional(),
github_repo: z.lazy(() => GithubRepo$inboundSchema).optional(),
gitlab_project: z.lazy(() => GitlabProject$inboundSchema).optional(),
okta_app: z.lazy(() => OktaApp$inboundSchema).optional(),
@@ -2104,12 +2362,14 @@ export const ResourceRemoteInfo$inboundSchema: z.ZodType<
teleport_role: z.lazy(() => TeleportRole$inboundSchema).optional(),
}).transform((v) => {
return remap$(v, {
+ "aws_organizational_unit": "awsOrganizationalUnit",
"aws_account": "awsAccount",
"aws_permission_set": "awsPermissionSet",
"aws_iam_role": "awsIamRole",
"aws_ec2_instance": "awsEc2Instance",
"aws_rds_instance": "awsRdsInstance",
"aws_eks_cluster": "awsEksCluster",
+ "custom_connector": "customConnector",
"gcp_organization": "gcpOrganization",
"gcp_bucket": "gcpBucket",
"gcp_compute_instance": "gcpComputeInstance",
@@ -2120,6 +2380,7 @@ export const ResourceRemoteInfo$inboundSchema: z.ZodType<
"gcp_project": "gcpProject",
"gcp_sql_instance": "gcpSqlInstance",
"gcp_service_account": "gcpServiceAccount",
+ "google_workspace_role": "googleWorkspaceRole",
"github_repo": "githubRepo",
"gitlab_project": "gitlabProject",
"okta_app": "oktaApp",
@@ -2135,12 +2396,14 @@ export const ResourceRemoteInfo$inboundSchema: z.ZodType<
/** @internal */
export type ResourceRemoteInfo$Outbound = {
+ aws_organizational_unit?: AwsOrganizationalUnit$Outbound | undefined;
aws_account?: AwsAccount$Outbound | undefined;
aws_permission_set?: AwsPermissionSet$Outbound | undefined;
aws_iam_role?: AwsIamRole$Outbound | undefined;
aws_ec2_instance?: AwsEc2Instance$Outbound | undefined;
aws_rds_instance?: AwsRdsInstance$Outbound | undefined;
aws_eks_cluster?: AwsEksCluster$Outbound | undefined;
+ custom_connector?: CustomConnector$Outbound | undefined;
gcp_organization?: GcpOrganization$Outbound | undefined;
gcp_bucket?: GcpBucket$Outbound | undefined;
gcp_compute_instance?: GcpComputeInstance$Outbound | undefined;
@@ -2151,6 +2414,7 @@ export type ResourceRemoteInfo$Outbound = {
gcp_project?: GcpProject$Outbound | undefined;
gcp_sql_instance?: GcpSqlInstance$Outbound | undefined;
gcp_service_account?: GcpServiceAccount$Outbound | undefined;
+ google_workspace_role?: GoogleWorkspaceRole$Outbound | undefined;
github_repo?: GithubRepo$Outbound | undefined;
gitlab_project?: GitlabProject$Outbound | undefined;
okta_app?: OktaApp$Outbound | undefined;
@@ -2169,12 +2433,15 @@ export const ResourceRemoteInfo$outboundSchema: z.ZodType<
z.ZodTypeDef,
ResourceRemoteInfo
> = z.object({
+ awsOrganizationalUnit: z.lazy(() => AwsOrganizationalUnit$outboundSchema)
+ .optional(),
awsAccount: z.lazy(() => AwsAccount$outboundSchema).optional(),
awsPermissionSet: z.lazy(() => AwsPermissionSet$outboundSchema).optional(),
awsIamRole: z.lazy(() => AwsIamRole$outboundSchema).optional(),
awsEc2Instance: z.lazy(() => AwsEc2Instance$outboundSchema).optional(),
awsRdsInstance: z.lazy(() => AwsRdsInstance$outboundSchema).optional(),
awsEksCluster: z.lazy(() => AwsEksCluster$outboundSchema).optional(),
+ customConnector: z.lazy(() => CustomConnector$outboundSchema).optional(),
gcpOrganization: z.lazy(() => GcpOrganization$outboundSchema).optional(),
gcpBucket: z.lazy(() => GcpBucket$outboundSchema).optional(),
gcpComputeInstance: z.lazy(() => GcpComputeInstance$outboundSchema)
@@ -2187,6 +2454,8 @@ export const ResourceRemoteInfo$outboundSchema: z.ZodType<
gcpProject: z.lazy(() => GcpProject$outboundSchema).optional(),
gcpSqlInstance: z.lazy(() => GcpSqlInstance$outboundSchema).optional(),
gcpServiceAccount: z.lazy(() => GcpServiceAccount$outboundSchema).optional(),
+ googleWorkspaceRole: z.lazy(() => GoogleWorkspaceRole$outboundSchema)
+ .optional(),
githubRepo: z.lazy(() => GithubRepo$outboundSchema).optional(),
gitlabProject: z.lazy(() => GitlabProject$outboundSchema).optional(),
oktaApp: z.lazy(() => OktaApp$outboundSchema).optional(),
@@ -2200,12 +2469,14 @@ export const ResourceRemoteInfo$outboundSchema: z.ZodType<
teleportRole: z.lazy(() => TeleportRole$outboundSchema).optional(),
}).transform((v) => {
return remap$(v, {
+ awsOrganizationalUnit: "aws_organizational_unit",
awsAccount: "aws_account",
awsPermissionSet: "aws_permission_set",
awsIamRole: "aws_iam_role",
awsEc2Instance: "aws_ec2_instance",
awsRdsInstance: "aws_rds_instance",
awsEksCluster: "aws_eks_cluster",
+ customConnector: "custom_connector",
gcpOrganization: "gcp_organization",
gcpBucket: "gcp_bucket",
gcpComputeInstance: "gcp_compute_instance",
@@ -2216,6 +2487,7 @@ export const ResourceRemoteInfo$outboundSchema: z.ZodType<
gcpProject: "gcp_project",
gcpSqlInstance: "gcp_sql_instance",
gcpServiceAccount: "gcp_service_account",
+ googleWorkspaceRole: "google_workspace_role",
githubRepo: "github_repo",
gitlabProject: "gitlab_project",
oktaApp: "okta_app",
diff --git a/src/models/components/rolepermissionnameenum.ts b/src/models/components/rolepermissionnameenum.ts
new file mode 100644
index 0000000..891b96c
--- /dev/null
+++ b/src/models/components/rolepermissionnameenum.ts
@@ -0,0 +1,55 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+import * as z from "zod";
+import { ClosedEnum } from "../../types/enums.js";
+
+/**
+ * The name of the role permission.
+ */
+export const RolePermissionNameEnum = {
+ Read: "READ",
+ ReadAssignments: "READ_ASSIGNMENTS",
+ Create: "CREATE",
+ Import: "IMPORT",
+ Export: "EXPORT",
+ Sync: "SYNC",
+ Delete: "DELETE",
+ ReadSettings: "READ_SETTINGS",
+ EditTags: "EDIT_TAGS",
+ EditSettings: "EDIT_SETTINGS",
+ EditSyncSettings: "EDIT_SYNC_SETTINGS",
+ EditAssignments: "EDIT_ASSIGNMENTS",
+ EditRequestConfigurations: "EDIT_REQUEST_CONFIGURATIONS",
+ EditEventStream: "EDIT_EVENT_STREAM",
+ AssignUarReviewers: "ASSIGN_UAR_REVIEWERS",
+ SendReminders: "SEND_REMINDERS",
+ Stop: "STOP",
+ RequestOnBehalf: "REQUEST_ON_BEHALF",
+} as const;
+/**
+ * The name of the role permission.
+ */
+export type RolePermissionNameEnum = ClosedEnum;
+
+/** @internal */
+export const RolePermissionNameEnum$inboundSchema: z.ZodNativeEnum<
+ typeof RolePermissionNameEnum
+> = z.nativeEnum(RolePermissionNameEnum);
+
+/** @internal */
+export const RolePermissionNameEnum$outboundSchema: z.ZodNativeEnum<
+ typeof RolePermissionNameEnum
+> = RolePermissionNameEnum$inboundSchema;
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace RolePermissionNameEnum$ {
+ /** @deprecated use `RolePermissionNameEnum$inboundSchema` instead. */
+ export const inboundSchema = RolePermissionNameEnum$inboundSchema;
+ /** @deprecated use `RolePermissionNameEnum$outboundSchema` instead. */
+ export const outboundSchema = RolePermissionNameEnum$outboundSchema;
+}
diff --git a/src/models/components/rolepermissiontargettypeenum.ts b/src/models/components/rolepermissiontargettypeenum.ts
new file mode 100644
index 0000000..4e7f0ff
--- /dev/null
+++ b/src/models/components/rolepermissiontargettypeenum.ts
@@ -0,0 +1,45 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+import * as z from "zod";
+import { ClosedEnum } from "../../types/enums.js";
+
+/**
+ * The type of the target for the role permission.
+ */
+export const RolePermissionTargetTypeEnum = {
+ Resource: "RESOURCE",
+ Connection: "CONNECTION",
+ Group: "GROUP",
+ Bundle: "BUNDLE",
+ User: "USER",
+ AccessReview: "ACCESS_REVIEW",
+} as const;
+/**
+ * The type of the target for the role permission.
+ */
+export type RolePermissionTargetTypeEnum = ClosedEnum<
+ typeof RolePermissionTargetTypeEnum
+>;
+
+/** @internal */
+export const RolePermissionTargetTypeEnum$inboundSchema: z.ZodNativeEnum<
+ typeof RolePermissionTargetTypeEnum
+> = z.nativeEnum(RolePermissionTargetTypeEnum);
+
+/** @internal */
+export const RolePermissionTargetTypeEnum$outboundSchema: z.ZodNativeEnum<
+ typeof RolePermissionTargetTypeEnum
+> = RolePermissionTargetTypeEnum$inboundSchema;
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace RolePermissionTargetTypeEnum$ {
+ /** @deprecated use `RolePermissionTargetTypeEnum$inboundSchema` instead. */
+ export const inboundSchema = RolePermissionTargetTypeEnum$inboundSchema;
+ /** @deprecated use `RolePermissionTargetTypeEnum$outboundSchema` instead. */
+ export const outboundSchema = RolePermissionTargetTypeEnum$outboundSchema;
+}
diff --git a/src/models/components/scopedrolepermission.ts b/src/models/components/scopedrolepermission.ts
new file mode 100644
index 0000000..0b655ff
--- /dev/null
+++ b/src/models/components/scopedrolepermission.ts
@@ -0,0 +1,112 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+import * as z from "zod";
+import { remap as remap$ } from "../../lib/primitives.js";
+import { safeParse } from "../../lib/schemas.js";
+import { Result as SafeParseResult } from "../../types/fp.js";
+import { SDKValidationError } from "../errors/sdkvalidationerror.js";
+import {
+ RolePermissionNameEnum,
+ RolePermissionNameEnum$inboundSchema,
+ RolePermissionNameEnum$outboundSchema,
+} from "./rolepermissionnameenum.js";
+import {
+ RolePermissionTargetTypeEnum,
+ RolePermissionTargetTypeEnum$inboundSchema,
+ RolePermissionTargetTypeEnum$outboundSchema,
+} from "./rolepermissiontargettypeenum.js";
+
+export type ScopedRolePermission = {
+ /**
+ * The IDs of the entities that this permission applies to. If empty of missing, the permission will have untargeted scope.
+ */
+ targetIds?: Array | undefined;
+ /**
+ * The type of the target for the role permission.
+ */
+ targetType: RolePermissionTargetTypeEnum;
+ /**
+ * The name of the role permission.
+ */
+ permissionName: RolePermissionNameEnum;
+ allowAll: boolean;
+};
+
+/** @internal */
+export const ScopedRolePermission$inboundSchema: z.ZodType<
+ ScopedRolePermission,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ target_ids: z.array(z.string()).optional(),
+ target_type: RolePermissionTargetTypeEnum$inboundSchema,
+ permission_name: RolePermissionNameEnum$inboundSchema,
+ allow_all: z.boolean(),
+}).transform((v) => {
+ return remap$(v, {
+ "target_ids": "targetIds",
+ "target_type": "targetType",
+ "permission_name": "permissionName",
+ "allow_all": "allowAll",
+ });
+});
+
+/** @internal */
+export type ScopedRolePermission$Outbound = {
+ target_ids?: Array | undefined;
+ target_type: string;
+ permission_name: string;
+ allow_all: boolean;
+};
+
+/** @internal */
+export const ScopedRolePermission$outboundSchema: z.ZodType<
+ ScopedRolePermission$Outbound,
+ z.ZodTypeDef,
+ ScopedRolePermission
+> = z.object({
+ targetIds: z.array(z.string()).optional(),
+ targetType: RolePermissionTargetTypeEnum$outboundSchema,
+ permissionName: RolePermissionNameEnum$outboundSchema,
+ allowAll: z.boolean(),
+}).transform((v) => {
+ return remap$(v, {
+ targetIds: "target_ids",
+ targetType: "target_type",
+ permissionName: "permission_name",
+ allowAll: "allow_all",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace ScopedRolePermission$ {
+ /** @deprecated use `ScopedRolePermission$inboundSchema` instead. */
+ export const inboundSchema = ScopedRolePermission$inboundSchema;
+ /** @deprecated use `ScopedRolePermission$outboundSchema` instead. */
+ export const outboundSchema = ScopedRolePermission$outboundSchema;
+ /** @deprecated use `ScopedRolePermission$Outbound` instead. */
+ export type Outbound = ScopedRolePermission$Outbound;
+}
+
+export function scopedRolePermissionToJSON(
+ scopedRolePermission: ScopedRolePermission,
+): string {
+ return JSON.stringify(
+ ScopedRolePermission$outboundSchema.parse(scopedRolePermission),
+ );
+}
+
+export function scopedRolePermissionFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => ScopedRolePermission$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'ScopedRolePermission' from JSON`,
+ );
+}
diff --git a/src/models/components/scopedrolepermissionlist.ts b/src/models/components/scopedrolepermissionlist.ts
new file mode 100644
index 0000000..9081afe
--- /dev/null
+++ b/src/models/components/scopedrolepermissionlist.ts
@@ -0,0 +1,72 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+import * as z from "zod";
+import { safeParse } from "../../lib/schemas.js";
+import { Result as SafeParseResult } from "../../types/fp.js";
+import { SDKValidationError } from "../errors/sdkvalidationerror.js";
+import {
+ ScopedRolePermission,
+ ScopedRolePermission$inboundSchema,
+ ScopedRolePermission$Outbound,
+ ScopedRolePermission$outboundSchema,
+} from "./scopedrolepermission.js";
+
+export type ScopedRolePermissionList = {
+ permissions: Array;
+};
+
+/** @internal */
+export const ScopedRolePermissionList$inboundSchema: z.ZodType<
+ ScopedRolePermissionList,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ permissions: z.array(ScopedRolePermission$inboundSchema),
+});
+
+/** @internal */
+export type ScopedRolePermissionList$Outbound = {
+ permissions: Array;
+};
+
+/** @internal */
+export const ScopedRolePermissionList$outboundSchema: z.ZodType<
+ ScopedRolePermissionList$Outbound,
+ z.ZodTypeDef,
+ ScopedRolePermissionList
+> = z.object({
+ permissions: z.array(ScopedRolePermission$outboundSchema),
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace ScopedRolePermissionList$ {
+ /** @deprecated use `ScopedRolePermissionList$inboundSchema` instead. */
+ export const inboundSchema = ScopedRolePermissionList$inboundSchema;
+ /** @deprecated use `ScopedRolePermissionList$outboundSchema` instead. */
+ export const outboundSchema = ScopedRolePermissionList$outboundSchema;
+ /** @deprecated use `ScopedRolePermissionList$Outbound` instead. */
+ export type Outbound = ScopedRolePermissionList$Outbound;
+}
+
+export function scopedRolePermissionListToJSON(
+ scopedRolePermissionList: ScopedRolePermissionList,
+): string {
+ return JSON.stringify(
+ ScopedRolePermissionList$outboundSchema.parse(scopedRolePermissionList),
+ );
+}
+
+export function scopedRolePermissionListFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => ScopedRolePermissionList$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'ScopedRolePermissionList' from JSON`,
+ );
+}
diff --git a/src/models/errors/apierror.ts b/src/models/errors/apierror.ts
index 243cf59..81bfe5c 100644
--- a/src/models/errors/apierror.ts
+++ b/src/models/errors/apierror.ts
@@ -25,8 +25,14 @@ export class APIError extends OpalMcpError {
}`;
}
const body = httpMeta.body || `""`;
- message += body.length > 100 ? "\n" : " ";
- message += `Body ${body}`;
+ message += body.length > 100 ? "\n" : ". ";
+ let bodyDisplay = body;
+ if (body.length > 10000) {
+ const truncated = body.substring(0, 10000);
+ const remaining = body.length - 10000;
+ bodyDisplay = `${truncated}...and ${remaining} more chars`;
+ }
+ message += `Body: ${bodyDisplay}`;
message = message.trim();
super(message, httpMeta);
this.name = "APIError";
diff --git a/src/models/operations/approverequest.ts b/src/models/operations/approverequest.ts
index 94774a1..0f6ce6f 100644
--- a/src/models/operations/approverequest.ts
+++ b/src/models/operations/approverequest.ts
@@ -61,7 +61,7 @@ export type ApproveRequestResponse = {
* ### Usage Example
* Returned from the `GET Requests` endpoint.
*/
- request?: components.Request | undefined;
+ request?: components.RequestT | undefined;
/**
* ID of the task created for propagating access
*/
@@ -216,13 +216,13 @@ export const ApproveRequestResponse$inboundSchema: z.ZodType<
z.ZodTypeDef,
unknown
> = z.object({
- request: components.Request$inboundSchema.optional(),
+ request: components.RequestT$inboundSchema.optional(),
taskId: z.string().optional(),
});
/** @internal */
export type ApproveRequestResponse$Outbound = {
- request?: components.Request$Outbound | undefined;
+ request?: components.RequestT$Outbound | undefined;
taskId?: string | undefined;
};
@@ -232,7 +232,7 @@ export const ApproveRequestResponse$outboundSchema: z.ZodType<
z.ZodTypeDef,
ApproveRequestResponse
> = z.object({
- request: components.Request$outboundSchema.optional(),
+ request: components.RequestT$outboundSchema.optional(),
taskId: z.string().optional(),
});
diff --git a/src/models/operations/deletegroupuser.ts b/src/models/operations/deletegroupuser.ts
index f022907..9d441ea 100644
--- a/src/models/operations/deletegroupuser.ts
+++ b/src/models/operations/deletegroupuser.ts
@@ -17,6 +17,10 @@ export type DeleteGroupUserRequest = {
* The ID of a user to remove from this group.
*/
userId: string;
+ /**
+ * The remote ID of the access level for which this user has direct access. If omitted, the default access level remote ID value (empty string) is assumed.
+ */
+ accessLevelRemoteId?: string | undefined;
};
/** @internal */
@@ -27,10 +31,12 @@ export const DeleteGroupUserRequest$inboundSchema: z.ZodType<
> = z.object({
group_id: z.string(),
user_id: z.string(),
+ access_level_remote_id: z.string().optional(),
}).transform((v) => {
return remap$(v, {
"group_id": "groupId",
"user_id": "userId",
+ "access_level_remote_id": "accessLevelRemoteId",
});
});
@@ -38,6 +44,7 @@ export const DeleteGroupUserRequest$inboundSchema: z.ZodType<
export type DeleteGroupUserRequest$Outbound = {
group_id: string;
user_id: string;
+ access_level_remote_id?: string | undefined;
};
/** @internal */
@@ -48,10 +55,12 @@ export const DeleteGroupUserRequest$outboundSchema: z.ZodType<
> = z.object({
groupId: z.string(),
userId: z.string(),
+ accessLevelRemoteId: z.string().optional(),
}).transform((v) => {
return remap$(v, {
groupId: "group_id",
userId: "user_id",
+ accessLevelRemoteId: "access_level_remote_id",
});
});
diff --git a/src/models/operations/events.ts b/src/models/operations/events.ts
index 2c41bbe..5d0af99 100644
--- a/src/models/operations/events.ts
+++ b/src/models/operations/events.ts
@@ -6,6 +6,7 @@ import * as z from "zod";
import { remap as remap$ } from "../../lib/primitives.js";
import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
+import * as components from "../components/index.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
export type EventsRequest = {
@@ -43,6 +44,10 @@ export type EventsRequest = {
pageSize?: number | undefined;
};
+export type EventsResponse = {
+ result: components.PaginatedEventList;
+};
+
/** @internal */
export const EventsRequest$inboundSchema: z.ZodType<
EventsRequest,
@@ -133,3 +138,61 @@ export function eventsRequestFromJSON(
`Failed to parse 'EventsRequest' from JSON`,
);
}
+
+/** @internal */
+export const EventsResponse$inboundSchema: z.ZodType<
+ EventsResponse,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ Result: components.PaginatedEventList$inboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ "Result": "result",
+ });
+});
+
+/** @internal */
+export type EventsResponse$Outbound = {
+ Result: components.PaginatedEventList$Outbound;
+};
+
+/** @internal */
+export const EventsResponse$outboundSchema: z.ZodType<
+ EventsResponse$Outbound,
+ z.ZodTypeDef,
+ EventsResponse
+> = z.object({
+ result: components.PaginatedEventList$outboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ result: "Result",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace EventsResponse$ {
+ /** @deprecated use `EventsResponse$inboundSchema` instead. */
+ export const inboundSchema = EventsResponse$inboundSchema;
+ /** @deprecated use `EventsResponse$outboundSchema` instead. */
+ export const outboundSchema = EventsResponse$outboundSchema;
+ /** @deprecated use `EventsResponse$Outbound` instead. */
+ export type Outbound = EventsResponse$Outbound;
+}
+
+export function eventsResponseToJSON(eventsResponse: EventsResponse): string {
+ return JSON.stringify(EventsResponse$outboundSchema.parse(eventsResponse));
+}
+
+export function eventsResponseFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => EventsResponse$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'EventsResponse' from JSON`,
+ );
+}
diff --git a/src/models/operations/getbundlegroups.ts b/src/models/operations/getbundlegroups.ts
index 193d8f4..d1b1332 100644
--- a/src/models/operations/getbundlegroups.ts
+++ b/src/models/operations/getbundlegroups.ts
@@ -6,6 +6,7 @@ import * as z from "zod";
import { remap as remap$ } from "../../lib/primitives.js";
import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
+import * as components from "../components/index.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
export type GetBundleGroupsRequest = {
@@ -23,6 +24,10 @@ export type GetBundleGroupsRequest = {
cursor?: string | undefined;
};
+export type GetBundleGroupsResponse = {
+ result: components.PaginatedBundleGroupList;
+};
+
/** @internal */
export const GetBundleGroupsRequest$inboundSchema: z.ZodType<
GetBundleGroupsRequest,
@@ -92,3 +97,65 @@ export function getBundleGroupsRequestFromJSON(
`Failed to parse 'GetBundleGroupsRequest' from JSON`,
);
}
+
+/** @internal */
+export const GetBundleGroupsResponse$inboundSchema: z.ZodType<
+ GetBundleGroupsResponse,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ Result: components.PaginatedBundleGroupList$inboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ "Result": "result",
+ });
+});
+
+/** @internal */
+export type GetBundleGroupsResponse$Outbound = {
+ Result: components.PaginatedBundleGroupList$Outbound;
+};
+
+/** @internal */
+export const GetBundleGroupsResponse$outboundSchema: z.ZodType<
+ GetBundleGroupsResponse$Outbound,
+ z.ZodTypeDef,
+ GetBundleGroupsResponse
+> = z.object({
+ result: components.PaginatedBundleGroupList$outboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ result: "Result",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace GetBundleGroupsResponse$ {
+ /** @deprecated use `GetBundleGroupsResponse$inboundSchema` instead. */
+ export const inboundSchema = GetBundleGroupsResponse$inboundSchema;
+ /** @deprecated use `GetBundleGroupsResponse$outboundSchema` instead. */
+ export const outboundSchema = GetBundleGroupsResponse$outboundSchema;
+ /** @deprecated use `GetBundleGroupsResponse$Outbound` instead. */
+ export type Outbound = GetBundleGroupsResponse$Outbound;
+}
+
+export function getBundleGroupsResponseToJSON(
+ getBundleGroupsResponse: GetBundleGroupsResponse,
+): string {
+ return JSON.stringify(
+ GetBundleGroupsResponse$outboundSchema.parse(getBundleGroupsResponse),
+ );
+}
+
+export function getBundleGroupsResponseFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => GetBundleGroupsResponse$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'GetBundleGroupsResponse' from JSON`,
+ );
+}
diff --git a/src/models/operations/getbundleresources.ts b/src/models/operations/getbundleresources.ts
index 071ed9f..dad3199 100644
--- a/src/models/operations/getbundleresources.ts
+++ b/src/models/operations/getbundleresources.ts
@@ -6,6 +6,7 @@ import * as z from "zod";
import { remap as remap$ } from "../../lib/primitives.js";
import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
+import * as components from "../components/index.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
export type GetBundleResourcesRequest = {
@@ -23,6 +24,10 @@ export type GetBundleResourcesRequest = {
cursor?: string | undefined;
};
+export type GetBundleResourcesResponse = {
+ result: components.PaginatedBundleResourceList;
+};
+
/** @internal */
export const GetBundleResourcesRequest$inboundSchema: z.ZodType<
GetBundleResourcesRequest,
@@ -92,3 +97,65 @@ export function getBundleResourcesRequestFromJSON(
`Failed to parse 'GetBundleResourcesRequest' from JSON`,
);
}
+
+/** @internal */
+export const GetBundleResourcesResponse$inboundSchema: z.ZodType<
+ GetBundleResourcesResponse,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ Result: components.PaginatedBundleResourceList$inboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ "Result": "result",
+ });
+});
+
+/** @internal */
+export type GetBundleResourcesResponse$Outbound = {
+ Result: components.PaginatedBundleResourceList$Outbound;
+};
+
+/** @internal */
+export const GetBundleResourcesResponse$outboundSchema: z.ZodType<
+ GetBundleResourcesResponse$Outbound,
+ z.ZodTypeDef,
+ GetBundleResourcesResponse
+> = z.object({
+ result: components.PaginatedBundleResourceList$outboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ result: "Result",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace GetBundleResourcesResponse$ {
+ /** @deprecated use `GetBundleResourcesResponse$inboundSchema` instead. */
+ export const inboundSchema = GetBundleResourcesResponse$inboundSchema;
+ /** @deprecated use `GetBundleResourcesResponse$outboundSchema` instead. */
+ export const outboundSchema = GetBundleResourcesResponse$outboundSchema;
+ /** @deprecated use `GetBundleResourcesResponse$Outbound` instead. */
+ export type Outbound = GetBundleResourcesResponse$Outbound;
+}
+
+export function getBundleResourcesResponseToJSON(
+ getBundleResourcesResponse: GetBundleResourcesResponse,
+): string {
+ return JSON.stringify(
+ GetBundleResourcesResponse$outboundSchema.parse(getBundleResourcesResponse),
+ );
+}
+
+export function getBundleResourcesResponseFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => GetBundleResourcesResponse$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'GetBundleResourcesResponse' from JSON`,
+ );
+}
diff --git a/src/models/operations/getbundles.ts b/src/models/operations/getbundles.ts
index 95e5231..82e89e6 100644
--- a/src/models/operations/getbundles.ts
+++ b/src/models/operations/getbundles.ts
@@ -6,6 +6,7 @@ import * as z from "zod";
import { remap as remap$ } from "../../lib/primitives.js";
import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
+import * as components from "../components/index.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
export type GetBundlesRequest = {
@@ -23,6 +24,10 @@ export type GetBundlesRequest = {
contains?: string | undefined;
};
+export type GetBundlesResponse = {
+ result: components.PaginatedBundleList;
+};
+
/** @internal */
export const GetBundlesRequest$inboundSchema: z.ZodType<
GetBundlesRequest,
@@ -90,3 +95,65 @@ export function getBundlesRequestFromJSON(
`Failed to parse 'GetBundlesRequest' from JSON`,
);
}
+
+/** @internal */
+export const GetBundlesResponse$inboundSchema: z.ZodType<
+ GetBundlesResponse,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ Result: components.PaginatedBundleList$inboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ "Result": "result",
+ });
+});
+
+/** @internal */
+export type GetBundlesResponse$Outbound = {
+ Result: components.PaginatedBundleList$Outbound;
+};
+
+/** @internal */
+export const GetBundlesResponse$outboundSchema: z.ZodType<
+ GetBundlesResponse$Outbound,
+ z.ZodTypeDef,
+ GetBundlesResponse
+> = z.object({
+ result: components.PaginatedBundleList$outboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ result: "Result",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace GetBundlesResponse$ {
+ /** @deprecated use `GetBundlesResponse$inboundSchema` instead. */
+ export const inboundSchema = GetBundlesResponse$inboundSchema;
+ /** @deprecated use `GetBundlesResponse$outboundSchema` instead. */
+ export const outboundSchema = GetBundlesResponse$outboundSchema;
+ /** @deprecated use `GetBundlesResponse$Outbound` instead. */
+ export type Outbound = GetBundlesResponse$Outbound;
+}
+
+export function getBundlesResponseToJSON(
+ getBundlesResponse: GetBundlesResponse,
+): string {
+ return JSON.stringify(
+ GetBundlesResponse$outboundSchema.parse(getBundlesResponse),
+ );
+}
+
+export function getBundlesResponseFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => GetBundlesResponse$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'GetBundlesResponse' from JSON`,
+ );
+}
diff --git a/src/models/operations/getgroupbindings.ts b/src/models/operations/getgroupbindings.ts
index 76a653c..4d28634 100644
--- a/src/models/operations/getgroupbindings.ts
+++ b/src/models/operations/getgroupbindings.ts
@@ -6,6 +6,7 @@ import * as z from "zod";
import { remap as remap$ } from "../../lib/primitives.js";
import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
+import * as components from "../components/index.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
export type GetGroupBindingsRequest = {
@@ -19,6 +20,10 @@ export type GetGroupBindingsRequest = {
pageSize?: number | undefined;
};
+export type GetGroupBindingsResponse = {
+ result: components.PaginatedGroupBindingsList;
+};
+
/** @internal */
export const GetGroupBindingsRequest$inboundSchema: z.ZodType<
GetGroupBindingsRequest,
@@ -83,3 +88,65 @@ export function getGroupBindingsRequestFromJSON(
`Failed to parse 'GetGroupBindingsRequest' from JSON`,
);
}
+
+/** @internal */
+export const GetGroupBindingsResponse$inboundSchema: z.ZodType<
+ GetGroupBindingsResponse,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ Result: components.PaginatedGroupBindingsList$inboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ "Result": "result",
+ });
+});
+
+/** @internal */
+export type GetGroupBindingsResponse$Outbound = {
+ Result: components.PaginatedGroupBindingsList$Outbound;
+};
+
+/** @internal */
+export const GetGroupBindingsResponse$outboundSchema: z.ZodType<
+ GetGroupBindingsResponse$Outbound,
+ z.ZodTypeDef,
+ GetGroupBindingsResponse
+> = z.object({
+ result: components.PaginatedGroupBindingsList$outboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ result: "Result",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace GetGroupBindingsResponse$ {
+ /** @deprecated use `GetGroupBindingsResponse$inboundSchema` instead. */
+ export const inboundSchema = GetGroupBindingsResponse$inboundSchema;
+ /** @deprecated use `GetGroupBindingsResponse$outboundSchema` instead. */
+ export const outboundSchema = GetGroupBindingsResponse$outboundSchema;
+ /** @deprecated use `GetGroupBindingsResponse$Outbound` instead. */
+ export type Outbound = GetGroupBindingsResponse$Outbound;
+}
+
+export function getGroupBindingsResponseToJSON(
+ getGroupBindingsResponse: GetGroupBindingsResponse,
+): string {
+ return JSON.stringify(
+ GetGroupBindingsResponse$outboundSchema.parse(getGroupBindingsResponse),
+ );
+}
+
+export function getGroupBindingsResponseFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => GetGroupBindingsResponse$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'GetGroupBindingsResponse' from JSON`,
+ );
+}
diff --git a/src/models/operations/getgroups.ts b/src/models/operations/getgroups.ts
index 356ca44..fb5e034 100644
--- a/src/models/operations/getgroups.ts
+++ b/src/models/operations/getgroups.ts
@@ -32,6 +32,10 @@ export type GetGroupsRequest = {
groupName?: string | undefined;
};
+export type GetGroupsResponse = {
+ result: components.PaginatedGroupsList;
+};
+
/** @internal */
export const GetGroupsRequest$inboundSchema: z.ZodType<
GetGroupsRequest,
@@ -111,3 +115,65 @@ export function getGroupsRequestFromJSON(
`Failed to parse 'GetGroupsRequest' from JSON`,
);
}
+
+/** @internal */
+export const GetGroupsResponse$inboundSchema: z.ZodType<
+ GetGroupsResponse,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ Result: components.PaginatedGroupsList$inboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ "Result": "result",
+ });
+});
+
+/** @internal */
+export type GetGroupsResponse$Outbound = {
+ Result: components.PaginatedGroupsList$Outbound;
+};
+
+/** @internal */
+export const GetGroupsResponse$outboundSchema: z.ZodType<
+ GetGroupsResponse$Outbound,
+ z.ZodTypeDef,
+ GetGroupsResponse
+> = z.object({
+ result: components.PaginatedGroupsList$outboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ result: "Result",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace GetGroupsResponse$ {
+ /** @deprecated use `GetGroupsResponse$inboundSchema` instead. */
+ export const inboundSchema = GetGroupsResponse$inboundSchema;
+ /** @deprecated use `GetGroupsResponse$outboundSchema` instead. */
+ export const outboundSchema = GetGroupsResponse$outboundSchema;
+ /** @deprecated use `GetGroupsResponse$Outbound` instead. */
+ export type Outbound = GetGroupsResponse$Outbound;
+}
+
+export function getGroupsResponseToJSON(
+ getGroupsResponse: GetGroupsResponse,
+): string {
+ return JSON.stringify(
+ GetGroupsResponse$outboundSchema.parse(getGroupsResponse),
+ );
+}
+
+export function getGroupsResponseFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => GetGroupsResponse$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'GetGroupsResponse' from JSON`,
+ );
+}
diff --git a/src/models/operations/getnhis.ts b/src/models/operations/getnhis.ts
index 6635ce1..1e6676a 100644
--- a/src/models/operations/getnhis.ts
+++ b/src/models/operations/getnhis.ts
@@ -6,6 +6,7 @@ import * as z from "zod";
import { remap as remap$ } from "../../lib/primitives.js";
import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
+import * as components from "../components/index.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
export type GetNhisRequest = {
@@ -19,6 +20,10 @@ export type GetNhisRequest = {
pageSize?: number | undefined;
};
+export type GetNhisResponse = {
+ result: components.PaginatedResourcesList;
+};
+
/** @internal */
export const GetNhisRequest$inboundSchema: z.ZodType<
GetNhisRequest,
@@ -79,3 +84,63 @@ export function getNhisRequestFromJSON(
`Failed to parse 'GetNhisRequest' from JSON`,
);
}
+
+/** @internal */
+export const GetNhisResponse$inboundSchema: z.ZodType<
+ GetNhisResponse,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ Result: components.PaginatedResourcesList$inboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ "Result": "result",
+ });
+});
+
+/** @internal */
+export type GetNhisResponse$Outbound = {
+ Result: components.PaginatedResourcesList$Outbound;
+};
+
+/** @internal */
+export const GetNhisResponse$outboundSchema: z.ZodType<
+ GetNhisResponse$Outbound,
+ z.ZodTypeDef,
+ GetNhisResponse
+> = z.object({
+ result: components.PaginatedResourcesList$outboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ result: "Result",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace GetNhisResponse$ {
+ /** @deprecated use `GetNhisResponse$inboundSchema` instead. */
+ export const inboundSchema = GetNhisResponse$inboundSchema;
+ /** @deprecated use `GetNhisResponse$outboundSchema` instead. */
+ export const outboundSchema = GetNhisResponse$outboundSchema;
+ /** @deprecated use `GetNhisResponse$Outbound` instead. */
+ export type Outbound = GetNhisResponse$Outbound;
+}
+
+export function getNhisResponseToJSON(
+ getNhisResponse: GetNhisResponse,
+): string {
+ return JSON.stringify(GetNhisResponse$outboundSchema.parse(getNhisResponse));
+}
+
+export function getNhisResponseFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => GetNhisResponse$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'GetNhisResponse' from JSON`,
+ );
+}
diff --git a/src/models/operations/getowners.ts b/src/models/operations/getowners.ts
index 2cb4083..52efa7d 100644
--- a/src/models/operations/getowners.ts
+++ b/src/models/operations/getowners.ts
@@ -6,6 +6,7 @@ import * as z from "zod";
import { remap as remap$ } from "../../lib/primitives.js";
import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
+import * as components from "../components/index.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
export type GetOwnersRequest = {
@@ -23,6 +24,10 @@ export type GetOwnersRequest = {
name?: string | undefined;
};
+export type GetOwnersResponse = {
+ result: components.PaginatedOwnersList;
+};
+
/** @internal */
export const GetOwnersRequest$inboundSchema: z.ZodType<
GetOwnersRequest,
@@ -90,3 +95,65 @@ export function getOwnersRequestFromJSON(
`Failed to parse 'GetOwnersRequest' from JSON`,
);
}
+
+/** @internal */
+export const GetOwnersResponse$inboundSchema: z.ZodType<
+ GetOwnersResponse,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ Result: components.PaginatedOwnersList$inboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ "Result": "result",
+ });
+});
+
+/** @internal */
+export type GetOwnersResponse$Outbound = {
+ Result: components.PaginatedOwnersList$Outbound;
+};
+
+/** @internal */
+export const GetOwnersResponse$outboundSchema: z.ZodType<
+ GetOwnersResponse$Outbound,
+ z.ZodTypeDef,
+ GetOwnersResponse
+> = z.object({
+ result: components.PaginatedOwnersList$outboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ result: "Result",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace GetOwnersResponse$ {
+ /** @deprecated use `GetOwnersResponse$inboundSchema` instead. */
+ export const inboundSchema = GetOwnersResponse$inboundSchema;
+ /** @deprecated use `GetOwnersResponse$outboundSchema` instead. */
+ export const outboundSchema = GetOwnersResponse$outboundSchema;
+ /** @deprecated use `GetOwnersResponse$Outbound` instead. */
+ export type Outbound = GetOwnersResponse$Outbound;
+}
+
+export function getOwnersResponseToJSON(
+ getOwnersResponse: GetOwnersResponse,
+): string {
+ return JSON.stringify(
+ GetOwnersResponse$outboundSchema.parse(getOwnersResponse),
+ );
+}
+
+export function getOwnersResponseFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => GetOwnersResponse$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'GetOwnersResponse' from JSON`,
+ );
+}
diff --git a/src/models/operations/getrequest.ts b/src/models/operations/getrequest.ts
new file mode 100644
index 0000000..6fbde21
--- /dev/null
+++ b/src/models/operations/getrequest.ts
@@ -0,0 +1,69 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+import * as z from "zod";
+import { safeParse } from "../../lib/schemas.js";
+import { Result as SafeParseResult } from "../../types/fp.js";
+import { SDKValidationError } from "../errors/sdkvalidationerror.js";
+
+export type GetRequestRequest = {
+ /**
+ * The ID of the request.
+ */
+ id: string;
+};
+
+/** @internal */
+export const GetRequestRequest$inboundSchema: z.ZodType<
+ GetRequestRequest,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ id: z.string(),
+});
+
+/** @internal */
+export type GetRequestRequest$Outbound = {
+ id: string;
+};
+
+/** @internal */
+export const GetRequestRequest$outboundSchema: z.ZodType<
+ GetRequestRequest$Outbound,
+ z.ZodTypeDef,
+ GetRequestRequest
+> = z.object({
+ id: z.string(),
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace GetRequestRequest$ {
+ /** @deprecated use `GetRequestRequest$inboundSchema` instead. */
+ export const inboundSchema = GetRequestRequest$inboundSchema;
+ /** @deprecated use `GetRequestRequest$outboundSchema` instead. */
+ export const outboundSchema = GetRequestRequest$outboundSchema;
+ /** @deprecated use `GetRequestRequest$Outbound` instead. */
+ export type Outbound = GetRequestRequest$Outbound;
+}
+
+export function getRequestRequestToJSON(
+ getRequestRequest: GetRequestRequest,
+): string {
+ return JSON.stringify(
+ GetRequestRequest$outboundSchema.parse(getRequestRequest),
+ );
+}
+
+export function getRequestRequestFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => GetRequestRequest$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'GetRequestRequest' from JSON`,
+ );
+}
diff --git a/src/models/operations/getrequests.ts b/src/models/operations/getrequests.ts
index 2058c63..faa67fb 100644
--- a/src/models/operations/getrequests.ts
+++ b/src/models/operations/getrequests.ts
@@ -6,6 +6,7 @@ import * as z from "zod";
import { remap as remap$ } from "../../lib/primitives.js";
import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
+import * as components from "../components/index.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
export type GetRequestsRequest = {
@@ -31,6 +32,10 @@ export type GetRequestsRequest = {
showPendingOnly?: boolean | undefined;
};
+export type GetRequestsResponse = {
+ result: components.RequestList;
+};
+
/** @internal */
export const GetRequestsRequest$inboundSchema: z.ZodType<
GetRequestsRequest,
@@ -110,3 +115,65 @@ export function getRequestsRequestFromJSON(
`Failed to parse 'GetRequestsRequest' from JSON`,
);
}
+
+/** @internal */
+export const GetRequestsResponse$inboundSchema: z.ZodType<
+ GetRequestsResponse,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ Result: components.RequestList$inboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ "Result": "result",
+ });
+});
+
+/** @internal */
+export type GetRequestsResponse$Outbound = {
+ Result: components.RequestList$Outbound;
+};
+
+/** @internal */
+export const GetRequestsResponse$outboundSchema: z.ZodType<
+ GetRequestsResponse$Outbound,
+ z.ZodTypeDef,
+ GetRequestsResponse
+> = z.object({
+ result: components.RequestList$outboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ result: "Result",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace GetRequestsResponse$ {
+ /** @deprecated use `GetRequestsResponse$inboundSchema` instead. */
+ export const inboundSchema = GetRequestsResponse$inboundSchema;
+ /** @deprecated use `GetRequestsResponse$outboundSchema` instead. */
+ export const outboundSchema = GetRequestsResponse$outboundSchema;
+ /** @deprecated use `GetRequestsResponse$Outbound` instead. */
+ export type Outbound = GetRequestsResponse$Outbound;
+}
+
+export function getRequestsResponseToJSON(
+ getRequestsResponse: GetRequestsResponse,
+): string {
+ return JSON.stringify(
+ GetRequestsResponse$outboundSchema.parse(getRequestsResponse),
+ );
+}
+
+export function getRequestsResponseFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => GetRequestsResponse$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'GetRequestsResponse' from JSON`,
+ );
+}
diff --git a/src/models/operations/getresources.ts b/src/models/operations/getresources.ts
index 600a41c..0bb164b 100644
--- a/src/models/operations/getresources.ts
+++ b/src/models/operations/getresources.ts
@@ -40,6 +40,10 @@ export type GetResourcesRequest = {
ancestorResourceId?: string | undefined;
};
+export type GetResourcesResponse = {
+ result: components.PaginatedResourcesList;
+};
+
/** @internal */
export const GetResourcesRequest$inboundSchema: z.ZodType<
GetResourcesRequest,
@@ -129,3 +133,65 @@ export function getResourcesRequestFromJSON(
`Failed to parse 'GetResourcesRequest' from JSON`,
);
}
+
+/** @internal */
+export const GetResourcesResponse$inboundSchema: z.ZodType<
+ GetResourcesResponse,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ Result: components.PaginatedResourcesList$inboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ "Result": "result",
+ });
+});
+
+/** @internal */
+export type GetResourcesResponse$Outbound = {
+ Result: components.PaginatedResourcesList$Outbound;
+};
+
+/** @internal */
+export const GetResourcesResponse$outboundSchema: z.ZodType<
+ GetResourcesResponse$Outbound,
+ z.ZodTypeDef,
+ GetResourcesResponse
+> = z.object({
+ result: components.PaginatedResourcesList$outboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ result: "Result",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace GetResourcesResponse$ {
+ /** @deprecated use `GetResourcesResponse$inboundSchema` instead. */
+ export const inboundSchema = GetResourcesResponse$inboundSchema;
+ /** @deprecated use `GetResourcesResponse$outboundSchema` instead. */
+ export const outboundSchema = GetResourcesResponse$outboundSchema;
+ /** @deprecated use `GetResourcesResponse$Outbound` instead. */
+ export type Outbound = GetResourcesResponse$Outbound;
+}
+
+export function getResourcesResponseToJSON(
+ getResourcesResponse: GetResourcesResponse,
+): string {
+ return JSON.stringify(
+ GetResourcesResponse$outboundSchema.parse(getResourcesResponse),
+ );
+}
+
+export function getResourcesResponseFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => GetResourcesResponse$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'GetResourcesResponse' from JSON`,
+ );
+}
diff --git a/src/models/operations/getresourcescopedrolepermissions.ts b/src/models/operations/getresourcescopedrolepermissions.ts
new file mode 100644
index 0000000..13a1e6c
--- /dev/null
+++ b/src/models/operations/getresourcescopedrolepermissions.ts
@@ -0,0 +1,89 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+import * as z from "zod";
+import { remap as remap$ } from "../../lib/primitives.js";
+import { safeParse } from "../../lib/schemas.js";
+import { Result as SafeParseResult } from "../../types/fp.js";
+import { SDKValidationError } from "../errors/sdkvalidationerror.js";
+
+export type GetResourceScopedRolePermissionsRequest = {
+ /**
+ * The ID of the resource whose scoped role permissions belong to.
+ */
+ resourceId: string;
+};
+
+/** @internal */
+export const GetResourceScopedRolePermissionsRequest$inboundSchema: z.ZodType<
+ GetResourceScopedRolePermissionsRequest,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ resource_id: z.string(),
+}).transform((v) => {
+ return remap$(v, {
+ "resource_id": "resourceId",
+ });
+});
+
+/** @internal */
+export type GetResourceScopedRolePermissionsRequest$Outbound = {
+ resource_id: string;
+};
+
+/** @internal */
+export const GetResourceScopedRolePermissionsRequest$outboundSchema: z.ZodType<
+ GetResourceScopedRolePermissionsRequest$Outbound,
+ z.ZodTypeDef,
+ GetResourceScopedRolePermissionsRequest
+> = z.object({
+ resourceId: z.string(),
+}).transform((v) => {
+ return remap$(v, {
+ resourceId: "resource_id",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace GetResourceScopedRolePermissionsRequest$ {
+ /** @deprecated use `GetResourceScopedRolePermissionsRequest$inboundSchema` instead. */
+ export const inboundSchema =
+ GetResourceScopedRolePermissionsRequest$inboundSchema;
+ /** @deprecated use `GetResourceScopedRolePermissionsRequest$outboundSchema` instead. */
+ export const outboundSchema =
+ GetResourceScopedRolePermissionsRequest$outboundSchema;
+ /** @deprecated use `GetResourceScopedRolePermissionsRequest$Outbound` instead. */
+ export type Outbound = GetResourceScopedRolePermissionsRequest$Outbound;
+}
+
+export function getResourceScopedRolePermissionsRequestToJSON(
+ getResourceScopedRolePermissionsRequest:
+ GetResourceScopedRolePermissionsRequest,
+): string {
+ return JSON.stringify(
+ GetResourceScopedRolePermissionsRequest$outboundSchema.parse(
+ getResourceScopedRolePermissionsRequest,
+ ),
+ );
+}
+
+export function getResourceScopedRolePermissionsRequestFromJSON(
+ jsonString: string,
+): SafeParseResult<
+ GetResourceScopedRolePermissionsRequest,
+ SDKValidationError
+> {
+ return safeParse(
+ jsonString,
+ (x) =>
+ GetResourceScopedRolePermissionsRequest$inboundSchema.parse(
+ JSON.parse(x),
+ ),
+ `Failed to parse 'GetResourceScopedRolePermissionsRequest' from JSON`,
+ );
+}
diff --git a/src/models/operations/gettags.ts b/src/models/operations/gettags.ts
index f11bd02..17f2e4f 100644
--- a/src/models/operations/gettags.ts
+++ b/src/models/operations/gettags.ts
@@ -6,6 +6,7 @@ import * as z from "zod";
import { remap as remap$ } from "../../lib/primitives.js";
import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
+import * as components from "../components/index.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
export type GetTagsRequest = {
@@ -19,6 +20,10 @@ export type GetTagsRequest = {
pageSize?: number | undefined;
};
+export type GetTagsResponse = {
+ result: components.PaginatedTagsList;
+};
+
/** @internal */
export const GetTagsRequest$inboundSchema: z.ZodType<
GetTagsRequest,
@@ -79,3 +84,63 @@ export function getTagsRequestFromJSON(
`Failed to parse 'GetTagsRequest' from JSON`,
);
}
+
+/** @internal */
+export const GetTagsResponse$inboundSchema: z.ZodType<
+ GetTagsResponse,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ Result: components.PaginatedTagsList$inboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ "Result": "result",
+ });
+});
+
+/** @internal */
+export type GetTagsResponse$Outbound = {
+ Result: components.PaginatedTagsList$Outbound;
+};
+
+/** @internal */
+export const GetTagsResponse$outboundSchema: z.ZodType<
+ GetTagsResponse$Outbound,
+ z.ZodTypeDef,
+ GetTagsResponse
+> = z.object({
+ result: components.PaginatedTagsList$outboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ result: "Result",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace GetTagsResponse$ {
+ /** @deprecated use `GetTagsResponse$inboundSchema` instead. */
+ export const inboundSchema = GetTagsResponse$inboundSchema;
+ /** @deprecated use `GetTagsResponse$outboundSchema` instead. */
+ export const outboundSchema = GetTagsResponse$outboundSchema;
+ /** @deprecated use `GetTagsResponse$Outbound` instead. */
+ export type Outbound = GetTagsResponse$Outbound;
+}
+
+export function getTagsResponseToJSON(
+ getTagsResponse: GetTagsResponse,
+): string {
+ return JSON.stringify(GetTagsResponse$outboundSchema.parse(getTagsResponse));
+}
+
+export function getTagsResponseFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => GetTagsResponse$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'GetTagsResponse' from JSON`,
+ );
+}
diff --git a/src/models/operations/getuars.ts b/src/models/operations/getuars.ts
index 7226089..46fc924 100644
--- a/src/models/operations/getuars.ts
+++ b/src/models/operations/getuars.ts
@@ -6,6 +6,7 @@ import * as z from "zod";
import { remap as remap$ } from "../../lib/primitives.js";
import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
+import * as components from "../components/index.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
export type GetUARsRequest = {
@@ -19,6 +20,10 @@ export type GetUARsRequest = {
pageSize?: number | undefined;
};
+export type GetUARsResponse = {
+ result: components.PaginatedUARsList;
+};
+
/** @internal */
export const GetUARsRequest$inboundSchema: z.ZodType<
GetUARsRequest,
@@ -79,3 +84,63 @@ export function getUARsRequestFromJSON(
`Failed to parse 'GetUARsRequest' from JSON`,
);
}
+
+/** @internal */
+export const GetUARsResponse$inboundSchema: z.ZodType<
+ GetUARsResponse,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ Result: components.PaginatedUARsList$inboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ "Result": "result",
+ });
+});
+
+/** @internal */
+export type GetUARsResponse$Outbound = {
+ Result: components.PaginatedUARsList$Outbound;
+};
+
+/** @internal */
+export const GetUARsResponse$outboundSchema: z.ZodType<
+ GetUARsResponse$Outbound,
+ z.ZodTypeDef,
+ GetUARsResponse
+> = z.object({
+ result: components.PaginatedUARsList$outboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ result: "Result",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace GetUARsResponse$ {
+ /** @deprecated use `GetUARsResponse$inboundSchema` instead. */
+ export const inboundSchema = GetUARsResponse$inboundSchema;
+ /** @deprecated use `GetUARsResponse$outboundSchema` instead. */
+ export const outboundSchema = GetUARsResponse$outboundSchema;
+ /** @deprecated use `GetUARsResponse$Outbound` instead. */
+ export type Outbound = GetUARsResponse$Outbound;
+}
+
+export function getUARsResponseToJSON(
+ getUARsResponse: GetUARsResponse,
+): string {
+ return JSON.stringify(GetUARsResponse$outboundSchema.parse(getUARsResponse));
+}
+
+export function getUARsResponseFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => GetUARsResponse$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'GetUARsResponse' from JSON`,
+ );
+}
diff --git a/src/models/operations/getusers.ts b/src/models/operations/getusers.ts
index 7a93bac..b4b658d 100644
--- a/src/models/operations/getusers.ts
+++ b/src/models/operations/getusers.ts
@@ -6,6 +6,7 @@ import * as z from "zod";
import { remap as remap$ } from "../../lib/primitives.js";
import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
+import * as components from "../components/index.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
export type GetUsersRequest = {
@@ -19,6 +20,10 @@ export type GetUsersRequest = {
pageSize?: number | undefined;
};
+export type GetUsersResponse = {
+ result: components.PaginatedUsersList;
+};
+
/** @internal */
export const GetUsersRequest$inboundSchema: z.ZodType<
GetUsersRequest,
@@ -81,3 +86,65 @@ export function getUsersRequestFromJSON(
`Failed to parse 'GetUsersRequest' from JSON`,
);
}
+
+/** @internal */
+export const GetUsersResponse$inboundSchema: z.ZodType<
+ GetUsersResponse,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ Result: components.PaginatedUsersList$inboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ "Result": "result",
+ });
+});
+
+/** @internal */
+export type GetUsersResponse$Outbound = {
+ Result: components.PaginatedUsersList$Outbound;
+};
+
+/** @internal */
+export const GetUsersResponse$outboundSchema: z.ZodType<
+ GetUsersResponse$Outbound,
+ z.ZodTypeDef,
+ GetUsersResponse
+> = z.object({
+ result: components.PaginatedUsersList$outboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ result: "Result",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace GetUsersResponse$ {
+ /** @deprecated use `GetUsersResponse$inboundSchema` instead. */
+ export const inboundSchema = GetUsersResponse$inboundSchema;
+ /** @deprecated use `GetUsersResponse$outboundSchema` instead. */
+ export const outboundSchema = GetUsersResponse$outboundSchema;
+ /** @deprecated use `GetUsersResponse$Outbound` instead. */
+ export type Outbound = GetUsersResponse$Outbound;
+}
+
+export function getUsersResponseToJSON(
+ getUsersResponse: GetUsersResponse,
+): string {
+ return JSON.stringify(
+ GetUsersResponse$outboundSchema.parse(getUsersResponse),
+ );
+}
+
+export function getUsersResponseFromJSON(
+ jsonString: string,
+): SafeParseResult {
+ return safeParse(
+ jsonString,
+ (x) => GetUsersResponse$inboundSchema.parse(JSON.parse(x)),
+ `Failed to parse 'GetUsersResponse' from JSON`,
+ );
+}
diff --git a/src/models/operations/index.ts b/src/models/operations/index.ts
index e344ad7..c206359 100644
--- a/src/models/operations/index.ts
+++ b/src/models/operations/index.ts
@@ -57,6 +57,7 @@ export * from "./getowner.js";
export * from "./getownerfromname.js";
export * from "./getowners.js";
export * from "./getownerusers.js";
+export * from "./getrequest.js";
export * from "./getrequests.js";
export * from "./getrequestsrelay.js";
export * from "./getresource.js";
@@ -65,6 +66,7 @@ export * from "./getresourcenhis.js";
export * from "./getresourcereviewers.js";
export * from "./getresourcereviewerstages.js";
export * from "./getresources.js";
+export * from "./getresourcescopedrolepermissions.js";
export * from "./getresourcetags.js";
export * from "./getresourceuser.js";
export * from "./getresourceusers.js";
@@ -96,6 +98,7 @@ export * from "./setownerusers.js";
export * from "./setresourcemessagechannels.js";
export * from "./setresourcereviewers.js";
export * from "./setresourcereviewerstages.js";
+export * from "./setresourcescopedrolepermissions.js";
export * from "./setresourcevisibility.js";
export * from "./updateaccessrule.js";
export * from "./updatebundle.js";
diff --git a/src/models/operations/setresourcescopedrolepermissions.ts b/src/models/operations/setresourcescopedrolepermissions.ts
new file mode 100644
index 0000000..a43d650
--- /dev/null
+++ b/src/models/operations/setresourcescopedrolepermissions.ts
@@ -0,0 +1,96 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+import * as z from "zod";
+import { remap as remap$ } from "../../lib/primitives.js";
+import { safeParse } from "../../lib/schemas.js";
+import { Result as SafeParseResult } from "../../types/fp.js";
+import * as components from "../components/index.js";
+import { SDKValidationError } from "../errors/sdkvalidationerror.js";
+
+export type SetResourceScopedRolePermissionsRequest = {
+ /**
+ * The ID of the resource whose scoped role permissions belong to. Must be of OPAL_SCOPED_ROLE resource type.
+ */
+ resourceId: string;
+ scopedRolePermissionList: components.ScopedRolePermissionList;
+};
+
+/** @internal */
+export const SetResourceScopedRolePermissionsRequest$inboundSchema: z.ZodType<
+ SetResourceScopedRolePermissionsRequest,
+ z.ZodTypeDef,
+ unknown
+> = z.object({
+ resource_id: z.string(),
+ ScopedRolePermissionList: components.ScopedRolePermissionList$inboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ "resource_id": "resourceId",
+ "ScopedRolePermissionList": "scopedRolePermissionList",
+ });
+});
+
+/** @internal */
+export type SetResourceScopedRolePermissionsRequest$Outbound = {
+ resource_id: string;
+ ScopedRolePermissionList: components.ScopedRolePermissionList$Outbound;
+};
+
+/** @internal */
+export const SetResourceScopedRolePermissionsRequest$outboundSchema: z.ZodType<
+ SetResourceScopedRolePermissionsRequest$Outbound,
+ z.ZodTypeDef,
+ SetResourceScopedRolePermissionsRequest
+> = z.object({
+ resourceId: z.string(),
+ scopedRolePermissionList: components.ScopedRolePermissionList$outboundSchema,
+}).transform((v) => {
+ return remap$(v, {
+ resourceId: "resource_id",
+ scopedRolePermissionList: "ScopedRolePermissionList",
+ });
+});
+
+/**
+ * @internal
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
+ */
+export namespace SetResourceScopedRolePermissionsRequest$ {
+ /** @deprecated use `SetResourceScopedRolePermissionsRequest$inboundSchema` instead. */
+ export const inboundSchema =
+ SetResourceScopedRolePermissionsRequest$inboundSchema;
+ /** @deprecated use `SetResourceScopedRolePermissionsRequest$outboundSchema` instead. */
+ export const outboundSchema =
+ SetResourceScopedRolePermissionsRequest$outboundSchema;
+ /** @deprecated use `SetResourceScopedRolePermissionsRequest$Outbound` instead. */
+ export type Outbound = SetResourceScopedRolePermissionsRequest$Outbound;
+}
+
+export function setResourceScopedRolePermissionsRequestToJSON(
+ setResourceScopedRolePermissionsRequest:
+ SetResourceScopedRolePermissionsRequest,
+): string {
+ return JSON.stringify(
+ SetResourceScopedRolePermissionsRequest$outboundSchema.parse(
+ setResourceScopedRolePermissionsRequest,
+ ),
+ );
+}
+
+export function setResourceScopedRolePermissionsRequestFromJSON(
+ jsonString: string,
+): SafeParseResult<
+ SetResourceScopedRolePermissionsRequest,
+ SDKValidationError
+> {
+ return safeParse(
+ jsonString,
+ (x) =>
+ SetResourceScopedRolePermissionsRequest$inboundSchema.parse(
+ JSON.parse(x),
+ ),
+ `Failed to parse 'SetResourceScopedRolePermissionsRequest' from JSON`,
+ );
+}
diff --git a/src/sdk/bundles.ts b/src/sdk/bundles.ts
index 711effc..4350e9f 100644
--- a/src/sdk/bundles.ts
+++ b/src/sdk/bundles.ts
@@ -19,6 +19,7 @@ import { ClientSDK, RequestOptions } from "../lib/sdks.js";
import * as components from "../models/components/index.js";
import * as operations from "../models/operations/index.js";
import { unwrapAsync } from "../types/fp.js";
+import { PageIterator, unwrapResultIterator } from "../types/operations.js";
export class Bundles extends ClientSDK {
/**
@@ -27,8 +28,8 @@ export class Bundles extends ClientSDK {
async getBundles(
request: operations.GetBundlesRequest,
options?: RequestOptions,
- ): Promise {
- return unwrapAsync(bundlesGetBundles(
+ ): Promise> {
+ return unwrapResultIterator(bundlesGetBundles(
this,
request,
options,
@@ -97,8 +98,10 @@ export class Bundles extends ClientSDK {
async getBundleResources(
request: operations.GetBundleResourcesRequest,
options?: RequestOptions,
- ): Promise {
- return unwrapAsync(bundlesGetBundleResources(
+ ): Promise<
+ PageIterator
+ > {
+ return unwrapResultIterator(bundlesGetBundleResources(
this,
request,
options,
@@ -139,8 +142,10 @@ export class Bundles extends ClientSDK {
async getBundleGroups(
request: operations.GetBundleGroupsRequest,
options?: RequestOptions,
- ): Promise {
- return unwrapAsync(bundlesGetBundleGroups(
+ ): Promise<
+ PageIterator
+ > {
+ return unwrapResultIterator(bundlesGetBundleGroups(
this,
request,
options,
diff --git a/src/sdk/events.ts b/src/sdk/events.ts
index 0f23c76..f6ae040 100644
--- a/src/sdk/events.ts
+++ b/src/sdk/events.ts
@@ -4,9 +4,8 @@
import { eventsEvents } from "../funcs/eventsEvents.js";
import { ClientSDK, RequestOptions } from "../lib/sdks.js";
-import * as components from "../models/components/index.js";
import * as operations from "../models/operations/index.js";
-import { unwrapAsync } from "../types/fp.js";
+import { PageIterator, unwrapResultIterator } from "../types/operations.js";
export class Events extends ClientSDK {
/**
@@ -15,8 +14,8 @@ export class Events extends ClientSDK {
async events(
request: operations.EventsRequest,
options?: RequestOptions,
- ): Promise {
- return unwrapAsync(eventsEvents(
+ ): Promise> {
+ return unwrapResultIterator(eventsEvents(
this,
request,
options,
diff --git a/src/sdk/groupbindings.ts b/src/sdk/groupbindings.ts
index 639358b..9a8da48 100644
--- a/src/sdk/groupbindings.ts
+++ b/src/sdk/groupbindings.ts
@@ -11,6 +11,7 @@ import { ClientSDK, RequestOptions } from "../lib/sdks.js";
import * as components from "../models/components/index.js";
import * as operations from "../models/operations/index.js";
import { unwrapAsync } from "../types/fp.js";
+import { PageIterator, unwrapResultIterator } from "../types/operations.js";
export class GroupBindings extends ClientSDK {
/**
@@ -19,8 +20,10 @@ export class GroupBindings extends ClientSDK {
async getGroupBindings(
request: operations.GetGroupBindingsRequest,
options?: RequestOptions,
- ): Promise {
- return unwrapAsync(groupBindingsGetGroupBindings(
+ ): Promise<
+ PageIterator
+ > {
+ return unwrapResultIterator(groupBindingsGetGroupBindings(
this,
request,
options,
diff --git a/src/sdk/groups.ts b/src/sdk/groups.ts
index 0dacef3..883cc7c 100644
--- a/src/sdk/groups.ts
+++ b/src/sdk/groups.ts
@@ -33,6 +33,7 @@ import { ClientSDK, RequestOptions } from "../lib/sdks.js";
import * as components from "../models/components/index.js";
import * as operations from "../models/operations/index.js";
import { unwrapAsync } from "../types/fp.js";
+import { PageIterator, unwrapResultIterator } from "../types/operations.js";
export class Groups extends ClientSDK {
/**
@@ -41,8 +42,8 @@ export class Groups extends ClientSDK {
async getGroups(
request: operations.GetGroupsRequest,
options?: RequestOptions,
- ): Promise {
- return unwrapAsync(groupsGetGroups(
+ ): Promise> {
+ return unwrapResultIterator(groupsGetGroups(
this,
request,
options,
diff --git a/src/sdk/nonhumanidentities.ts b/src/sdk/nonhumanidentities.ts
index 9fd4f4e..f320d99 100644
--- a/src/sdk/nonhumanidentities.ts
+++ b/src/sdk/nonhumanidentities.ts
@@ -4,9 +4,8 @@
import { nonHumanIdentitiesGetNhis } from "../funcs/nonHumanIdentitiesGetNhis.js";
import { ClientSDK, RequestOptions } from "../lib/sdks.js";
-import * as components from "../models/components/index.js";
import * as operations from "../models/operations/index.js";
-import { unwrapAsync } from "../types/fp.js";
+import { PageIterator, unwrapResultIterator } from "../types/operations.js";
export class NonHumanIdentities extends ClientSDK {
/**
@@ -15,8 +14,8 @@ export class NonHumanIdentities extends ClientSDK {
async getNhis(
request: operations.GetNhisRequest,
options?: RequestOptions,
- ): Promise {
- return unwrapAsync(nonHumanIdentitiesGetNhis(
+ ): Promise> {
+ return unwrapResultIterator(nonHumanIdentitiesGetNhis(
this,
request,
options,
diff --git a/src/sdk/owners.ts b/src/sdk/owners.ts
index d3b6142..24fe4e2 100644
--- a/src/sdk/owners.ts
+++ b/src/sdk/owners.ts
@@ -14,6 +14,7 @@ import { ClientSDK, RequestOptions } from "../lib/sdks.js";
import * as components from "../models/components/index.js";
import * as operations from "../models/operations/index.js";
import { unwrapAsync } from "../types/fp.js";
+import { PageIterator, unwrapResultIterator } from "../types/operations.js";
export class Owners extends ClientSDK {
/**
@@ -22,8 +23,8 @@ export class Owners extends ClientSDK {
async getOwners(
request: operations.GetOwnersRequest,
options?: RequestOptions,
- ): Promise {
- return unwrapAsync(ownersGetOwners(
+ ): Promise> {
+ return unwrapResultIterator(ownersGetOwners(
this,
request,
options,
diff --git a/src/sdk/requests.ts b/src/sdk/requests.ts
index e416865..26c0b71 100644
--- a/src/sdk/requests.ts
+++ b/src/sdk/requests.ts
@@ -4,12 +4,14 @@
import { requestsApproveRequest } from "../funcs/requestsApproveRequest.js";
import { requestsCreateRequest } from "../funcs/requestsCreateRequest.js";
+import { requestsGetRequest } from "../funcs/requestsGetRequest.js";
import { requestsGetRequests } from "../funcs/requestsGetRequests.js";
import { requestsGetRequestsRelay } from "../funcs/requestsGetRequestsRelay.js";
import { ClientSDK, RequestOptions } from "../lib/sdks.js";
import * as components from "../models/components/index.js";
import * as operations from "../models/operations/index.js";
import { unwrapAsync } from "../types/fp.js";
+import { PageIterator, unwrapResultIterator } from "../types/operations.js";
export class Requests extends ClientSDK {
/**
@@ -18,8 +20,8 @@ export class Requests extends ClientSDK {
async getRequests(
request: operations.GetRequestsRequest,
options?: RequestOptions,
- ): Promise {
- return unwrapAsync(requestsGetRequests(
+ ): Promise> {
+ return unwrapResultIterator(requestsGetRequests(
this,
request,
options,
@@ -42,6 +44,8 @@ export class Requests extends ClientSDK {
/**
* Returns a paginated list of requests using Relay-style cursor pagination.
+ *
+ * @deprecated method: This will be removed in a future release, please migrate away from it as soon as possible.
*/
async getRequestsRelay(
request: operations.GetRequestsRelayRequest,
@@ -54,6 +58,20 @@ export class Requests extends ClientSDK {
));
}
+ /**
+ * Returns a request by ID.
+ */
+ async getRequest(
+ request: operations.GetRequestRequest,
+ options?: RequestOptions,
+ ): Promise {
+ return unwrapAsync(requestsGetRequest(
+ this,
+ request,
+ options,
+ ));
+ }
+
/**
* Approve an access request
*/
diff --git a/src/sdk/resources.ts b/src/sdk/resources.ts
index 62d813f..e58f662 100644
--- a/src/sdk/resources.ts
+++ b/src/sdk/resources.ts
@@ -14,6 +14,7 @@ import { resourcesGetResourceNhis } from "../funcs/resourcesGetResourceNhis.js";
import { resourcesGetResourceReviewers } from "../funcs/resourcesGetResourceReviewers.js";
import { resourcesGetResourceReviewerStages } from "../funcs/resourcesGetResourceReviewerStages.js";
import { resourcesGetResources } from "../funcs/resourcesGetResources.js";
+import { resourcesGetResourceScopedRolePermissions } from "../funcs/resourcesGetResourceScopedRolePermissions.js";
import { resourcesGetResourceTags } from "../funcs/resourcesGetResourceTags.js";
import { resourcesGetResourceUser } from "../funcs/resourcesGetResourceUser.js";
import { resourcesGetResourceUsers } from "../funcs/resourcesGetResourceUsers.js";
@@ -22,6 +23,7 @@ import { resourcesResourceUserAccessStatusRetrieve } from "../funcs/resourcesRes
import { resourcesSetResourceMessageChannels } from "../funcs/resourcesSetResourceMessageChannels.js";
import { resourcesSetResourceReviewers } from "../funcs/resourcesSetResourceReviewers.js";
import { resourcesSetResourceReviewerStages } from "../funcs/resourcesSetResourceReviewerStages.js";
+import { resourcesSetResourceScopedRolePermissions } from "../funcs/resourcesSetResourceScopedRolePermissions.js";
import { resourcesSetResourceVisibility } from "../funcs/resourcesSetResourceVisibility.js";
import { resourcesUpdateResources } from "../funcs/resourcesUpdateResources.js";
import { resourcesUpdateResourceUser } from "../funcs/resourcesUpdateResourceUser.js";
@@ -29,6 +31,7 @@ import { ClientSDK, RequestOptions } from "../lib/sdks.js";
import * as components from "../models/components/index.js";
import * as operations from "../models/operations/index.js";
import { unwrapAsync } from "../types/fp.js";
+import { PageIterator, unwrapResultIterator } from "../types/operations.js";
export class Resources extends ClientSDK {
/**
@@ -37,8 +40,10 @@ export class Resources extends ClientSDK {
async getResources(
request: operations.GetResourcesRequest,
options?: RequestOptions,
- ): Promise {
- return unwrapAsync(resourcesGetResources(
+ ): Promise<
+ PageIterator
+ > {
+ return unwrapResultIterator(resourcesGetResources(
this,
request,
options,
@@ -354,4 +359,32 @@ export class Resources extends ClientSDK {
options,
));
}
+
+ /**
+ * Returns all the scoped role permissions that apply to the given resource. Only OPAL_SCOPED_ROLE resource type supports this field.
+ */
+ async getResourceScopedRolePermissions(
+ request: operations.GetResourceScopedRolePermissionsRequest,
+ options?: RequestOptions,
+ ): Promise {
+ return unwrapAsync(resourcesGetResourceScopedRolePermissions(
+ this,
+ request,
+ options,
+ ));
+ }
+
+ /**
+ * Sets all the scoped role permissions on an OPAL_SCOPED_ROLE resource.
+ */
+ async setResourceScopedRolePermissions(
+ request: operations.SetResourceScopedRolePermissionsRequest,
+ options?: RequestOptions,
+ ): Promise {
+ return unwrapAsync(resourcesSetResourceScopedRolePermissions(
+ this,
+ request,
+ options,
+ ));
+ }
}
diff --git a/src/sdk/scopedrolepermissions.ts b/src/sdk/scopedrolepermissions.ts
new file mode 100644
index 0000000..952251e
--- /dev/null
+++ b/src/sdk/scopedrolepermissions.ts
@@ -0,0 +1,40 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+import { resourcesGetResourceScopedRolePermissions } from "../funcs/resourcesGetResourceScopedRolePermissions.js";
+import { resourcesSetResourceScopedRolePermissions } from "../funcs/resourcesSetResourceScopedRolePermissions.js";
+import { ClientSDK, RequestOptions } from "../lib/sdks.js";
+import * as components from "../models/components/index.js";
+import * as operations from "../models/operations/index.js";
+import { unwrapAsync } from "../types/fp.js";
+
+export class ScopedRolePermissions extends ClientSDK {
+ /**
+ * Returns all the scoped role permissions that apply to the given resource. Only OPAL_SCOPED_ROLE resource type supports this field.
+ */
+ async getResourceScopedRolePermissions(
+ request: operations.GetResourceScopedRolePermissionsRequest,
+ options?: RequestOptions,
+ ): Promise {
+ return unwrapAsync(resourcesGetResourceScopedRolePermissions(
+ this,
+ request,
+ options,
+ ));
+ }
+
+ /**
+ * Sets all the scoped role permissions on an OPAL_SCOPED_ROLE resource.
+ */
+ async setResourceScopedRolePermissions(
+ request: operations.SetResourceScopedRolePermissionsRequest,
+ options?: RequestOptions,
+ ): Promise {
+ return unwrapAsync(resourcesSetResourceScopedRolePermissions(
+ this,
+ request,
+ options,
+ ));
+ }
+}
diff --git a/src/sdk/sdk.ts b/src/sdk/sdk.ts
index ae4582a..c38332a 100644
--- a/src/sdk/sdk.ts
+++ b/src/sdk/sdk.ts
@@ -17,6 +17,7 @@ import { OnCallSchedules } from "./oncallschedules.js";
import { Owners } from "./owners.js";
import { Requests } from "./requests.js";
import { Resources } from "./resources.js";
+import { ScopedRolePermissions } from "./scopedrolepermissions.js";
import { Sessions } from "./sessions.js";
import { Tags } from "./tags.js";
import { Uars } from "./uars.js";
@@ -80,6 +81,13 @@ export class OpalMcp extends ClientSDK {
return (this._nonHumanIdentities ??= new NonHumanIdentities(this._options));
}
+ private _scopedRolePermissions?: ScopedRolePermissions;
+ get scopedRolePermissions(): ScopedRolePermissions {
+ return (this._scopedRolePermissions ??= new ScopedRolePermissions(
+ this._options,
+ ));
+ }
+
private _sessions?: Sessions;
get sessions(): Sessions {
return (this._sessions ??= new Sessions(this._options));
diff --git a/src/sdk/tags.ts b/src/sdk/tags.ts
index a463c1e..b69fbea 100644
--- a/src/sdk/tags.ts
+++ b/src/sdk/tags.ts
@@ -17,6 +17,7 @@ import { ClientSDK, RequestOptions } from "../lib/sdks.js";
import * as components from "../models/components/index.js";
import * as operations from "../models/operations/index.js";
import { unwrapAsync } from "../types/fp.js";
+import { PageIterator, unwrapResultIterator } from "../types/operations.js";
export class Tags extends ClientSDK {
/**
@@ -81,8 +82,8 @@ export class Tags extends ClientSDK {
async getTags(
request: operations.GetTagsRequest,
options?: RequestOptions,
- ): Promise {
- return unwrapAsync(tagsGetTags(
+ ): Promise> {
+ return unwrapResultIterator(tagsGetTags(
this,
request,
options,
diff --git a/src/sdk/uars.ts b/src/sdk/uars.ts
index 9638d45..80fccf1 100644
--- a/src/sdk/uars.ts
+++ b/src/sdk/uars.ts
@@ -9,6 +9,7 @@ import { ClientSDK, RequestOptions } from "../lib/sdks.js";
import * as components from "../models/components/index.js";
import * as operations from "../models/operations/index.js";
import { unwrapAsync } from "../types/fp.js";
+import { PageIterator, unwrapResultIterator } from "../types/operations.js";
export class Uars extends ClientSDK {
/**
@@ -17,8 +18,8 @@ export class Uars extends ClientSDK {
async getUARs(
request: operations.GetUARsRequest,
options?: RequestOptions,
- ): Promise {
- return unwrapAsync(uarsGetUARs(
+ ): Promise> {
+ return unwrapResultIterator(uarsGetUARs(
this,
request,
options,
diff --git a/src/sdk/users.ts b/src/sdk/users.ts
index 1306f0d..3c2a5fe 100644
--- a/src/sdk/users.ts
+++ b/src/sdk/users.ts
@@ -9,6 +9,7 @@ import { ClientSDK, RequestOptions } from "../lib/sdks.js";
import * as components from "../models/components/index.js";
import * as operations from "../models/operations/index.js";
import { unwrapAsync } from "../types/fp.js";
+import { PageIterator, unwrapResultIterator } from "../types/operations.js";
export class Users extends ClientSDK {
/**
@@ -43,8 +44,8 @@ export class Users extends ClientSDK {
async getUsers(
request: operations.GetUsersRequest,
options?: RequestOptions,
- ): Promise {
- return unwrapAsync(usersGetUsers(
+ ): Promise> {
+ return unwrapResultIterator(usersGetUsers(
this,
request,
options,
diff --git a/src/types/constdatetime.ts b/src/types/constdatetime.ts
index c0a4409..eeff4dd 100644
--- a/src/types/constdatetime.ts
+++ b/src/types/constdatetime.ts
@@ -11,5 +11,5 @@ export function constDateTime(
return (
typeof v === "string" && new Date(v).getTime() === new Date(val).getTime()
);
- }, `Value must be equivelant to ${val}`);
+ }, `Value must be equivalent to ${val}`);
}
diff --git a/tsconfig.json b/tsconfig.json
index 94d81a3..3955fbc 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -36,6 +36,6 @@
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
- "include": ["src"],
- "exclude": ["node_modules"]
+ "include": ["src/**/*"],
+ "exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.spec.ts"]
}