Skip to content

feature: rework api#68

Merged
rustatian merged 2 commits intomasterfrom
release/v5
Feb 27, 2026
Merged

feature: rework api#68
rustatian merged 2 commits intomasterfrom
release/v5

Conversation

@rustatian
Copy link
Member

@rustatian rustatian commented Feb 27, 2026

Reason for This PR

  • Prepare release v5

Description of Changes

  • Significantly update protobuf definitions.
  • This repository now contains only protobuf definitions.
  • Every merge into the master will trigger GitHub app, which will trigger protobuf compilation in the api-go repository.

License Acceptance

By submitting this pull request, I confirm that my contribution is made under
the terms of the MIT license.

PR Checklist

[Author TODO: Meet these criteria.]
[Reviewer TODO: Verify that these criteria are met. Request changes if not]

  • All commits in this PR are signed (git commit -s).
  • The reason for this PR is clearly provided (issue no. or explanation).
  • The description of changes is clear and encompassing.
  • Any required documentation changes (code and docs) are included in this PR.
  • Any user-facing changes are mentioned in CHANGELOG.md.
  • All added/changed functionality is tested.

Summary by CodeRabbit

  • Chores

    • Updated build configuration module paths and lint ignore lists.
    • Added a CI workflow to trigger external proto/code-generation and keep generated artifacts in sync.
  • Documentation

    • Revised README to describe repo purpose, CI-driven auto-generation, local development steps, and updated usage/import examples to the new module paths.

Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
@rustatian rustatian self-assigned this Feb 27, 2026
@rustatian rustatian added the C-enhancement Category: enhancement. Meaning improvements of current module, transport, etc.. label Feb 27, 2026
@coderabbitai
Copy link

coderabbitai bot commented Feb 27, 2026

📝 Walkthrough

Walkthrough

Adds a GitHub Actions workflow that triggers an api-go proto-update workflow (push or manual) using a GitHub App token, updates Buf module/ignore paths from proto to roadrunner/api, and updates README content to document repo purpose, generation workflow, and local dev steps.

Changes

Cohort / File(s) Summary
GitHub Actions Workflow
.github/workflows/trigger-api-go-update.yml
New workflow: generates GitHub App token, dispatches update-proto.yml in roadrunner-server/api-go with branch/commit metadata; supports push to master and workflow_dispatch with branch input.
Buf Configuration
buf.yaml
Module path changed from proto to roadrunner/api; updated lint ignore entries to the new roadrunner/api/... locations.
Documentation
README.md
Substantive rewrite: describes repo purpose (protobufs), points generated Go code to api-go, updates examples/imports to api-go v5, and adds CI-driven auto-generation and local development instructions.

Sequence Diagram(s)

sequenceDiagram
    participant Dev as Developer
    participant Repo as Source Repo (.github workflow)
    participant GH as GitHub Actions
    participant App as GitHub App (RR_CICD)
    participant Target as roadrunner-server/api-go repo

    Dev->>Repo: push to master / manual dispatch
    Repo->>GH: workflow starts (trigger-api-go-update)
    GH->>App: create installation token (RR_CICD_APP_ID, PRIVATE_KEY)
    App-->>GH: returns token
    GH->>Target: dispatch workflow `update-proto.yml` (branch, author, message)
    Target-->>GH: acknowledge dispatch
    GH-->>Repo: workflow completes
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

C-future-compatibility

Suggested reviewers

  • wolfy-j

Poem

🐰
The CI hops in with a token so bright,
Protos dispatching by day and by night.
Paths rearranged, docs singing the song,
The api-go caravan moves along. ✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title is vague and generic, using the non-descriptive term 'rework api' without clearly conveying the specific changes (protobuf reorganization, v5 release prep, CI workflow addition). Consider a more specific title like 'Reorganize repository for v5 release with protobuf-only focus and CI automation' to better reflect the significant structural changes.
✅ Passed checks (2 passed)
Check name Status Explanation
Description check ✅ Passed The description covers the required template sections including reason (v5 release prep), changes (protobuf updates, repository focus, CI automation), license acceptance, and completed checklist items.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch release/v5

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/trigger-api-go-update.yml:
- Around line 55-58: The gh workflow run invocation hardcodes the source branch
with `-r master`, so the dispatched workflow file `update-proto.yml` is always
taken from master; change the hardcoded flag `-r master` to use the BRANCH
variable (`-r "${BRANCH}"`) so the workflow file version matches the manually
selected branch and the `branch` input is respected when running
`update-proto.yml`.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 616a209 and 0a7371a.

