Leap create meters API

The create meters API from Leap — 4 operation(s) for create meters.

OpenAPI Specification

leap-create-meters-api-openapi.yml Raw ↑
openapi: 3.0.2
info:
  description: Endpoints to create or update meters in bulk through Leap's API.
  title: create meters API
  version: 1.1.0
servers:
- description: Leap staging API
  url: https://api.staging.leap.energy
- description: Leap production API
  url: https://api.leap.energy
security:
- Bearer: []
tags:
- name: create meters
paths:
  /v1.1/jobs/meters:
    get:
      description: List all meter upload jobs and their status.
      operationId: listMeterBatchJobs
      parameters:
      - description: 'One or more filters to apply. Uses the `AND` approach, so all filters should match for meter jobs to show up.  Use the `/v1.1/jobs/meter-job-filters` endpoint to retrieve all available  filters that can be applied when querying meter jobs. When you provide multiple values for a key (e.g. transmission_region), the IN operator is used. Combine multiple filters like this: `?filter=file_name:Test&filter=status:FAILED`'
        explode: true
        in: query
        name: filter
        required: false
        schema:
          example:
          - file_name:Test
          - status:FAILED
          items:
            type: string
          type: array
        style: form
      - description: If there are more meter jobs to fetch, this token will be populated as `next_page_token` in the response. Use it to fetch the next page of meter jobs.
        explode: true
        in: query
        name: page_token
        required: false
        schema:
          type: string
        style: form
      - description: Amount of results to return. Defaults to 100.
        explode: true
        in: query
        name: page_size
        required: false
        schema:
          default: 100
          type: integer
        style: form
      - description: Search query to apply. Comma-separate multiple values. This is a free-text search that will be applied when searching through the meter jobs. Define the fields to search through in the `search_fields` parameter.
        example: partner123
        explode: true
        in: query
        name: search_query
        required: false
        schema:
          type: string
        style: form
      - description: Fields to search through. Required if `search_query` is provided. If the string from `search_query` is found in any of these fields, the meter jobs will be included in the results.
        example:
        - partner_reference
        - file_name
        explode: true
        in: query
        name: search_fields
        required: false
        schema:
          items:
            type: string
          minItems: 0
          type: array
        style: form
      responses:
        '200':
          content:
            application/json:
              example:
                jobs:
                - job_id: 5961a37f-6325-431c-97cb-82f35e3c09cf
                  status: COMPLETED
                  file_name: meters_upload.csv
                  assets_count: 10
                  assets_created_count: 8
                  assets_updated_count: 2
                  assets_failed_count: 0
                  transmission_regions:
                  - CAISO
                  created_at: 2024-03-21 09:43:51.186000+00:00
                  updated_at: 2024-03-21 09:50:51.186000+00:00
                next_page_token: abc123
              schema:
                $ref: '#/components/schemas/PagedJobs'
          description: List of jobs
      summary: List meter jobs
      tags:
      - create meters
    post:
      deprecated: false
      description: Create meters on the Leap platform individually or in bulk. Endpoint accepts both CSV and JSON input. Returns job ID.
      operationId: createMeterBatchJob
      parameters:
      - description: If set to true, the API will update existing meters with the same partner reference. If set to false or parameter is omitted, the API will create new meters and return a duplicate error for existing meters with the same partner reference.
        explode: true
        in: query
        name: update_existing
        required: false
        schema:
          default: false
          type: boolean
        style: form
      - description: If set, the API will use this file_name when uploading the file to the API. If not set, the API will use the job_id and file_extension to create a file_name as fallback. The file_name must be a valid string up to 255 characters matching the file naming pattern.
        explode: true
        in: query
        name: file_name
        required: false
        schema:
          example: 5961a37f-6325-431c-97cb-82f35e3c09cf.csv
          maxLength: 255
          pattern: ^[a-zA-Z0-9._\s-]+.[a-zA-Z0-9]+$
          type: string
        style: form
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMeterBatchJobRequest'
        description: Meter batch job request body
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateMeterBatchJobResponse'
            text/csv:
              schema:
                type: string
          description: The job ID that got created, which you can use to poll the status of the job.
        '400':
          content:
            application/json:
              example:
                title: Meter id is not a UUID
                status: 400
                details:
                - message: Missing required parameter
                  json_index: 1
                  problem_field: partner_reference
                - message: Invalid format
                  json_index: 3
                  problem_field: transmission_region
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Failed to create meter batch job, because the meter batch job request sent was invalid
        '403':
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    title: You do not have the necessary permissions for this operation
                    status: 403
                    details: {}
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: You do not have the necessary permissions for this operation.
        '500':
          content:
            application/json:
              examples:
                Internal Error:
                  value: An error happened whilst processing your request
              schema:
                type: string
          description: Internal server error
      security:
      - Bearer: []
      summary: Create meters
      tags:
      - create meters
  /v1.1/jobs/meter-job-filters:
    get:
      description: '[Leap frontend only] lists filters that can be used to filter meter jobs.'
      operationId: listMeterBatchJobsFilters
      responses:
        '200':
          content:
            application/json:
              example:
                filter_options:
                - key: status
                  values:
                  - PROCESSING
                  - FAILED
                  - COMPLETED
                  - COMPLETED_WITH_ERRORS
                - key: transmission_region
                  values:
                  - CAISO
                  - NYISO
                  - ISONE
              schema:
                $ref: '#/components/schemas/MeterJobFiltersResponse'
          description: Meter upload filters
      summary: List meter upload filters
      tags:
      - create meters
  /v1.1/jobs/meters/{job_id}:
    get:
      description: Get meters job status and associated meter IDs for successfully uploaded assets.
      operationId: getMeterBatchJob
      parameters:
      - description: The job ID returned when running a create meters batch job.
        example: f1080382-ec33-48ed-a511-528af08f747e
        explode: false
        in: path
        name: job_id
        required: true
        schema:
          format: uuid
          type: string
        style: simple
      responses:
        '200':
          content:
            application/json:
              example:
                assets:
                - partner_reference: test-device-123
                  status: COMPLETED
                  status_detail:
                    name: METER_CREATED
                    description: A new meter was created.
                  created_at: 2024-03-21 09:43:51.186000+00:00
                  meter_id: 87654321-4321-8888-6666-2c963f66afa3
                job_id: 638451c8-4b81-4b91-ab43-c0ba0c5a0336
                status: COMPLETED
                created_at: 2024-03-21 09:43:51.186000+00:00
                updated_at: 2024-03-21 09:43:51.186000+00:00
              schema:
                $ref: '#/components/schemas/JobAndAssets'
          description: Job details
      summary: Get meters job status
      tags:
      - create meters
  /v1.1/meters:
    post:
      description: Create a single meter on the Leap platform.  Endpoint accepts only JSON input, and returns a synchronous response.  For batch CSV uploads, use the asynchronous endpoint. The meter data needs to be accompanied by a token obtained from the  onboarding service. This token is needed to associate the created meter with a partner.  The token also contains any default values associated with this specific flow.
      operationId: createSingleMeter
      parameters:
      - description: If set to true, the API will update existing meters with the same partner reference. If set to false or parameter is omitted, the API will create new meters and return a duplicate error for existing meters with the same partner reference.
        explode: true
        in: query
        name: update_existing
        required: false
        schema:
          default: false
          type: boolean
        style: form
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAssetRequest'
        description: Provisional asset request body
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProvisionalAsset'
          description: A provisional asset. Processing this asset successfully results in a meter being created or updated,  whereas a failure does not create or update a meter.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateMeterErrorResponse'
          description: Something went wrong, and the API could not create the provisional asset. The API will return a 200 if  a provisional asset is created, but the meter creation fails. In that case, the response body will contain details on the failure.
      summary: Create a single meter
      tags:
      - create meters
