naftiko: 1.0.0-alpha2 info: label: Streaming Services OpenAPI Specification — Apportioned Hourly Emissions description: 'Apportioned Hourly Emissions. 4 operations. Lead operation: operations. Self-contained Naftiko capability covering one EPA business surface.' tags: - EPA - Apportioned Hourly Emissions created: '2026-05-29' modified: '2026-05-29' binds: - namespace: env keys: EPA_APIKEY_KEY: EPA_APIKEY_KEY capability: consumes: - type: http namespace: cam-streaming-apportioned-hourly-emissions baseUri: https://api.epa.gov/easey description: Streaming Services OpenAPI Specification — Apportioned Hourly Emissions business capability. Self-contained, no shared references. authentication: type: apikey key: x-api-key value: '{{env.EPA_APIKEY_KEY}}' placement: header resources: - name: streaming-services-emissions-apportioned-hourly path: /streaming-services/emissions/apportioned/hourly operations: - name: hourlyApportionedEmissionsControllerstreamEmissions method: GET description: hourlyApportionedEmissionsControllerstreamEmissions inputParameters: - name: stateCode in: query type: array required: false description: Two letter abbreviation for the State. - name: facilityId in: query type: array required: false description: The Facility ID code assigned by the Department of Energy's Energy Information Administration. The Energy Information Administration Plant ID code is also referred to as the "ORIS code", "ORISPL code" - name: unitType in: query type: array required: false description: Type of unit or boiler. - name: unitFuelType in: query type: array required: false description: Primary or Secondary fuel types combusted by the unit. - name: controlTechnologies in: query type: array required: false description: Method or equipment used by the combustion unit to minimize Hg, NOx, PM, or SO2 emissions. - name: programCodeInfo in: query type: array required: false description: Statutory or regulatory based options for tracking and reducing air pollution emissions. - name: beginDate in: query type: string required: true description: Begin date for a given period of a unit's emissions. - name: endDate in: query type: string required: true description: End date for a given period of a unit's emissions. - name: operatingHoursOnly in: query type: boolean required: false description: Indicator of whether or not a request should return only data for hours where a unit operated. - name: locationName in: query type: array required: false description: locationName - name: exclude in: query type: array required: false description: Selected items will be excluded from the response outputRawFormat: json outputParameters: - name: result type: object value: $. - name: streaming-services-emissions-apportioned-hourly-by-facility path: /streaming-services/emissions/apportioned/hourly/by-facility operations: - name: hourlyApportionedEmissionsControllerstreamEmissionsFacilityAggregation method: GET description: hourlyApportionedEmissionsControllerstreamEmissionsFacilityAggregation inputParameters: - name: stateCode in: query type: array required: false description: Two letter abbreviation for the State. - name: facilityId in: query type: array required: false description: The Facility ID code assigned by the Department of Energy's Energy Information Administration. The Energy Information Administration Plant ID code is also referred to as the "ORIS code", "ORISPL code" - name: unitType in: query type: array required: false description: Type of unit or boiler. - name: unitFuelType in: query type: array required: false description: Primary or Secondary fuel types combusted by the unit. - name: controlTechnologies in: query type: array required: false description: Method or equipment used by the combustion unit to minimize Hg, NOx, PM, or SO2 emissions. - name: programCodeInfo in: query type: array required: false description: Statutory or regulatory based options for tracking and reducing air pollution emissions. - name: beginDate in: query type: string required: true description: Begin date for a given period of a unit's emissions. - name: endDate in: query type: string required: true description: End date for a given period of a unit's emissions. - name: operatingHoursOnly in: query type: boolean required: false description: Indicator of whether or not a request should return only data for hours where a unit operated. - name: locationName in: query type: array required: false description: locationName outputRawFormat: json outputParameters: - name: result type: object value: $. - name: streaming-services-emissions-apportioned-hourly-by-state path: /streaming-services/emissions/apportioned/hourly/by-state operations: - name: hourlyApportionedEmissionsControllerstreamEmissionsStateAggregation method: GET description: hourlyApportionedEmissionsControllerstreamEmissionsStateAggregation inputParameters: - name: stateCode in: query type: array required: false description: Two letter abbreviation for the State. - name: facilityId in: query type: array required: false description: The Facility ID code assigned by the Department of Energy's Energy Information Administration. The Energy Information Administration Plant ID code is also referred to as the "ORIS code", "ORISPL code" - name: unitType in: query type: array required: false description: Type of unit or boiler. - name: unitFuelType in: query type: array required: false description: Primary or Secondary fuel types combusted by the unit. - name: controlTechnologies in: query type: array required: false description: Method or equipment used by the combustion unit to minimize Hg, NOx, PM, or SO2 emissions. - name: programCodeInfo in: query type: array required: false description: Statutory or regulatory based options for tracking and reducing air pollution emissions. - name: beginDate in: query type: string required: true description: Begin date for a given period of a unit's emissions. - name: endDate in: query type: string required: true description: End date for a given period of a unit's emissions. - name: operatingHoursOnly in: query type: boolean required: false description: Indicator of whether or not a request should return only data for hours where a unit operated. - name: locationName in: query type: array required: false description: locationName outputRawFormat: json outputParameters: - name: result type: object value: $. - name: streaming-services-emissions-apportioned-hourly-nationally path: /streaming-services/emissions/apportioned/hourly/nationally operations: - name: hourlyApportionedEmissionsControllerstreamEmissionsNationalAggregation method: GET description: hourlyApportionedEmissionsControllerstreamEmissionsNationalAggregation inputParameters: - name: stateCode in: query type: array required: false description: Two letter abbreviation for the State. - name: facilityId in: query type: array required: false description: The Facility ID code assigned by the Department of Energy's Energy Information Administration. The Energy Information Administration Plant ID code is also referred to as the "ORIS code", "ORISPL code" - name: unitType in: query type: array required: false description: Type of unit or boiler. - name: unitFuelType in: query type: array required: false description: Primary or Secondary fuel types combusted by the unit. - name: controlTechnologies in: query type: array required: false description: Method or equipment used by the combustion unit to minimize Hg, NOx, PM, or SO2 emissions. - name: programCodeInfo in: query type: array required: false description: Statutory or regulatory based options for tracking and reducing air pollution emissions. - name: beginDate in: query type: string required: true description: Begin date for a given period of a unit's emissions. - name: endDate in: query type: string required: true description: End date for a given period of a unit's emissions. - name: operatingHoursOnly in: query type: boolean required: false description: Indicator of whether or not a request should return only data for hours where a unit operated. - name: locationName in: query type: array required: false description: locationName outputRawFormat: json outputParameters: - name: result type: object value: $. exposes: - type: rest namespace: cam-streaming-apportioned-hourly-emissions-rest port: 8080 description: REST adapter for Streaming Services OpenAPI Specification — Apportioned Hourly Emissions. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/streaming-services/emissions/apportioned/hourly name: streaming-services-emissions-apportioned-hourly description: REST surface for hourlyApportionedEmissionsControllerstreamEmissions. operations: - method: GET name: hourlyApportionedEmissionsControllerstreamEmissions description: hourlyApportionedEmissionsControllerstreamEmissions call: cam-streaming-apportioned-hourly-emissions.hourlyApportionedEmissionsControllerstreamEmissions with: stateCode: rest.stateCode facilityId: rest.facilityId unitType: rest.unitType unitFuelType: rest.unitFuelType controlTechnologies: rest.controlTechnologies programCodeInfo: rest.programCodeInfo beginDate: rest.beginDate endDate: rest.endDate operatingHoursOnly: rest.operatingHoursOnly locationName: rest.locationName exclude: rest.exclude outputParameters: - type: object mapping: $. - path: /v1/streaming-services/emissions/apportioned/hourly/by-facility name: streaming-services-emissions-apportioned-hourly-by-facility description: REST surface for hourlyApportionedEmissionsControllerstreamEmissionsFacilityAggregation. operations: - method: GET name: hourlyApportionedEmissionsControllerstreamEmissionsFacilityAggregation description: hourlyApportionedEmissionsControllerstreamEmissionsFacilityAggregation call: cam-streaming-apportioned-hourly-emissions.hourlyApportionedEmissionsControllerstreamEmissionsFacilityAggregation with: stateCode: rest.stateCode facilityId: rest.facilityId unitType: rest.unitType unitFuelType: rest.unitFuelType controlTechnologies: rest.controlTechnologies programCodeInfo: rest.programCodeInfo beginDate: rest.beginDate endDate: rest.endDate operatingHoursOnly: rest.operatingHoursOnly locationName: rest.locationName outputParameters: - type: object mapping: $. - path: /v1/streaming-services/emissions/apportioned/hourly/by-state name: streaming-services-emissions-apportioned-hourly-by-state description: REST surface for hourlyApportionedEmissionsControllerstreamEmissionsStateAggregation. operations: - method: GET name: hourlyApportionedEmissionsControllerstreamEmissionsStateAggregation description: hourlyApportionedEmissionsControllerstreamEmissionsStateAggregation call: cam-streaming-apportioned-hourly-emissions.hourlyApportionedEmissionsControllerstreamEmissionsStateAggregation with: stateCode: rest.stateCode facilityId: rest.facilityId unitType: rest.unitType unitFuelType: rest.unitFuelType controlTechnologies: rest.controlTechnologies programCodeInfo: rest.programCodeInfo beginDate: rest.beginDate endDate: rest.endDate operatingHoursOnly: rest.operatingHoursOnly locationName: rest.locationName outputParameters: - type: object mapping: $. - path: /v1/streaming-services/emissions/apportioned/hourly/nationally name: streaming-services-emissions-apportioned-hourly-nationally description: REST surface for hourlyApportionedEmissionsControllerstreamEmissionsNationalAggregation. operations: - method: GET name: hourlyApportionedEmissionsControllerstreamEmissionsNationalAggregation description: hourlyApportionedEmissionsControllerstreamEmissionsNationalAggregation call: cam-streaming-apportioned-hourly-emissions.hourlyApportionedEmissionsControllerstreamEmissionsNationalAggregation with: stateCode: rest.stateCode facilityId: rest.facilityId unitType: rest.unitType unitFuelType: rest.unitFuelType controlTechnologies: rest.controlTechnologies programCodeInfo: rest.programCodeInfo beginDate: rest.beginDate endDate: rest.endDate operatingHoursOnly: rest.operatingHoursOnly locationName: rest.locationName outputParameters: - type: object mapping: $. - type: mcp namespace: cam-streaming-apportioned-hourly-emissions-mcp port: 9090 transport: http description: MCP adapter for Streaming Services OpenAPI Specification — Apportioned Hourly Emissions. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: hourlyapportionedemissionscontroller-streamemissions description: hourlyapportionedemissionscontroller-streamemissions hints: readOnly: true destructive: false idempotent: true call: cam-streaming-apportioned-hourly-emissions.hourlyApportionedEmissionsControllerstreamEmissions with: stateCode: tools.stateCode facilityId: tools.facilityId unitType: tools.unitType unitFuelType: tools.unitFuelType controlTechnologies: tools.controlTechnologies programCodeInfo: tools.programCodeInfo beginDate: tools.beginDate endDate: tools.endDate operatingHoursOnly: tools.operatingHoursOnly locationName: tools.locationName exclude: tools.exclude outputParameters: - type: object mapping: $. - name: hourlyapportionedemissionscontroller-streamemissionsfacilityaggregation description: hourlyapportionedemissionscontroller-streamemissionsfacilityaggregation hints: readOnly: true destructive: false idempotent: true call: cam-streaming-apportioned-hourly-emissions.hourlyApportionedEmissionsControllerstreamEmissionsFacilityAggregation with: stateCode: tools.stateCode facilityId: tools.facilityId unitType: tools.unitType unitFuelType: tools.unitFuelType controlTechnologies: tools.controlTechnologies programCodeInfo: tools.programCodeInfo beginDate: tools.beginDate endDate: tools.endDate operatingHoursOnly: tools.operatingHoursOnly locationName: tools.locationName outputParameters: - type: object mapping: $. - name: hourlyapportionedemissionscontroller-streamemissionsstateaggregation description: hourlyapportionedemissionscontroller-streamemissionsstateaggregation hints: readOnly: true destructive: false idempotent: true call: cam-streaming-apportioned-hourly-emissions.hourlyApportionedEmissionsControllerstreamEmissionsStateAggregation with: stateCode: tools.stateCode facilityId: tools.facilityId unitType: tools.unitType unitFuelType: tools.unitFuelType controlTechnologies: tools.controlTechnologies programCodeInfo: tools.programCodeInfo beginDate: tools.beginDate endDate: tools.endDate operatingHoursOnly: tools.operatingHoursOnly locationName: tools.locationName outputParameters: - type: object mapping: $. - name: hourlyapportionedemissionscontroller-streamemissionsnationalaggregation description: hourlyapportionedemissionscontroller-streamemissionsnationalaggregation hints: readOnly: true destructive: false idempotent: true call: cam-streaming-apportioned-hourly-emissions.hourlyApportionedEmissionsControllerstreamEmissionsNationalAggregation with: stateCode: tools.stateCode facilityId: tools.facilityId unitType: tools.unitType unitFuelType: tools.unitFuelType controlTechnologies: tools.controlTechnologies programCodeInfo: tools.programCodeInfo beginDate: tools.beginDate endDate: tools.endDate operatingHoursOnly: tools.operatingHoursOnly locationName: tools.locationName outputParameters: - type: object mapping: $.