Leap create meters API

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

Operations 5

GET /v1.1/jobs/meters List meter jobs #
POST /v1.1/jobs/meters Create meters #
GET /v1.1/jobs/meter-job-filters List meter upload filters #
GET /v1.1/jobs/meters/{job_id} Get meters job status #
POST /v1.1/meters Create a single meter #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/leap-create-meters-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

leap-create-meters-api-openapi.yml Raw ↑
openapi: 3.2.0
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:
    FuelType:
      description: The fuel source for a generator.
      enum:
      - DIESEL
      - NATURAL_GAS
      - DUAL_FUEL
      - CO_GEN
      - ENERGY_STORAGE
      - OTHER
      type: string
    Isone:
      example:
        in_connected_solutions: true
      properties:
        in_connected_solutions:
          description: Is the meter also participating in ConnectedSolutions; used for CPS
          type: boolean
      type: object
    CustomerClassification:
      description: Whether this is a residential (home) asset or a commercial (business) asset.
      enum:
      - RESIDENTIAL
      - COMMERCIAL
      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
    DeviceInfo:
      example:
        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
      properties:
        device_type:
          $ref: '#/components/schemas/DeviceType'
        model:
          description: The model of the device
          example: device-model
          maxLength: 128
          minLength: 1
          type: string
        manufacturer:
          description: The manufacturer of the device
          example: device-manufacturer
          maxLength: 128
          minLength: 1
          type: string
        serial_number:
          description: The serial number of the device
          example: device-serial-number
          maxLength: 256
          minLength: 1
          type: string
        energy_capacity_kwh:
          description: Total device energy capacity according to device specification sheet in kilowatt-hours.
          example: 39.504
          maximum: 999999
          minimum: 0
          type: number
        power_capacity_kw:
          description: The lower value between the inverter maximum output OR the nameplate maximum device output according to device specification sheet in kilowatts.
          example: 9.876
          maximum: 999999
          minimum: 0
          type: number
        energy_capacity_duration_hours:
          description: Leap's default approach will be to determine duration based on Battery Capacity and Battery Energy Capacity, but Leap Partner can recommend an alternative nomination as they see fit.  Measured in hours
          example: 4
          format: int32
          maximum: 100
          minimum: 0
          type: integer
        voltage_level:
          description: Device voltage level
          enum:
          - EVSE_LEVEL_1
          - EVSE_LEVEL_2
          type: string
        model_year:
          description: Year in which the device was manufactured
          example: 2020
          format: int32
          maximum: 2100
          minimum: 1900
          type: integer
        fuel_type:
          $ref: '#/components/schemas/FuelType'
        max_energy_production_rate_kw:
          description: Max energy production rate of the battery in kilowatts, as configured on the device.
          example: 7.5
          maximum: 999999
          minimum: 0
          type: number
        max_energy_consumption_rate_kw:
          description: Max energy consumption rate of the battery in kilowatts, as configured on the device.
          example: 7.5
          maximum: 999999
          minimum: 0
          type: number
        battery_max_state_of_charge_percentage:
          description: Max state of charge allowed/configured for the battery, as a percentage between 2 and 100 (e.g. 95 = 95%). 2 is the lower bound so people don't accidentally fill in 0.95 if they mean 95%.
          example: 95
          maximum: 100
          minimum: 2
          type: number
        battery_min_state_of_charge_percentage:
          description: Min state of charge allowed/configured for the battery, as a percentage between 0 and 100 (e.g. 10 = 10%).
          example: 10
          maximum: 100
          minimum: 0
          type: number
        installer:
          description: Name of the company or person that installed the device.
          example: Acme Installations Inc.
          maxLength: 256
          minLength: 1
          type: string
        pv_connected:
          description: Whether solar panels are connected to the device.
          example: true
          type: boolean
      required:
      - device_type
      type: object
    Nyiso:
      example:
        cbl_method: AVERAGE_DAY
        company_type: INDIVIDUAL_OR_SOLE_PROPRIETOR
        existing_nyiso_resource_id: '666266'
        partner_nyiso_resource_name: '666266'
      properties:
        cbl_method:
          $ref: '#/components/schemas/customer_baseline_load_verification_methodology'
        company_type:
          $ref: '#/components/schemas/company_type'
        existing_nyiso_resource_id:
          description: If the meter has previously been enrolled in SCR, they have had a resource_id assigned to it by NYISO
          example: '666266'
          type: string
        partner_nyiso_resource_name:
          description: If the meter has previously been enrolled in SCR, they have had a resource_id assigned to it by partner
          example: '666266'
          type: string
      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
    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
    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
    AssetUploadStatus:
      description: This is a temporary entity that is created to give you a way to track the status of the asset creation process.
      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
      properties:
        partner_reference:
          allOf:
          - $ref: '#/components/schemas/PartnerReference'
          description: Reference ID on your end. This ID can be used to link the asset to your internal systems, and can be changed/updated during the lifetime of a resulting Leap Meter.
        status:
          $ref: '#/components/schemas/ProvisionalAssetStatus'
        status_detail:
          $ref: '#/components/schemas/AssetUploadStatus_status_detail'
        created_at:
          format: date-time
          type: string
        meter_id:
          description: If a meter got created or updated on Leap's platform successfully (status = `COMPLETED`), the meter ID will be populated in this field, so you can use it to do API calls in other parts of Leap's system.
          format: uuid
          type: string
      required:
      - partner_reference
      - status
      - status_detail
      type: object
    DispatchOption:
      description: Dispatch strategy used in ConnectedSolutions.
      enum:
      - DAILY
      - TARGETED
      type: string
    transmission_region:
      description: Defines the transmission region of the meter
      enum:
      - CAISO
      - ERCOT
      - NYISO
      - ISONE
      - PJM
      - SERC
      - WECC_SW
      - WECC_PC
      example: CAISO
      type: string
    ProvisionalAssetStatus:
      enum:
      - PROCESSING
      - FAILED
      - DUPLICATE
      - COMPLETED
      - MULTIPLE_PARTNER_REFERENCE
      type: string
    Suggestion:
      example:
        suggestions:
        - field: field
          suggestion: ''
        - field: field
          suggestion: ''
      properties:
        suggestions:
          description: The list of suggestions
          items:
            $ref: '#/components/schemas/FieldSuggestion'
          type: array
      type: object
    FieldSuggestion:
      example:
        field: field
        suggestion: ''
      properties:
        field:
          description: The field targeting this suggestion
          type: string
        suggestion:
          description: The suggested value for the field
      type: object
    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
    PartnerReference:
      description: The partner-supplied reference ID to help identify the customer or site that a Leap meter correlates to a partner’s internal systems.
      example: partner-reference-1
      maxLength: 256
      minLength: 3
      pattern: ^[^\/\\?\]\[{}!#$%^&*()<>|]{3,256}$
      type: string
    JobStatus:
      enum:
      - PROCESSING
      - FAILED
      - COMPLETED
      - COMPLETED_WITH_ERRORS
      type: string
    NemType:
      description: Is the battery under NEM2 or NEM3 rules
      enum:
      - NEM2
      - NEM3
      type: string
    CreateMeterUtility:
      properties:
        utility:
          $ref: '#/components/schemas/CommonUtility'
    CreateMeterBatchJobRequest:
      example:
        assets:
        - 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
        - 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_se

# --- 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