components:
  schemas:
    PagedJobs:
      example:
        jobs:
        - job_id: 5961a37f-6325-431c-97cb-82f35e3c09cf
          status: PROCESSING
          file_name: file_name
          assets_count: 0
          assets_created_count: 6
          assets_updated_count: 1
          assets_failed_count: 5
          transmission_regions:
          - CAISO
          - CAISO
          created_at: 2024-03-21 09:43:51.186000+00:00
          updated_at: 2024-03-22 09:43:51.186000+00:00
        - job_id: 5961a37f-6325-431c-97cb-82f35e3c09cf
          status: PROCESSING
          file_name: file_name
          assets_count: 0
          assets_created_count: 6
          assets_updated_count: 1
          assets_failed_count: 5
          transmission_regions:
          - CAISO
          - CAISO
          created_at: 2024-03-21 09:43:51.186000+00:00
          updated_at: 2024-03-22 09:43:51.186000+00:00
        next_page_token: next_page_token
      properties:
        jobs:
          items:
            $ref: '#/components/schemas/Job'
          type: array
        next_page_token:
          description: If there are more provisional assets to fetch, this token will be populated. Use it to fetch the next page of provisional assets.
          type: string
      required:
      - jobs
      type: object
    Caiso:
      example:
        is_receiving_sgip_funding: true
        nem_type: NEM2
      properties:
        is_receiving_sgip_funding:
          description: Only needed if the battery is installed after June 30, 2023 to verify eligibility for no baseline.
          type: boolean
        nem_type:
          $ref: '#/components/schemas/NemType'
      type: object
    KeyValueFilter:
      example:
        key: key
        values:
        - values
        - values
      properties:
        key:
          type: string
        values:
          items:
            type: string
          type: array
      required:
      - key
      - values
      type: object
    NemType:
      description: Is the battery under NEM2 or NEM3 rules
      enum:
      - NEM2
      - NEM3
      type: string
    company_type:
      description: Required for customers enrolling in PSEGLI CSRP/DLRP
      enum:
      - INDIVIDUAL_OR_SOLE_PROPRIETOR
      - LIMITED_LIABILITY_COMPANY
      - PARTNERSHIP
      - CORPORATION
      - OTHER
      - EXEMPT_PAYEE
      type: string
    Customer:
      example:
        street_1: 132 My Street
        street_2: Apartment 32
        postal_code: '10001'
        city: New York
        state_or_province_code: NY
        country_code: US
        end_customer_name: Customer Name
        end_customer_title: Mrs.
        end_customer_email: email@address.com
        end_customer_phone_number: (123) 123-4567
        end_customer_company_name: Company Name Inc.
        partner_offering_name: Offering Name
        partner_offering_date: 2000-01-23
        is_in_wholesale_capacity_market: true
        dispatch_option: DAILY
        billing:
          street_1: 132 My Billing Street
          street_2: Apartment 32
          postal_code: '90210'
          city: Los Angeles
          state_or_province_code: CA
          country_code: US
        partner_customer_reference: partner-customer-reference-1
      properties:
        street_1:
          description: Physical street this asset is located in. If you need to provide extensions like apartment or unit number, please add those to the 'street2' field.
          example: 132 My Street
          maxLength: 128
          minLength: 1
          pattern: ^[’'+#"@()/&.,;\sA-Za-zÀ-ɏḀ-ỿ0-9\-|\\]{1,128}$
          type: string
        street_2:
          description: Provide extensions like apartment or unit number here.
          example: Apartment 32
          maxLength: 128
          minLength: 1
          pattern: ^[’'+#"@()/&.,;\sA-Za-zÀ-ɏḀ-ỿ0-9\-|\\]{1,128}$
          type: string
        postal_code:
          description: Postal code of the location this asset is located in.
          example: '10001'
          pattern: ^[0-9]{5}(?:-[0-9]{4})?$
          type: string
        city:
          description: City this asset is located in.
          example: New York
          maxLength: 128
          minLength: 1
          pattern: ^[’'+#"@()/&.,;\sA-Za-zÀ-ɏḀ-ỿ0-9\-]{1,128}$
          type: string
        state_or_province_code:
          description: State or province this asset is located in.
          example: NY
          maxLength: 2
          minLength: 2
          type: string
        country_code:
          default: US
          description: ISO 3166-1 alpha-2 country code of the country this asset is located in.
          example: US
          maxLength: 2
          minLength: 2
          type: string
        end_customer_name:
          description: End customer name or contact name
          example: Customer Name
          maxLength: 128
          minLength: 1
          pattern: ^(?!.*[�\u00A0\uFFFD?])[\s\S]{1,128}$
          type: string
        end_customer_title:
          description: Title of the primary contact for the end customer; only applicable for Commercial & Industrial customers
          example: Mrs.
          maxLength: 15
          minLength: 1
          pattern: ^[’'+#"@()/&.,;\sA-Za-zÀ-ɏḀ-ỿ0-9\-]{1,128}$
          type: string
        end_customer_email:
          description: The customer email address
          example: email@address.com
          format: email
          maxLength: 128
          minLength: 3
          type: string
        end_customer_phone_number:
          description: This would ideally be the phone number on file with the LSE; it may be used by the CEC and/or Utility Distribution Company (UDC) for verification purposes; please do not use any special characters for this column, and do not include a "1" at the front of the phone number.
          example: (123) 123-4567
          maxLength: 32
          minLength: 3
          type: string
        end_customer_company_name:
          description: Legal company name of the end customer site; only applicable for Commercial & Industrial customers
          example: Company Name Inc.
          maxLength: 128
          minLength: 1
          pattern: ^[’'+#"@()/&.,;\sA-Za-zÀ-ɏḀ-ỿ0-9\-]{1,128}$
          type: string
        partner_offering_name:
          description: 'The name of Partner''s program/offering in which the end-customer enrolled/contracted. '
          example: Offering Name
          maxLength: 128
          minLength: 1
          type: string
        partner_offering_date:
          description: Date in which the end customer enrolled in Partner's offering
          format: date
          type: string
        is_in_wholesale_capacity_market:
          description: Forward Capacity Market in ISONE
          type: boolean
        dispatch_option:
          $ref: '#/components/schemas/DispatchOption'
        billing:
          $ref: '#/components/schemas/Customer_billing'
        partner_customer_reference:
          description: Partner identifier for customer or site. This should match the refId used in Leap Connect when combining  customer-supplied data in Leap Connect with partner-supplied data in Create Meters/Meter Uploads.
          example: partner-customer-reference-1
          maxLength: 256
          minLength: 3
          pattern: ^[^\/\\?\]\[{}!#$%^&*()<>|]{3,256}$
          type: string
      required:
      - city
      - country_code
      - postal_code
      - state_or_province_code
      - street_1
      type: object
    ProvisionalAssetStatus:
      enum:
      - PROCESSING
      - FAILED
      - DUPLICATE
      - COMPLETED
      - MULTIPLE_PARTNER_REFERENCE
      type: string
    DeviceType:
      description: Type of device on premise
      enum:
      - BATTERY
      - GENERATOR
      - EV
      - EV_CHARGER
      - BIDIRECTIONAL_EV_CHARGER
      - SMART_THERMOSTAT
      - AIR_CONDITIONER
      - HEAT_PUMP
      example: BATTERY
      type: string
    CreateMeterBatchJobResponse:
      example:
        job_id: 5961a37f-6325-431c-97cb-82f35e3c09cf
      properties:
        job_id:
          description: The id of the create meters job
          example: 5961a37f-6325-431c-97cb-82f35e3c09cf
          format: uuid
          type: string
      required:
      - job_id
      type: object
    JobStatus:
      enum:
      - PROCESSING
      - FAILED
      - COMPLETED
      - COMPLETED_WITH_ERRORS
      type: string
    CreateMeterUtility:
      properties:
        utility:
          $ref: '#/components/schemas/CommonUtility'
    CommonMeter:
      properties:
        customer:
          $ref: '#/components/schemas/Customer'
        device:
          $ref: '#/components/schemas/Device'
        site:
          $ref: '#/components/schemas/Site'
        caiso:
          $ref: '#/components/schemas/Caiso'
        isone:
          $ref: '#/components/schemas/Isone'
        nyiso:
          $ref: '#/components/schemas/Nyiso'
      required:
      - customer
      - meter_type
      - transmission_region
      type: object
    ProvisionalAsset:
      allOf:
      - $ref: '#/components/schemas/AssetUploadStatus'
      - properties:
          job_id:
            description: The id of the job where this provisional asset was uploaded
            example: 5961a37f-6325-431c-97cb-82f35e3c09cf
            format: uuid
            type: string
          data:
            $ref: '#/components/schemas/CreateMeter'
        required:
        - job_id
        type: object
      description: A provisional asset is an asset that was created through a create meter  call or batch job, but is not yet fully processed. It's a temporary entity that is created to give you a way to track the status of the asset creation process. The "data" property will be populated with the asset data if the job is completed successfully.
      example:
        partner_reference: ''
        status: PROCESSING
        status_detail:
          name: ACCOUNT_MISMATCH
          description: description
          failed_fields:
            key: failed_fields
        created_at: 2000-01-23 04:56:07+00:00
        meter_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        job_id: 5961a37f-6325-431c-97cb-82f35e3c09cf
        data:
          partner_reference: unique-reference-id-12345
          transmission_region: CAISO
          customer_classification: RESIDENTIAL
          load_types:
          - HVAC
          meter_type: UTILITY_METER
          customer:
            street_1: 132 My Street
            street_2: Apartment 32
            postal_code: '10001'
            city: New York
            state_or_province_code: NY
            country_code: US
            end_customer_name: Customer Name
            end_customer_title: Mrs.
            end_customer_email: email@address.com
            end_customer_phone_number: (123) 123-4567
            end_customer_company_name: Company Name Inc.
            partner_offering_name: Offering Name
            partner_offering_date: 2000-01-23
            is_in_wholesale_capacity_market: true
            dispatch_option: DAILY
            billing:
              street_1: 132 My Billing Street
              street_2: Apartment 32
              postal_code: '90210'
              city: Los Angeles
              state_or_province_code: CA
              country_code: US
            partner_customer_reference: partner-customer-reference-1
          device:
            device_type: BATTERY
            device_serial_number: device-serial-number
            device_model: device-model
            device_manufacturer: device-manufacturer
            install_date: 2000-01-23
            battery_power_capacity_kw: 1.233
            battery_energy_capacity_kwh: 9.876
            battery_duration_hours: 4
            permission_to_operate_date: 2000-01-23
          site:
            load_zone: load-zone
            number_of_devices: 1
            on_site_fossil_generator: true
            renewable_generator: true
            generator_capacity_kw: 1.234
            generator_model_year: 2020
            generator_manufacturer: Manufacturer of the generator
            generator_fuel_type: ''
            generator_serial_number: generator-serial-number
            site_devices:
            - device_type: BATTERY
              model: device-model
              manufacturer: device-manufacturer
              serial_number: device-serial-number
              energy_capacity_kwh: 39.504
              power_capacity_kw: 9.876
              energy_capacity_duration_hours: 4
              voltage_level: EVSE_LEVEL_1
              model_year: 2020
              fuel_type: DIESEL
              max_energy_production_rate_kw: 7.5
              max_energy_consumption_rate_kw: 7.5
              battery_max_state_of_charge_percentage: 95
              battery_min_state_of_charge_percentage: 10
              installer: Acme Installations Inc.
              pv_connected: true
            - device_type: BATTERY
              model: device-model
              manufacturer: device-manufacturer
              serial_number: device-serial-number
              energy_capacity_kwh: 39.504
              power_capacity_kw: 9.876
              energy_capacity_duration_hours: 4
              voltage_level: EVSE_LEVEL_1
              model_year: 2020
              fuel_type: DIESEL
              max_energy_production_rate_kw: 7.5
              max_energy_consumption_rate_kw: 7.5
              battery_max_state_of_charge_percentage: 95
              battery_min_state_of_charge_percentage: 10
              installer: Acme Installations Inc.
              pv_connected: true
          caiso:
            is_receiving_sgip_funding: true
            nem_type: NEM2
          isone:
            in_connected_solutions: true
          nyiso:
            cbl_method: AVERAGE_DAY
            company_type: INDIVIDUAL_OR_SOLE_PROPRIETOR
            existing_nyiso_resource_id: '666266'
            partner_nyiso_resource_name: '666266'
          utility:
            utility_name: PGE
            load_serving_entity: PGE
            electric_service_account_number: 12243243-121
            tariff: tariff code
            voltage: '>= 600 V'
            utility_meter_serial_number: utility-meter-serial-number
          customer_group: customer_group
    MeterType:
      description: The type of asset.
      enum:
      - UTILITY_METER
      - SUBMETER
      - DEVICE
      type: string
    CustomerClassification:
      description: Whether this is a residential (home) asset or a commercial (business) asset.
      enum:
      - RESIDENTIAL
      - COMMERCIAL
      type: string
    customer_baseline_load_verification_methodology:
      description: Choice of the Customer Baseline Load (CBL) verification methodology that will be used to calculate load reduction.
      enum:
      - AVERAGE_DAY
      - WEATHER_ADJUSTED
      type: string
    CreateMeterCustomerGroup:
      properties:
        customer_group:
          description: The customer group associated with the meter.
          pattern: ^[’'+#\"@()/&.,;A-Za-z\u00C0-\u024F\u1E00-\u1EFF0-9\s_\-]{0,128}$
          type: string
    CreateAssetRequest:
      example:
        onboarding_token: eyJleGFtcGxlIjoiWW91IHNwZW50IHdheSB0b28gbXVjaCB0aW1lIGludG8gdGhpcyIsImluZm8iOiJMZWFwIHdpbGwgcHJvdmlkZSB0aGUgdG9rZW4ifQ.eyJleGFtcGxlIjoiWW91IHNwZW50IHdheSB0b28gbXVjaCB0aW1lIGludG8gdGhpcyIsImluZm8iOiJMZWFwIHdpbGwgcHJvdmlkZSB0aGUgdG9rZW4ifQ.eyJleGFtcGxlIjoiWW91IHNwZW50IHdheSB0b28gbXVjaCB0aW1lIGludG8gdGhpcyIsImluZm8iOiJMZWFwIHdpbGwgcHJvdmlkZSB0aGUgdG9rZW4ifQ
        provisional_asset:
          partner_reference: unique-reference-id-12345
          transmission_region: CAISO
          customer_classification: RESIDENTIAL
          load_types:
          - HVAC
          meter_type: UTILITY_METER
          customer:
            street_1: 132 My Street
            street_2: Apartment 32
            postal_code: '10001'
            city: New York
            state_or_province_code: NY
            country_code: US
            end_customer_name: Customer Name
            end_customer_title: Mrs.
            end_customer_email: email@address.com
            end_customer_phone_number: (123) 123-4567
            end_customer_company_name: Company Name Inc.
            partner_offering_name: Offering Name
            partner_offering_date: 2000-01-23
            is_in_wholesale_capacity_market: true
            dispatch_option: DAILY
            billing:
              street_1: 132 My Billing Street
              street_2: Apartment 32
              postal_code: '90210'
              city: Los Angeles
              state_or_province_code: CA
              country_code: US
            partner_customer_reference: partner-customer-reference-1
          device:
            device_type: BATTERY
            device_serial_number: device-serial-number
            device_model: device-model
            device_manufacturer: device-manufacturer
            install_date: 2000-01-23
            battery_power_capacity_kw: 1.233
            battery_energy_capacity_kwh: 9.876
            battery_duration_hours: 4
            permission_to_operate_date: 2000-01-23
          site:
            load_zone: load-zone
            number_of_devices: 1
            on_site_fossil_generator: true
            renewable_generator: true
            generator_capacity_kw: 1.234
            generator_model_year: 2020
            generator_manufacturer: Manufacturer of the generator
            generator_fuel_type: ''
            generator_serial_number: generator-serial-number
            site_devices:
            - device_type: BATTERY
              model: device-model
              manufacturer: device-manufacturer
              serial_number: device-serial-number
              energy_capacity_kwh: 39.504
              power_capacity_kw: 9.876
              energy_capacity_duration_hours: 4
              voltage_level: EVSE_LEVEL_1
              model_year: 2020
              fuel_type: DIESEL
              max_energy_production_rate_kw: 7.5
              max_energy_consumption_rate_kw: 7.5
              battery_max_state_of_charge_percentage: 95
              battery_min_state_of_charge_percentage: 10
              installer: Acme Installations Inc.
              pv_connected: true
            - device_type: BATTERY
              model: device-model
              manufacturer: device-manufacturer
              serial_number: device-serial-number
              energy_capacity_kwh: 39.504
              power_capacity_kw: 9.876
              energy_capacity_duration_hours: 4
              voltage_level: EVSE_LEVEL_1
              model_year: 2020
              fuel_type: DIESEL
              max_energy_production_rate_kw: 7.5
              max_energy_consumption_rate_kw: 7.5
              battery_max_state_of_charge_percentage: 95
              battery_min_state_of_charge_percentage: 10
              installer: Acme Installations Inc.
              pv_connected: true
          caiso:
            is_receiving_sgip_funding: true
            nem_type: NEM2
          isone:
            in_connected_solutions: true
          nyiso:
            cbl_method: AVERAGE_DAY
            company_type: INDIVIDUAL_OR_SOLE_PROPRIETOR
            existing_nyiso_resource_id: '666266'
            partner_nyiso_resource_name: '666266'
          utility:
            utility_name: PGE
            load_serving_entity: PGE
            electric_service_account_number: 12243243-121
            tariff: tariff code
            voltage: '>= 600 V'
            utility_meter_serial_number: utility-meter-serial-number
          customer_group: customer_group
      properties:
        onboarding_token:
          description: The token obtained from the onboarding service which contains a unique key to make sure we do not have  problems with duplicate submissions as well as the partner to associate any created meter to. Lastly this  token contains the default values of the created meter.
          example: eyJleGFtcGxlIjoiWW91IHNwZW50IHdheSB0b28gbXVjaCB0aW1lIGludG8gdGhpcyIsImluZm8iOiJMZWFwIHdpbGwgcHJvdmlkZSB0aGUgdG9rZW4ifQ.eyJleGFtcGxlIjoiWW91IHNwZW50IHdheSB0b28gbXVjaCB0aW1lIGludG8gdGhpcyIsImluZm8iOiJMZWFwIHdpbGwgcHJvdmlkZSB0aGUgdG9rZW4ifQ.eyJleGFtcGxlIjoiWW91IHNwZW50IHdheSB0b28gbXVjaCB0aW1lIGludG8gdGhpcyIsImluZm8iOiJMZWFwIHdpbGwgcHJvdmlkZSB0aGUgdG9rZW4ifQ
          type: string
        provisional_asset:
          $ref: '#/components/schemas/CreateMeter'
      required:
      - onboarding_token
      - provisional_asset
      type: object
    MeterJobFiltersResponse:
      example:
        filter_options:
        - key: key
          values:
          - values
          - values
        - key: key
          values:
          - values
          - values
      properties:
        filter_options:
          items:
            $ref: '#/components/schemas/KeyValueFilter'
          type: array
      required:
      - filter_options
      type: object
    CreateMeterError:
      example:
        field: field
        description: description
        suggestions:
        - suggestions:
          - field: field
            suggestion: ''
          - field: field
            suggestion: ''
        - suggestions:
          - field: field
            suggestion: ''
          - field: field
            suggestion: ''
      properties:
        field:
          description: The field name that was in error
          type: string
        description:
          description: Description of the error
          type: string
        suggestions:
          items:
            $ref: '#/components/schemas/Suggestion'
          type: array
      required:
      - descript

# --- truncated at 32 KB (70 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/leap/refs/heads/main/openapi/leap-create-meters-api-openapi.yml