Appearance
Entity: energyPrice
Entity Type: Database table
Description: Time series of published day-ahead market prices for electricity and gas, at 15-minute resolution. The price for a given commodity and delivery interval is the same for every tenant — the data is not scoped or duplicated per tenant, and there is no relationship to any tenant or client record. Every tenant reads directly from this single table. Powers the current and historical spot-price display used across cost reporting.
Data Attributes Table
| Attribute Name | Description | Data Type | Default Value | Required (= Nullable) | Unique | Format | Validations | Index | Example |
|---|---|---|---|---|---|---|---|---|---|
| id | Primary key of the entity. | UUID | Generated in code (app layer) | Yes | Yes | UUID v7 | Must be a unique identifier. | Primary Key | 018ed0b3-c298-7c7a-96d5-8b36f5a7f8d2 |
| commodity | The energy medium this price applies to. | String | - | Yes | No | enum.energyPriceCommodity | One of: electricity, gas. | name: idx_energyPrice_commodity_deliveryStart, type: btree | electricity |
| deliveryStart | Start timestamp of the 15-minute interval this price applies to. | Timestamp with time zone | - | Yes | No | ISO 8601 | Must align to a 15-minute boundary. | name: idx_energyPrice_deliveryStart, type: btree | 2026-06-15T12:00:00Z |
| price | Settled market price for the interval. | Numeric | - | Yes | No | 2 decimal places | Negative values are valid and must not be rejected. | - | 1450.30 |
| currency | Currency the price is denominated in. | String | CZK | Yes | No | enum.currency, ISO 4217 | - | - | CZK |
| unit | Unit the price is expressed per. | String | MWh | Yes | No | enum.priceUnit | - | - | MWh |
| createdAt | Timestamp of when the record was created. Immutable after insert. | Timestamp with time zone | now() — set in code | Yes | No | ISO 8601 — YYYY-MM-DDTHH:mm:ss.SSSZ | Cannot be null; cannot be modified after creation. | - | 2026-06-15T12:05:00Z |
| updatedAt | Timestamp of the last update to the record. | Timestamp with time zone | now() — set in code | Yes | No | ISO 8601 — YYYY-MM-DDTHH:mm:ss.SSSZ | Cannot be null. | - | 2026-06-15T12:05:00Z |
| deletedAt | Timestamp of soft deletion. Null means the record is active. Once set, immutable. | Timestamp with time zone | - | No | No | ISO 8601 — YYYY-MM-DDTHH:mm:ss.SSSZ | Immutable once set. Active records: WHERE deletedAt IS NULL | - | null |
| createdBy | Identifier of the actor who created the record. | String | - | Yes | No | type:actor — e.g. user:uuid or system:job-name | Non-empty. | - | system:market-price-ingest |
| updatedBy | Identifier of the actor who last updated the record. | String | - | Yes | No | type:actor — e.g. user:uuid or system:job-name | Non-empty. | - | system:market-price-ingest |
Unique constraint: on (commodity, deliveryStart) — name: idx_energyPrice_commodity_deliveryStart, type: btree, unique — prevents a duplicate price row being written for the same interval on a repeated ingestion run.
Note. Like uiLabel, this entity has no tenantId at all — the source page explicitly states the data is shared across all tenants with no tenant/client relationship. Unlike uiLabel, the source page doesn't frame this as a named exception to the project's mandated-tenantId rule, but the description makes the rationale explicit (global market data). Flagged alongside gaugePurposeOption as another entity worth confirming against the tenantId mandate.
Audited fields
Recorded on created (in full), updated (changed only) and deleted (in full): commodity, deliveryStart, price, currency, unit.
Excluded: none.
No subjectEntityType/subjectEntityId and no tenantId — a single global market-data series shared unscoped across every tenant, per this entity's own description; createdBy/updatedBy on these entries would in practice almost always be the ingestion job's system actor, not a person.
Not registered for entityName resolution, and has no independent human-readable attribute to register — identified by its commodity/deliveryStart pair.