René's URL Explorer Experiment


Title: feat(gitlab): add access, membership, and user-admin operations by mzxchandra · Pull Request #5707 · simstudioai/sim · GitHub

Open Graph Title: feat(gitlab): add access, membership, and user-admin operations by mzxchandra · Pull Request #5707 · simstudioai/sim

X Title: feat(gitlab): add access, membership, and user-admin operations by mzxchandra · Pull Request #5707 · simstudioai/sim

Description: Summary Adds access / membership / user-administration operations to the existing GitLab block so teams can build native access-provisioning workflows (IT help-desk auto-provisioning) without dropping to a raw API block and hand-rolling auth. This extends the block rather than splitting it — the admin boundary is handled by the existing per-operation access-control feature, not a second block. New operations (27 tools): Members: list (/members/all by default, direct-only opt-in), add, update access level, remove Invitations: invite by email, list, update, revoke Access requests: list, approve (with access level), deny SAML group links: list (group-scoped), add, delete Users: search (resolve email → user id), and admin ops — create, update, delete, block/unblock, deactivate/activate, ban/unban, approve/reject signup, delete auth identity All resource-scoped ops work against projects or groups via a Resource Type selector. Every tool reuses the existing getGitLabApiBase() host resolution + SSRF guard, and a new shared getGitLabResourcePath() helper. Design details: access_level is a named dropdown (Guest…Owner, full official enum) that serializes to the GitLab integer — no free-text integer guessing on a permissions call. expires_at is a first-class field so time-boxed grants are the default. Read defaults to /members/all (includes inherited members) to avoid false "no access" answers, with a direct-only opt-in. A duplicate-member add (409) is treated as a soft success so provisioning workflows are re-runnable. Configurable self-managed base URL (reuses the existing host param + SSRF guard). member_role_id passthrough for Ultimate custom roles. list_saml_group_links ships in the first cut so a workflow can detect SAML-governed groups before choosing an IdP-side vs GitLab-native member add. Type of Change New feature Testing Unit tests (Vitest) cover the risk-bearing paths flagged in the design: access_level enum→integer coercion, /members/all default vs direct-only, the 409-duplicate-add soft success, invitation per-email error handling, user-status-action response parsing, and getGitLabResourcePath. Full GitLab tool/block suite plus the registry-consistency tests (tools/index.test.ts, blocks/blocks.test.ts) pass: 202 tests green. tsc --noEmit and Biome are clean. Reviewers should focus on: the config.params coercions in blocks/blocks/gitlab.ts (enum→int, id coercion happens at execution, never in config.tool), and the 409 handling in tools/gitlab/add_member.ts. Not covered by automated tests: live end-to-end against a real GitLab instance (needs a sandbox + PAT; admin ops need an admin_mode token) — recommended as a manual smoke test before relying on the admin operations. Checklist Code follows project style guidelines Self-reviewed my changes Tests added/updated and passing No new warnings introduced I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)

Open Graph Description: Summary Adds access / membership / user-administration operations to the existing GitLab block so teams can build native access-provisioning workflows (IT help-desk auto-provisioning) without dropp...

X Description: Summary Adds access / membership / user-administration operations to the existing GitLab block so teams can build native access-provisioning workflows (IT help-desk auto-provisioning) without dropp...

