Skip to content

Release v1.3.0: Regenerate client from latest OpenAPI spec#6

Open
kwent wants to merge 7 commits intomasterfrom
features/regenerate-sdk-v1
Open

Release v1.3.0: Regenerate client from latest OpenAPI spec#6
kwent wants to merge 7 commits intomasterfrom
features/regenerate-sdk-v1

Conversation

@kwent
Copy link
Copy Markdown
Member

@kwent kwent commented Apr 22, 2026

What

  • Scope: Full SDK regeneration from latest Rootly API v1 OpenAPI spec
  • Risk: Low — auto-generated code with existing nullable enum fix applied
  • Changes: 2,547 files changed (64K insertions, 33K deletions)

Why

The Python SDK was out of date with the latest Rootly API v1 spec, missing new endpoints and models added since v1.2.1.

Changes

New API Endpoints

  • API Keys — create, read, update, delete, list, rotate
  • SLAs — create, read, update, delete, list
  • On-Calls — list on-call users
  • On-Call Pay Reports — create, read, update, delete, list
  • Meeting Recordings — read, list
  • Catalog Checklist Templates — create, read, update, delete, list
  • Catalog Entity Checklists — read, list
  • Catalog Properties — create, read, update, delete, list (replaces Catalog Fields)
  • Catalog property endpoints for causes, environments, functionalities, incident types, services, and teams

New Features

  • Incident actions: detach_from_parent_incident, unmark_as_duplicate_incident
  • Workflow task types: PageJsmopsOnCallRespondersTaskParams, CreateJsmopsAlertTaskParams
  • Role permission types: catalogs, communication, edge connectors, incident communication, paging, SLAs, sub-statuses
  • Alert trigger params: alert condition urgency support
  • Status page: CNAME records and section ordering
  • GitHub issue task params: issue type and labels
  • Zoom meeting: global dial-in numbers

Breaking Changes

  • Catalog Fields renamed to Catalog Properties across all endpoints and models

Fixes

  • Applied nullable enum fix to 1,350 model files via tools/fix_nullable_enums.py
  • Restored pyproject.toml settings overwritten by generator (version, Python ≥3.9, httpx ≥0.20.0, dev deps)

Known Issues

  • Escalation path endpoints still not generated due to upstream OpenAPI schema issues with union types in rules_item (fix pending in rootlyhq/rootly#14888)

Rollback/Revert Plan

  • Revert the commit (no data migrations, no runtime changes)

🤖 Generated with Claude Code

kwent and others added 7 commits April 21, 2026 23:05
Why: The Python SDK was out of date with the latest Rootly API v1 spec,
missing new endpoints and models added since v1.2.1.

- Regenerate client from latest OpenAPI specification
- Apply nullable enum fix to 1,350 model files
- Add new endpoints: API Keys, SLAs, On-Calls, On-Call Pay Reports,
  Meeting Recordings, Catalog Checklist Templates, Catalog Entity
  Checklists, Catalog Properties
- Add new incident actions: detach_from_parent, unmark_as_duplicate
- Add new workflow task types: JSM Ops paging and alerts
- Add new role permission types (catalogs, communication, SLAs, etc.)
- BREAKING: Catalog Fields renamed to Catalog Properties
- Restore pyproject.toml settings overwritten by generator
- Update CHANGELOG.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
The real issue was not anyOf vs oneOf — openapi-python-client cannot
handle inline oneOf variants (objects with properties/required but no
$ref). Additionally, the upstream spec has urgency_ids arrays missing
items definitions.

Added tools/fix_openapi_escalation_paths.py that:
- Extracts inline rule variants into named component schemas
- Fixes arrays missing items definitions
- Replaces inline definitions with $ref pointers

Escalation path endpoints now fully generate with typed rule models:
alert_urgency, working_hour, json_path, field, service, deferral_window.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Upstream spec now includes items: {type: "string"} on urgency_ids
arrays. Regenerated output is identical since fix_openapi_escalation_paths.py
already patched this, but swagger.json no longer needs to be committed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Upstream spec now correctly defines items on all array properties.
Only the inline oneOf → $ref extraction is still needed (client bug).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Generated code uses PEP 604 union syntax (str | None) via ruff UP rules.
No from __future__ import annotations in generated files, so 3.9 would
fail at runtime. CI test matrix already starts at 3.10.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
New fields from upstream spec changes:
- filter[notification_types] on /v1/oncalls endpoint
- calling_tree_enabled on live call router
- time_zone, csv_file_url, xlsx_file_url on on-call pay reports
- links.last now nullable

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
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.

2 participants