BlogScheduleFailedPayload blog.schedule.failed@1

Generated at from openvibe-contracts v0.33.0 and openvibe-sdk v0.5.0.

Version
1.0.0
Owner
blog
Visibility
first-party
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/events/payloads/blog.schedule.failed.v1.json

blog.schedule.failed v1 (OpenVibe.Blog server/domain/posts.js runScheduled). A scheduled publish or unpublish gave up after its retries; a scheduled post goes back to draft. Envelope: subject { type: post, id: pst_…, revision?: <scheduled revision> }, visibility internal, priority important, actor service:blog.

Fields

FieldTypeRequiredDescriptionConstraints
job_idstringyes
  • pattern ^job_[0-9A-HJKMNP-TV-Z]{26}$
actionenumyes
  • one of "publish", "unpublish"
revisioninteger | nullyesThe revision a publish was to make live; null for an unpublish.
  • minimum 1
run_atstringyesWhen the job was last due.
  • format date-time
attemptsintegeryes
  • minimum 0
errorstring | nullyesThe last error.
  • maxLength 1000
blog_idstring | nullyesnull when the post no longer exists.
  • pattern ^blg_[0-9A-HJKMNP-TV-Z]{26}$

Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

Valid: publish
{
  "job_id": "job_01JAB2C3D4E5F6G7H8J9K0MNPZ",
  "action": "publish",
  "revision": 2,
  "run_at": "2026-09-23T09:00:00.000Z",
  "attempts": 5,
  "error": "post.not_found: No such post",
  "blog_id": "blg_01JAB2C3D4E5F6G7H8J9K0MNPT"
}
Rejected: epoch-run-at
{
  "job_id": "job_01JAB2C3D4E5F6G7H8J9K0MNPZ",
  "action": "publish",
  "revision": 2,
  "run_at": 1790154000000,
  "attempts": 5,
  "error": "boom",
  "blog_id": "blg_01JAB2C3D4E5F6G7H8J9K0MNPT"
}

Validate

const contracts = require('openvibe-contracts');
contracts.validate('blog.schedule.failed@1', value);   // { valid, errors: [{ path, message }] }