⛔ Files ignored due to path filters (72)
  • build/applogger/v1/applogger.pb.go is excluded by !**/*.pb.go
  • build/centrifugo/api/v1/api.pb.go is excluded by !**/*.pb.go
  • build/centrifugo/api/v1/api_grpc.pb.go is excluded by !**/*.pb.go
  • build/centrifugo/proxy/v1/proxy.pb.go is excluded by !**/*.pb.go
  • build/centrifugo/proxy/v1/proxy_grpc.pb.go is excluded by !**/*.pb.go
  • build/common/v1/grpc_status.pb.go is excluded by !**/*.pb.go
  • build/google/api/annotations.pb.go is excluded by !**/*.pb.go
  • build/google/api/http.pb.go is excluded by !**/*.pb.go
  • build/google/protobuf/any.pb.go is excluded by !**/*.pb.go
  • build/google/protobuf/descriptor.pb.go is excluded by !**/*.pb.go
  • build/google/protobuf/duration.pb.go is excluded by !**/*.pb.go
  • build/google/protobuf/empty.pb.go is excluded by !**/*.pb.go
  • build/google/protobuf/struct.pb.go is excluded by !**/*.pb.go
  • build/google/protobuf/timestamp.pb.go is excluded by !**/*.pb.go
  • build/google/protobuf/wrappers.pb.go is excluded by !**/*.pb.go
  • build/http/v1/http.pb.go is excluded by !**/*.pb.go
  • build/jobs/v1/jobs.pb.go is excluded by !**/*.pb.go
  • build/kv/v1/kv.pb.go is excluded by !**/*.pb.go
  • build/lock/v1beta1/lock.pb.go is excluded by !**/*.pb.go
  • build/service/v1/service.pb.go is excluded by !**/*.pb.go
  • build/status/v1/status.pb.go is excluded by !**/*.pb.go
  • build/status/v1beta1/status.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/activity/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/batch/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/command/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/common/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/deployment/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/enums/v1/batch_operation.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/enums/v1/command_type.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/enums/v1/common.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/enums/v1/deployment.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/enums/v1/event_type.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/enums/v1/failed_cause.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/enums/v1/namespace.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/enums/v1/nexus.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/enums/v1/query.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/enums/v1/reset.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/enums/v1/schedule.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/enums/v1/task_queue.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/enums/v1/update.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/enums/v1/workflow.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/errordetails/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/export/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/failure/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/filter/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/history/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/namespace/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/nexus/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/operatorservice/v1/request_response.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/operatorservice/v1/service.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/operatorservice/v1/service_grpc.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/protocol/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/query/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/replication/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/rules/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/schedule/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/sdk/v1/enhanced_stack_trace.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/sdk/v1/task_complete_metadata.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/sdk/v1/user_metadata.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/sdk/v1/worker_config.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/sdk/v1/workflow_metadata.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/taskqueue/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/update/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/version/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/worker/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/workflow/v1/message.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/workflowservice/v1/request_response.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/workflowservice/v1/service.pb.go is excluded by !**/*.pb.go
  • build/temporal/api/workflowservice/v1/service_grpc.pb.go is excluded by !**/*.pb.go
  • build/temporal/v1/temporal.pb.go is excluded by !**/*.pb.go
  • build/websockets/v1/websockets.pb.go is excluded by !**/*.pb.go
  • go.sum is excluded by !**/*.sum
