ci: Add nightly model regeneration from the published OpenAPI spec (#983)
Replaces the apify-docs-triggered model regeneration with a nightly job, and records which published OpenAPI specification the generated models came from. ## What changes - **`on_schedule_regenerate_models.yaml`** - nightly at 02:00 UTC plus manual dispatch. Regenerates on master and opens a pull request when the models change. `manual_regenerate_models.yaml` is deleted. - **`scripts/openapi_spec.py`** - downloads and validates the published specification into git-ignored `tmp/` (both codegen passes read that one copy), then records its `info.version` in `pyproject.toml` under `[tool.apify.openapi-spec]`. The specification itself is not committed. - **`_models.py`** loses the `Plan.available_proxy_groups` docstring - accumulated codegen drift from the `datamodel-code-generator` bumps (#968, #975), not a specification change. ## Why The old workflow was dispatched by apify-docs and checked out a permanent, never-rebased branch *before* regenerating, so it generated with that branch's stale tooling. In #979 that produced `_literals.py` in the pre-#941 closed `Literal[...]` form; merging it would have silently reverted the enum relaxation. It also opened with a `TODO` title that blocked `pr-title-check` - a design that needs human action to become mergeable, which is what let #979 rot for 20 days while the same spec changes were landed by hand (#923, #936, #947, #960, #974). The nightly job always generates on master and rebuilds its `ci/regenerate-models` branch from master instead of appending, so the diff is always "current spec vs current master" and can't resurrect a stale generated file. It opens with a mergeable `chore:` title; reviewers retitle to `fix:`/`feat:` when the diff is user-facing. ## Notes - **Merge apify/apify-docs#2835 first** - it removes the dispatch that still calls the workflow deleted here. - **Needs a `SLACK_WEBHOOK_URL` repository secret** for the failure alert. - The recorded version is a coarse marker, not a content identity: apify-docs bumps `components/version.yaml` in a follow-up `[skip ci]` commit, so a deploy can publish new content under the old stamp. A moved value proves the specification changed; an unchanged one proves nothing. *✍️ Drafted by Claude Code*
V
Vlada Dusek committed
49a1f527b530aa1108bdf6c194c68a7848cc9e22
Parent: cb8fe24
Committed by GitHub <noreply@github.com>
on 8/3/2026, 12:18:40 PM