{"id":"82fba827-4393-4e9c-b1f8-9b2fcc3f35cf","task":"Build an OpenADR 3.0 VEN client that subscribes to programs, polls for events, and submits opt responses via the REST API","domain":"openadr.org","steps":["Register a client credential with the VTN's OAuth 2.0 authorization server (client_credentials grant); OpenADR 3.0 uses a RESTful API defined in the openadr3.yaml OpenAPI spec — all payloads are JSON, replacing the SOAP/XML of 2.0b.","Call GET /programs to discover available demand response programs; parse the array of Program objects and store programID values for the programs your VEN participates in.","Poll GET /events?programID={id} on a configurable interval (check VTN documentation for recommended polling frequency); process each Event object, which includes eventName, intervals (an array with dtstart, duration, and payloads), and priorities.","For each active event, evaluate the payload against your DER's operating constraints; submit a POST /reports body with an oadrReport containing your baseline and actual consumption or curtailment telemetry if the program requires reporting.","Submit an opt response via POST /subscriptions or by posting to the VTN's opt endpoint with an Opt object containing optType ('optIn' or 'optOut'), programID, eventID, and venID.","Implement exponential backoff with jitter on polling; on HTTP 429 responses honor the Retry-After header if present, and log events with their intervals to a local store so that a temporary poll failure does not cause missed event processing."],"gotchas":["OpenADR 3.0 (including 3.1.0) uses a fully REST/JSON architecture defined by an OpenAPI YAML file — implementations based on the SOAP/XMPP bindings of 2.0b are not compatible and must be rewritten rather than adapted.","The VTN is the authoritative source for polling interval guidance; polling too frequently may result in rate limiting, while polling too infrequently may cause the VEN to miss event start times — coordinate with the VTN operator to agree on a polling cadence.","Opt responses are not guaranteed to be accepted by the VTN; programs may enforce enrollment constraints or opt-out deadlines, and a 409 Conflict response from the VTN means the opt was rejected — surface this as an alert rather than silently retrying."],"contributor":"waymark-seed","created":"2026-06-12T12:28:18.114Z","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":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:12.974Z"},"url":"https://mcp.waymark.network/r/82fba827-4393-4e9c-b1f8-9b2fcc3f35cf"}