Skip to content

feat: Add ext.keboola.runner-sync-api.syncActionExecuted event schema - #32

Open
matyas-jirat-keboola wants to merge 1 commit into
mainfrom
feat-add-runner-sync-api-sync-action-executed-event
Open

feat: Add ext.keboola.runner-sync-api.syncActionExecuted event schema#32
matyas-jirat-keboola wants to merge 1 commit into
mainfrom
feat-add-runner-sync-api-sync-action-executed-event

Conversation

@matyas-jirat-keboola

Copy link
Copy Markdown

Summary

  • Add JSON Schema for the new ext.keboola.runner-sync-api.syncActionExecuted event, covering params (componentId / action / mode / tag / configData) and results (status / exitCode / output / durationMs)
  • Add matching fixture under tests/events/ so the existing schema test suite validates the schema against an example payload

This event is emitted by runner-sync-api after every sync action execution. The Connection event-name convention ext.{component}.{configurationId} is leveraged via configurationId = "syncActionExecuted", which is the only available subname mechanism on the public Storage API Event class. Schema is intentionally lenient on performance because Connection backfills performance.duration (seconds) server-side from Event::setDuration().

Test plan

  • composer tests passes locally (53 fixtures incl. the new one)
  • CI green on this branch

🤖 Generated with Claude Code

Schema covers status/exitCode/output/durationMs in results, plus
componentId/action/mode/tag/configData in params. Emitted by
runner-sync-api after every sync action execution to give platform
operators visibility into sync-action runs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
{
"id": 9900000001,
"event": "ext.keboola.runner-sync-api.syncActionExecuted",
"component": "keboola.runner-sync-api",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

i would expect that this is component ID of the component where sync action was executed on

"type": "info",
"runId": "run-abc123",
"created": "2026-05-20T10:00:00+0200",
"configurationId": "syncActionExecuted",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ID of configuration on which it was triggered. I am not sure whether we can trigger sync action without configurationID or component ID except running locally

"apiVersion": "v2"
},
"params": {
"componentId": "keboola.ex-db-mysql",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

not needed

Comment on lines +25 to +30
"configData": {
"parameters": {
"host": "db.example.com",
"#password": "KBC::Encrypted==abc123..."
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I do not recommend pushing configuration data into event itself. It's auditory, either create more types of events or push there only info about accessing with some query/something from LLM. But it may not be viable because it can contain also unencrypted secrets or so

Comment on lines +45 to +47
"exitCode": {
"type": ["integer", "null"]
},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I recommend you to check some of the events that are already generated in platform how they look like or so. I am not sure whether exit code it needed

@linear

linear Bot commented May 20, 2026

Copy link
Copy Markdown

CFTL-653

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