📒 Files selected for processing (54)
  • .github/workflows/trigger-api-go-update.yml
  • buf.yaml
  • go.mod
  • plugins/v1/jobs/interface.go
  • plugins/v1/kv/interface.go
  • plugins/v1/lock/lock.go
  • plugins/v1/logger/interface.go
  • plugins/v1/priority_queue/interface.go
  • plugins/v1/status/interface.go
  • plugins/v2/jobs/driver.go
  • plugins/v2/jobs/job.go
  • plugins/v2/jobs/state.go
  • plugins/v2/priority_queue/priority_queue.go
  • plugins/v3/jobs/driver.go
  • plugins/v3/jobs/job.go
  • plugins/v3/jobs/state.go
  • plugins/v3/priority_queue/priority_queue.go
  • plugins/v4/jobs/driver.go
  • plugins/v4/jobs/job.go
  • plugins/v4/jobs/state.go
  • plugins/v4/priority_queue/priority_queue.go
  • proto/centrifugo/api/v1/api.proto
  • proto/lock/v1beta1/lock.proto
  • proto/status/v1beta1/status.proto
  • roadrunner/api/applogger/v1/applogger.proto
  • roadrunner/api/applogger/v2/applogger.proto
  • roadrunner/api/centrifugo/api/v1/api.proto
  • roadrunner/api/centrifugo/proxy/v1/proxy.proto
  • roadrunner/api/common/v1/grpc_status.proto
  • roadrunner/api/http/v1/http.proto
  • roadrunner/api/http/v2/http.proto
  • roadrunner/api/http/v2/request.proto
  • roadrunner/api/http/v2/response.proto
  • roadrunner/api/jobs/v1/jobs.proto
  • roadrunner/api/jobs/v2/jobs.proto
  • roadrunner/api/jobs/v2/request.proto
  • roadrunner/api/jobs/v2/response.proto
  • roadrunner/api/kv/v1/kv.proto
  • roadrunner/api/kv/v2/kv.proto
  • roadrunner/api/kv/v2/request.proto
  • roadrunner/api/kv/v2/response.proto
  • roadrunner/api/lock/v1/lock.proto
  • roadrunner/api/service/v1/service.proto
  • roadrunner/api/service/v2/request.proto
  • roadrunner/api/service/v2/response.proto
  • roadrunner/api/service/v2/service.proto
  • roadrunner/api/status/v1/status.proto
  • roadrunner/api/status/v2/request.proto
  • roadrunner/api/status/v2/response.proto
  • roadrunner/api/temporal/v1/temporal.proto
  • roadrunner/api/websockets/v1/websockets.proto
  • roadrunner/api/websockets/v2/request.proto
  • roadrunner/api/websockets/v2/response.proto
  • roadrunner/api/websockets/v2/websockets.proto

Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
README.md (1)

11-11: ⚠️ Potential issue | 🟡 Minor

Update the godoc badge URL to reference v5.

The godoc badge still references v4, but this PR migrates the API to v5. The badge URL should be updated to match the new version referenced throughout the rest of the documentation.

📝 Proposed fix
-	<a href="https://pkg.go.dev/github.com/roadrunner-server/api/v4?tab=doc"><img src="https://godoc.org/github.com/roadrunner-server/api/v4?status.svg"></a>
+	<a href="https://pkg.go.dev/github.com/roadrunner-server/api/v5?tab=doc"><img src="https://godoc.org/github.com/roadrunner-server/api/v5?status.svg"></a>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` at line 11, Update the godoc badge URL and image to reference v5
instead of v4 by changing the hyperlink and image source in the README: replace
"github.com/roadrunner-server/api/v4?tab=doc" and
"godoc.org/github.com/roadrunner-server/api/v4?status.svg" with their v5
counterparts (e.g., "github.com/roadrunner-server/api/v5?tab=doc" and the
corresponding v5 status SVG) so the badge matches the migrated API version.
🧹 Nitpick comments (1)
README.md (1)

78-80: Add context for the Centrifugal API section.

The "Centrifugal API" section lists external proto file links without explaining their relationship to RoadRunner or why they're documented here. Consider either:

  1. Adding a brief explanation of how Centrifugo integrates with RoadRunner, or
  2. Removing this section if it's no longer relevant to the restructured repository.
📝 Suggested improvement
 ## Centrifugal API
+
+RoadRunner integrates with [Centrifugo](https://github.com/centrifugal/centrifugo) for real-time messaging. The following proto definitions are used for this integration:
+
 - [API](https://github.com/centrifugal/centrifugo/blob/master/internal/apiproto/api.proto)
 - [Proxy](https://github.com/centrifugal/centrifugo/blob/master/internal/proxyproto/proxy.proto)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` around lines 78 - 80, The "Centrifugal API" README section
