ev.energy Boundary Meters API

The Boundary Meters API from ev.energy — 8 operation(s) for boundary meters.

Operations 8

GET /boundary_meter_makes List boundary meter makes #
GET /boundary_meter_makes/{boundary_meter_make_id} Retrieve a boundary meter make #
GET /boundary_meter_models List boundary meter models #
GET /boundary_meter_models/{boundary_meter_model_id} Retrieve a boundary meter model #
GET /boundary_meters List boundary meters #
GET /boundary_meters/{boundary_meter_id} Retrieve a boundary meter #
GET /boundary_meters/{boundary_meter_id}/status_logs List status logs for a boundary meter #
GET /boundary_meters/{boundary_meter_id}/status_logs/{sampled_at} Retrieve a status log for a boundary meter #

Documentation

Specifications

Other Resources

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/ev-energy-boundary-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

ev-energy-boundary-meters-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ev.energy v2 Boundary Meters API
  version: '2.0'
  contact:
    email: developers@ev.energy
    url: developers.ev.energy
    name: ev.energy developers
  description: The official API for ev.energy, version 2.
  license:
    name: Proprietary
    url: https://ev.energy
  termsOfService: ''
servers:
- url: https://api.ev.energy/v2
  description: Live API for both production and sandbox requests.
  x-internal: false
- description: Staging server for internal testing only.
  url: https://api-staging.ev.energy/v2
  x-internal: true
security:
- oauth2: []
tags:
- name: Boundary Meters
paths:
  /boundary_meter_makes:
    get:
      summary: List boundary meter makes
      tags:
      - Boundary Meters
      responses:
        '200':
          description: Return a list of Boundary Meter Makes.
          headers:
            Link:
              $ref: '#/components/headers/link'
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BoundaryMeterMake'
        '400':
          $ref: '#/components/responses/Problem400BadRequestList'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-boundary_meter_makes
      description: List all the boundary meter makes known by the ev.energy system.
      security:
      - oauth2:
        - boundary_meter:read
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/previous'
      - $ref: '#/components/parameters/next'
      - $ref: '#/components/parameters/page_size'
  /boundary_meter_makes/{boundary_meter_make_id}:
    parameters:
    - schema:
        type: string
      name: boundary_meter_make_id
      in: path
      required: true
      description: The ID of the specific boundary meter make to retrieve.
    get:
      summary: Retrieve a boundary meter make
      tags:
      - Boundary Meters
      responses:
        '200':
          description: Return a single boundary meter make.
          headers:
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BoundaryMeterMake'
        '400':
          $ref: '#/components/responses/Problem400BadRequestRetrieve'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-boundary_meter_makes-boundary_meter_make_id
      description: Retrieve details for a single, specific boundary meter make.
      security:
      - oauth2:
        - boundary_meter:read
      parameters:
      - $ref: '#/components/parameters/version-2'
  /boundary_meter_models:
    get:
      summary: List boundary meter models
      tags:
      - Boundary Meters
      responses:
        '200':
          description: Returns a list of boundary meter models.
          headers:
            Link:
              $ref: '#/components/headers/link'
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BoundaryMeterModel'
        '400':
          $ref: '#/components/responses/Problem400BadRequestList'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-boundary_meter_models
      description: List all the boundary meter models known by the ev.energy system.
      security:
      - oauth2:
        - boundary_meter:read
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/previous'
      - $ref: '#/components/parameters/next'
      - $ref: '#/components/parameters/page_size'
      - $ref: '#/components/parameters/expand-on-boundarymetermodel'
      - $ref: '#/components/parameters/boundary_meter_make_id_q'
  /boundary_meter_models/{boundary_meter_model_id}:
    parameters:
    - schema:
        type: string
      name: boundary_meter_model_id
      in: path
      required: true
      description: The ID of the specific boundary meter model to retrieve.
    get:
      summary: Retrieve a boundary meter model
      tags:
      - Boundary Meters
      responses:
        '200':
          description: Return a single boundary meter model.
          headers:
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BoundaryMeterModel'
        '400':
          $ref: '#/components/responses/Problem400BadRequestRetrieve'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-boundary_meter_models-boundary_meter_model_id
      description: Retrieve details for a single, specific boundary meter model.
      security:
      - oauth2:
        - boundary_meter:read
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/expand-on-boundarymetermodel'
  /boundary_meters:
    get:
      summary: List boundary meters
      tags:
      - Boundary Meters
      responses:
        '200':
          description: Returns a list of boundary meters.
          headers:
            Link:
              $ref: '#/components/headers/link'
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BoundaryMeter'
        '400':
          $ref: '#/components/responses/Problem400BadRequestList'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-boundary_meters
      description: List all the boundary meters that the authorization token has access to.
      security:
      - oauth2:
        - boundary_meter:read
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/user'
      - $ref: '#/components/parameters/previous'
      - $ref: '#/components/parameters/next'
      - $ref: '#/components/parameters/page_size'
      - $ref: '#/components/parameters/expand-on-boundarymeter'
  /boundary_meters/{boundary_meter_id}:
    parameters:
    - schema:
        type: string
      name: boundary_meter_id
      in: path
      required: true
      description: The ID of the specific Boundary Meter to retrieve.
    get:
      summary: Retrieve a boundary meter
      tags:
      - Boundary Meters
      responses:
        '200':
          description: Returns a single boundary meter.
          headers:
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BoundaryMeter'
        '400':
          $ref: '#/components/responses/Problem400BadRequestRetrieve'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-boundary_meters-boundary_meter_id
      description: Retrieve a single, specific boundary meter's details.
      security:
      - oauth2:
        - boundary_meter:read
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/user'
      - $ref: '#/components/parameters/expand-on-boundarymeter'
  /boundary_meters/{boundary_meter_id}/status_logs:
    parameters:
    - schema:
        type: string
      name: boundary_meter_id
      in: path
      required: true
      description: The ID of the specific Boundary Meter to retrieve status logs for.
    get:
      summary: List status logs for a boundary meter
      description: List the historical status logs for a specific boundary meter. Used to find out the state of the meter at each point it reported in to ev.energy.
      tags:
      - Boundary Meters
      responses:
        '200':
          description: List all status logs for a specific boundary meter, sorted newest first.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BoundaryMeterStatusLog'
          headers:
            Link:
              $ref: '#/components/headers/link-timestamps'
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
        '400':
          $ref: '#/components/responses/Problem400BadRequestList'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-boundary_meters-boundary_meter_id-status_logs
      parameters:
      - $ref: '#/components/parameters/previous'
      - $ref: '#/components/parameters/next'
      - $ref: '#/components/parameters/page_size'
      - $ref: '#/components/parameters/sampled_at__gte'
      - $ref: '#/components/parameters/sampled_at__lte'
      - $ref: '#/components/parameters/expand-on-boundarymeterstatuslog'
      - $ref: '#/components/parameters/version-2'
      security:
      - oauth2:
        - boundary_meter:read
  /boundary_meters/{boundary_meter_id}/status_logs/{sampled_at}:
    parameters:
    - schema:
        type: string
      name: boundary_meter_id
      in: path
      required: true
      description: The ID of the specific Boundary Meter.
    - schema:
        type: string
        format: date-time
      name: sampled_at
      in: path
      required: true
      description: The time the log's data was recorded on the device.
      example: '2024-04-17T09:39:45.984584Z'
    get:
      summary: Retrieve a status log for a boundary meter
      description: A boundary meter status log is uniquely identified by the combination of boundary meter ID and the time it was sampled at.
      tags:
      - Boundary Meters
      responses:
        '200':
          description: Retrieve a single status log for a specific boundary meter.
          headers:
            EvEnergy-Version:
              $ref: '#/components/headers/version-2'
            X-RateLimit-Limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            RetryAfter:
              $ref: '#/components/headers/retry-after'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BoundaryMeterStatusLog'
        '400':
          $ref: '#/components/responses/Problem400BadRequestRetrieve'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '404':
          $ref: '#/components/responses/Problem404NotFound'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-boundary_meters-boundary_meter_id-status_logs-timestamp
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/expand-on-boundarymeterstatuslog'
      security:
      - oauth2:
        - boundary_meter:read
components:
  parameters:
    user:
      name: EvEnergy-User
      description: If the client is authenticated using Client Credentials, setting EvEnergy-User to a valid user ID allows requests to be made as if you were directly authenticated as that user.
      in: header
      required: false
      schema:
        type: string
        pattern: user[A-Z\d]{26}
        example: user01HN2NJ9NMRZBXT1H6FT9N7735
    expand-on-boundarymeter:
      name: expand
      in: query
      schema:
        type: array
        items:
          type: string
          enum:
          - model
          - model.make
          - latest_status_log
      explode: true
      description: Specify a url field to expand into a nested resource.
    expand-on-boundarymeterstatuslog:
      name: expand
      in: query
      schema:
        type: array
        items:
          type: string
          enum:
          - boundary_meter
          - boundary_meter.model
          - boundary_meter.model.make
      explode: true
      description: Specify a url field to expand into a nested resource.
    sampled_at__lte:
      name: sampled_at__lte
      in: query
      schema:
        type: string
        format: date-time
        example: '2024-04-17T09:39:45.984584Z'
      description: Filters for logs sampled at or before this datetime.
    sampled_at__gte:
      name: sampled_at__gte
      in: query
      schema:
        type: string
        format: date-time
        example: '2024-04-17T09:39:45.984584Z'
      description: Filters for logs sampled at or after this datetime.
    version-2:
      name: EvEnergy-Version
      description: Specify the version of this endpoint to use.
      required: false
      in: header
      schema:
        type: number
        enum:
        - 2
    page_size:
      name: page_size
      description: Specify the number of results to return per page.
      in: query
      required: false
      schema:
        type: integer
        default: 25
        minimum: 1
        maximum: 100
        example: 10
    boundary_meter_make_id_q:
      name: make_id
      in: query
      required: false
      schema:
        type: string
        example: bmma01J5DCXX8DMJDJYGVR1DW4M001
      description: The ID of a Boundary Meter Make to filter by.
    previous:
      name: page_before
      description: Return results from the page after this ID.
      in: query
      required: false
      schema:
        type: string
        pattern: '[a-z]{4}[A-Z\d]{26}'
        example: xmpl01HNFZM7Q8FXASZXYZ6XM3TQRR
    next:
      name: page_after
      description: Return results from the page before this ID.
      in: query
      required: false
      schema:
        type: string
        pattern: '[a-z]{4}[A-Z\d]{26}'
        example: xmpl01HNFZM7Q8FXASZXYZ6XM3TQRR
    expand-on-boundarymetermodel:
      name: expand
      in: query
      schema:
        type: array
        items:
          type: string
          enum:
          - make
      explode: true
      description: Specify a url field to expand into a nested resource.
  responses:
    Problem404NotFound:
      description: This resource either does not exist or the client is not authorized to access it.
      content:
        application/problem+json:
          schema:
            type: object
            required:
            - title
            - detail
            properties:
              status:
                type: number
                example: 404
              title:
                type: string
                example: Not found
              detail:
                type: string
                example: Resource does not exist or cannot be accessed.
      headers:
        EvEnergy-Version:
          $ref: '#/components/headers/version-2'
        X-RateLimit-Limit:
          $ref: '#/components/headers/x-ratelimit-limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/x-ratelimit-remaining'
        RetryAfter:
          $ref: '#/components/headers/retry-after'
    Problem400BadRequestRetrieve:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/RFC9457ProblemDetail'
          examples:
            Unsupported Version:
              $ref: '#/components/examples/ProblemUnsupportedVersion'
      description: A problem with the request's parameters prevented it being fulfilled.
      headers:
        EvEnergy-Version:
          $ref: '#/components/headers/version-2'
        X-RateLimit-Limit:
          $ref: '#/components/headers/x-ratelimit-limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/x-ratelimit-remaining'
    Problem401Unauthorized:
      description: You need to authorise requests to access this resource.
      content:
        application/problem+json:
          schema:
            type: object
            required:
            - title
            - detail
            properties:
              status:
                type: number
                example: 401
              title:
                type: string
                example: Unauthorized
              detail:
                type: string
                example: Authentication credentials were not provided.
      headers:
        EvEnergy-Version:
          $ref: '#/components/headers/version-2'
        X-RateLimit-Limit:
          $ref: '#/components/headers/x-ratelimit-limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/x-ratelimit-remaining'
        RetryAfter:
          $ref: '#/components/headers/retry-after'
    Problem429TooManyRequests:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/RFC9457ProblemDetail'
          examples:
            Example 1:
              value:
                type: https://api.ev.energy/v2/problems/rate-limit-exceeded/
                status: 429
                title: Too Many Requests
                detail: Request was rate limited. Try again in 42 seconds
      description: The client has exceeded its rate limit.
      headers:
        EvEnergy-Version:
          $ref: '#/components/headers/version-2'
        Retry-After:
          $ref: '#/components/headers/retry-after'
        X-RateLimit-Limit:
          $ref: '#/components/headers/x-ratelimit-limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/x-ratelimit-remaining'
    Problem400BadRequestList:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/RFC9457ProblemDetail'
          examples:
            Invalid Pagination Parameter:
              $ref: '#/components/examples/ProblemInvalidPaginationParameter'
            Unsupported Version:
              $ref: '#/components/examples/ProblemUnsupportedVersion'
      description: A problem with the request's parameters prevented it being fulfilled.
      headers:
        EvEnergy-Version:
          $ref: '#/components/headers/version-2'
        X-RateLimit-Limit:
          $ref: '#/components/headers/x-ratelimit-limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/x-ratelimit-remaining'
        RetryAfter:
          $ref: '#/components/headers/retry-after'
    Problem403Forbidden:
      description: You do not have permission to perform this action.
      content:
        application/problem+json:
          schema:
            type: object
            required:
            - title
            - detail
            properties:
              status:
                type: number
                example: 403
              title:
                type: string
                example: Forbidden
              detail:
                type: string
                example: You do not have permission to perform this action.
      headers:
        EvEnergy-Version:
          $ref: '#/components/headers/version-2'
        X-RateLimit-Limit:
          $ref: '#/components/headers/x-ratelimit-limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/x-ratelimit-remaining'
        RetryAfter:
          $ref: '#/components/headers/retry-after'
    Problem406NotAcceptable:
      description: Could not satisfy the request Accept header.
      content:
        application/problem+json:
          schema:
            type: object
            required:
            - title
            - detail
            properties:
              status:
                type: number
                example: 406
              title:
                type: string
                example: Not Acceptable
              detail:
                type: string
                example: Could not satisfy the request Accept header.
      headers:
        EvEnergy-Version:
          $ref: '#/components/headers/version-2'
        X-RateLimit-Limit:
          $ref: '#/components/headers/x-ratelimit-limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/x-ratelimit-remaining'
        RetryAfter:
          $ref: '#/components/headers/retry-after'
  schemas:
    BoundaryMeterModel:
      title: BoundaryMeterModel
      type: object
      description: A resource representing a boundary meter model.
      x-tags:
      - Boundary Meters
      required:
      - id
      - url
      - name
      properties:
        id:
          type: string
          description: Unique identifier for the given Boundary Meter Model.
          pattern: bmmo[A-Z\d]{26}
          example: bmmo01J5DCXX8DMJDJYGVR1DW4D001
          readOnly: true
        url:
          type: string
          format: uri
          example: https://api.ev.energy/v2/boundary_meter_models/bmmo01J5DCXX8DMJDJYGVR1DW4D001
          readOnly: true
        name:
          type: string
          example: Anduril
          readOnly: true
        make:
          oneOf:
          - type: string
            format: uri
            example: https://api.ev.energy/v2/boundary_meter_makes/bmma01J5DCXX8DMJDJYGVR1DW4M001
          - $ref: '#/components/schemas/BoundaryMeterMake'
    RFC9457ProblemDetail:
      title: RFC 9457 Problem Detail
      x-tags:
      - problems
      type: object
      required:
      - title
      - detail
      properties:
        type:
          type: string
          format: uri
          example: https://api.ev.energy/v2/problems/example-problem/
        status:
          type: number
          example: 400
        title:
          type: string
          example: Short description
        detail:
          type: string
          example: Long, more specific description.
        instance:
          type: string
          format: uri
          example: https://api.ev.energy/v2/users/user01HN2P75GBNFRJPCZJXEFVXH5E
        notification:
          $ref: '#/components/schemas/Notification'
      examples:
      - type: https://api.ev.energy/v2/problems/example-problem/
        status: 400
        title: Short description
        detail: Long, more specific description.
        instance: https://api.ev.energy/v2/users/user01HN2P75GBNFRJPCZJXEFVXH5E
        notification:
          id: notf01HTHKTXVB77901324BCQPF1RB
          url: https://api.ev.energy/notifications/notf01HTHKTXVB77901324BCQPF1RB
          message_id: ERR0123
          category: ACTIONABLE
          event_time: '2019-08-24T14:15:22Z'
          short_text_title: Your car is disconnected
          short_text_body: We need to reconnect to keep smart charging your car
          detail_page_title: Your car is disconnected
          detail_page_body: Your car has been disconnected. This happens when your password is reset. We need you to re-authorise ev.energy to access your account in order for us to keep managing your charging. Blah blah blah.
          external_link: http://example.com
          external_button_label: More info
          read_at: '2019-08-24T14:20:22Z'
          resolved_at: '2019-08-25T14:15:22Z'
    Notification:
      title: Notification
      description: Something that the user should be informed about.
      type: object
      examples:
      - id: notf67O36PLTFDB57M0E5L33JZLGM0
        url: https://api.ev.energy/notifications/notf67O36PLTFDB57M0E5L33JZLGM0
        message_id: ERR0123
        category: ACTIONABLE
        event_time: '2019-08-24T14:15:22Z'
        short_text_title: Your car is disconnected
        short_text_body: We need to reconnect to keep smart charging your car
        detail_page_title: Your car is disconnected
        detail_page_body: Your car has been disconnected. This happens when your password is reset. We need you to re-authorise ev.energy to access your account in order for us to keep managing your charging. Blah blah blah.
        external_link: http://example.com
        external_button_label: More info
        read_at: '2019-08-24T14:20:22Z'
        resolved_at: '2019-08-25T14:15:22Z'
      required:
      - id
      - url
      - message_id
      - category
      - event_time
      - short_text_title
      - short_text_body
      - detail_page_title
      - detail_page_body
      - external_link
      - external_button_label
      properties:
        id:
          type: string
          pattern: notf[A-Z\d]{26}
          example: notf67O36PLTFDB57M0E5L33JZLGM0
          description: Unique identifier for the Notification
        url:
          type: string
          format: uri
          example: https://api.ev.energy/notifications/notf67O36PLTFDB57M0E5L33JZLGM0
        message_id:
          type: string
          description: Internal identifier for this notification type. E.g. 'ERR0023'
        category:
          description: Category of this notification type
          enum:
          - ACTIONABLE
          - SERVICE
          - RETRY
          - MARKETING
          - INTERNAL
        event_time:
          type: string
          format: date-time
          description: The timestamp of the event described by this notification
        short_text_title:
          type: string
          description: Short title for the notification
          maxLength: 33
        short_text_body:
          type: string
          description: Short description of the event being notified
          maxLength: 49
        detail_page_title:
          type: string
          description: Title of a help page giving more information about this notification
        detail_page_body:
          type: string
          description: Text of a help page giving more information about this notification
        external_link:
          type:
          - string
          - 'null'
          description: URL of a web page giving further information about this notification
          format: uri
        external_button_label:
          type: string
          description: Text to be displayed on a button leading to the external_link location
        read_at:
          type: string
          format: date-time
          description: When the user examined the contents of this notification
        resolved_at:
          type: string
          format: date-time
          description: When the problem associated with this notification was resolved
    BoundaryMeterStatusLog:
      title: BoundaryMeterStatusLog
      type: object
      description: Records the state of a boundary meter at a particular point in time.
      x-tags:
      - Boundary Meters
      properties:
        url:
          type: string
          format: uri
          example: https://api.ev.energy/v2/boundary_meters/bmet01J5DCXX8DMJDJYGVR1DW4T001/status_logs/2024-04-17T09:39:45.984584Z/
        sampled_at:
          type: string
          format: date-time
        boundary_meter:
          oneOf:
          - $ref: '#/components/schemas/BoundaryMeter'
          - type: string
            format: uri
            example: https://api.ev.energy/v2/boundary_meters/bmet01J5DCXX8DMJDJYGVR1DW4T001
        power_watts:
          type:
          - integer
          - 'null'
          description: Instantaneous power at the meter in W. Positive = import, negative = export.
          example: 1500
        status:
          type: string
          readOnly: true
          description: Derived operating state, inferred from power_watts.
          enum:
          - IMPORTING
          - EXPORTING
          - IDLE
          - UNKNOWN
          example: IMPORTING
    BoundaryMeterMake:
      title: BoundaryMeterMake
      type: object
      description: A resource representing a manufacturer of boundary meters.
      x-tags:
      - Boundary Meters
      required:
      - id
      - url
      - name
      properties:
        id:
          type: string
          description: Unique identifier for the given Boundary Meter Make.
          pattern: bmma[A-Z\d]{26}
          example: bmma01J5DCXX8DMJDJYGVR1DW4M001
          readOnly: true
        url:
          type: string
          format: uri
          example: https://api.ev.energy/v2/boundary_meter_makes/bmma01J5DCXX8DMJDJYGVR1DW4M001
          readOnly: true
        name:
          type: string
          example: Gondor
          readOnly: true
    BoundaryMeter:
      title: BoundaryMeter
      type: object
      description: A resource that represents a single, physical boundary meter.
      x-tags:
      - Boundary Meters
      required:
      - id
      - url
      properties:
        id:
          type: string
          description: Unique identifier for the given Boundary Meter.
          pattern: bmet[A-Z\d]{26}
        

# --- truncated at 32 KB (37 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ev-energy/refs/heads/main/openapi/ev-energy-boundary-meters-api-openapi.yml