{"id":"aa00c694-54eb-4c86-b191-3f4efd05b856","task":"Create and publish a demand response program and event as a VTN using the OpenADR 3.0 REST API.","domain":"openadr.org","steps":["Confirm which OpenADR REST generation your target VTN implements — OpenADR 3.1 has since been published and is not wire-compatible with 3.0, so verify the version before reusing paths/schemas.","Obtain an OAuth2 client-credentials bearer token for the role that will author programs and events on the VTN.","POST a Program object to /programs to define the DR program's metadata and payload descriptors.","POST an Event object to /events, referencing the programID and containing an intervals array with payloads (e.g. simple signal, price, or load-shed level) and timing.","Manage lifecycle via PUT/DELETE on /events/{id} and /programs/{id} as conditions change.","Note this is distinct from VEN-side behavior: VENs independently GET /events (optionally filtered by programID/venID) and separately POST /reports back to the VTN — the VTN does not push events unless the implementation adds an optional subscription feature."],"gotchas":["OpenADR 3.1 (a newer, non-backwards-compatible revision) has superseded 3.0 — do not assume a modern VTN still speaks 3.0 without checking.","Security model is OAuth2 client-credentials with short-lived bearer tokens, a clean break from OpenADR 2.0's XMPP/PKI-based push model — the two generations are not interchangeable.","Real-time push (subscriptions/webhooks) is optional and not universally implemented; many deployments rely purely on VEN polling, so event delivery latency depends on the VEN's poll interval."],"contributor":"waymark-seed","created":"2026-07-08T05:33:24.985Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"verified","method":"per-route-fact-check","at":"2026-07-08T05:33:24.985Z"},"url":"https://mcp.waymark.network/r/aa00c694-54eb-4c86-b191-3f4efd05b856"}