From 19f3919cbefa697c33ec44cd5d7d7a5b2dc9d669 Mon Sep 17 00:00:00 2001 From: Donald Coffin Date: Sun, 8 Feb 2026 11:54:19 -0500 Subject: [PATCH 1/2] feat: update customer response examples with real ESPI sample data Replace placeholder examples in 16 customer response files with real XML data from ESPI_Customer_Sample.xml: - Customer: Add Organisation with full address (200 SECOND AVE, OLDCASTLE, ON) - CustomerAccount: Add contactInfo with address and accountId (30000000-00) - CustomerAgreement: Use real agreementId (30000000-00_004_electric) - ServiceSupplier: Add Organisation name (Acme Energy Supplier) and kind - ProgramDateIdMappings: Add DR enrollment program mapping - ServiceLocation: Add mainAddress and UsagePoints link - Meter: Add serialNumber (EPP00004) - EndDevice: Add serialNumber (inverter-01-51111111111) All examples now use real UUIDs, timestamps, and link structures from actual ESPI 4.1 customer sample data for more realistic documentation. Co-Authored-By: Claude Sonnet 4.5 --- .../responses/AtomEntry_Customer.yaml | 30 +++++++++++----- .../responses/AtomEntry_CustomerAccount.yaml | 28 ++++++++++----- .../AtomEntry_CustomerAgreement.yaml | 18 +++++----- .../responses/AtomEntry_EndDevice.yaml | 14 ++++---- .../components/responses/AtomEntry_Meter.yaml | 14 ++++---- .../AtomEntry_ProgramDateIdMappings.yaml | 16 ++++++--- .../responses/AtomEntry_ServiceLocation.yaml | 29 ++++++++++++---- .../responses/AtomEntry_ServiceSupplier.yaml | 16 +++++---- .../responses/AtomFeed_Customer.yaml | 34 +++++++++++++------ .../responses/AtomFeed_CustomerAccount.yaml | 32 +++++++++++------ .../responses/AtomFeed_CustomerAgreement.yaml | 22 ++++++------ .../responses/AtomFeed_EndDevice.yaml | 18 +++++----- .../components/responses/AtomFeed_Meter.yaml | 18 +++++----- .../AtomFeed_ProgramDateIdMappings.yaml | 20 +++++++---- .../responses/AtomFeed_ServiceLocation.yaml | 33 +++++++++++++----- .../responses/AtomFeed_ServiceSupplier.yaml | 20 ++++++----- 16 files changed, 232 insertions(+), 130 deletions(-) diff --git a/openapi/components/responses/AtomEntry_Customer.yaml b/openapi/components/responses/AtomEntry_Customer.yaml index 00164f5..c2287ad 100644 --- a/openapi/components/responses/AtomEntry_Customer.yaml +++ b/openapi/components/responses/AtomEntry_Customer.yaml @@ -9,18 +9,30 @@ content: summary: A single Customer entry value: | - urn:uuid:c8e5f2d9-3a7b-5e4c-9d1f-6b8a2c3e5d7f - - - + urn:uuid:6c6d986b-bae0-54c9-b20c-f63b5fa9de56 + + + + Customer - 2023-10-20T17:32:35.448812Z - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:56:19.660350Z + 2023-10-20T17:57:21.627755Z - 0 - en_US - John Smith + + + + 200 SECOND AVE + + + OLDCASTLE + ON + + N9V 2T7 + + + other + JOHN DOE diff --git a/openapi/components/responses/AtomEntry_CustomerAccount.yaml b/openapi/components/responses/AtomEntry_CustomerAccount.yaml index 857421f..cb09ff0 100644 --- a/openapi/components/responses/AtomEntry_CustomerAccount.yaml +++ b/openapi/components/responses/AtomEntry_CustomerAccount.yaml @@ -9,17 +9,29 @@ content: summary: A single CustomerAccount entry value: | - urn:uuid:e3f7b9d1-5c8a-6e4d-9f2b-7a1c5e8d3f6b - - - + urn:uuid:118b34f4-64ab-5242-8ec9-bd2c6c2ae002 + + + + CustomerAccount - 2023-10-20T17:32:35.448812Z - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:56:19.660350Z + 2023-10-20T17:57:21.627755Z - 15 - ACC-123456 + + + + 200 SECOND AVE + + + OLDCASTLE + ON + + N9V 2T7 + + + 30000000-00 diff --git a/openapi/components/responses/AtomEntry_CustomerAgreement.yaml b/openapi/components/responses/AtomEntry_CustomerAgreement.yaml index 1c3657c..e6498f2 100644 --- a/openapi/components/responses/AtomEntry_CustomerAgreement.yaml +++ b/openapi/components/responses/AtomEntry_CustomerAgreement.yaml @@ -9,17 +9,19 @@ content: summary: A single CustomerAgreement entry value: | - urn:uuid:a9f3c5e8-7b6d-5e4c-9f2a-8d1c6e5b3a7f - - - + urn:uuid:b4d2b756-7442-558e-bfb2-5c3288e92f04 + + + + + + CustomerAgreement - 2023-10-20T17:32:35.448812Z - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:56:20.594174Z + 2023-10-20T17:57:21.627755Z - 840 - AGR-789012 + 30000000-00_004_electric diff --git a/openapi/components/responses/AtomEntry_EndDevice.yaml b/openapi/components/responses/AtomEntry_EndDevice.yaml index 0cc373a..054ada8 100644 --- a/openapi/components/responses/AtomEntry_EndDevice.yaml +++ b/openapi/components/responses/AtomEntry_EndDevice.yaml @@ -9,16 +9,16 @@ content: summary: A single EndDevice entry value: | - urn:uuid:e9f5d3c8-6b7a-5e4d-9f2c-7a1d6e5b8c3f - - + urn:uuid:73a40799-2c91-5a15-a561-25102c959fcd + + + EndDevice - 2023-10-20T17:32:35.448812Z - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:56:20.594174Z + 2023-10-20T17:57:21.627755Z - false - false + inverter-01-51111111111 diff --git a/openapi/components/responses/AtomEntry_Meter.yaml b/openapi/components/responses/AtomEntry_Meter.yaml index 06e96fd..80bc2c6 100644 --- a/openapi/components/responses/AtomEntry_Meter.yaml +++ b/openapi/components/responses/AtomEntry_Meter.yaml @@ -9,16 +9,16 @@ content: summary: A single Meter entry value: | - urn:uuid:a8f7e6d5-9c8b-5e4d-9f2a-7d1c6e5b8a3f - - + urn:uuid:aba939ae-5ce7-5393-bcfe-cceaa298424b + + + Meter - 2023-10-20T17:32:35.448812Z - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:56:20.594174Z + 2023-10-20T17:57:21.627755Z - 16S - 900 + EPP00004 diff --git a/openapi/components/responses/AtomEntry_ProgramDateIdMappings.yaml b/openapi/components/responses/AtomEntry_ProgramDateIdMappings.yaml index 3be466f..05b0041 100644 --- a/openapi/components/responses/AtomEntry_ProgramDateIdMappings.yaml +++ b/openapi/components/responses/AtomEntry_ProgramDateIdMappings.yaml @@ -9,14 +9,20 @@ content: summary: A single ProgramDateIdMappings entry value: | - urn:uuid:f8e9d6c7-5b4a-5e4d-9f2c-7a1d6e5b8c3f - - + urn:uuid:913830f7-e2e4-5dc2-8264-3dd7ab3cf316 + + + ProgramDateIdMappings - 2023-10-20T17:32:35.448812Z - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:56:20.594174Z + 2023-10-20T17:57:21.627755Z + + CUST_DR_PROGRAM_ENROLLMENT_DATE + DR-01 + DR Enrollment + diff --git a/openapi/components/responses/AtomEntry_ServiceLocation.yaml b/openapi/components/responses/AtomEntry_ServiceLocation.yaml index fbb5909..2037d6c 100644 --- a/openapi/components/responses/AtomEntry_ServiceLocation.yaml +++ b/openapi/components/responses/AtomEntry_ServiceLocation.yaml @@ -9,16 +9,31 @@ content: summary: A single ServiceLocation entry value: | - urn:uuid:c7f9e5d2-8a6b-5e4c-9f3a-7d1c6e5b8a2f - - - + urn:uuid:fce8847d-4dac-5019-9d72-a2b756ac55b6 + + + + + + ServiceLocation - 2023-10-20T17:32:35.448812Z - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:56:20.594174Z + 2023-10-20T17:57:21.627755Z - false + + + 200 SECOND AVE + + + OLDCASTLE + ON + + N9V 2T7 + + + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/resource/Subscription/407607/UsagePoint/1455265 + diff --git a/openapi/components/responses/AtomEntry_ServiceSupplier.yaml b/openapi/components/responses/AtomEntry_ServiceSupplier.yaml index 3aae824..f787879 100644 --- a/openapi/components/responses/AtomEntry_ServiceSupplier.yaml +++ b/openapi/components/responses/AtomEntry_ServiceSupplier.yaml @@ -9,15 +9,19 @@ content: summary: A single ServiceSupplier entry value: | - urn:uuid:c8f9e6d5-7b6a-5e4c-9f2d-8a1c6e5b7a3f - - + urn:uuid:fe8d9d03-6c2e-5b6a-b6c2-4d19f11cc830 + + + ServiceSupplier - 2023-10-20T17:32:35.448812Z - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:56:20.594174Z + 2023-10-20T17:57:21.627755Z - 0 + + Acme Energy Supplier + + retailer diff --git a/openapi/components/responses/AtomFeed_Customer.yaml b/openapi/components/responses/AtomFeed_Customer.yaml index 0a0a593..d328bc2 100644 --- a/openapi/components/responses/AtomFeed_Customer.yaml +++ b/openapi/components/responses/AtomFeed_Customer.yaml @@ -10,22 +10,34 @@ content: value: | urn:uuid:b47f3a45-8d21-5c19-a3d2-7f1e4b9c6a08 - + Customer - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:57:21.627755Z - urn:uuid:c8e5f2d9-3a7b-5e4c-9d1f-6b8a2c3e5d7f - - - + urn:uuid:6c6d986b-bae0-54c9-b20c-f63b5fa9de56 + + + + Customer - 2023-10-20T17:32:35.448812Z - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:56:19.660350Z + 2023-10-20T17:57:21.627755Z - 0 - en_US - John Smith + + + + 200 SECOND AVE + + + OLDCASTLE + ON + + N9V 2T7 + + + other + JOHN DOE diff --git a/openapi/components/responses/AtomFeed_CustomerAccount.yaml b/openapi/components/responses/AtomFeed_CustomerAccount.yaml index 59839c9..cb1d94f 100644 --- a/openapi/components/responses/AtomFeed_CustomerAccount.yaml +++ b/openapi/components/responses/AtomFeed_CustomerAccount.yaml @@ -10,21 +10,33 @@ content: value: | urn:uuid:d5a9c8f2-4e6b-5d7a-8c3e-1f9b6a5d8c2e - + CustomerAccount - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:57:21.627755Z - urn:uuid:e3f7b9d1-5c8a-6e4d-9f2b-7a1c5e8d3f6b - - - + urn:uuid:118b34f4-64ab-5242-8ec9-bd2c6c2ae002 + + + + CustomerAccount - 2023-10-20T17:32:35.448812Z - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:56:19.660350Z + 2023-10-20T17:57:21.627755Z - 15 - ACC-123456 + + + + 200 SECOND AVE + + + OLDCASTLE + ON + + N9V 2T7 + + + 30000000-00 diff --git a/openapi/components/responses/AtomFeed_CustomerAgreement.yaml b/openapi/components/responses/AtomFeed_CustomerAgreement.yaml index f84a938..882f380 100644 --- a/openapi/components/responses/AtomFeed_CustomerAgreement.yaml +++ b/openapi/components/responses/AtomFeed_CustomerAgreement.yaml @@ -10,21 +10,23 @@ content: value: | urn:uuid:f2d8c9e5-6a7b-5c4d-8e3f-9b1a6c5d8e2f - + CustomerAgreement - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:57:21.627755Z - urn:uuid:a9f3c5e8-7b6d-5e4c-9f2a-8d1c6e5b3a7f - - - + urn:uuid:b4d2b756-7442-558e-bfb2-5c3288e92f04 + + + + + + CustomerAgreement - 2023-10-20T17:32:35.448812Z - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:56:20.594174Z + 2023-10-20T17:57:21.627755Z - 840 - AGR-789012 + 30000000-00_004_electric diff --git a/openapi/components/responses/AtomFeed_EndDevice.yaml b/openapi/components/responses/AtomFeed_EndDevice.yaml index b963eec..bf6d698 100644 --- a/openapi/components/responses/AtomFeed_EndDevice.yaml +++ b/openapi/components/responses/AtomFeed_EndDevice.yaml @@ -10,20 +10,20 @@ content: value: | urn:uuid:d8e9f5c3-7a6b-5e4d-9f2c-8a1d6e5c8b3f - + EndDevice - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:57:21.627755Z - urn:uuid:e9f5d3c8-6b7a-5e4d-9f2c-7a1d6e5b8c3f - - + urn:uuid:73a40799-2c91-5a15-a561-25102c959fcd + + + EndDevice - 2023-10-20T17:32:35.448812Z - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:56:20.594174Z + 2023-10-20T17:57:21.627755Z - false - false + inverter-01-51111111111 diff --git a/openapi/components/responses/AtomFeed_Meter.yaml b/openapi/components/responses/AtomFeed_Meter.yaml index 0b038fa..621d426 100644 --- a/openapi/components/responses/AtomFeed_Meter.yaml +++ b/openapi/components/responses/AtomFeed_Meter.yaml @@ -10,20 +10,20 @@ content: value: | urn:uuid:f9e6d4c8-7b6a-5e4d-9f2c-8a1d6e5c7b3f - + Meter - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:57:21.627755Z - urn:uuid:a8f7e6d5-9c8b-5e4d-9f2a-7d1c6e5b8a3f - - + urn:uuid:aba939ae-5ce7-5393-bcfe-cceaa298424b + + + Meter - 2023-10-20T17:32:35.448812Z - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:56:20.594174Z + 2023-10-20T17:57:21.627755Z - 16S - 900 + EPP00004 diff --git a/openapi/components/responses/AtomFeed_ProgramDateIdMappings.yaml b/openapi/components/responses/AtomFeed_ProgramDateIdMappings.yaml index eabeae7..3498882 100644 --- a/openapi/components/responses/AtomFeed_ProgramDateIdMappings.yaml +++ b/openapi/components/responses/AtomFeed_ProgramDateIdMappings.yaml @@ -10,18 +10,24 @@ content: value: | urn:uuid:e9f7d5c8-6b5a-5e4d-9f2c-8a1d6e5c7b3f - + ProgramDateIdMappings - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:57:21.627755Z - urn:uuid:f8e9d6c7-5b4a-5e4d-9f2c-7a1d6e5b8c3f - - + urn:uuid:913830f7-e2e4-5dc2-8264-3dd7ab3cf316 + + + ProgramDateIdMappings - 2023-10-20T17:32:35.448812Z - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:56:20.594174Z + 2023-10-20T17:57:21.627755Z + + CUST_DR_PROGRAM_ENROLLMENT_DATE + DR-01 + DR Enrollment + diff --git a/openapi/components/responses/AtomFeed_ServiceLocation.yaml b/openapi/components/responses/AtomFeed_ServiceLocation.yaml index c156d79..657bf7d 100644 --- a/openapi/components/responses/AtomFeed_ServiceLocation.yaml +++ b/openapi/components/responses/AtomFeed_ServiceLocation.yaml @@ -10,20 +10,35 @@ content: value: | urn:uuid:b5e8f3c9-6d7a-5c4e-8f2b-9a1c6d5e8b3f - + ServiceLocation - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:57:21.627755Z - urn:uuid:c7f9e5d2-8a6b-5e4c-9f3a-7d1c6e5b8a2f - - - + urn:uuid:fce8847d-4dac-5019-9d72-a2b756ac55b6 + + + + + + ServiceLocation - 2023-10-20T17:32:35.448812Z - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:56:20.594174Z + 2023-10-20T17:57:21.627755Z - false + + + 200 SECOND AVE + + + OLDCASTLE + ON + + N9V 2T7 + + + https://data.greenbuttonconnect.org/DataCustodian/espi/1_1/resource/Subscription/407607/UsagePoint/1455265 + diff --git a/openapi/components/responses/AtomFeed_ServiceSupplier.yaml b/openapi/components/responses/AtomFeed_ServiceSupplier.yaml index dd24683..a75f0e3 100644 --- a/openapi/components/responses/AtomFeed_ServiceSupplier.yaml +++ b/openapi/components/responses/AtomFeed_ServiceSupplier.yaml @@ -10,19 +10,23 @@ content: value: | urn:uuid:b9e7f5d4-8c6a-5e4d-9f2b-7a1c6e5d8b3f - + ServiceSupplier - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:57:21.627755Z - urn:uuid:c8f9e6d5-7b6a-5e4c-9f2d-8a1c6e5b7a3f - - + urn:uuid:fe8d9d03-6c2e-5b6a-b6c2-4d19f11cc830 + + + ServiceSupplier - 2023-10-20T17:32:35.448812Z - 2023-10-20T17:33:23.054424Z + 2023-10-20T17:56:20.594174Z + 2023-10-20T17:57:21.627755Z - 0 + + Acme Energy Supplier + + retailer From 17eeb1d5e3697317229fb0c525c0eb73bf5f4cb6 Mon Sep 17 00:00:00 2001 From: Donald Coffin Date: Sun, 8 Feb 2026 11:54:25 -0500 Subject: [PATCH 2/2] feat: enhance OAuth2 docs and add customer supporting schemas **OAuth2 Documentation Enhancements:** - Add comprehensive function block (scope) descriptions - Document all 17 ESPI function blocks (FB_1 through FB_58) - Add multiple scope options for different access levels - Clarify Authorization Code vs Client Credentials flows - Add customer resource function blocks (FB_50-58) **Schema Organization:** - Add 25 customer supporting schemas to components.schemas section - Include: Organisation, StreetAddress, Document, Agreement, Asset, Location, Status, Priority, and more - Match energy section format where supporting types are separately registered for proper documentation and reusability This makes OAuth2 security properly visible in Redocly and Swagger UI documentation with detailed scope explanations. Co-Authored-By: Claude Sonnet 4.5 --- openapi/openapi.yaml | 110 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 106 insertions(+), 4 deletions(-) diff --git a/openapi/openapi.yaml b/openapi/openapi.yaml index 6e643f8..96dccdd 100644 --- a/openapi/openapi.yaml +++ b/openapi/openapi.yaml @@ -280,18 +280,74 @@ components: type: oauth2 description: >- OAuth 2.0 authorization for accessing Green Button ESPI resources. - Supports both Authorization Code flow (for customer-authorized access) - and Client Credentials flow (for Data Custodian administrative access). + + + **Supported Flows:** + + - **Authorization Code** - Used by Third Party Applications to access + customer-authorized resources + + - **Client Credentials** - Used by Data Custodians for administrative + access to all resources + + + **Function Blocks (Scopes):** + + The Green Button API uses ESPI Function Blocks to define access scopes. + Function blocks are specified in the format `FB=X_Y_Z` where each number + represents a specific capability: + + - FB_1: Provide Subscription + + - FB_3: Provide Usage Point List + + - FB_4: Provide Usage Point + + - FB_5: Provide Reading Type + + - FB_8: Provide Meter Reading + + - FB_13: Provide Interval Block + + - FB_14: Provide Electric Power Quality Summary + + - FB_15: Provide Electric Power Usage Summary + + - FB_18: Provide Local Time Parameters + + - FB_19: Provide Application Information + + - FB_31: Provide Authorization + + - FB_32: Provide Service Status + + - FB_33: Provide Usage Points (Data Custodian) + + - FB_34: Provide Batch Subscription + + - FB_35: Provide Batch Bulk + + - FB_37: Provide Batch RetailCustomer UsagePoint + + - FB_39: Provide Batch Subscription UsagePoint + + - FB_50-58: Provide Customer Resources flows: authorizationCode: authorizationUrl: https://sandbox.greenbuttonalliance.org:8443/DataCustodian/oauth/authorize tokenUrl: https://sandbox.greenbuttonalliance.org:8443/DataCustodian/oauth/token scopes: - 'FB=1_3_4_5_8_13_14_15_18_19_31_32_33_34_35_37_39': Full Green Button scope + 'FB=1_3_4_5_8_13_14_15_18_19_31_32_33_34_35_37_39_50_51_52_53_54_55_56_57_58': Full Green Button scope with customer resources + 'FB=1_3_4_5_8_13_14_15_18_19_31_32_33_34_35_37_39': Full Green Button scope (energy only) + 'FB=4_5_8_13_14_15': Usage data and summaries + 'FB=50_51_52_53_54_55_56_57_58': Customer and billing data clientCredentials: tokenUrl: https://sandbox.greenbuttonalliance.org:8443/DataCustodian/oauth/token scopes: - 'FB=1_3_4_5_8_13_14_15_18_19_31_32_33_34_35_37_39': Full Green Button scope + 'FB=1_3_4_5_8_13_14_15_18_19_31_32_33_34_35_37_39_50_51_52_53_54_55_56_57_58': Full Green Button scope with customer resources + 'FB=1_3_4_5_8_13_14_15_18_19_31_32_33_34_35_37_39': Full Green Button scope (energy only) + 'FB=4_5_8_13_14_15': Usage data and summaries + 'FB=50_51_52_53_54_55_56_57_58': Customer and billing data parameters: published-max: $ref: 'components/parameters/published-max.yaml' @@ -360,6 +416,52 @@ components: $ref: 'components/schemas/Statement.yaml' ProgramDateIdMappings: $ref: 'components/schemas/ProgramDateIdMappings.yaml' + Organisation: + $ref: 'components/schemas/Organisation.yaml' + StreetAddress: + $ref: 'components/schemas/StreetAddress.yaml' + StreetDetail: + $ref: 'components/schemas/StreetDetail.yaml' + TownDetail: + $ref: 'components/schemas/TownDetail.yaml' + TelephoneNumber: + $ref: 'components/schemas/TelephoneNumber.yaml' + ElectronicAddress: + $ref: 'components/schemas/ElectronicAddress.yaml' + Document: + $ref: 'components/schemas/Document.yaml' + Agreement: + $ref: 'components/schemas/Agreement.yaml' + Asset: + $ref: 'components/schemas/Asset.yaml' + Location: + $ref: 'components/schemas/Location.yaml' + PositionPoint: + $ref: 'components/schemas/PositionPoint.yaml' + Status: + $ref: 'components/schemas/Status.yaml' + Priority: + $ref: 'components/schemas/Priority.yaml' + LifecycleDate: + $ref: 'components/schemas/LifecycleDate.yaml' + AcceptanceTest: + $ref: 'components/schemas/AcceptanceTest.yaml' + MeterMultiplier: + $ref: 'components/schemas/MeterMultiplier.yaml' + AccountNotification: + $ref: 'components/schemas/AccountNotification.yaml' + DemandResponseProgram: + $ref: 'components/schemas/DemandResponseProgram.yaml' + ProgramDate: + $ref: 'components/schemas/ProgramDate.yaml' + ProgramDateIdMapping: + $ref: 'components/schemas/ProgramDateIdMapping.yaml' + StatementRef: + $ref: 'components/schemas/StatementRef.yaml' + PricingStructure: + $ref: 'components/schemas/PricingStructure.yaml' + BatchItemInfo: + $ref: 'components/schemas/BatchItemInfo.yaml' responses: AtomFeed: $ref: 'components/responses/AtomFeed.yaml'