openapi: 3.1.1 info: title: Demand Flex — Performance Attributes (v2.0) version: 2.0.0 description: > Attribute schemas for demand-flex M&V (Performance.performanceAttributes). Per-meter telemetry is carried as a BecknTimeSeries: • before the event — intervals carry only BASELINE payloads • after the event — intervals carry BASELINE + USAGE payloads The rego policy reads BASELINE / USAGE from the intervals to compute settlements. components: schemas: DemandFlexPerformance: type: object description: > Performance attributes for demand-flex M&V (Measurement & Verification). Attached to Performance.performanceAttributes in on_status callbacks. additionalProperties: false x-jsonld: "@context": ./context.jsonld "@type": DemandFlexPerformance properties: eventId: type: string description: Identifier of the flex event being measured. example: "evt-2026-04-01-001" x-jsonld: "@id": eventId methodology: type: string description: > Baseline methodology used across all meters (e.g., "5of10" means average of 5 highest-consumption days out of last 10). example: "5of10" x-jsonld: "@id": methodology meters: type: array description: > Per-meter M&V data. Each entry binds a meter ID to its time-series telemetry for the event window. x-jsonld: "@id": meters items: type: object additionalProperties: false required: [meterId, telemetry] properties: meterId: type: string description: Meter identifier. example: "der://meter/001" telemetry: $ref: "https://raw.githubusercontent.com/beckn/DEG/refs/heads/main/specification/schema/BecknTimeSeries/v1.0/attributes.yaml#/components/schemas/BecknTimeSeries" description: > BecknTimeSeries carrying BASELINE (always) and — once the event has completed — USAGE payloads, aligned to the same interval grid. Validated inline via `$ref`, so the embedded payload only needs `@type` (optional) — `@context` is declared once at the envelope level via `context.schemaContext[]`.