Opengraph URL: https://github.com/simstudioai/sim/pull/5707

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:68bf1e3e-2c2e-2958-50e1-42fd01c6f2ff
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idA712:298B1D:9BBB57:DED79D:6A63803C
html-safe-nonce35a1710b925ac00f3523e262e9aa0483bd8900609de558af190ca39fa3cfafe6
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBNzEyOjI5OEIxRDo5QkJCNTc6REVENzlEOjZBNjM4MDNDIiwidmlzaXRvcl9pZCI6IjgyOTQzOTQ4NjE5MDAyMzQ4MTMiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac5cf6531e6cb1ee13030d88e89e17a091b5708441e950102ea022ee97a71b2352
hovercard-subject-tagpull_request:4067166413
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/simstudioai/sim/pull/5707/files
twitter:imagehttps://avatars.githubusercontent.com/u/129460234?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/129460234?s=400&v=4
og:image:altSummary Adds access / membership / user-administration operations to the existing GitLab block so teams can build native access-provisioning workflows (IT help-desk auto-provisioning) without dropp...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Nonee4fb64aef87da454ec25b158147f7f5f14aef29216e5ca1612c2e48faa599d1f
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/simstudioai/sim git https://github.com/simstudioai/sim.git
octolytics-dimension-user_id199344406
octolytics-dimension-user_loginsimstudioai
octolytics-dimension-repository_id912559512
octolytics-dimension-repository_nwosimstudioai/sim
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id912559512
octolytics-dimension-repository_network_root_nwosimstudioai/sim
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releasee839936ba5faffb9c836dda1cf4729d50c88a32e
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/simstudioai/sim/pull/5707/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fsimstudioai%2Fsim%2Fpull%2F5707%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
Code QualityEnforce quality at mergehttps://github.com/features/code-quality
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fsimstudioai%2Fsim%2Fpull%2F5707%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=simstudioai%2Fsim
Reloadhttps://github.com/simstudioai/sim/pull/5707/files
Reloadhttps://github.com/simstudioai/sim/pull/5707/files
Reloadhttps://github.com/simstudioai/sim/pull/5707/files
Please reload this pagehttps://github.com/simstudioai/sim/pull/5707/files
simstudioai https://github.com/simstudioai
simhttps://github.com/simstudioai/sim
Notifications https://github.com/login?return_to=%2Fsimstudioai%2Fsim
Fork 3.7k https://github.com/login?return_to=%2Fsimstudioai%2Fsim
Star 29.2k https://github.com/login?return_to=%2Fsimstudioai%2Fsim
Code https://github.com/simstudioai/sim
Issues 111 https://github.com/simstudioai/sim/issues
Pull requests 121 https://github.com/simstudioai/sim/pulls
Actions https://github.com/simstudioai/sim/actions
Projects https://github.com/simstudioai/sim/projects
Security and quality 0 https://github.com/simstudioai/sim/security
Insights https://github.com/simstudioai/sim/pulse
Code https://github.com/simstudioai/sim
Issues https://github.com/simstudioai/sim/issues
Pull requests https://github.com/simstudioai/sim/pulls
Actions https://github.com/simstudioai/sim/actions
Projects https://github.com/simstudioai/sim/projects
Security and quality https://github.com/simstudioai/sim/security
Insights https://github.com/simstudioai/sim/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fsimstudioai%2Fsim%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fsimstudioai%2Fsim%2Fissues%2Fnew%2Fchoose
mzxchandrahttps://github.com/mzxchandra
simstudioai:staginghttps://github.com/simstudioai/sim/tree/staging
mzxchandra:feature/sim-817https://github.com/mzxchandra/sim/tree/feature/sim-817
Conversation 17 https://github.com/simstudioai/sim/pull/5707
Commits 7 https://github.com/simstudioai/sim/pull/5707/commits
Checks 19 https://github.com/simstudioai/sim/pull/5707/checks
Files changed https://github.com/simstudioai/sim/pull/5707/files
Please reload this pagehttps://github.com/simstudioai/sim/pull/5707/files
feat(gitlab): add access, membership, and user-admin operations https://github.com/simstudioai/sim/pull/5707/files#top
Show all changes 7 commits https://github.com/simstudioai/sim/pull/5707/files
0c0ceb8 feat(gitlab): add access, membership, and user-admin tools mzxchandra Jul 16, 2026 https://github.com/simstudioai/sim/pull/5707/commits/0c0ceb8da3d0ec2081320950000575c72c3300dd
12c6be5 feat(gitlab): wire access operations into the GitLab block mzxchandra Jul 16, 2026 https://github.com/simstudioai/sim/pull/5707/commits/12c6be5f02fc9c2722acc2e1170d0c9a62f4a519
933f4d2 test(gitlab): cover access operations mzxchandra Jul 16, 2026 https://github.com/simstudioai/sim/pull/5707/commits/933f4d2b936a804ed104096a9f803a7e502d3eb3
5907a44 docs(gitlab): document access and membership operations mzxchandra Jul 16, 2026 https://github.com/simstudioai/sim/pull/5707/commits/5907a44f4e8201e7d6aa538c0687c3b22cdde5d7
a19b09f Update apps/sim/blocks/blocks/gitlab.ts mzxchandra Jul 16, 2026 https://github.com/simstudioai/sim/pull/5707/commits/a19b09f18c2e82c5ce406ab64b1ae06e55a92dcd
5bf4943 fix(gitlab): address review findings mzxchandra Jul 16, 2026 https://github.com/simstudioai/sim/pull/5707/commits/5bf49434edc3ce904dc23b4b8b4a28bfd1d32578
d41d8f1 fix(gitlab): make update-invitation access level optional mzxchandra Jul 16, 2026 https://github.com/simstudioai/sim/pull/5707/commits/d41d8f11182827763744f2af1b5a48254143d528
Clear filters https://github.com/simstudioai/sim/pull/5707/files
Please reload this pagehttps://github.com/simstudioai/sim/pull/5707/files
Please reload this pagehttps://github.com/simstudioai/sim/pull/5707/files
gitlab.mdx https://github.com/simstudioai/sim/pull/5707/files#diff-f6a590635ce1e5393b84221ebe0c409ab7a17567afa5f8d23b3e98f86fa26d77
gitlab.test.ts https://github.com/simstudioai/sim/pull/5707/files#diff-69b0409ec239470b3a101d0570463727dac159f3e0427874f1407c304423d488
gitlab.ts https://github.com/simstudioai/sim/pull/5707/files#diff-12fb55434b4907b426d59ab53402b08d0756fed5ccbebda0db94509456e65123
access.test.ts https://github.com/simstudioai/sim/pull/5707/files#diff-a91220a66cc045a83b84473153f54f2aeee70de2e902f3b03c30464a956946c4
add_member.ts https://github.com/simstudioai/sim/pull/5707/files#diff-7eeae4cdb1b4be0fd7ff64aae4495c19a39c720f642ed0be2a26c53c6c5f1dca
add_saml_group_link.ts https://github.com/simstudioai/sim/pull/5707/files#diff-10f26d32f7194212671f2aba62dbb5a8b29630faf89402a9afd40762325c92de
approve_access_request.ts https://github.com/simstudioai/sim/pull/5707/files#diff-9f7747eee111248b6ed74dd4ba136bc15267c23153bc611f1a6f72b5b6a81eee
create_user.ts https://github.com/simstudioai/sim/pull/5707/files#diff-2b36e3e1eb159902236f2ffab09fa24132236f93179c800b53c092465fb76c3d
delete_saml_group_link.ts https://github.com/simstudioai/sim/pull/5707/files#diff-b67d832d9756b0f287167158b3dde70db8b9af9885b82c12d4a40fccc5ae7601
delete_user.ts https://github.com/simstudioai/sim/pull/5707/files#diff-49ced701a5d57e9c2929be310c2fccdd32c93a2825a718ea68b47dcd6ea2eb97
delete_user_identity.ts https://github.com/simstudioai/sim/pull/5707/files#diff-de91bfe4582e30cf1a419197c36db2bf5465af6e8da9ddca0f3d84bf96efcdcf
deny_access_request.ts https://github.com/simstudioai/sim/pull/5707/files#diff-864a493074a7252669518b86e70a9642d853140a13a1e94dedf8ce8ecb73038a
index.ts https://github.com/simstudioai/sim/pull/5707/files#diff-ec41157171aef8adba1023233b4c8ebd4c22f094835439829e25545293d022b1
invite_member.ts https://github.com/simstudioai/sim/pull/5707/files#diff-52794b168b1d602131aae20061d9614e674c7dfabba3c6e49e032e14dadf6052
list_access_requests.ts https://github.com/simstudioai/sim/pull/5707/files#diff-de6a2fc4b2e89115c468ba6f8130dc9e0fcb91914985d892160f8a1c6156715b
list_invitations.ts https://github.com/simstudioai/sim/pull/5707/files#diff-f6faf2ebfa7af41535b4ebb902ff7d578c37de8db1eb654263d8c80edd601b1f
list_members.ts https://github.com/simstudioai/sim/pull/5707/files#diff-990fe900ba2bfb6dee851af6ae4d2fdf1147689fe75bdded315a459f6880139f
list_saml_group_links.ts https://github.com/simstudioai/sim/pull/5707/files#diff-2ca4b1854d528dfff50df11d286e4b99ec2859523421290740d9ca03f08d219a
remove_member.ts https://github.com/simstudioai/sim/pull/5707/files#diff-49fa4aeb1d73195e3d79dd70cd1ae66865ebe72e1e2ec4c0aa9cc8e2c5a32385
revoke_invitation.ts https://github.com/simstudioai/sim/pull/5707/files#diff-60f73d2d15454d7899127e66d0dd6ff415dfa4f8df5a3ccf5733c33a99c9b7fb
search_users.ts https://github.com/simstudioai/sim/pull/5707/files#diff-c625c1c8fa4c81b7578f53695e091a951cd799493d18b9ef6b09def9ad3530a4
types.ts https://github.com/simstudioai/sim/pull/5707/files#diff-fef93da10e0f9d681cc260a6e14946e31517aaa38be7aaa728290d56a3701dd6
update_invitation.ts https://github.com/simstudioai/sim/pull/5707/files#diff-01aa3d11990c993a04fbd80056a2edf38527a096b3076191a5d01a2abe106b1d
update_member.ts https://github.com/simstudioai/sim/pull/5707/files#diff-394a00419ab0da94337843f96698e2b4798a7ebbc3a2ddaa5cbbd9befa9b6471
update_user.ts https://github.com/simstudioai/sim/pull/5707/files#diff-cdd225817cef244cd72dfe755b474d89f78308f0895e47f1b9195c8980ac9543
user_status_actions.ts https://github.com/simstudioai/sim/pull/5707/files#diff-16735ece6044da4bcf511e410e518909081fc17f0ae4444fddf11e51f3cbe9d4
utils.test.ts https://github.com/simstudioai/sim/pull/5707/files#diff-94b4d320d776f6600e9cfb57ec8a7161d3ed1677962daaed0fd91b622f1cc380
utils.ts https://github.com/simstudioai/sim/pull/5707/files#diff-81b157f4d4419224aaede5d6c1db7065801323bee09ff200327fca103c86295a
registry.ts https://github.com/simstudioai/sim/pull/5707/files#diff-a05e54887bf05477726b00df4183dd4a3fa0fd1f82b867bbf156e1b6a6d7e3fa
apps/docs/content/docs/en/integrations/gitlab.mdxhttps://github.com/simstudioai/sim/pull/5707/files#diff-f6a590635ce1e5393b84221ebe0c409ab7a17567afa5f8d23b3e98f86fa26d77
View file https://github.com/mzxchandra/sim/blob/d41d8f11182827763744f2af1b5a48254143d528/apps/docs/content/docs/en/integrations/gitlab.mdx
Open in desktop https://desktop.github.com
Please reload this pagehttps://github.com/simstudioai/sim/pull/5707/files
apps/sim/blocks/blocks/gitlab.test.tshttps://github.com/simstudioai/sim/pull/5707/files#diff-69b0409ec239470b3a101d0570463727dac159f3e0427874f1407c304423d488
View file https://github.com/mzxchandra/sim/blob/d41d8f11182827763744f2af1b5a48254143d528/apps/sim/blocks/blocks/gitlab.test.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/simstudioai/sim/pull/5707/{{ revealButtonHref }}
Please reload this pagehttps://github.com/simstudioai/sim/pull/5707/files
Please reload this pagehttps://github.com/simstudioai/sim/pull/5707/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.