feat: Add ext.keboola.runner-sync-api.syncActionExecuted event schema - #32
feat: Add ext.keboola.runner-sync-api.syncActionExecuted event schema#32matyas-jirat-keboola wants to merge 1 commit into
Conversation
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", |
There was a problem hiding this comment.
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", |
There was a problem hiding this comment.
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", |
| "configData": { | ||
| "parameters": { | ||
| "host": "db.example.com", | ||
| "#password": "KBC::Encrypted==abc123..." | ||
| } | ||
| } |
There was a problem hiding this comment.
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
| "exitCode": { | ||
| "type": ["integer", "null"] | ||
| }, |
There was a problem hiding this comment.
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
Summary
ext.keboola.runner-sync-api.syncActionExecutedevent, coveringparams(componentId / action / mode / tag / configData) andresults(status / exitCode / output / durationMs)tests/events/so the existing schema test suite validates the schema against an example payloadThis event is emitted by
runner-sync-apiafter every sync action execution. The Connection event-name conventionext.{component}.{configurationId}is leveraged viaconfigurationId = "syncActionExecuted", which is the only available subname mechanism on the public Storage APIEventclass. Schema is intentionally lenient onperformancebecause Connection backfillsperformance.duration(seconds) server-side fromEvent::setDuration().Test plan
composer testspasses locally (53 fixtures incl. the new one)🤖 Generated with Claude Code