currently lists two external proto links (the "API" and "Proxy" links) with no
context; update the "Centrifugal API" heading to either (A) add a concise
description explaining how Centrifugo integrates with RoadRunner (what these
proto files are used for, e.g., the API and proxy contracts the adapter
implements, and when to consult them) and why they’re documented here, or (B)
remove the section entirely if Centrifugo is no longer relevant to this repo
restructure; target the "Centrifugal API" heading and the two link entries
("API" and "Proxy") when making the change.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@README.md`:
- Around line 25-30: Update the fenced code block that lists the entries
"roadrunner/api/", "third_party/api/", "buf.yaml", and "buf.gen.yaml" to include
a language identifier (e.g., change the opening ``` to ```text) so the block is
annotated for Markdown linting (MD040); locate the block containing those exact
lines and prepend the language token to the opening fence.

---

Outside diff comments:
In `@README.md`:
- Line 11: Update the godoc badge URL and image to reference v5 instead of v4 by
changing the hyperlink and image source in the README: replace
"github.com/roadrunner-server/api/v4?tab=doc" and
"godoc.org/github.com/roadrunner-server/api/v4?status.svg" with their v5
counterparts (e.g., "github.com/roadrunner-server/api/v5?tab=doc" and the
corresponding v5 status SVG) so the badge matches the migrated API version.

---

Nitpick comments:
In `@README.md`:
- Around line 78-80: The "Centrifugal API" README section currently lists two
external proto links (the "API" and "Proxy" links) with no context; update the
"Centrifugal API" heading to either (A) add a concise description explaining how
Centrifugo integrates with RoadRunner (what these proto files are used for,
e.g., the API and proxy contracts the adapter implements, and when to consult
them) and why they’re documented here, or (B) remove the section entirely if
Centrifugo is no longer relevant to this repo restructure; target the
"Centrifugal API" heading and the two link entries ("API" and "Proxy") when
making the change.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0a7371a and a780eeb.

📒 Files selected for processing (1)
  • README.md

Comment on lines +25 to +30
```
roadrunner/api/ — RoadRunner proto definitions (jobs, kv, http, status, etc.)
third_party/api/ — Temporal API submodule (used as a proto dependency)
buf.yaml — Buf module configuration
buf.gen.yaml — Buf code generation configuration
```
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Specify a language identifier for the fenced code block.

Markdown best practices recommend specifying a language identifier for all fenced code blocks. For directory structure documentation, you can use text or another appropriate identifier.

📝 Proposed fix
-```
+```text
 roadrunner/api/   — RoadRunner proto definitions (jobs, kv, http, status, etc.)
 third_party/api/  — Temporal API submodule (used as a proto dependency)
 buf.yaml          — Buf module configuration
 buf.gen.yaml      — Buf code generation configuration
</details>

As per coding guidelines, static analysis tools flagged this as MD040 (fenced-code-language).

<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

```suggestion

🧰 Tools
🪛 markdownlint-cli2 (0.21.0)

[warning] 25-25: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` around lines 25 - 30, Update the fenced code block that lists the
entries "roadrunner/api/", "third_party/api/", "buf.yaml", and "buf.gen.yaml" to
include a language identifier (e.g., change the opening ``` to ```text) so the
block is annotated for Markdown linting (MD040); locate the block containing
those exact lines and prepend the language token to the opening fence.

@rustatian rustatian merged commit a40cb70 into master Feb 27, 2026
1 check passed
@rustatian rustatian deleted the release/v5 branch February 27, 2026 21:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

C-enhancement Category: enhancement. Meaning improvements of current module, transport, etc..

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant