diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..f0ee03d --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,78 @@ +# Claude Instructions for openapi-starter + +## Branch Management + +**IMPORTANT:** Always create a new branch before making any changes to the codebase. + +### Branch Naming Convention +- Feature branches: `feature/` +- Bug fixes: `fix/` +- Documentation: `docs/` +- CI/CD changes: `ci/` + +### Workflow +1. **Before making changes:** Create a new branch from main + ```bash + git checkout main + git pull + git checkout -b / + ``` + +2. **After changes:** Commit and push to the feature branch + ```bash + git add + git commit -m "type: description" + git push -u origin + ``` + +3. **Create PR:** Use `gh pr create` with descriptive title and body + +4. **After merge:** Delete the feature branch + ```bash + git checkout main + git pull + git branch -d + ``` + +## OpenAPI Development + +### File Organization +- Main spec: `openapi/openapi.yaml` +- Schemas: `openapi/components/schemas/` +- Paths: `openapi/paths/` +- Parameters: `openapi/components/parameters/` +- Responses: `openapi/components/responses/` + +### Testing Changes +Always run these commands before committing: +```bash +npm test # Lint the OpenAPI spec +npm run build # Build HTML documentation +npm start # Preview docs locally +``` + +### Examples +- Use resource-specific examples inline in path files +- Base examples on real ESPI sample data when available +- Use `data.greenbuttonconnect.org` as the host for all example URLs +- Follow ESPI/Atom XML formatting conventions from ~/.claude/CLAUDE.md + +## Commit Message Format + +Follow conventional commits: +- `feat:` New features +- `fix:` Bug fixes +- `docs:` Documentation changes +- `ci:` CI/CD changes +- `chore:` Maintenance tasks + +Always include: +``` +Co-Authored-By: Claude Sonnet 4.5 +``` + +## Deployment + +- CI/CD automatically runs on all PRs and pushes to main +- GitHub Pages deploys automatically on main branch pushes +- Documentation URL: https://greenbuttonalliance.github.io/openapi-starter/ diff --git a/openapi/components/responses/AtomEntry_ApplicationInformation.yaml b/openapi/components/responses/AtomEntry_ApplicationInformation.yaml new file mode 100644 index 0000000..b9c1b98 --- /dev/null +++ b/openapi/components/responses/AtomEntry_ApplicationInformation.yaml @@ -0,0 +1,57 @@ +description: >- + OK - Returns an Atom entry wrapping a single ApplicationInformation resource. +content: + application/atom+xml: + schema: + $ref: '../schemas/AtomEntry.yaml' + examples: + ApplicationInformationEntry: + summary: An ApplicationInformation entry for a registered Third Party Application + value: | + + urn:uuid:af6e8b01-3c52-5d19-84a3-7f2e9d4b6c08 + + + 2023-10-20T17:32:35.448812Z + 2023-10-20T17:33:23.054424Z + ApplicationInformation + + + DATA_CUSTODIAN_001 + 3 + Energy analytics platform for residential customers + 3 + 1 + 1 + 555-123-4567 + https://data.greenbuttonconnect.org/DataCustodian + https://thirdparty.example.com/espi/1_1/Notification + https://data.greenbuttonconnect.org/DataCustodian/oauth/authorize + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/register + https://data.greenbuttonconnect.org/DataCustodian/oauth/token + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/resource/Batch/Bulk + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/resource + secret_abcdef123456 + https://thirdparty.example.com/logo.png + GreenEnergy Analytics + https://thirdparty.example.com + https://thirdparty.example.com/espi/1_1/OAuthCallBack + third_party_247931 + https://thirdparty.example.com/tos + https://thirdparty.example.com/privacy + GreenEnergy_Analytics + 2.1.0 + 1697823155 + 0 + admin@thirdparty.example.com + client_secret_basic + FB=1_3_4_5_8_13_14_15_18_19_31_32_33_34_35_37_39;IntervalDuration=900;BlockDuration=monthly;HistoryLength=13 + authorization_code + client_credentials + refresh_token + code + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/resource/ApplicationInformation/247931 + reg_token_d4e5f6a7b8c9 + + + diff --git a/openapi/components/responses/AtomEntry_Authorization.yaml b/openapi/components/responses/AtomEntry_Authorization.yaml new file mode 100644 index 0000000..a4cfa2c --- /dev/null +++ b/openapi/components/responses/AtomEntry_Authorization.yaml @@ -0,0 +1,38 @@ +description: >- + OK - Returns an Atom entry wrapping a single Authorization resource. +content: + application/atom+xml: + schema: + $ref: '../schemas/AtomEntry.yaml' + examples: + AuthorizationEntry: + summary: An Authorization entry with active OAuth 2.0 authorization details + value: | + + urn:uuid:b3c7d1e5-4a98-5f26-8b03-1d5e7f9a2c46 + + + 2023-10-20T17:32:35.448812Z + 2023-10-20T17:33:23.054424Z + Authorization + + + + 31536000 + 1697823155 + + + 31536000 + 1697823155 + + 1 + 1729359155 + authorization_code + FB=1_3_4_5_8_13_14_15_18_19_31_32_33_34_35_37_39;IntervalDuration=900;BlockDuration=monthly;HistoryLength=13 + Bearer + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/resource/Subscription/407593 + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/resource/Authorization/407593 + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/resource/Batch/RetailCustomer/618934/UsagePoint + + + diff --git a/openapi/components/responses/AtomEntry_ElectricPowerQualitySummary.yaml b/openapi/components/responses/AtomEntry_ElectricPowerQualitySummary.yaml new file mode 100644 index 0000000..a3837b0 --- /dev/null +++ b/openapi/components/responses/AtomEntry_ElectricPowerQualitySummary.yaml @@ -0,0 +1,41 @@ +description: >- + OK - Returns an Atom entry wrapping a single ElectricPowerQualitySummary + resource. +content: + application/atom+xml: + schema: + $ref: '../schemas/AtomEntry.yaml' + examples: + ElectricPowerQualitySummaryEntry: + summary: An ElectricPowerQualitySummary entry with power quality event data for a billing period + value: | + + urn:uuid:d4e5f6a7-b8c9-5d01-e2f3-a4b5c6d7e8f9 + + + + 2023-10-20T17:32:35.448812Z + 2023-10-20T17:33:23.054424Z + ElectricPowerQualitySummary + + + 1 + 2 + 3 + 0 + 240100 + 2 + 600 + 0 + 2 + + 2592000 + 1693540800 + + 1 + 0 + 3 + 0 + + + diff --git a/openapi/components/responses/AtomEntry_IntervalBlock.yaml b/openapi/components/responses/AtomEntry_IntervalBlock.yaml new file mode 100644 index 0000000..e4a8aae --- /dev/null +++ b/openapi/components/responses/AtomEntry_IntervalBlock.yaml @@ -0,0 +1,35 @@ +description: >- + OK - Returns an Atom entry wrapping a single IntervalBlock resource. +content: + application/atom+xml: + schema: + $ref: '../schemas/AtomEntry.yaml' + examples: + IntervalBlockEntry: + summary: An IntervalBlock entry with a single IntervalReading + value: | + + urn:uuid:1e530409-5dbe-572f-aad8-fa06f6a68cfc + + + + 2023-10-20T17:32:44.801089Z + 2023-10-20T17:32:44.801089Z + IntervalBlock + + + + 2332800 + 1663992000 + + + 115780000 + + 2332800 + 1663992000 + + 1330890000 + + + + diff --git a/openapi/components/responses/AtomEntry_LocalTimeParameters.yaml b/openapi/components/responses/AtomEntry_LocalTimeParameters.yaml new file mode 100644 index 0000000..fa5991a --- /dev/null +++ b/openapi/components/responses/AtomEntry_LocalTimeParameters.yaml @@ -0,0 +1,26 @@ +description: >- + OK - Returns an Atom entry wrapping a single LocalTimeParameters resource. +content: + application/atom+xml: + schema: + $ref: '../schemas/AtomEntry.yaml' + examples: + LocalTimeParametersEntry: + summary: A LocalTimeParameters entry with US Eastern timezone DST rules + value: | + + urn:uuid:305129b8-503c-5b50-b293-333cd7fb6adf + + + 2023-10-20T17:32:35.448812Z + 2023-10-20T17:33:23.054424Z + LocalTimeParameters + + + B40E2000 + 3600 + 360E2000 + -18000 + + + diff --git a/openapi/components/responses/AtomEntry_MeterReading.yaml b/openapi/components/responses/AtomEntry_MeterReading.yaml new file mode 100644 index 0000000..4a88d9e --- /dev/null +++ b/openapi/components/responses/AtomEntry_MeterReading.yaml @@ -0,0 +1,24 @@ +description: >- + OK - Returns an Atom entry wrapping a single MeterReading resource. +content: + application/atom+xml: + schema: + $ref: '../schemas/AtomEntry.yaml' + examples: + MeterReadingEntry: + summary: A MeterReading entry with empty content and related links + value: | + + urn:uuid:6052217b-aadf-5cca-b803-c611f9fcf89e + + + + + + 2023-10-20T17:32:44.801089Z + 2023-10-20T17:32:44.801089Z + MeterReading + + + + diff --git a/openapi/components/responses/AtomEntry_ReadingType.yaml b/openapi/components/responses/AtomEntry_ReadingType.yaml new file mode 100644 index 0000000..086255e --- /dev/null +++ b/openapi/components/responses/AtomEntry_ReadingType.yaml @@ -0,0 +1,31 @@ +description: >- + OK - Returns an Atom entry wrapping a single ReadingType resource. +content: + application/atom+xml: + schema: + $ref: '../schemas/AtomEntry.yaml' + examples: + ReadingTypeEntry: + summary: A ReadingType entry for monthly kWh electricity consumption + value: | + + urn:uuid:06ff0942-04fc-5f91-bc35-ca5e51b49dbb + + + 2023-10-20T17:32:44.801089Z + 2023-10-20T17:32:44.801089Z + ReadingType + + + 1 + 1 + 840 + 1 + 2332800 + 12 + 0 + -3 + 72 + + + diff --git a/openapi/components/responses/AtomEntry_UsagePoint.yaml b/openapi/components/responses/AtomEntry_UsagePoint.yaml new file mode 100644 index 0000000..7025f6a --- /dev/null +++ b/openapi/components/responses/AtomEntry_UsagePoint.yaml @@ -0,0 +1,29 @@ +description: >- + OK - Returns an Atom entry wrapping a single UsagePoint resource. +content: + application/atom+xml: + schema: + $ref: '../schemas/AtomEntry.yaml' + examples: + UsagePointEntry: + summary: A UsagePoint entry for an electricity service + value: | + + urn:uuid:e6896122-a094-5d30-be14-e44544247e14 + + + + + + + 2023-10-20T17:32:35.448812Z + 2023-10-20T17:33:23.054424Z + UsagePoint + + + + 0 + + + + diff --git a/openapi/components/responses/AtomEntry_UsageSummary.yaml b/openapi/components/responses/AtomEntry_UsageSummary.yaml new file mode 100644 index 0000000..0f48ea1 --- /dev/null +++ b/openapi/components/responses/AtomEntry_UsageSummary.yaml @@ -0,0 +1,47 @@ +description: >- + OK - Returns an Atom entry wrapping a single UsageSummary resource. +content: + application/atom+xml: + schema: + $ref: '../schemas/AtomEntry.yaml' + examples: + UsageSummaryEntry: + summary: A UsageSummary entry with billing period consumption and cost data + value: | + + urn:uuid:f1e2d3c4-b5a6-5978-8190-a2b3c4d5e6f7 + + + + 2023-10-20T17:32:35.448812Z + 2023-10-20T17:33:23.054424Z + UsageSummary + + + + 2592000 + 1693540800 + + 11578000 + 8934000 + 150000 + 840 + + -3 + 72 + 1330890000 + + + -3 + 1696132800 + 72 + 987654000 + + 14 + 1697823203 + 1 + Standard Residential + 15 + + + diff --git a/openapi/components/responses/AtomFeed_ApplicationInformation.yaml b/openapi/components/responses/AtomFeed_ApplicationInformation.yaml new file mode 100644 index 0000000..f9ae111 --- /dev/null +++ b/openapi/components/responses/AtomFeed_ApplicationInformation.yaml @@ -0,0 +1,64 @@ +description: >- + OK - Returns an Atom feed containing a collection of ApplicationInformation + entries. +content: + application/atom+xml: + schema: + $ref: '../schemas/AtomFeed.yaml' + examples: + ApplicationInformationFeed: + summary: A feed containing ApplicationInformation entries for registered Third Party Applications + value: | + + urn:uuid:7c9a4e82-3b57-5a01-9c4f-2d8e6b3a1f04 + + ApplicationInformation + 2023-10-20T17:33:23.054424Z + + urn:uuid:af6e8b01-3c52-5d19-84a3-7f2e9d4b6c08 + + + 2023-10-20T17:32:35.448812Z + 2023-10-20T17:33:23.054424Z + ApplicationInformation + + + DATA_CUSTODIAN_001 + 3 + Energy analytics platform for residential customers + 3 + 1 + 1 + 555-123-4567 + https://data.greenbuttonconnect.org/DataCustodian + https://thirdparty.example.com/espi/1_1/Notification + https://data.greenbuttonconnect.org/DataCustodian/oauth/authorize + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/register + https://data.greenbuttonconnect.org/DataCustodian/oauth/token + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/resource/Batch/Bulk + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/resource + secret_abcdef123456 + https://thirdparty.example.com/logo.png + GreenEnergy Analytics + https://thirdparty.example.com + https://thirdparty.example.com/espi/1_1/OAuthCallBack + third_party_247931 + https://thirdparty.example.com/tos + https://thirdparty.example.com/privacy + GreenEnergy_Analytics + 2.1.0 + 1697823155 + 0 + admin@thirdparty.example.com + client_secret_basic + FB=1_3_4_5_8_13_14_15_18_19_31_32_33_34_35_37_39;IntervalDuration=900;BlockDuration=monthly;HistoryLength=13 + authorization_code + client_credentials + refresh_token + code + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/resource/ApplicationInformation/247931 + reg_token_d4e5f6a7b8c9 + + + + diff --git a/openapi/components/responses/AtomFeed_Authorization.yaml b/openapi/components/responses/AtomFeed_Authorization.yaml new file mode 100644 index 0000000..b217af5 --- /dev/null +++ b/openapi/components/responses/AtomFeed_Authorization.yaml @@ -0,0 +1,72 @@ +description: >- + OK - Returns an Atom feed containing a collection of Authorization entries. +content: + application/atom+xml: + schema: + $ref: '../schemas/AtomFeed.yaml' + examples: + AuthorizationFeed: + summary: A feed containing Authorization entries with OAuth 2.0 authorization records + value: | + + urn:uuid:9d4a2e71-6b83-5f02-a1c5-3e7f8d9a0b12 + + Authorization + 2023-10-20T17:33:23.054424Z + + urn:uuid:b3c7d1e5-4a98-5f26-8b03-1d5e7f9a2c46 + + + 2023-10-20T17:32:35.448812Z + 2023-10-20T17:33:23.054424Z + Authorization + + + + 31536000 + 1697823155 + + + 31536000 + 1697823155 + + 1 + 1729359155 + authorization_code + FB=1_3_4_5_8_13_14_15_18_19_31_32_33_34_35_37_39;IntervalDuration=900;BlockDuration=monthly;HistoryLength=13 + Bearer + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/resource/Subscription/407593 + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/resource/Authorization/407593 + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/resource/Batch/RetailCustomer/618934/UsagePoint + + + + + urn:uuid:e8f2a6d4-5c17-5b39-9e04-8a3d6f1c7e52 + + + 2023-10-20T17:32:44.801089Z + 2023-10-20T17:32:44.801089Z + Authorization + + + + 31536000 + 1697823155 + + + 31536000 + 1697823155 + + 0 + 1729359155 + authorization_code + FB=1_3_4_5_8_13_14_15_18_19_31_32_33_34_35_37_39;IntervalDuration=3600;BlockDuration=daily;HistoryLength=13 + Bearer + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/resource/Subscription/407594 + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/resource/Authorization/407594 + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/resource/Batch/RetailCustomer/618935/UsagePoint + + + + diff --git a/openapi/components/responses/AtomFeed_ElectricPowerQualitySummary.yaml b/openapi/components/responses/AtomFeed_ElectricPowerQualitySummary.yaml new file mode 100644 index 0000000..95628c7 --- /dev/null +++ b/openapi/components/responses/AtomFeed_ElectricPowerQualitySummary.yaml @@ -0,0 +1,47 @@ +description: >- + OK - Returns an Atom feed containing a collection of + ElectricPowerQualitySummary entries. +content: + application/atom+xml: + schema: + $ref: '../schemas/AtomFeed.yaml' + examples: + ElectricPowerQualitySummaryFeed: + summary: A feed containing ElectricPowerQualitySummary entries with power quality event data + value: | + + urn:uuid:a1b2c3d4-5e6f-5708-9a1b-2c3d4e5f6a7b + + ElectricPowerQualitySummary + 2023-10-20T17:33:23.054424Z + + urn:uuid:d4e5f6a7-b8c9-5d01-e2f3-a4b5c6d7e8f9 + + + + 2023-10-20T17:32:35.448812Z + 2023-10-20T17:33:23.054424Z + ElectricPowerQualitySummary + + + 1 + 2 + 3 + 0 + 240100 + 2 + 600 + 0 + 2 + + 2592000 + 1693540800 + + 1 + 0 + 3 + 0 + + + + diff --git a/openapi/components/responses/AtomFeed_IntervalBlock.yaml b/openapi/components/responses/AtomFeed_IntervalBlock.yaml new file mode 100644 index 0000000..a883f5c --- /dev/null +++ b/openapi/components/responses/AtomFeed_IntervalBlock.yaml @@ -0,0 +1,66 @@ +description: >- + OK - Returns an Atom feed containing a collection of IntervalBlock entries. +content: + application/atom+xml: + schema: + $ref: '../schemas/AtomFeed.yaml' + examples: + IntervalBlockFeed: + summary: A feed containing IntervalBlock entries with multiple billing periods + value: | + + urn:uuid:abf12767-5352-5615-b41a-fef23ba42bad + + IntervalBlock + 2023-10-20T17:32:44.801089Z + + urn:uuid:1e530409-5dbe-572f-aad8-fa06f6a68cfc + + + + 2023-10-20T17:32:44.801089Z + 2023-10-20T17:32:44.801089Z + IntervalBlock + + + + 2332800 + 1663992000 + + + 115780000 + + 2332800 + 1663992000 + + 1330890000 + + + + + + urn:uuid:0de5026c-9497-5712-99b0-9790101aee1b + + + + 2023-10-20T17:32:44.814423Z + 2023-10-20T17:32:44.814423Z + IntervalBlock + + + + 2768400 + 1666411200 + + + 107994000 + + 2768400 + 1666411200 + + 1673810000 + + + + + diff --git a/openapi/components/responses/AtomFeed_LocalTimeParameters.yaml b/openapi/components/responses/AtomFeed_LocalTimeParameters.yaml new file mode 100644 index 0000000..9b100ac --- /dev/null +++ b/openapi/components/responses/AtomFeed_LocalTimeParameters.yaml @@ -0,0 +1,33 @@ +description: >- + OK - Returns an Atom feed containing a collection of LocalTimeParameters + entries. +content: + application/atom+xml: + schema: + $ref: '../schemas/AtomFeed.yaml' + examples: + LocalTimeParametersFeed: + summary: A feed containing LocalTimeParameters entries with timezone and DST rules + value: | + + urn:uuid:4a6b8c0d-2e3f-5a51-7b9c-1d2e3f4a5b6c + + LocalTimeParameters + 2023-10-20T17:33:23.054424Z + + urn:uuid:305129b8-503c-5b50-b293-333cd7fb6adf + + + 2023-10-20T17:32:35.448812Z + 2023-10-20T17:33:23.054424Z + LocalTimeParameters + + + B40E2000 + 3600 + 360E2000 + -18000 + + + + diff --git a/openapi/components/responses/AtomFeed_MeterReading.yaml b/openapi/components/responses/AtomFeed_MeterReading.yaml new file mode 100644 index 0000000..70e2cdb --- /dev/null +++ b/openapi/components/responses/AtomFeed_MeterReading.yaml @@ -0,0 +1,30 @@ +description: >- + OK - Returns an Atom feed containing a collection of MeterReading entries. +content: + application/atom+xml: + schema: + $ref: '../schemas/AtomFeed.yaml' + examples: + MeterReadingFeed: + summary: A feed containing MeterReading entries with links to related IntervalBlocks and ReadingTypes + value: | + + urn:uuid:2e4f6a8c-0b1d-5e3f-5a7b-9c0d1e2f3a4b + + MeterReading + 2023-10-20T17:32:44.801089Z + + urn:uuid:6052217b-aadf-5cca-b803-c611f9fcf89e + + + + + + 2023-10-20T17:32:44.801089Z + 2023-10-20T17:32:44.801089Z + MeterReading + + + + + diff --git a/openapi/components/responses/AtomFeed_ReadingType.yaml b/openapi/components/responses/AtomFeed_ReadingType.yaml new file mode 100644 index 0000000..d7d98d2 --- /dev/null +++ b/openapi/components/responses/AtomFeed_ReadingType.yaml @@ -0,0 +1,37 @@ +description: >- + OK - Returns an Atom feed containing a collection of ReadingType entries. +content: + application/atom+xml: + schema: + $ref: '../schemas/AtomFeed.yaml' + examples: + ReadingTypeFeed: + summary: A feed containing ReadingType entries describing meter reading characteristics + value: | + + urn:uuid:3f5a7b9c-1d2e-5f40-6b8c-0d1e2f3a4b5c + + ReadingType + 2023-10-20T17:32:44.801089Z + + urn:uuid:06ff0942-04fc-5f91-bc35-ca5e51b49dbb + + + 2023-10-20T17:32:44.801089Z + 2023-10-20T17:32:44.801089Z + ReadingType + + + 1 + 1 + 840 + 1 + 2332800 + 12 + 0 + -3 + 72 + + + + diff --git a/openapi/components/responses/AtomFeed_UsagePoint.yaml b/openapi/components/responses/AtomFeed_UsagePoint.yaml new file mode 100644 index 0000000..3800d00 --- /dev/null +++ b/openapi/components/responses/AtomFeed_UsagePoint.yaml @@ -0,0 +1,35 @@ +description: >- + OK - Returns an Atom feed containing a collection of UsagePoint entries. +content: + application/atom+xml: + schema: + $ref: '../schemas/AtomFeed.yaml' + examples: + UsagePointFeed: + summary: A feed containing a collection of UsagePoint entries + value: | + + urn:uuid:abf12767-5352-5615-b41a-fef23ba42bad + + UsagePoint + 2023-10-20T17:33:23.054424Z + + urn:uuid:e6896122-a094-5d30-be14-e44544247e14 + + + + + + + 2023-10-20T17:32:35.448812Z + 2023-10-20T17:33:23.054424Z + UsagePoint + + + + 0 + + + + + diff --git a/openapi/components/responses/AtomFeed_UsageSummary.yaml b/openapi/components/responses/AtomFeed_UsageSummary.yaml new file mode 100644 index 0000000..fa06b45 --- /dev/null +++ b/openapi/components/responses/AtomFeed_UsageSummary.yaml @@ -0,0 +1,90 @@ +description: >- + OK - Returns an Atom feed containing a collection of UsageSummary entries. +content: + application/atom+xml: + schema: + $ref: '../schemas/AtomFeed.yaml' + examples: + UsageSummaryFeed: + summary: A feed containing UsageSummary entries with billing and consumption data + value: | + + urn:uuid:c2d3e4f5-6a7b-5809-1c2d-3e4f5a6b7c8d + + UsageSummary + 2023-10-20T17:33:23.054424Z + + urn:uuid:f1e2d3c4-b5a6-5978-8190-a2b3c4d5e6f7 + + + + 2023-10-20T17:32:35.448812Z + 2023-10-20T17:33:23.054424Z + UsageSummary + + + + 2592000 + 1693540800 + + 11578000 + 8934000 + 150000 + 840 + + -3 + 72 + 1330890000 + + + -3 + 1696132800 + 72 + 987654000 + + 14 + 1697823203 + 1 + Standard Residential + 15 + + + + + urn:uuid:a8b9c0d1-e2f3-5a45-6b7c-8d9e0f1a2b3c + + + + 2023-10-20T17:32:44.801089Z + 2023-10-20T17:32:44.801089Z + UsageSummary + + + + 2678400 + 1696132800 + + 8934000 + 10245000 + 125000 + 840 + + -3 + 72 + 987654000 + + + -3 + 1698811200 + 72 + 1102345000 + + 14 + 1697823203 + 1 + Standard Residential + 15 + + + + diff --git a/openapi/openapi.yaml b/openapi/openapi.yaml index 167a207..0f7ff9d 100644 --- a/openapi/openapi.yaml +++ b/openapi/openapi.yaml @@ -292,3 +292,39 @@ components: $ref: 'components/responses/AtomFeed.yaml' AtomEntry: $ref: 'components/responses/AtomEntry.yaml' + AtomFeed_ApplicationInformation: + $ref: 'components/responses/AtomFeed_ApplicationInformation.yaml' + AtomEntry_ApplicationInformation: + $ref: 'components/responses/AtomEntry_ApplicationInformation.yaml' + AtomFeed_Authorization: + $ref: 'components/responses/AtomFeed_Authorization.yaml' + AtomEntry_Authorization: + $ref: 'components/responses/AtomEntry_Authorization.yaml' + AtomFeed_UsagePoint: + $ref: 'components/responses/AtomFeed_UsagePoint.yaml' + AtomEntry_UsagePoint: + $ref: 'components/responses/AtomEntry_UsagePoint.yaml' + AtomFeed_MeterReading: + $ref: 'components/responses/AtomFeed_MeterReading.yaml' + AtomEntry_MeterReading: + $ref: 'components/responses/AtomEntry_MeterReading.yaml' + AtomFeed_ReadingType: + $ref: 'components/responses/AtomFeed_ReadingType.yaml' + AtomEntry_ReadingType: + $ref: 'components/responses/AtomEntry_ReadingType.yaml' + AtomFeed_IntervalBlock: + $ref: 'components/responses/AtomFeed_IntervalBlock.yaml' + AtomEntry_IntervalBlock: + $ref: 'components/responses/AtomEntry_IntervalBlock.yaml' + AtomFeed_LocalTimeParameters: + $ref: 'components/responses/AtomFeed_LocalTimeParameters.yaml' + AtomEntry_LocalTimeParameters: + $ref: 'components/responses/AtomEntry_LocalTimeParameters.yaml' + AtomFeed_ElectricPowerQualitySummary: + $ref: 'components/responses/AtomFeed_ElectricPowerQualitySummary.yaml' + AtomEntry_ElectricPowerQualitySummary: + $ref: 'components/responses/AtomEntry_ElectricPowerQualitySummary.yaml' + AtomFeed_UsageSummary: + $ref: 'components/responses/AtomFeed_UsageSummary.yaml' + AtomEntry_UsageSummary: + $ref: 'components/responses/AtomEntry_UsageSummary.yaml' diff --git a/openapi/paths/ApplicationInformation.yaml b/openapi/paths/ApplicationInformation.yaml index cc50009..1600385 100644 --- a/openapi/paths/ApplicationInformation.yaml +++ b/openapi/paths/ApplicationInformation.yaml @@ -18,7 +18,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomFeed.yaml' + $ref: '../components/responses/AtomFeed_ApplicationInformation.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/ApplicationInformation_{applicationInformationId}.yaml b/openapi/paths/ApplicationInformation_{applicationInformationId}.yaml index 3f598ab..8e17807 100644 --- a/openapi/paths/ApplicationInformation_{applicationInformationId}.yaml +++ b/openapi/paths/ApplicationInformation_{applicationInformationId}.yaml @@ -18,7 +18,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomEntry.yaml' + $ref: '../components/responses/AtomEntry_ApplicationInformation.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/Authorization.yaml b/openapi/paths/Authorization.yaml index a5166f3..9b2bfea 100644 --- a/openapi/paths/Authorization.yaml +++ b/openapi/paths/Authorization.yaml @@ -18,7 +18,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomFeed.yaml' + $ref: '../components/responses/AtomFeed_Authorization.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/Authorization_{authorizationId}.yaml b/openapi/paths/Authorization_{authorizationId}.yaml index a7a1d67..ce95e75 100644 --- a/openapi/paths/Authorization_{authorizationId}.yaml +++ b/openapi/paths/Authorization_{authorizationId}.yaml @@ -25,7 +25,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomEntry.yaml' + $ref: '../components/responses/AtomEntry_Authorization.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/IntervalBlock.yaml b/openapi/paths/IntervalBlock.yaml index dbb855e..32b7d0a 100644 --- a/openapi/paths/IntervalBlock.yaml +++ b/openapi/paths/IntervalBlock.yaml @@ -18,7 +18,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomFeed.yaml' + $ref: '../components/responses/AtomFeed_IntervalBlock.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/IntervalBlock_{intervalBlockId}.yaml b/openapi/paths/IntervalBlock_{intervalBlockId}.yaml index 6f21955..628f014 100644 --- a/openapi/paths/IntervalBlock_{intervalBlockId}.yaml +++ b/openapi/paths/IntervalBlock_{intervalBlockId}.yaml @@ -24,7 +24,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomEntry.yaml' + $ref: '../components/responses/AtomEntry_IntervalBlock.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/LocalTimeParameters.yaml b/openapi/paths/LocalTimeParameters.yaml index 4d0e4e7..edb4ae2 100644 --- a/openapi/paths/LocalTimeParameters.yaml +++ b/openapi/paths/LocalTimeParameters.yaml @@ -18,7 +18,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomFeed.yaml' + $ref: '../components/responses/AtomFeed_LocalTimeParameters.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/LocalTimeParameters_{localTimeParameterId}.yaml b/openapi/paths/LocalTimeParameters_{localTimeParameterId}.yaml index a25cfa7..11d9729 100644 --- a/openapi/paths/LocalTimeParameters_{localTimeParameterId}.yaml +++ b/openapi/paths/LocalTimeParameters_{localTimeParameterId}.yaml @@ -25,7 +25,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomEntry.yaml' + $ref: '../components/responses/AtomEntry_LocalTimeParameters.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/MeterReading.yaml b/openapi/paths/MeterReading.yaml index d418ec5..b407e0b 100644 --- a/openapi/paths/MeterReading.yaml +++ b/openapi/paths/MeterReading.yaml @@ -18,7 +18,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomFeed.yaml' + $ref: '../components/responses/AtomFeed_MeterReading.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/MeterReading_{meterReadingId}.yaml b/openapi/paths/MeterReading_{meterReadingId}.yaml index 625ea2a..f9809ee 100644 --- a/openapi/paths/MeterReading_{meterReadingId}.yaml +++ b/openapi/paths/MeterReading_{meterReadingId}.yaml @@ -24,7 +24,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomEntry.yaml' + $ref: '../components/responses/AtomEntry_MeterReading.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/ReadServiceStatus.yaml b/openapi/paths/ReadServiceStatus.yaml index 9f2359c..b68fbae 100644 --- a/openapi/paths/ReadServiceStatus.yaml +++ b/openapi/paths/ReadServiceStatus.yaml @@ -16,6 +16,19 @@ get: application/atom+xml: schema: $ref: '../components/schemas/ServiceStatus.yaml' + examples: + ServiceStatusOnline: + summary: Service status indicating the Data Custodian is online + value: | + + 1 + + ServiceStatusOffline: + summary: Service status indicating the Data Custodian is offline + value: | + + 0 + '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/ReadingType.yaml b/openapi/paths/ReadingType.yaml index 769cd98..18603cb 100644 --- a/openapi/paths/ReadingType.yaml +++ b/openapi/paths/ReadingType.yaml @@ -18,7 +18,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomFeed.yaml' + $ref: '../components/responses/AtomFeed_ReadingType.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/ReadingType_{readingTypeId}.yaml b/openapi/paths/ReadingType_{readingTypeId}.yaml index 79a9832..551484c 100644 --- a/openapi/paths/ReadingType_{readingTypeId}.yaml +++ b/openapi/paths/ReadingType_{readingTypeId}.yaml @@ -24,7 +24,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomEntry.yaml' + $ref: '../components/responses/AtomEntry_ReadingType.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/Subscription_{subscriptionId}_UsagePoint.yaml b/openapi/paths/Subscription_{subscriptionId}_UsagePoint.yaml index 1a76731..7b02ed4 100644 --- a/openapi/paths/Subscription_{subscriptionId}_UsagePoint.yaml +++ b/openapi/paths/Subscription_{subscriptionId}_UsagePoint.yaml @@ -25,7 +25,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomFeed.yaml' + $ref: '../components/responses/AtomFeed_UsagePoint.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}.yaml b/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}.yaml index 976d2ae..6e41f88 100644 --- a/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}.yaml +++ b/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}.yaml @@ -31,7 +31,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomEntry.yaml' + $ref: '../components/responses/AtomEntry_UsagePoint.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_ElectricPowerQualitySummary.yaml b/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_ElectricPowerQualitySummary.yaml index 820a0c5..0413296 100644 --- a/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_ElectricPowerQualitySummary.yaml +++ b/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_ElectricPowerQualitySummary.yaml @@ -31,7 +31,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomFeed.yaml' + $ref: '../components/responses/AtomFeed_ElectricPowerQualitySummary.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_ElectricPowerQualitySummary_{electricPowerQualitySummaryId}.yaml b/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_ElectricPowerQualitySummary_{electricPowerQualitySummaryId}.yaml index fd27ddb..74e1213 100644 --- a/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_ElectricPowerQualitySummary_{electricPowerQualitySummaryId}.yaml +++ b/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_ElectricPowerQualitySummary_{electricPowerQualitySummaryId}.yaml @@ -37,7 +37,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomEntry.yaml' + $ref: '../components/responses/AtomEntry_ElectricPowerQualitySummary.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_MeterReading.yaml b/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_MeterReading.yaml index a75c0e8..b0a073e 100644 --- a/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_MeterReading.yaml +++ b/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_MeterReading.yaml @@ -31,7 +31,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomFeed.yaml' + $ref: '../components/responses/AtomFeed_MeterReading.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_MeterReading_{meterReadingId}.yaml b/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_MeterReading_{meterReadingId}.yaml index 052badb..640db1c 100644 --- a/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_MeterReading_{meterReadingId}.yaml +++ b/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_MeterReading_{meterReadingId}.yaml @@ -37,7 +37,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomEntry.yaml' + $ref: '../components/responses/AtomEntry_MeterReading.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_MeterReading_{meterReadingId}_IntervalBlock.yaml b/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_MeterReading_{meterReadingId}_IntervalBlock.yaml index 11a9625..a369d2f 100644 --- a/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_MeterReading_{meterReadingId}_IntervalBlock.yaml +++ b/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_MeterReading_{meterReadingId}_IntervalBlock.yaml @@ -37,7 +37,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomFeed.yaml' + $ref: '../components/responses/AtomFeed_IntervalBlock.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_MeterReading_{meterReadingId}_IntervalBlock_{intervalBlockId}.yaml b/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_MeterReading_{meterReadingId}_IntervalBlock_{intervalBlockId}.yaml index 66a7aa5..0bd43d5 100644 --- a/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_MeterReading_{meterReadingId}_IntervalBlock_{intervalBlockId}.yaml +++ b/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_MeterReading_{meterReadingId}_IntervalBlock_{intervalBlockId}.yaml @@ -44,7 +44,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomEntry.yaml' + $ref: '../components/responses/AtomEntry_IntervalBlock.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_UsageSummary.yaml b/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_UsageSummary.yaml index 24bb664..44b3518 100644 --- a/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_UsageSummary.yaml +++ b/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_UsageSummary.yaml @@ -31,7 +31,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomFeed.yaml' + $ref: '../components/responses/AtomFeed_UsageSummary.yaml' '400': description: Bad Request - The request was malformed or contained invalid parameters. '403': diff --git a/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_UsageSummary_{usageSummaryId}.yaml b/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_UsageSummary_{usageSummaryId}.yaml index 7e02d9f..166c5f4 100644 --- a/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_UsageSummary_{usageSummaryId}.yaml +++ b/openapi/paths/Subscription_{subscriptionId}_UsagePoint_{usagePointId}_UsageSummary_{usageSummaryId}.yaml @@ -36,7 +36,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomEntry.yaml' + $ref: '../components/responses/AtomEntry_UsageSummary.yaml' '400': description: Bad Request - The request was malformed or contained invalid parameters. '403': diff --git a/openapi/paths/UsagePoint.yaml b/openapi/paths/UsagePoint.yaml index 65ea831..e45ec0f 100644 --- a/openapi/paths/UsagePoint.yaml +++ b/openapi/paths/UsagePoint.yaml @@ -18,7 +18,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomFeed.yaml' + $ref: '../components/responses/AtomFeed_UsagePoint.yaml' '202': description: Accepted - The request has been accepted for processing. '400': diff --git a/openapi/paths/UsagePoint_{usagePointId}.yaml b/openapi/paths/UsagePoint_{usagePointId}.yaml index 643baf6..d1b6239 100644 --- a/openapi/paths/UsagePoint_{usagePointId}.yaml +++ b/openapi/paths/UsagePoint_{usagePointId}.yaml @@ -24,7 +24,7 @@ get: - oauth2: [] responses: '200': - $ref: '../components/responses/AtomEntry.yaml' + $ref: '../components/responses/AtomEntry_UsagePoint.yaml' '202': description: Accepted - The request has been accepted for processing. '400':