feat(org): customer/org/access-token write tools - #191
Merged
Merged
Conversation
Adds the organization write surface (the module was read-only before):
- gandi_org_create_customer (POST /organizations/{id}/customers)
- gandi_org_update_customer (PATCH /organizations/{id}/customers/{cid})
- gandi_org_update_organization (PATCH /organizations/{id})
- gandi_org_renew_access_token (POST /access-tokens)
Adds register_organization_write_tools and wires it into register_write_tools
so server.py gates it behind GANDI_MODE=readwrite like every other write area.
Tool names use the repo's gandi_org_ prefix (not the issue's gandi_organization_).
Bodies use dict pass-through (repo convention). Client methods use _seg();
tools call assert_readwrite. Adds respx tests and regenerates the schema
matrix. Deferred per issue: create/delete org, run-action, delete-customer.
Cassette recording deferred to #102.
Closes #166
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
# Conflicts: # docs/tool-schema-matrix.md
This was referenced Jun 23, 2026
millsmillsymills
added a commit
that referenced
this pull request
Jun 24, 2026
Add TestWriteToolRuntimeGate, parametrized over the comment (#192) and organization (#191) non-purchasing write tools, asserting each handler raises ToolError ("read-only mode") when GANDI_MODE=readonly. Closes the runtime-gate coverage gap for these merged write tools; no source change. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the organization write surface — the module was read-only before this PR.
gandi_org_create_customer/organizations/{id}/customersgandi_org_update_customer/organizations/{id}/customers/{cid}gandi_org_update_organization/organizations/{id}gandi_org_renew_access_token/access-tokensregister_organization_write_tools, wired intoregister_write_tools, soserver.pygates it behindGANDI_MODE=readwritelike every other write area (defense-in-depth: handlers also callassert_readwrite).gandi_org_prefix rather than the issue'sgandi_organization_*, to match the existing read tools.dictpass-through (repo convention). Client methods use_seg().respxtests cover happy/error/_seg. Schema matrix regenerated.Deferred per issue: create/delete organization, run-action, delete-customer. Cassette recording deferred to #102.
Test plan
pytest tests/ -m "not live"— 658 passed, 1 skippedruff/ty checkcleanconsistency-check audit— MUST 0 failCloses #166
🤖 Generated with Claude Code