Skip to content

Fix org-contacts UUID format and add OrgID troubleshooting guidance#4

Closed
mycollablab wants to merge 4 commits into
Cloverhound:mainfrom
mycollablab:fix/orgid-and-skill-improvements
Closed

Fix org-contacts UUID format and add OrgID troubleshooting guidance#4
mycollablab wants to merge 4 commits into
Cloverhound:mainfrom
mycollablab:fix/orgid-and-skill-improvements

Conversation

@mycollablab

@mycollablab mycollablab commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Fix org-contacts commands to use UUID format for orgId — the Admin /contacts/organizations/ API requires UUID, not base64. Root cause was a blanket rule in codegen that mapped all non-CC commands to base64. Added a path-based exception for this endpoint.
  • Add OrgID Format Troubleshooting section to skill/SKILL.md explaining the base64 vs UUID distinction and advising users to try the other format if a 400/404 is returned on an org-scoped endpoint.
  • Add 429 rate-limit retry to the HTTP client: reads Retry-After header, defaults to 5s, retries up to --max-retry times (default 3) with a --max-retry-timer ceiling (default 60s). If either limit would be exceeded before the next retry, the command exits immediately with a clear throttling error stating the wait time.

New global flags

Flag Default Description
--max-retry 3 Max 429 retry attempts before giving up
--max-retry-timer 60 Max total seconds to wait across all retries (0 = unlimited)

Test plan

  • Run webex cc site list and confirm orgid auto-populates from login
  • Run webex admin org-contacts list and confirm it uses UUID format
  • Pass a base64 org ID to a CC command and confirm auto-decode works
  • Pass --max-retry=0 and confirm a 429 response exits immediately with an error message
  • Confirm --max-retry-timer prevents a retry that would exceed the budget

🤖 Generated with Claude Code

mycollablab and others added 4 commits June 29, 2026 10:09
The /contacts/organizations/{orgId}/* API requires UUID format, not the
base64 format used by most other Admin endpoints. The codegen was sending
base64 because the blanket --org-id → base64 rule in root.go applied to
all non-CC commands indiscriminately.

Fix: extend the orgId normalization condition in generate_cli.py to also
apply UUID handling (--orgid flag, {orgid} path) for any endpoint whose
path contains /contacts/organizations/, matching the explicit Postman note
"orgId used in path are the org UUIDs." All 7 org-contacts commands now
use --orgid and auto-receive a decoded UUID from root.go.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Documents the CC=UUID vs admin/calling=base64 rule and tells the model
to try the other format when an API returns a 400/404 org-related error.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
On a 429 response the client now reads the Retry-After header (seconds),
sleeps that long, and retries up to 3 times. Falls back to 5 seconds if
the header is absent or unparseable. Prints a message to stderr so the
user knows why the command is pausing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds two new persistent flags to control retry behavior on HTTP 429 responses:
- --max-retry (default 3): max number of retry attempts before giving up
- --max-retry-timer (default 60s): max total seconds allowed across all retries

If either limit would be exceeded before the next retry, the command exits
immediately with a clear error message stating the throttle condition and how
long to wait before retrying, rather than silently sleeping through it.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@mycollablab mycollablab deleted the fix/orgid-and-skill-improvements branch June 29, 2026 14:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant