ev.energy Rebates API

Endpoints for interacting with rebates.

Operations 13

GET /rebate_types List Rebate Types #
GET /rebate_types/{rebate_type_id} Retrieve rebate type #
GET /rebate_evidence_types List Rebate Evidence Types #
GET /rebate_evidence_types/{rebate_evidence_type_id} Retrieve rebate evidence type #
POST /user_rebates Create rebate application #
GET /user_rebates List rebate applications #
GET /user_rebates/{user_rebate_id} Retrieve rebate application #
PATCH /user_rebates/{user_rebate_id} Update rebate application #
POST /user_rebates/{user_rebate_id}:submit Submit a completed rebate form #
POST /rebate_evidence_files:start_upload Start a file upload #
POST /rebate_evidence_files/{rebate_evidence_file_id}:finish_upload Finalize File Upload #
GET /rebate_evidence_files List rebate evidence files #
GET /rebate_evidence_files/{rebate_evidence_file_id} Retrieve rebate evidence file details #

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-rebates-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-rebates-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ev.energy v2 Rebates 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: Rebates
  description: Endpoints for interacting with rebates.
paths:
  /rebate_types:
    get:
      summary: List Rebate Types
      tags:
      - Rebates
      responses:
        '200':
          description: Return a list of rebate types.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RebateType'
              examples:
                Example 1:
                  value:
                  - $ref: '#/components/examples/RebateType'
          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'
        '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-rebate_types
      x-internal: true
      description: Retrieve a list of rebate types available to the user.
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/expand-on-rebatetype'
  /rebate_types/{rebate_type_id}:
    parameters:
    - schema:
        type: string
        example: rbttB1USP6YGD1VPIDJSHTZARUX11M
        pattern: rbtt[A-Z\d]{26}
      name: rebate_type_id
      in: path
      required: true
      description: ID of the requested rebate type
    get:
      summary: Retrieve rebate type
      tags:
      - Rebates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/RebateType'
              examples:
                Example 1:
                  $ref: '#/components/examples/RebateType'
          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'
        '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-rebate_types-rebate_type_id
      x-internal: true
      description: Retrieve a specific rebate type by id.
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/Accept-Language'
      - $ref: '#/components/parameters/expand-on-rebatetype'
  /rebate_evidence_types:
    get:
      summary: List Rebate Evidence Types
      tags:
      - Rebates
      responses:
        '200':
          description: Return a list of rebate evidence types.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RebateEvidenceType'
          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'
        '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-rebate_evidence_types
      description: Retrieve a list of rebate types available to the user.
      parameters:
      - $ref: '#/components/parameters/version-2'
  /rebate_evidence_types/{rebate_evidence_type_id}:
    parameters:
    - schema:
        type: string
        example: rbetB1USP6YGD1VPIDJSHTZARUX11M
        pattern: rbet[A-Z\d]{26}
      name: rebate_evidence_type_id
      in: path
      required: true
      description: ID of the requested rebate evidence type
    get:
      summary: Retrieve rebate evidence type
      tags:
      - Rebates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/RebateEvidenceType'
          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'
        '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-rebate_types-rebate_evidence_type_id
      x-internal: true
      description: Retrieve a specific rebate evidence type by id.
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/Accept-Language'
  /user_rebates:
    post:
      summary: Create rebate application
      tags:
      - Rebates
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserRebateCreated'
              examples:
                Example 1:
                  value:
                    id: rbtuB1USP6YGD1VPIDJSHTZARUX11M
                    url: https://api.ev.energy/v2/user_rebates/rbtuB1USP6YGD1VPIDJSHTZARUX11M
          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'
        '400':
          $ref: '#/components/responses/Problem400BadRequestRetrieve'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: post-rebates
      x-internal: true
      description: Creates a rebate application, returning the application ID.
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/user'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - rebate_type
              properties:
                rebate_type:
                  type: string
                  description: Rebate type resource uri
                  example: https://api.ev.energy/v2/rebate_types/rbttB1USP6YGD1VPIDJSHTZARUX11M
    get:
      summary: List rebate applications
      tags:
      - Rebates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserRebate'
              examples:
                Example 1:
                  value:
                  - $ref: '#/components/examples/UserRebate'
          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'
        '400':
          $ref: '#/components/responses/Problem400BadRequestRetrieve'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-rebates
      x-internal: true
      description: Lists all a user's rebate applications.
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/expand-on-userrebate'
      - $ref: '#/components/parameters/user'
  /user_rebates/{user_rebate_id}:
    parameters:
    - $ref: '#/components/parameters/user_rebate_id'
    get:
      summary: Retrieve rebate application
      tags:
      - Rebates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/UserRebate'
              examples:
                Example 1:
                  value:
                    $ref: '#/components/examples/UserRebate'
        '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-rebates-application_id
      description: Retrieve a specific rebate application.
      parameters:
      - $ref: '#/components/parameters/expand-on-userrebate'
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/user'
    patch:
      summary: Update rebate application
      tags:
      - Rebates
      responses:
        '200':
          description: OK
          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:
                type: object
                x-examples:
                  Example 1:
                    id: str
                    url: str
                properties:
                  id:
                    type: string
                    description: uid of the user_rebate
                  url:
                    type: string
                    description: url of the user_rebate
        '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: patch-user_rebates-application_id
      description: Attach evidence to a rebate application.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - rebate_type
              - evidence_type
              - evidence_data
              properties:
                rebate_type:
                  type: string
                  description: Rebate type resource uri
                evidence_type:
                  type: string
                  description: Rebate evidence type resource uri
                evidence_data:
                  type: array
                  items:
                    type: object
                    required:
                    - id
                    - value
                    properties:
                      id:
                        type: number
                        description: Rebate evidence supporting data id
                      value:
                        type: string
                        description: Form field value. Should not include currency symbol.
            examples:
              Example 1:
                value:
                  rebate_type: https://api.ev.energy/v2/user_rebates/rbtuB1USP6YGD1VPIDJSHTZARUX11M
                  evidence_type: https://api.ev.energy/v2/user_rebates/rbetB1USP6YGD1VPIDJSHTZARUX11M
                  evidence_data:
                  - id: 2
                    value: '1000'
        description: ''
      parameters:
      - $ref: '#/components/parameters/expand-on-userrebate'
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/user'
  /user_rebates/{user_rebate_id}:submit:
    parameters:
    - $ref: '#/components/parameters/user_rebate_id'
    post:
      summary: Submit a completed rebate form
      tags:
      - Rebates
      responses:
        '200':
          description: OK
          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'
        '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: post-user_rebates-application_id-:submit
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/user'
      description: 'Once all evidence data and files have been uploaded, this endpoint is called to submit the rebate application for review by updating the Form status to "complete" and the application status to "pending_review". '
  /rebate_evidence_files:start_upload:
    parameters:
    - schema:
        type: string
      in: query
      name: user_rebate
      description: Application ID (uid) of the user_reabte
    post:
      summary: Start a file upload
      tags:
      - Rebates
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                x-examples:
                  Example 1:
                    url: https://api.ev.energy/v2/user_rebate_evidence_files/rbef1USP6YGD1VPIDJSHTZARUX11M
                    presigned_url: https://cdn.app.ev.energy/evenergy-development-rebates-evidence-files/user_rebates/rbtuB1USP6YGD1VPIDJSHTZARUX11M/test_file-28a71d30552241a989cced058eaff01b.pdf?AWSAccessKeyId=DummyKeyID&Signature=Vq2tiQhuBb1%2FOEdv9fH9eFyMOw8%3D&Expires=1732224132
                properties:
                  id:
                    type: string
                    description: evidence file uid
                  url:
                    type: string
                    description: evidence file resource url
                  presigned_url:
                    type: string
                    description: AWS S3 presigned URL. This URL is required for the client to send direct PUT or GET requests to S3
              examples:
                Example 1:
                  $ref: '#/components/examples/RebateEvidenceUploadStart'
        '400':
          $ref: '#/components/responses/Problem400BadRequestCreate'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '406':
          $ref: '#/components/responses/Problem406NotAcceptable'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: post-rebate-evidence_files:start_upload
      description: This endpoint creates the RebateEvidenceFile record and returns its uid as well as a presigned URL to use for direct upload to AWS S3.
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/user'
      requestBody:
        description: Details of the file to be directly uploaded
        content:
          application/json:
            schema:
              type: object
              properties:
                file_name:
                  type: string
                  description: Original file name of the incoming file, with extention.
                rebate_evidence_type:
                  type: string
                  description: Rebate evidence type url
              x-examples:
                Example 1:
                  file_name: wiring_invoice.pdf
                  rebate_evidence_type: https://api.ev.energy/v2/rebate_evidence_type/rbefB1USP6YGD1VPIDJSHTZARUX11M
  /rebate_evidence_files/{rebate_evidence_file_id}:finish_upload:
    parameters:
    - $ref: '#/components/parameters/rebate_evidence_file_id'
    post:
      summary: Finalize File Upload
      tags:
      - Rebates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Rebate evidence file uid
                  url:
                    type: string
                    description: Rebate evidence file resource url
              x-examples:
                Example 1:
                  id: rbefB1USP6YGD1VPIDJSHTZARUX11M
                  url: https://api.ev.energy/v2/rebate_evidence_files/rbefB1USP6YGD1VPIDJSHTZARUX11M
              examples:
                Example 1:
                  value:
                    id: rbefB1USP6YGD1VPIDJSHTZARUX11M
                    url: https://api.ev.energy/v2/rebate_evidence_files/rbefB1USP6YGD1VPIDJSHTZARUX11M
        '400':
          $ref: '#/components/responses/Problem400BadRequestCreate'
        '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: post-rebate-evidence_files-evidence_file_id-:finish_upload
      description: 'After the file is successfully uploaded to S3 via the presigned URL, this endpoint is called to set the upload_finished_at timestamp on the evidence_file record. '
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/user'
  /rebate_evidence_files:
    parameters:
    - schema:
        type: string
      in: query
      name: user_rebate
      description: Application ID (uid) of the user_rebate
    get:
      summary: List rebate evidence files
      tags:
      - Rebates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RebateEvidenceFile'
                readOnly: true
              examples: {}
        '400':
          $ref: '#/components/responses/Problem400BadRequestList'
        '401':
          $ref: '#/components/responses/Problem401Unauthorized'
        '403':
          $ref: '#/components/responses/Problem403Forbidden'
        '429':
          $ref: '#/components/responses/Problem429TooManyRequests'
      operationId: get-user_rebates-application_id-evidence_files
      description: List all user's rebate evidence files
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/expand-on-rebateevidencefile'
      - $ref: '#/components/parameters/user'
  /rebate_evidence_files/{rebate_evidence_file_id}:
    parameters:
    - $ref: '#/components/parameters/rebate_evidence_file_id'
    get:
      summary: Retrieve rebate evidence file details
      tags:
      - Rebates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/RebateEvidenceFile'
              examples:
                Example 1:
                  $ref: '#/components/examples/RebateEvidenceFile'
        '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-user_rebates-application_id-evidence_files-evidence_file_id
      description: Retrieve the details of a specific rebate evidence file.
      parameters:
      - $ref: '#/components/parameters/version-2'
      - $ref: '#/components/parameters/expand-on-rebateevidencefile'
      - $ref: '#/components/parameters/user'
components:
  parameters:
    expand-on-userrebate:
      name: expand
      in: query
      schema:
        type: array
        items:
          type: string
          enum:
          - rebate_type
          - rebate_type.required_evidence
      explode: true
      description: Specify a url field to expand into a nested resource.
    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
    Accept-Language:
      name: Accept-Language
      in: header
      required: false
      schema:
        type: string
      description: Indicates the natural language and locale that the client prefers.
    expand-on-rebatetype:
      name: expand
      in: query
      schema:
        type: array
        items:
          type: string
          enum:
          - required_evidence
      explode: true
      description: Specify a url field to expand into a nested resource.
    version-2:
      name: EvEnergy-Version
      description: Specify the version of this endpoint to use.
      required: false
      in: header
      schema:
        type: number
        enum:
        - 2
    expand-on-rebateevidencefile:
      name: expand
      in: query
      schema:
        type: array
        items:
          type: string
          enum:
          - rebate_evidence_type
      explode: true
      description: Specify a url field to expand into a nested resource.
    rebate_evidence_file_id:
      description: Unique identifier for a Rebate evidence file
      name: rebate_evidence_file_id
      in: path
      required: true
      schema:
        type: string
        pattern: rbef[A-Z\d]{26}
        example: rbefB1USP6YGD1VPIDJSHTZARUX11M
    user_rebate_id:
      description: Unique identifier for a User's rebate application
      name: user_rebate_id
      in: path
      required: true
      schema:
        type: string
        pattern: rbtu[A-Z\d]{26}
        example: rbtuB1USP6YGD1VPIDJSHTZARUX11M
  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'
    Problem400BadRequestCreate:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/RFC9457ProblemDetail'
          examples:
            Request failed validation:
              $ref: '#/components/examples/ProblemValidationFailedVehicle'
      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'
    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'
    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'
    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: '#/componen

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