openapi: 3.0.3 info: title: Arcadia API Reference version: 0.3.0 contact: email: platformsupport@arcadia.com servers: - url: https://api.arcadia.com security: - bearerAuth: [] tags: - name: Auth - name: Webhooks - name: Plug - name: Spark - name: Bundle (Beta) paths: /auth/access_token: post: security: [] tags: - Auth summary: Create an Access Token description: 'Use your API credentials to create an Access Token that has permission to use all Arcadia API endpoints. API access tokens are valid for 2 hours. ' operationId: createApiAccessToken parameters: - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: required: true content: application/json: schema: type: object required: - client_id - client_secret properties: client_id: type: string description: Your client ID, provided by Arcadia. example: Lttwdte5TofL4X3JI0kGbu_E5k7Uv9tT8xBD6GBXcT0 client_secret: type: string description: Your client secret, provided by Arcadia. example: 34_whUQ99g5A07cOHCSz3PfNMHOmsNwUcrS8kFlkiAw responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/AccessTokenResponse' '401': description: Unauthorized headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/AccessTokenUnauthorizedError' /auth/connect_token: post: tags: - Auth summary: Create a Connect Token description: 'The Connect front-end component must be initialized with a Connect Token scoped to the user entering the *Connect* flow. For new users, or users creating an additional utility credential, post with a unique `client_user_id` parameter. For users editing an existing utility credential, post with the `utility_credential_id` parameter corresponding to the utility credential to be updated. Make sure the `Authorization` header is set to `Bearer ${ACCESS_TOKEN}`. Tokens expire after two hours.' operationId: createConnectToken parameters: - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: required: true content: application/json: schema: type: object properties: client_user_id: type: string description: The unique identifier for your user. This parameter is required for users entering the Connect flow for the first time. Note either `client_user_id` or `utility_credential_id` must be supplied to the endpoint for all requests. example: fff57dc7-3a2b-4395-8a62-e3486d46dabe utility_credential_id: type: integer description: The id associated the utility credential to be updated. This parameter is required for users entering Connect to update an existing utility credential. Note either `client_user_id` or `utility_credential_id` must be supplied to the endpoint for all requests. example: 1 responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/ConnectUrlResponse' '401': description: Unauthorized. headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/ConnectTokenUnauthorizedError' '404': description: Not Found headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UtilityCredentialNotFoundError' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: oneOf: - $ref: '#/components/schemas/ConnectTokenUnprocessableEntityError' - $ref: '#/components/schemas/ConnectTokenTooManyParametersError' - $ref: '#/components/schemas/ConnectUrlVariantError' /auth/connect_url: post: tags: - Auth summary: Create a Connect URL description: 'You can also send your users through the *Connect* flow by linking them to a unique Connect URL (provided by this endpoint). Just like [the Connect Token](ref:createconnecttoken), you need to provide either a `client_user_id` or a`utility credential_id` to get a URL that will initialize Connect in ‘create mode’ or ‘update mode’ respectively. [See this page for a guide on the difference between those two modes.](https://docs.arcadia.com/docs/connect-guide) This endpoint will provide a URL in a response. Once you have the URL, provide it to the given user for them to complete Connect and give you access to their utility data. The URL will expire after 5 days. If you would like to provide your user with the [Connect tariff selection mode] (https://docs.arcadia.com/docs/connect-tariff-selection-mode) instead, pass `tariff` as the variant parameter.' operationId: createConnectUrl parameters: - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: required: true content: application/json: schema: type: object properties: client_user_id: type: string description: The unique identifier for your user. This parameter is required for users entering the Connect flow for the first time. Note either `client_user_id` or `utility_credential_id` must be supplied to the endpoint for all requests. example: fff57dc7-3a2b-4395-8a62-e3486d46dabe utility_credential_id: type: integer description: The id associated with the utility credential to be updated. This parameter is required for users entering Connect to update or repair an existing utility credential. Note that you must supply either `client_user_id` or `utility_credential_id` to the endpoint. example: 1 variant: type: string description: The variant of Connect that the user will be sent through. Variant will default to 'connect'. To provide a user with the tariff-selection variant instead, pass `tariff` as the variant example: tariff responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/ConnectUrlResponse' '401': description: Unauthorized. headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/ConnectTokenUnauthorizedError' '404': description: Not Found headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UtilityCredentialNotFoundError' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: oneOf: - $ref: '#/components/schemas/ConnectTokenUnprocessableEntityError' - $ref: '#/components/schemas/ConnectTokenTooManyParametersError' - $ref: '#/components/schemas/ConnectUrlVariantError' /ping: get: tags: - Auth summary: Ping description: 'No-op authorization test endpoint. Returns a 200 if requested with a valid Bearer auth token. Any valid authorization token with any scope will be able to get a 200 from this endpoint. ' operationId: ping parameters: - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/PingResponse' '401': description: Unauthorized headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/PingUnauthorizedError' '403': description: Forbidden headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/PingUnauthorizedError' /utility_accounts: get: tags: - Utility Accounts summary: List Utility Accounts description: Returns a paginated list of UtilityAccounts for all users, or filtered by `client_user_id`. Default ordered by descending `updated_at`. operationId: getUtilityAccounts parameters: - $ref: '#/components/parameters/clientUserIdQueryParam' - $ref: '#/components/parameters/paginationLimitParam' - $ref: '#/components/parameters/paginationUpdatedAfterParam' - $ref: '#/components/parameters/paginationUpdatedBeforeParam' - $ref: '#/components/parameters/paginationOrderParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/PaginatedUtilityAccounts' /utility_accounts/{utility_account_id}: get: tags: - Utility Accounts summary: Get Utility Account description: Returns a single UtilityAccount specified by ID. operationId: getUtilityAccount parameters: - $ref: '#/components/parameters/utilityAccountIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UtilityAccount' /users: get: tags: - Users summary: List Users description: Returns a paginated list of Users. Default ordered by descending `updated_at`. operationId: getUsers parameters: - $ref: '#/components/parameters/paginationLimitParam' - $ref: '#/components/parameters/paginationUpdatedAfterParam' - $ref: '#/components/parameters/paginationUpdatedBeforeParam' - $ref: '#/components/parameters/paginationOrderParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/PaginatedUsers' /users/{client_user_id}: get: tags: - Users summary: Get User description: Get a single User associated with a `client_user_id` operationId: getUser parameters: - $ref: '#/components/parameters/clientUserIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/User' '403': description: Forbidden headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UserDataExceedsLimitsError' '404': description: Not Found headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UserNotFoundError' delete: tags: - Users summary: Delete User description: Delete all data associated with a `client_user_id`. Note that the actual delete happens asynchronously, so data for this User may still be available through the API for a few minutes after a delete request is made. operationId: deleteUser parameters: - $ref: '#/components/parameters/clientUserIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '204': description: No Content headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' '404': description: Not Found headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UserNotFoundError' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/DeleteUserError' /utility_credentials: get: tags: - Utility Credentials summary: List Utility Credentials description: Returns a paginated list of UtilityCredentials for all users, or filtered by `client_user_id`. Default ordered by descending `updated_at`. operationId: getUtilityCredentials parameters: - $ref: '#/components/parameters/clientUserIdQueryParam' - $ref: '#/components/parameters/paginationLimitParam' - $ref: '#/components/parameters/paginationUpdatedAfterParam' - $ref: '#/components/parameters/paginationUpdatedBeforeParam' - $ref: '#/components/parameters/paginationOrderParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/PaginatedUtilityCredentials' /utility_credentials/{utility_credential_id}: get: tags: - Utility Credentials summary: Get Utility Credential description: Returns a single UtilityCredential specified by ID. operationId: getUtilityCredential parameters: - $ref: '#/components/parameters/utilityCredentialIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UtilityCredential' /utility_meters: get: tags: - Utility Meters (Beta) summary: List Utility Meters description: Returns a paginated list of utility meters for all users, utility accounts, and service types. May be filtered by `client_user_id`, `utility_account_id`, and/or `service_types` to further refine results. Default ordered by descending `updated_at`. operationId: getUtilityMeters parameters: - $ref: '#/components/parameters/clientUserIdQueryParam' - $ref: '#/components/parameters/utilityAccountIdQueryParam' - $ref: '#/components/parameters/serviceTypesQueryParam' - $ref: '#/components/parameters/paginationLimitParam' - $ref: '#/components/parameters/paginationUpdatedAfterParam' - $ref: '#/components/parameters/paginationUpdatedBeforeParam' - $ref: '#/components/parameters/paginationOrderParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/PaginatedUtilityMeters' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: oneOf: - $ref: '#/components/schemas/MalformedParametersError' /utility_meters/{utility_meter_id}: get: tags: - Utility Meters (Beta) summary: Get Utility Meter description: 'Returns a single utility meter specified by ID. ' operationId: getUtilityMeter parameters: - $ref: '#/components/parameters/utilityMeterIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UtilityMeter' /plug/utility_statements: get: tags: - Plug summary: List Utility Statements description: Returns a paginated list of UtilityStatements for all users, or filtered by `utility_account_id`. Default ordered by descending `updated_at`. operationId: getUtilityStatements parameters: - $ref: '#/components/parameters/deprecatedClientUserIdQueryParam' - $ref: '#/components/parameters/utilityAccountIdQueryParam' - $ref: '#/components/parameters/paginationLimitParam' - $ref: '#/components/parameters/paginationUpdatedAfterParam' - $ref: '#/components/parameters/paginationUpdatedBeforeParam' - $ref: '#/components/parameters/paginationOrderParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/PaginatedUtilityStatements' '404': description: Not Found headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UtilityAccountNotFoundError' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UtilityStatementsFeatureAvailabilityError' /plug/utility_statements/{utility_statement_id}: get: tags: - Plug summary: Get Utility Statement description: Returns a single UtilityStatement specified by ID. operationId: getUtilityStatement parameters: - $ref: '#/components/parameters/utilityStatementIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UtilityStatement' /plug/utility_statements/{utility_statement_id}/intervals: get: tags: - Plug summary: List Utility Intervals For A Utility Statement (Beta) description: '**This endpoint is in _beta_. Click [here](release-phases) for a description on Arcadia''s release phases.** Returns the Utility Intervals for the time span of the given Utility Statement. If the Utility Statement contains charges for multiple Utility Meters, this endpoint will aggregate each Utility Meter''s Utility Intervals together to create one set of Utility Intervals. Note that the Utility Intervals feature is limited to a subset of utilities at this time: - SDG&E - SCE - PG&E - ComEd - Delmarva (DE & MD) - BG&E - PPL - Southern Company - PEPCO (DC and MD) - PECO - National Grid NY - Florida Power and Light - Duke Energy (IN, KY, NC, OH, Progress FL, Progress NC, Progress SC, SC) Note of the availability of interval data: - When an account is first enrolled we retrieve interval data from the utility if available - We will retrieve new utility interval data whenever a new utility statement is discovered To test Utility Intervals using a [test account scenario](ref:testing): * Select one of the utilities supported above * Enter a [test username](ref:testing) that has at least one electric account ' operationId: getUtilityStatementIntervals parameters: - $ref: '#/components/parameters/utilityStatementIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UtilityIntervalsPerStatementDataResponse' '404': description: Not Found headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UtilityIntervalsPerStatementNotFoundError' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: oneOf: - $ref: '#/components/schemas/UtilityIntervalsFeatureAvailabilityError' - $ref: '#/components/schemas/UtilityIntervalsStatementRangeUnavailableError' /plug/utility_intervals: get: tags: - Plug summary: List Utility Intervals (Beta) description: '**This endpoint is in _beta_. Click [here](release-phases) for a description on Arcadia''s release phases.** Returns up to a year of interval data per request for a Utility Account. Note that the Utility Intervals feature is limited to a subset of utilities at this time. Check the [utility coverage page](https://arc.arcadia.com/coverage?first=25&page=1&strictFilters[productAvailability][0]=PLUG_INTERVALS_SUPPORTED) to see which utilities are supported. Note of the availability of interval data: - When an account is first enrolled we retrieve interval data from the utility if available - We will retrieve new utility interval data whenever a new utility statement is discovered To test Utility Intervals using a [test account scenario](ref:testing): * Select one of the utilities supported above * Enter a [test username](ref:testing) that has at least one electric account ' operationId: getUtilityIntervals parameters: - $ref: '#/components/parameters/intervalDataUtilityAccountIdQueryParam' - $ref: '#/components/parameters/intervalDataUtilityMeterIdQueryParam' - $ref: '#/components/parameters/startTimeQueryParam' - $ref: '#/components/parameters/endTimeQueryParam' - $ref: '#/components/parameters/utilityStatementIdQueryParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UtilityIntervalDataResponse' '404': description: Not Found headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: oneOf: - $ref: '#/components/schemas/UtilityIntervalsNoDataForMeterError' - $ref: '#/components/schemas/UtilityIntervalsPerStatementNotFoundError' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: oneOf: - $ref: '#/components/schemas/UtilityIntervalsFeatureAvailabilityError' - $ref: '#/components/schemas/UtilityIntervalsStatementRangeUnavailableError' - $ref: '#/components/schemas/UtilityIntervalsBothAccountIdAndMeterIdProvided' - $ref: '#/components/schemas/UtilityIntervalsInvalidMeterServiceTypeError' - $ref: '#/components/schemas/UtilityIntervalsAmbiguousMeterError' - $ref: '#/components/schemas/UtilityIntervalsInvalidTimeRange' /plug/utility_intervals/metadata: get: tags: - Plug summary: Fetch Utility Interval Metadata (Beta) description: '**This endpoint is in _beta_. Click [here](release-phases) for a description on Arcadia''s release phases.** Returns metadata on what utility interval data is available. ' operationId: getUtilityIntervalMetadata parameters: - $ref: '#/components/parameters/intervalDataUtilityAccountIdQueryParam' - $ref: '#/components/parameters/intervalDataUtilityMeterIdQueryParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UtilityIntervalMetadataResponse' '404': description: Not Found headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UtilityIntervalsNoDataForMeterError' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: oneOf: - $ref: '#/components/schemas/UtilityIntervalsFeatureAvailabilityError' - $ref: '#/components/schemas/UtilityIntervalsBothAccountIdAndMeterIdProvided' - $ref: '#/components/schemas/UtilityIntervalsInvalidMeterServiceTypeError' - $ref: '#/components/schemas/UtilityIntervalsAmbiguousMeterError' /spark/charge_curve/cost: post: tags: - Spark summary: Calculate Charge Cost description: Provided a charge curve starting at a particular time of day, calculates the electricity cost of that charge curve for a particular `UtilityAccount` or [Genability tariff](https://developer.genability.com/api-reference/tariff-api/tariff/). operationId: calculateChargeCost parameters: - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ChargeCostRequestBodyParams' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/ChargeCostResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/TariffResolutionError' '404': description: Not Found headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: oneOf: - $ref: '#/components/schemas/UtilityAccountNotFoundError' - $ref: '#/components/schemas/ChargeCurvesTariffParamError' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: oneOf: - $ref: '#/components/schemas/ChargeCostFeatureAvailabilityError' - $ref: '#/components/schemas/SparkParamValidationError' - $ref: '#/components/schemas/ChargeCurvesTariffParamError' /spark/charge_curve/schedule: post: tags: - Spark summary: Calculate Smart Charging Schedule description: Provided details around charging duration and a prospective charging window, returns a charging schedule that minimizes costs for a particular `UtilityAccount`. operationId: calculateSmartChargeSchedule parameters: - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SmartChargeScheduleRequestBodyParams' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/SmartChargeScheduleResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/TariffResolutionError' '404': description: Not Found headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UtilityAccountNotFoundError' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: oneOf: - $ref: '#/components/schemas/SmartChargeFeatureAvailabilityError' - $ref: '#/components/schemas/SparkParamValidationError' /spark/tariff_rates: post: tags: - Spark summary: Calculate Tariff Rate ($/kWh) description: 'Calculates marginal rate ($/kWh) for a short-term time period on the electric tariff a given utility account is subscribed to. This endpoint will report appropriate costs for TOU periods (daily peak/off-peak hours, weekend schedules, seasonal changes). This endpoint is not recommended for monthly bill reproduction. Marginal rates generally do not include monthly adjustments or charges such as tiering (costs are generally reported at the base tier), fixed charges, monthly discounts, special event days, etc.' operationId: retrieveTariffRates parameters: - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TariffRatesRequestBodyParams' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/TariffRatesResponse' /spark/optimized_tariffs/load_serving_entities: get: tags: - Spark summary: Tariff Optimize - Search for Load Serving Entities description: Returns a list of Genability load serving entities (LSEs) for a given zip code, for use in tariff searches. operationId: searchLoadServingEntities parameters: - $ref: '#/components/parameters/arcVersionInHeaderParam' - in: query name: zip_code required: true description: United States zip code. example: '94105' schema: type: string responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/SearchLoadServingEntitiesResponse' /spark/optimized_tariffs/applicabilities: get: tags: - Spark summary: Tariff Optimize - Get Tariff Applicability Questions description: 'Gets the list of applicability questions for all potential tariffs. Tariffs sometimes have eligibility conditions to sign up for them ("applicabilities"). For example, signing up for an EV tariff often requires an electric car registered to the account holder at the account''s address. Answers to the returned applicability questions can be passed to the recommendations endpoint to get the most relevant tariffs. The set of potential tariffs can be specified either by an Arcadia Utility Account ID, or by considering all tariffs in a given zip code served by a specific [Genability Load Serving Entity (LSE)](https://developer.genability.com/api-reference/tariff-api/load-serving-entity/). __Either utility_account_id or both the zip_code/lse_id must be specified.__ ' operationId: getOptimizedTariffsApplicabilities parameters: - $ref: '#/components/parameters/arcVersionInHeaderParam' - in: query name: utility_account_id required: false example: 12345 description: The unique ID of the Utility Account for this tariff search. Optional if searching for tariffs by Genability `lse_id`/`zip_code`. schema: type: integer - in: query name: zip_code required: false description: The zip code of the site inside the LSE's territory. Must be provided if searching for tariffs by Genability `lse_id`/`zip_code`. example: '94706' schema: type: string - in: query name: lse_id required: false description: The ID of the Genability [load serving entity](https://developer.genability.com/api-reference/tariff-api/load-serving-entity/) prefixed with `gen_lse_`. Must be provided if searching for tariffs by Genability `lse_id`/`zip_code`. example: gen_lse_734 schema: type: string responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/TariffApplicabilityQuestionsResponse' '422': description: Bad Request headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/OptimizedTariffRecommendationsLseIdentificationParamError' /spark/optimized_tariffs/recommendations: post: tags: - Spark summary: Tariff Optimize - Search for Recommended Applicable Tariffs description: 'Returns a list of applicable tariffs to use in a Tariff-Scenario Cost Calculation given the answers to the submitted Applicability Questions. The set of recommended tariffs can be specified either by an Arcadia Utility Account ID, or by considering all tariffs in a given zip code served by a specific [Genability Load Serving Entity (LSE)](https://developer.genability.com/api-reference/tariff-api/load-serving-entity/). __Either utility_account_id or both the zip_code/lse_id must be specified.__' operationId: searchOptimizedTariffsByApplicabilities parameters: - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TariffApplicabilityAnswersRequestParams' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/OptimizedTariffRecommendationsResponse' '422': description: Bad Request headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/OptimizedTariffRecommendationsLseIdentificationParamError' /spark/optimized_tariffs/scenario_cost: post: tags: - Spark summary: Tariff Optimize - Calculate Tariff-Scenario Cost description: 'Calculates the “what-if” cost of a single tariff-scenario, or combination of tariff, load curve and qualifying criteria. A tariff-scenario can simulate additional devices with various operational schedules. For example, we can simulate the cost of adding an EV with basic charging, and we can compare that to another tariff-scenario where the cost on the same tariff is simulated with an EV using smart charging. __Either utility_account_id or zip_code/main_tariff_id must be specified.__' operationId: calculateOptimizedTariffsScenarioCost parameters: - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TariffScenarioCostRequestParams' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/TariffScenarioCostResponse' '422': description: Bad Request headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/TariffScenarioCostRequestTariffIdentificationParamError' /spark/storage_optimization/schedules: post: description: Optimize energy flows into and out of a storage system to minimize cost, given a corresponding tariff, consumption profile, solar generation profile, and storage specifications. Supports a variety of installation configurations and dispatch strategies. operationId: calculateStorageOptimizationSchedules parameters: - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: content: application/json: schema: $ref: '#/components/schemas/StorageOptimizationSchedulesRequestParams' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/StorageOptimizationSchedulesResponse' description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' summary: Optimize Storage Dispatch Schedules (Beta) tags: - Spark /bundle/utility_remittance/utility_credentials/{utility_credential_id}/enroll: post: tags: - Bundle (Beta) summary: Utility Remittance - Enroll into Utility Remittance description: 'Enroll all Utility Accounts associated with the provided Utility Credential into Utility Remittance. Enrollment is an asynchronous process. Track status changes through the associated [Bundle Enrollment](showutilityremittanceenrollment).' operationId: enrollUtilityRemittance parameters: - $ref: '#/components/parameters/utilityCredentialIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BundleEnrollmentRequestBodyParams' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/BundleEnrollmentsArray' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: oneOf: - $ref: '#/components/schemas/UtilityRemittanceEnrollError' - $ref: '#/components/schemas/BundleEnrollmentInvalidUtilityAccountIdsError' - $ref: '#/components/schemas/BundleEnrollmentMissingUtilityAccountIdsError' - $ref: '#/components/schemas/UnpermittedParametersError' - $ref: '#/components/schemas/InvalidResourceError' /bundle/utility_remittance/utility_credentials/{utility_credential_id}/remove: delete: tags: - Bundle (Beta) summary: Utility Remittance - Remove from Utility Remittance description: 'Remove all Utility Accounts associated with the provided Utility Credential from Utility Remittance. Removal is an asynchronous process. Track status changes through the associated [Bundle Enrollment](showutilityremittanceenrollment). Removal will trigger the `utility_remittance_removed` Webhook Event.' operationId: removeUtilityRemittance parameters: - $ref: '#/components/parameters/utilityCredentialIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/BundleEnrollmentsArray' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: oneOf: - $ref: '#/components/schemas/BundleUnenrollError' - $ref: '#/components/schemas/InvalidResourceError' /bundle/utility_remittance/utility_statements/{utility_statement_id}/utility_remittance_items: post: tags: - Bundle (Beta) summary: Utility Remittance - Create a Utility Remittance Item description: 'Creates and schedules a Utility Remittance Item for a Utility Statement. You can specify a date for remittance using `scheduled_at`. Note that `scheduled_at` must be a date in the future. If the date you specify falls on a weekend or a banking holiday, remittance will be scheduled for the next business day. If `scheduled_at` is omitted, remittance will be scheduled for the next business day. When creating a Utility Remittance Item, you can specify how much to remit for the corresponding Utility Statement by specifying `amount_cents`. In most cases, this should correspond to the `utility_charge` on a Utility Statement. If `amount_cents` is omitted, the Utility Remittance Item will be created using the `utility_charge` on the specified Utility Statement. At this time, `amount_cents` cannot exceed 3000000 cents ($30,000). Note that overpaying or underpaying the amount on a Utility Statement comes with risk. This field should be used with caution. Please note that this endpoint is rate limited to 200 requests per 10 seconds. You will receive a 429 error if you exceed this limit. Please wait and try again. The `RateLimit-Reset` header will indicate when you can make another request.' operationId: createUtilityRemittanceItem parameters: - $ref: '#/components/parameters/utilityStatementIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BundleUtilityRemittanceItemCreateRequestBodyParams' responses: '201': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UtilityRemittanceItem' '403': description: ForbiddenError headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: UtilityStatementNotFoundError headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UtilityStatementNotFoundError' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: oneOf: - $ref: '#/components/schemas/UtilityRemittanceItemCreateError' - $ref: '#/components/schemas/UnpermittedParametersError' - $ref: '#/components/schemas/InvalidResourceError' '429': description: Too Many Requests headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' RateLimit-Limit: $ref: '#/components/headers/RateLimitLimit' RateLimit-Period: $ref: '#/components/headers/RateLimitPeriod' RateLimit-Reset: $ref: '#/components/headers/RateLimitReset' content: application/json: schema: oneOf: - $ref: '#/components/schemas/ThrottledError' /bundle/utility_remittance/utility_remittance_items/{utility_remittance_item_id}: get: tags: - Bundle (Beta) summary: Utility Remittance - Get a Utility Remittance Item. description: Returns a single Utility Remittance Item specified by ID. operationId: getUtilityRemittanceItem parameters: - $ref: '#/components/parameters/utilityRemittanceItemIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UtilityRemittanceItem' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: oneOf: - $ref: '#/components/schemas/InvalidResourceError' /bundle/utility_remittance/utility_account/{utility_account_id}/enrollment: get: tags: - Bundle (Beta) summary: Utility Remittance - Get a Bundle Enrollment description: Returns the Bundle Enrollment for a Utility Account. operationId: showUtilityRemittanceEnrollment parameters: - $ref: '#/components/parameters/utilityAccountIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/BundleEnrollment' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: oneOf: - $ref: '#/components/schemas/InvalidResourceError' /webhook/endpoints: get: tags: - Webhooks summary: List webhook endpoints description: Returns a paginated list of webhook endpoints. operationId: getWebhooks parameters: - $ref: '#/components/parameters/paginationLimitParam' - $ref: '#/components/parameters/paginationUpdatedAfterParam' - $ref: '#/components/parameters/paginationUpdatedBeforeParam' - $ref: '#/components/parameters/paginationOrderParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/PaginatedWebhookEndpoints' post: tags: - Webhooks summary: Create a webhook endpoint description: After creating a webhook endpoint, we will POST to the webhook URL whenever certain events happen in our system. operationId: createWebhook parameters: - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateWebhookBodyParams' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/WebhookEndpoint' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/WebhookEndpointUnprocessableEntityError' /webhook/endpoints/{webhook_endpoint_id}: delete: tags: - Webhooks summary: Delete a webhook endpoint description: 'Delete a webhook endpoint and all associated webhook events and delivery attempt data. This will stop POST requests to the endpoint. _**Note**: deletion will take place asynchronously and may not be complete when this request returns._ ' operationId: deleteWebhook parameters: - $ref: '#/components/parameters/webhookEndpointIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '202': description: Accepted headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/WebhookEndpoint' get: tags: - Webhooks summary: Get a webhook endpoint description: Returns a single webhook endpoint specified by ID. operationId: getWebhookEndpoint parameters: - $ref: '#/components/parameters/webhookEndpointIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/WebhookEndpoint' patch: tags: - Webhooks summary: Update a webhook endpoint description: Updates a single webhook endpoint specified by ID. operationId: updateWebhookEndpoint parameters: - $ref: '#/components/parameters/webhookEndpointIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateWebhookBodyParams' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/WebhookEndpoint' '422': description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/WebhookEndpointUnprocessableEntityError' /webhook/endpoints/{webhook_endpoint_id}/test: put: tags: - Webhooks summary: Triggers a test webhook event description: Request a `test` event be sent to this webhook endpoint. Useful for debugging webhook implementations. operationId: requestWebookTestEvent parameters: - $ref: '#/components/parameters/arcVersionInHeaderParam' - $ref: '#/components/parameters/webhookEndpointIdInPathParam' responses: '202': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' /webhook/endpoints/{webhook_endpoint_id}/events: get: tags: - Webhooks summary: List webhook events description: 'Returns a paginated list of webhook events for a particular webhook endpoint. _**Note**: webhook events are currently retained for 30 days._ ' operationId: getWebhookEvents parameters: - $ref: '#/components/parameters/webhookEndpointIdInPathParam' - name: delivered in: query required: false description: Optionally filter webhook events by whether they were delivered successfully or not. schema: type: boolean - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/PaginatedWebhookEvents' /webhook/endpoints/{webhook_endpoint_id}/events/{webhook_event_id}: get: tags: - Webhooks summary: Get a single webhook event description: 'Returns a full representation of a webhook event, including the `data` payload and delivery attempts. _**Note**: webhook events are currently retained for 30 days._ ' operationId: getWebhookEvent parameters: - $ref: '#/components/parameters/webhookEndpointIdInPathParam' - $ref: '#/components/parameters/webhookEventIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/WebhookEvent' /sandbox/bundle/utility_remittance/utility_credentials/{utility_credential_id}/accept: post: tags: - Bundle (Beta) summary: Sandboxed Only, Utility Remittance - Accept pending Utility Remittance enrollment description: 'Only available when using sandboxed API keys. Updates the Bundle Enrollments [created by the enroll into Utility Remittance endpoint](enrollutilityremittance) for each Utility Account associated with this Utility Credential. The status will change from `pending_enrollment` to `enrolled` and trigger the `utility_remittance_enrolled` Webhook Event. ' operationId: sandboxUtilityRemittanceAccept parameters: - $ref: '#/components/parameters/utilityCredentialIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/BundleEnrollmentsArray' '403': description: ForbiddenError headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: oneOf: - $ref: '#/components/schemas/SandboxBundleEnrollmentError' - $ref: '#/components/schemas/InvalidResourceError' /sandbox/bundle/utility_remittance/utility_credentials/{utility_credential_id}/reject: post: tags: - Bundle (Beta) summary: Sandboxed Only, Utility Remittance - Reject pending Utility Remittance enrollment description: 'Only available when using sandboxed API keys. Updates the Bundle Enrollments [created by the enroll into Utility Remittance endpoint](enrollutilityremittance) for each Utility Account associated with this Utility Credential. The status will change from `pending_enrollment` to `ineligible` and trigger the `utility_remittance_not_available` Webhook Event. ' operationId: sandboxUtilityRemittanceReject parameters: - $ref: '#/components/parameters/utilityCredentialIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: required: true content: application/json: schema: type: object required: - ineligibility_reasons properties: ineligibility_reasons: type: array items: $ref: '#/components/schemas/IneligibilityReasonEnum' responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/BundleEnrollmentsArray' '403': description: ForbiddenError headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: oneOf: - $ref: '#/components/schemas/SandboxBundleRejectReasonsError' - $ref: '#/components/schemas/UnpermittedParametersError' - $ref: '#/components/schemas/SandboxBundleEnrollmentError' - $ref: '#/components/schemas/InvalidResourceError' /sandbox/bundle/utility_remittance/utility_credentials/{utility_credential_id}/remove: post: tags: - Bundle (Beta) summary: Sandboxed Only, Utility Remittance - Remove active or pending removal Utility Remittance enrollment description: 'Only available when using sandboxed API keys. Updates the Bundle Enrollments [created by the enroll into Utility Remittance endpoint](enrollutilityremittance) for each Utility Account associated with this Utility Credential. The status will change from `enrolled` or `pending_removal` to `removed` and trigger the `utility_remittance_removed` Webhook Event. ' operationId: sandboxUtilityRemittanceRemove parameters: - $ref: '#/components/parameters/utilityCredentialIdInPathParam' - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: required: true content: application/json: schema: type: object required: - removal_reason properties: removal_reason: type: string enum: - organization_requested - dropped_cant_login - dropped_no_remittance_scheduled responses: '200': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/BundleEnrollmentsArray' '403': description: ForbiddenError headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: oneOf: - $ref: '#/components/schemas/SandboxBundleRemoveReasonError' - $ref: '#/components/schemas/UnpermittedParametersError' - $ref: '#/components/schemas/SandboxBundleEnrollmentError' - $ref: '#/components/schemas/InvalidResourceError' /sandbox/connect/submit_test_credentials: post: tags: - Utility Credentials summary: Submit test credentials description: 'Submit test credentials in the sandbox environment The request should authenticate with a Bearer token from the [Connect Token endpoint](ref:createconnecttoken), provisioned in the same manner as it would be for front-end use with Connect. ' operationId: submitTestCredentials parameters: - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: required: true content: application/json: schema: type: object required: - username - password - utility_id - zip properties: username: type: string password: type: string account_number: type: string description: Alternative to username/password, for use with ConEd utility_id: type: string description: Arcadia identifier for the desired utility, found in the [Supported Utilities section](#section/Supported-Utilities). zip: type: string description: Zip code of the test utility account service address. This can influence tariffs under some utilities. responses: '201': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/UtilityCredential' /sandbox/webhook/trigger/new_utility_statement_available: post: tags: - Webhooks summary: Trigger a new_utility_statement_available webhook event description: 'This endpoint will create a new utility statement for the associated utility account and emit a new_utility_statement_available webhook event. Only available in sandbox. ' operationId: triggerNewUtilityStatementAvailable parameters: - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: required: true content: application/json: schema: type: object required: - utility_account_id properties: utility_account_id: type: integer responses: '202': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/WebhookTriggerError' /sandbox/webhook/trigger/new_utility_intervals_available: post: tags: - Webhooks summary: Trigger a new_utility_intervals_available webhook event description: 'This endpoint will emit a new_utility_intervals_available webhook event. Note: While the new_utility_statement_available trigger creates a new utility statement record, the new_utility_intervals_available trigger does not generate new interval data records. Instead, the new_utility_intervals_available trigger simply creates an event for existing interval data. New interval data is added-on to test account interval data records daily. Only available for sandboxed UtilityAccounts with test scenario interval data. ' operationId: triggerNewUtilityIntervalsAvailable parameters: - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: required: true content: application/json: schema: type: object required: - utility_account_id properties: utility_account_id: type: integer responses: '202': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/WebhookTriggerError' /sandbox/webhook/trigger/utility_credential_revoked: post: tags: - Webhooks summary: Trigger a utility_credential_revoked webhook event description: 'This endpoint will revoke a given utility credential (mimicing the severance of a customer''s connection with a utility, typically due to a change in password) and emit a utility_credential_revoked webhook event. Only available in sandbox. ' operationId: triggerUtilityCredentialRevoked parameters: - $ref: '#/components/parameters/arcVersionInHeaderParam' requestBody: required: true content: application/json: schema: type: object required: - utility_credential_id properties: utility_credential_id: type: integer responses: '202': description: Success headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' '422': description: Unprocessable Entity headers: Arcadia-Version: $ref: '#/components/headers/ArcVersion' content: application/json: schema: $ref: '#/components/schemas/WebhookTriggerError' webhooks: utilityCredentialVerified: post: summary: Utility Credential Verified description: Webhook posted when a utility credential has been verified. The utility credential verification status is `verified`. The `id` field represents a utility credential (`utility_credential_id`) that is associated with the user whose `client_user_id` is in the data object. operationId: utilityCredentialVerified tags: - Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/UtilityCredentialVerifiedWebhookEvent' utilityCredentialRejected: post: summary: Utility Credential Rejected description: Webhook posted when a utility credential has been initially rejected. The utility credential verification status is `rejected`. The `id` field represents a utility credential (`utility_credential_id`) that is associated with the user whose `client_user_id` is in the data object. operationId: utilityCredentialRejected tags: - Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/UtilityCredentialRejectedWebhookEvent' utilityCredentialRevoked: post: summary: Utility Credential Revoked description: Webhook posted when a utility credential is no longer correct. The utility credential verification status is `rejected`. The `id` field represents a utility credential (`utility_credential_id`) that is associated with the user whose `client_user_id` is in the data object. operationId: utilityCredentialRevoked tags: - Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/UtilityCredentialRevokedWebhookEvent' UtilityCredentialVerificationError: post: summary: Utility Credential Verification Error description: 'Webhook posted when an error was encountered attempting to verify the utility credentials. See the description of `verification_status` in the Response section of [Get Utility Credential](#operation/getUtilityCredential) for more information. The `id` field represents a utility credential (`utility_credential_id`) that is associated with the user whose `client_user_id` is in the data object.' operationId: utilityCredentialVerificationError tags: - Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/UtilityCredentialVerificationErrorWebhookEvent' utilityAccountsDiscovered: post: summary: Utility Accounts Discovered description: Webhook posted when utility accounts are discovered. operationId: utilityAccountsDiscovered tags: - Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/UtilityAccountsDiscoveredWebhookEvent' utilityAccountsDiscoveryError: post: summary: Utility Account Discovery Error description: Webhook posted when there is an error discovering utility accounts. operationId: utilityAccountsDiscoveryError tags: - Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/UtilityAccountsDiscoveryErrorWebhookEvent' historicalUtilityIntervalsDiscovered: post: summary: Historical Utility Intervals Discovered description: Webhook posted when historical utility intervals are discovered. operationId: HistoricalUtilityIntervalsDiscovered tags: - Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/HistoricalUtilityIntervalsDiscoveredWebhookEvent' newUtilityIntervalsAvailable: post: summary: New Utility Intervals Available description: Webhook posted when new utility intervals are available. operationId: NewUtilityIntervalsAvailable tags: - Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/NewUtilityIntervalsAvailableWebhookEvent' utilityAccountUpdated: post: summary: Utility Account Updated description: Webhook posted when any information changes on a utility account operationId: utilityAccountUpdated tags: - Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/UtilityAccountUpdatedWebhookEvent' historicalUtilityStatementsDiscovered: post: summary: Historical Utility Statements Discovered description: Webhook posted when historical utility statements are discovered. operationId: HistoricalUtilityStatementsDiscovered tags: - Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/HistoricalUtilityStatementsDiscoveredWebhookEvent' newUtilityStatementAvailable: post: summary: New Utility Statement Available description: Webhook posted when a new utility statement is discovered. operationId: newUtilityStatementAvailable tags: - Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/NewUtilityStatementAvailableWebhookEvent' utilityRemittancePendingEnrollment: post: summary: Utility Remittance Pending Enrollment description: Webhook posted when a Utility Account is pending enrollment into utility remittance. operationId: utilityRemittancePendingEnrollment tags: - Bundle Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/UtilityRemittancePendingEnrollmentWebhookEvent' utilityRemittanceIneligible: post: summary: Utility Remittance Ineligible description: Webhook posted when a Utility Account is determined to be ineligible for utility remittance. operationId: utilityRemittanceIneligible tags: - Bundle Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/UtilityRemittanceIneligibleWebhookEvent' utilityRemittanceEnrolled: post: summary: Utility Remittance Enrolled description: Webhook posted when a Utility Account is enrolled into utility remittance. operationId: utilityRemittanceEnrolled tags: - Bundle Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/UtilityRemittanceEnrolledWebhookEvent' utilityRemittancePendingRemoval: post: summary: Utility Remittance Pending Removal description: Webhook posted when a Utility Account is pending removal from utility remittance. operationId: utilityRemittancePendingRemoval tags: - Bundle Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/UtilityRemittancePendingRemovalWebhookEvent' utilityRemittanceRemoved: post: summary: Utility Remittance Removed description: Webhook posted when a Utility Account is removed from utility remittance. operationId: utilityRemittanceRemoved tags: - Bundle Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/UtilityRemittanceRemovedWebhookEvent' utilityRemittanceItemRemitted: post: summary: Utility Remittance Item Remitted description: Webhook Event posted when a Utility Remittance Item has been remitted operationId: utilityRemittanceItemRemitted tags: - Bundle Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/UtilityRemittanceItemRemittedWebhookEvent' utilityRemittanceItemScheduled: post: summary: Utility Remittance Item Scheduled description: Webhook Event posted when a Utility Remittance Item has been scheduled operationId: utilityRemittanceItemScheduled tags: - Bundle Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/UtilityRemittanceItemScheduledWebhookEvent' test: post: summary: Test description: Webhook posted when requested via the [test webhook endpoint](#operation/requestWebookTestEvent) operationId: test tags: - Webhook Events requestBody: content: application/json: schema: $ref: '#/components/schemas/TestWebhookEvent' components: securitySchemes: bearerAuth: type: http scheme: bearer parameters: arcVersionInHeaderParam: name: Arcadia-Version in: header example: '2022-10-13' description: The Arcadia-Version for the request required: true schema: type: string default: '2022-10-13' clientUserIdQueryParam: in: query name: client_user_id required: false description: A client_user_id to filter the list of returned items by. schema: type: string paginationLimitParam: in: query name: limit required: false schema: type: integer minimum: 1 default: 10 paginationUpdatedAfterParam: in: query name: updated_after required: false description: ISO8601 datetime, used to traverse paginated responses. Use of this parameter is mutually exclusive with `updated_before`. schema: type: string format: date-time paginationUpdatedBeforeParam: in: query name: updated_before required: false description: ISO8601 datetime, used to traverse paginated responses. Use of this parameter is mutually exclusive with `updated_after`. schema: type: string format: date-time paginationOrderParam: in: query name: order required: false description: Used to specify the order in which records should be returned. Currently ordered by `updated_at` timestamp. schema: type: string enum: - asc - desc default: desc utilityAccountIdInPathParam: name: utility_account_id in: path required: true schema: type: integer clientUserIdInPathParam: name: client_user_id in: path required: true schema: type: string utilityCredentialIdInPathParam: name: utility_credential_id in: path required: true schema: type: integer utilityAccountIdQueryParam: in: query name: utility_account_id required: false description: A utility account id to filter the list of returned items by. schema: type: integer serviceTypesQueryParam: in: query name: service_types required: false description: A list of service types to filter the list of returns items by. schema: type: array items: type: string enum: - electric - gas - water utilityMeterIdInPathParam: name: utility_meter_id in: path required: true schema: type: integer deprecatedClientUserIdQueryParam: in: query name: client_user_id required: false deprecated: true description: A client_user_id to filter the list of returned items by. This field is deprecated, prefer to use `utility_account_id` instead. schema: type: string utilityStatementIdInPathParam: name: utility_statement_id in: path required: true schema: type: integer intervalDataUtilityAccountIdQueryParam: in: query name: utility_account_id required: false description: ID of the utility account to pull interval data from. You must provide this parameter or `utility_meter_id`, but not both. schema: type: integer intervalDataUtilityMeterIdQueryParam: in: query name: utility_meter_id required: false description: ID of the utility meter to pull interval data from. You must provide this parameter or `utility_account_id`, but not both. schema: type: integer startTimeQueryParam: in: query name: start_time required: false description: Retrieve interval data starting from and including this timestamp. If not provided, this will default to a year before the end timestamp. schema: type: string format: date-time example: '2020-03-18T22:00:00-07:00' endTimeQueryParam: in: query name: end_time required: false description: Retrieve interval data up to and including this timestamp. Defaults to the most recently available interval data's timestamp. schema: type: string format: date-time example: '2021-03-18T22:00:00-07:00' utilityStatementIdQueryParam: in: query name: utility_statement_id required: false description: Retrieve interval data from the service period of a specific utility statement. Cannot be used with start_time or end_time parameters. schema: type: integer utilityRemittanceItemIdInPathParam: name: utility_remittance_item_id in: path required: true schema: type: string webhookEndpointIdInPathParam: name: webhook_endpoint_id in: path required: true schema: type: string example: 3847dd41-8c90-499a-ac6e-10a027dd231f webhookEventIdInPathParam: name: webhook_event_id in: path required: true schema: type: string example: ff95f020-8ef9-409d-bff6-8489e880359c headers: ArcVersion: description: The Arcadia-Version for the response schema: type: string example: '2022-10-13' required: true RateLimitLimit: description: The number of requests that can be made to the API in the RateLimit Period schema: type: integer example: 200 required: true RateLimitPeriod: description: The number of seconds your application has to perform the number of requests specified by RateLimit Limit schema: type: integer example: 10 required: true RateLimitReset: description: The time in which you can retry a request. Given in epoch time. schema: type: integer example: 1690895650 required: true schemas: AccessTokenResponse: required: - access_token - expires_in - scope - token_type - created_at properties: access_token: type: string description: The access token to be used for subsequent requests. example: 6-3MbUgRHRV-nNDcgsLpDWQ4hYsZToWZgpf-mfM7ICo expires_in: type: integer description: The number of seconds until the token expires. example: 7200 token_type: type: string description: The type of token. This will always be "Bearer". enum: - Bearer example: Bearer scope: type: string description: The scope of the token. enum: - write - connect_token example: write created_at: type: integer description: When the token was created. Provided in Unix timestamp format. example: 1611205026 additionalProperties: false AccessTokenUnauthorizedError: required: - error properties: error: type: string enum: - The supplied credentials are invalid. additionalProperties: false ConnectUrlResponse: required: - connect_url properties: connect_url: type: string description: The url to be used for initializing standalone Connect. example: https://connect.arcadia.com?token=QYEPoBOJWc4bV_XpIzJdr8BLG4RdK6h68AP672nab4f additionalProperties: false ConnectTokenUnauthorizedError: required: - error properties: error: type: string enum: - Unknown or invalid access token additionalProperties: false UtilityCredentialNotFoundError: required: - error properties: error: type: string enum: - Couldn't find UtilityCredential additionalProperties: false ConnectTokenUnprocessableEntityError: required: - error properties: error: type: string enum: - 'Param is missing or the value is empty: client_user_id or utility_credential_id' additionalProperties: false ConnectTokenTooManyParametersError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - You cannot pass both client_user_id and utility_credential_id. Please only pass one type: type: string enum: - INVALID_PARAMATERS details: type: object nullable: true additionalProperties: false ConnectUrlVariantError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - You can only pass in 'connect' or 'tariff' as the variant. type: type: string enum: - INVALID_VARIANT details: type: object nullable: true additionalProperties: false PingResponse: required: - pong properties: pong: type: boolean description: Always true example: true additionalProperties: false PingUnauthorizedError: required: - error properties: error: type: string enum: - Unknown or invalid access token additionalProperties: false Tariff: description: Information about a tariff. required: - main_tariff_id - tariff_code - tariff_name - utility_name properties: main_tariff_id: type: string description: The Genability 'masterTariffId' unique identifier for this tariff. See [Genability documentation](https://developer.genability.com/api-reference/tariff-api/tariff/) for details. example: gen_mtid_3331108 property_inputs: description: Properties applied to this tariff which may affect the calculated cost of electricity. type: array items: type: object required: - id - value properties: id: type: string example: territoryId value: type: boolean example: 3 supplier_name: description: The name of the retail electricity supplier or the community choice aggregator. If there is no retail electricity supplier or community choice aggregator, this field is null. example: East Bay Community Energy type: string nullable: true tariff_code: type: string description: Abbreviation code of the tariff used for this calculation. example: EV-2A-TOU tariff_name: type: string description: Full name of the tariff used for this calculation. example: Residential - Time of Use - Plug-In Electric Vehicle 2 utility_name: type: string description: Name of the utility associated with this tariff example: Pacific Gas & Electric MostRecentTariff: allOf: - $ref: '#/components/schemas/Tariff' - description: The most recent Tariff seen on this utility account. required: - tariff_as_of_date properties: tariff_as_of_date: type: string format: date description: The statement date of the utility statement that reported use of this tariff. example: '2021-03-01' nullable: true Availability: type: string enum: - AVAILABLE - NOT_AVAILABLE - NOT_READY FeatureAvailability: required: - charge_cost - hosted_payments - utility_remittance - smart_charge - utility_intervals - utility_statements properties: charge_cost: $ref: '#/components/schemas/Availability' smart_charge: $ref: '#/components/schemas/Availability' utility_intervals: $ref: '#/components/schemas/Availability' utility_statements: $ref: '#/components/schemas/Availability' hosted_payments: $ref: '#/components/schemas/Availability' utility_remittance: $ref: '#/components/schemas/Availability' additionalProperties: false UtilityMeter: required: - id - client_user_id - utility_credential_id - utility_account_id - meter_number - service_type - created_at - updated_at - sandboxed properties: id: type: integer example: 12345 client_user_id: type: string example: fff57dc7-3a2b-4395-8a62-e3486d46dabe utility_credential_id: type: integer example: 54321 utility_account_id: type: integer example: 65432 meter_number: type: string example: 12300000045 67 service_type: type: string enum: - electric - gas - water created_at: type: string format: date-time updated_at: type: string format: date-time sandboxed: type: boolean example: false additionalProperties: false UtilityAccount: required: - id - client_user_id - utility_name - utility_long_name - utility_credential_id - account_number - service_address_city - service_address_state - service_address_street_one - service_address_street_two - service_address_zip - service_customer_name - status - supplier_account_id - most_recent_tariff - flags - services - created_at - updated_at - feature_availability - utility_meters - sandboxed properties: id: type: integer example: 12345 client_user_id: type: string example: fff57dc7-3a2b-4395-8a62-e3486d46dabe utility_name: type: string example: AEP SWEPCO description: The list of supported Arcadia utilities can be found [here](https://arc.arcadia.com/coverage?first=25&page=1). utility_long_name: type: string example: AEP SWEPCO AR description: Provides greater detail than `utility_name`. The list of supported Arcadia utilities can be found [here](https://arc.arcadia.com/coverage?first=25&page=1). utility_credential_id: type: integer example: 54321 account_number: type: string example: '7626177069' description: The account number used by the utility to identify this UtilityAccount nullable: true service_address_street_one: example: 1060 W Addison type: string nullable: true service_address_street_two: example: Apartment 1 type: string nullable: true service_address_city: example: Chicago type: string nullable: true service_address_state: example: IL type: string nullable: true service_address_zip: example: '60613' type: string nullable: true service_customer_name: example: Joan Arcadia type: string nullable: true supplier_account_id: example: '123456789' description: 'Utility specific account identifier for energy suppliers. ' type: string nullable: true status: anyOf: - type: 'null' - type: string enum: - active - closed - incomplete - locked - unknown most_recent_tariff: anyOf: - type: 'null' - $ref: '#/components/schemas/MostRecentTariff' flags: type: array items: type: string enum: - utility_statement_past_due services: type: array items: type: string enum: - electric - gas - water created_at: type: string format: date-time updated_at: type: string format: date-time feature_availability: $ref: '#/components/schemas/FeatureAvailability' utility_meters: type: array items: $ref: '#/components/schemas/UtilityMeter' sandboxed: type: boolean example: false additionalProperties: false PaginatedUtilityAccounts: required: - data - total_count properties: data: type: array items: $ref: '#/components/schemas/UtilityAccount' total_count: type: integer example: 1 additionalProperties: false PaginatedUsers: required: - data - total_count properties: data: type: array items: type: object required: - client_user_id - created_at - updated_at properties: client_user_id: type: string example: fff57dc7-3a2b-4395-8a62-e3712d46dafl created_at: type: string format: date-time updated_at: type: string format: date-time total_count: type: integer example: 1 additionalProperties: false UtilityCredential: required: - created_at - id - updated_at - client_user_id - username - utility_name - utility_long_name - verification_status - accounts_load_in_progress - verification_updated_at - sandboxed - uses_test_scenario properties: id: type: integer example: 12345 client_user_id: type: string example: fff57dc7-3a2b-4395-8a62-e3486d46dabe utility_name: type: string example: AEP SWEPCO description: The list of supported Arcadia utilities can be found [here](https://arc.arcadia.com/coverage?first=25&page=1). utility_long_name: type: string example: AEP SWEPCO AR description: Provides greater detail than `utility_name`. The list of supported Arcadia utilities can be found [here](https://arc.arcadia.com/coverage?first=25&page=1). username: type: string example: great_customer nullable: true verification_status: type: string enum: - pending - verified - rejected - error description: 'The verification status of the Utility Credential. * `pending`: Credential verification is pending * `verified`: The credentials were found to be correct * `rejected`: The credentials were found to be incorrect * `error`: There was an error attempting to verify the credentials. This status _may_ be transient, as Arcadia will continue to retry verification in the background. ' accounts_load_in_progress: type: boolean example: false description: 'Indicates if Arcadia is in the process of verifying a utility credential or loading associated utility accounts. The combination of `verification_status: verified` and `account_load_in_progress: false` will indicate that utility accounts are available in the API. Alternatively, the `utility_accounts_discovered` webhook will alert you when utility accounts are available in the API.' verification_updated_at: format: date-time type: string nullable: true created_at: type: string format: date-time updated_at: type: string format: date-time sandboxed: type: boolean example: false uses_test_scenario: type: boolean example: false description: Indicates if the utility credential was created using a designated test username and password. User: required: - client_user_id - created_at - utility_credentials properties: client_user_id: type: string example: fff57dc7-3a2b-4395-8a62-e3712d46dafl created_at: type: string format: date-time utility_credentials: type: array items: allOf: - $ref: '#/components/schemas/UtilityCredential' - type: object required: - utility_accounts properties: utility_accounts: type: array items: $ref: '#/components/schemas/UtilityAccount' UserDataExceedsLimitsError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string type: type: string enum: - BAD_REQUEST details: type: object nullable: true additionalProperties: false UserNotFoundError: required: - error properties: error: type: string enum: - Couldn't find User additionalProperties: false DeleteUserError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - Cannot delete a User who is pending_enrollment, enrolled, or pending unenrollment in a Bundle Product type: type: string enum: - BAD_REQUEST details: type: object nullable: true additionalProperties: false PaginatedUtilityCredentials: required: - data - total_count properties: data: type: array items: $ref: '#/components/schemas/UtilityCredential' total_count: type: integer example: 1 additionalProperties: false PaginatedUtilityMeters: required: - data - total_count properties: data: type: array items: $ref: '#/components/schemas/UtilityMeter' total_count: type: integer example: 1 additionalProperties: false MalformedParametersError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - Request included malformed parameters type: type: string enum: - BAD_REQUEST details: type: object required: [] properties: service_types: type: array items: type: string enum: - must be an array amount_cents: type: array items: type: string enum: - must be an integer - must not exceed 3000000 cents additionalProperties: false UtilityStatement: required: - client_user_id - created_at - due_date - final_bill - gas_charge - id - kwh - past_due - pdf_url - sandboxed - service_end_date - service_start_date - statement_date - supplier_charge - tariff - updated_at - utility_account_id - utility_charge - utility_name - utility_long_name - service_window_inclusive_of_end_date - commercial_line_items_detail - billing_flags - virtual_net_metering - most_recent_payment_detail properties: id: type: integer example: 123 client_user_id: type: string example: fff57dc7-3a2b-4395-8a62-e3486d46dabe tariff: anyOf: - type: 'null' - $ref: '#/components/schemas/Tariff' utility_name: type: string example: AEP SWEPCO description: The list of supported Arcadia utilities can be found [here](https://arc.arcadia.com/coverage?first=25&page=1). utility_long_name: type: string example: AEP SWEPCO AR description: Provides greater detail than `utility_name`. The list of supported Arcadia utilities can be found [here](https://arc.arcadia.com/coverage?first=25&page=1). utility_account_id: type: integer example: 2243 statement_date: type: string format: date example: '2019-08-24' due_date: type: string format: date example: '2019-09-24' nullable: true service_start_date: type: string format: date example: '2019-08-24' service_end_date: type: string format: date example: '2019-09-24' kwh: type: integer example: 100 utility_charge: type: number example: 90.33 description: Total dollar amount billed by the utility on this statement. supplier_charge: example: 41.54 description: 'Total dollar amount billed by the energy supplier. **Note**: Not available for all utilities. ' type: number nullable: true gas_charge: example: 23.32 description: 'Total dollar amount billed by the utility for natural gas. **Note**: Not available for all utilities that provide gas service. ' type: number nullable: true past_due: type: boolean example: false nullable: true created_at: type: string format: date-time updated_at: type: string format: date-time sandboxed: type: boolean example: false pdf_url: format: uri description: A url to the utility created PDF bill for this statement. Note that this url will only be valid for 600 seconds. type: string nullable: true final_bill: description: Indicates if this is the final bill that this account will receive before closing. example: false type: boolean nullable: true service_window_inclusive_of_end_date: type: boolean example: true description: Indicates that the service window for this UtilityStatement includes the service_end_date. net_metering: anyOf: - type: 'null' - type: object description: Details on the customer's net metering credit data. Currently only supported for Versant. required: - current_cycle_generated_kwh properties: current_cycle_generated_kwh: description: The kwh generated during the current cycle example: 40.57 type: number nullable: true virtual_net_metering: anyOf: - type: 'null' - type: object description: Details on the customer's virtual net metering credit data. Currently only supported for National Grid New York and Central Maine Power. required: - current_cycle_generated_credits - current_cycle_applied_credits - last_cycle_carry_over_credits - next_cycle_carry_over_credits - current_cycle_generated_kwh - current_cycle_applied_kwh - last_cycle_carry_over_kwh - next_cycle_carry_over_kwh - current_cycle_expiring_kwh - current_cycle_allocation_percentage - cdg_net_credit properties: current_cycle_generated_credits: description: The amount of credits generated during the current cycle, in dollars example: 100.15 type: number nullable: true current_cycle_applied_credits: description: The amount of credits applied during the current cycle, in dollars example: 90.33 type: number nullable: true last_cycle_carry_over_credits: description: The amount of credits carried over from the last cycle, in dollars example: 3.83 type: number nullable: true next_cycle_carry_over_credits: description: The amount of credits carried over to the next cycle, in dollars example: 5.99 type: number nullable: true current_cycle_generated_kwh: description: The kwh generated during the current cycle example: 40 type: number nullable: true current_cycle_applied_kwh: description: The kwh applied during the current cycle example: 30 type: number nullable: true last_cycle_carry_over_kwh: description: The kwh carried over to the next cycle example: 5 type: number nullable: true next_cycle_carry_over_kwh: description: The kwh carried over to the next cycle example: 10 type: number nullable: true current_cycle_expiring_kwh: description: the kwh that are expiring during the current cycle example: 5 type: number nullable: true current_cycle_allocation_percentage: description: the fixed allocation percentage during the current cycle example: '0.05' type: string nullable: true cdg_net_credit: description: The net credit from the community solar project, in dollars example: 10 type: number nullable: true most_recent_payment_detail: anyOf: - type: 'null' - type: object description: Detail on the most recent payment. Currently only supported for National Grid Massachusetts and NYSEG. required: - most_recent_payment_received_amount - most_recent_payment_received_date properties: most_recent_payment_received_amount: example: 50.5 description: Total dollar amount received on the most recent payment. type: number nullable: true most_recent_payment_received_date: type: string format: date description: The date of the most recent payment. example: '2023-08-24' nullable: true commercial_line_items_detail: anyOf: - type: 'null' - type: object description: This field is in *beta*. Click [here](release-phases) for a description on Arcadia's release phases. -- Details on line items specific to commercial accounts. Currently only supported for the ConEd utility. required: - supply_energy_kwh - supply_energy_cost - supply_demand_kw - supply_demand_cost - supply_customer_charge - supply_merchant_function_charge - supply_taxes - supply_total_charge - delivery_energy_kwh - delivery_energy_cost - delivery_demand_kw - delivery_demand_cost - delivery_customer_charge - delivery_system_benefit_cost - delivery_processing_charge - delivery_taxes - delivery_total_charge - sales_tax - electric_charge properties: supply_energy_kwh: type: number nullable: true supply_energy_cost: description: The energy supply cost, in dollars. type: number nullable: true supply_demand_kw: type: number nullable: true supply_demand_cost: description: The demand supply cost, in dollars. type: number nullable: true supply_customer_charge: description: The customer charge for energy supply, in dollars. type: number nullable: true supply_merchant_function_charge: description: The charge for merchant function in energy supply, in dollars. type: number nullable: true supply_taxes: description: Any other charges for taxes on energy supply, in dollars. type: number nullable: true supply_total_charge: description: The total cost of energy supply, in dollars. type: number nullable: true delivery_energy_kwh: type: number nullable: true delivery_energy_cost: description: The energy delivery cost, in dollars. type: number nullable: true delivery_demand_kw: type: number nullable: true delivery_demand_cost: description: The demand delivery cost, in dollars. type: number nullable: true delivery_customer_charge: description: The customer charge for energy delivery, in dollars. type: number nullable: true delivery_system_benefit_cost: description: The delivery system benefit cost, in dollars. type: number nullable: true delivery_processing_charge: description: The delivery processing charge, in dollars. type: number nullable: true delivery_taxes: description: Any other charges for taxes on energy delivery, in dollars. type: number nullable: true delivery_total_charge: description: The total cost of energy delivery, in dollars. type: number nullable: true sales_tax: description: Sales taxes applied to the total bill, in dollars. type: number nullable: true electric_charge: description: The total combined charge for this bill - supply, delivery, and taxes - in dollars. type: number nullable: true billing_flags: type: array description: These flags may be of interest if the corresponding Utility Account is enrolled in Bundle. items: type: object properties: type: type: string description: The 'possible_rebill' flag indicates that this Utility Statement may be a duplicate or variation of a previous Utility Statement enum: - possible_rebill details: type: object properties: conflicting_utility_statment_id: type: integer additionalProperties: false PaginatedUtilityStatements: required: - data - total_count properties: data: type: array items: $ref: '#/components/schemas/UtilityStatement' total_count: type: integer example: 1 additionalProperties: false UtilityAccountNotFoundError: required: - error properties: error: type: string enum: - Couldn't find UtilityAccount additionalProperties: false UtilityStatementsFeatureAvailabilityError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - The utility_statements feature is not available for this UtilityAccount. - The utility_statements feature is not ready yet. Please refer to UtilityAccount#FeatureAvailability for updates. type: type: string enum: - BAD_REQUEST details: type: object nullable: true additionalProperties: false UtilityIntervalItem: required: - start_time - end_time - kwh - is_null_kwh - consumption_kwh - generation_kwh - net_kwh properties: start_time: type: string format: date-time example: '2021-03-18T22:00:00Z' end_time: type: string format: date-time example: '2021-03-18T22:00:00Z' consumption_kwh: description: Consumption kilowatt hours usage for this interval. Availability varies by utility. type: number nullable: true generation_kwh: description: Generation kilowatt hours usage for the interval. Availabiltiy varies by utility. type: number nullable: true net_kwh: description: Net kilowatt hours usage for the interval. type: number kwh: description: Prefer net_kwh instead deprecated: true type: number is_null_kwh: description: Indicates whether kwh was unavailable for this interval. When `true` the kwh field should be interpreted as null. deprecated: true type: boolean additionalProperties: false UtilityIntervalsPerStatementDataResponse: required: - client_user_id - utility_account_id - utility_meter_ids - data properties: client_user_id: type: string example: fff57dc7-3a2b-4395-8a62-e3486d46dabe utility_account_id: type: integer utility_meter_ids: type: array items: type: integer batch_start_time: description: The starting timestamp for the interval data included in this response type: string format: date-time batch_end_time: description: The ending timestamp for the interval data included in this response type: string format: date-time data: type: array items: $ref: '#/components/schemas/UtilityIntervalItem' additionalProperties: false UtilityIntervalsPerStatementNotFoundError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - We do not yet have utility intervals covering the entirety of this utility statement's time range. Please see details for which utility meter's data is incomplete. type: type: string enum: - NOT_FOUND details: type: object required: - intervals_earliest_time - intervals_latest_time - utility_meter_id properties: intervals_earliest_time: type: string format: date-time example: '2021-03-19T08:00:00-07:00' intervals_latest_time: type: string format: date-time example: '2022-03-19T08:00:00-07:00' utility_meter_id: type: number example: '358901' description: Which utility meter did not have full coverage for the time range of this utility statement. additionalProperties: false UtilityIntervalsFeatureAvailabilityError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - The utility_intervals feature is not available for this UtilityAccount. - The utility_intervals feature is not ready yet. Please refer to UtilityAccount#FeatureAvailability for updates. - Parameter(s) start_time and/or end_time cannot be used with utility_statement_id parameter. type: type: string enum: - BAD_REQUEST details: type: object nullable: true additionalProperties: false UtilityIntervalsStatementRangeUnavailableError: required: - error properties: error: type: object required: - description - type properties: description: type: string enum: - Unable to determine service window for the given utility statement. type: type: string enum: - BAD_REQUEST additionalProperties: false UtilityIntervalDataResponse: required: - client_user_id - utility_account_id - intervals_earliest_time - intervals_latest_time - utility_meter_id - data properties: client_user_id: type: string example: fff57dc7-3a2b-4395-8a62-e3486d46dabe utility_account_id: type: integer utility_meter_id: example: 1234 type: integer nullable: true intervals_earliest_time: description: The earliest available interval data timestamp type: string format: date-time intervals_latest_time: description: The latest available interval data timestamp type: string format: date-time batch_start_time: description: The starting timestamp for the interval data included in this response type: string format: date-time batch_end_time: description: The ending timestamp for the interval data included in this response type: string format: date-time data: type: array items: $ref: '#/components/schemas/UtilityIntervalItem' additionalProperties: false UtilityIntervalsNoDataForMeterError: required: - error properties: error: type: object required: - description - type properties: description: type: string enum: - There are no utility intervals available for this utility meter. type: type: string enum: - NOT_FOUND additionalProperties: false UtilityIntervalsBothAccountIdAndMeterIdProvided: required: - error properties: error: type: object required: - description - type properties: description: type: string enum: - You must provide exactly one of the utility_account_id or utility_meter_id parameters. type: type: string enum: - BAD_REQUEST additionalProperties: false UtilityIntervalsInvalidMeterServiceTypeError: required: - error properties: error: type: object required: - description - type properties: description: type: string enum: - Arcadia does not currently support interval data for non-electric utility meters. type: type: string enum: - BAD_REQUEST additionalProperties: false UtilityIntervalsAmbiguousMeterError: required: - error properties: error: type: object required: - description - type properties: description: type: string enum: - This utility account is associated with multiple meters. You must filter interval data by utility_meter_id instead of utility_account_id when the utility account is associated with multiple meters. type: type: string enum: - BAD_REQUEST additionalProperties: false UtilityIntervalsInvalidTimeRange: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - Provided start_time and/or end_time are outside this account's available utility intervals time range. Please see details for the available time range. type: type: string enum: - BAD_REQUEST details: anyOf: - type: 'null' - type: object required: - intervals_earliest_time - intervals_latest_time properties: intervals_earliest_time: type: string format: date-time example: '2021-03-19T08:00:00-07:00' intervals_latest_time: type: string format: date-time example: '2022-03-19T08:00:00-07:00' additionalProperties: false UtilityIntervalMetadataResponse: required: - intervals_earliest_time - intervals_latest_time properties: intervals_earliest_time: description: The earliest available interval data timestamp type: string format: date-time intervals_latest_time: description: The latest available interval data timestamp type: string format: date-time utility_meter_id: example: 1234 type: integer nullable: true additionalProperties: false ChargeCostRequestBodyParams: required: - start_time - energy_usage_kwh properties: utility_account_id: description: (Beta - due to limited coverage) The unique ID of the utility account that this calculation is being run against. Either a `utility_account_id` or `main_tariff_id` is required for a valid request. type: integer main_tariff_id: type: string description: The Genability 'masterTariffId' unique identifier for this tariff. See [Genability documentation](https://developer.genability.com/api-reference/tariff-api/tariff/) for details. Either a `utility_account_id` or `main_tariff_id` is required for a valid request. example: gen_mtid_3331108 start_time: description: 'ISO8601 timestamp of when the charge begins. Note that the timestamp will be normalized down to the start of latest charge block resolution. For example, if the `charge_block_resolution` is `1h` and the charging session starts at `2021-06-24T14:59:59Z`, the `start_time` used to calculate the curve''s cost will be normalized to `2021-06-24T14:00:00Z`. If the `charge_block_resolution` is `15m`, the `start_time` would be normalized to `2021-06-24T14:45:00Z`. This normalization technique eliminates ambiguity around charging that occurs across time-of-use on/mid/off-peak window boundaries. ' type: string format: date-time example: '2021-03-18T22:00:00-07:00' charge_block_resolution: description: The duration of the charge blocks provided in the `energy_usage_kwh` param. type: string enum: - 5m - 10m - 15m - 30m - 1h default: 1h energy_usage_kwh: description: The load curve being priced. An array of charge blocks with each block representing the kWh of power consumed or to be consumed in that block. type: array items: type: number example: - 0 - 0 - 7.2 - 0 - 7.2 - 2.9 additionalProperties: false ChargeCostResponse: required: - tariff - normalized_start_time - normalized_consumption_kwh - cost_cents properties: utility_account_id: example: 12345 type: integer nullable: true tariff: $ref: '#/components/schemas/MostRecentTariff' normalized_start_time: type: string format: date-time description: The start_time normalized down to the resolution that lines up with any TOU periods on the tariff (generally hourly). example: '2021-03-18T22:00:00-07:00' normalized_consumption_kwh: type: array items: type: number description: The `energy_usage_kwh` aggregated into periods that line up with any TOU periods on the tariff (generally hourly). example: - 0 - 0 - 7.2 - 0 - 7.2 - 2.9 cost_cents: type: integer example: 525 description: Cost of the charging curve on the utility account's tariff, in cents. additionalProperties: false TariffResolutionError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - Tariff information is not yet available for this utility account type: type: string enum: - BAD_REQUEST details: type: object nullable: true additionalProperties: false ChargeCurvesTariffParamError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string example: No tariff found matching ID enum: - No tariff found matching ID - 'Invalid tariff ID: must be of the form "gen_mtid_3220724"' type: type: string enum: - BAD_REQUEST details: type: object required: - main_tariff_id properties: main_tariff_id: type: string example: gen_tariff_000000 additionalProperties: false ChargeCostFeatureAvailabilityError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - The charge_cost feature is not available for this UtilityAccount. - The charge_cost feature is not ready yet. Please refer to UtilityAccount#FeatureAvailability for updates. type: type: string enum: - BAD_REQUEST details: type: object nullable: true additionalProperties: false SparkParamValidationError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - Validation Error type: type: string enum: - BAD_REQUEST details: type: object nullable: true additionalProperties: false SmartChargeScheduleRequestBodyParams: required: - start_time - end_time - minutes_to_charge_complete properties: utility_account_id: description: (Beta - due to limited coverage) The unique ID of the utility account that this calculation is being run against. Either a `utility_account_id` or `main_tariff_id` is required for a valid request. type: integer main_tariff_id: type: string description: The Genability 'masterTariffId' unique identifier for this tariff. See [Genability documentation](https://developer.genability.com/api-reference/tariff-api/tariff/) for details. Either a `utility_account_id` or `main_tariff_id` is required for a valid request. example: gen_mtid_3331108 start_time: description: 'ISO8601 timestamp of when the charge begins. Note that the timestamp will be rounded down to the start of latest charge block resolution. For example, if the `charge_block_resolution` is `1h` and the charging session starts at `2021-06-24T14:59:59Z`, the `start_time` used to calculate the curve''s cost will be normalized to `2021-06-24T14:00:00Z`. If the `charge_block_resolution` is `15m`, the `start_time` would be normalized to `2021-06-24T14:45:00Z`. This rounding technique eliminates ambiguity around charging that occurs across time-of-use on/mid/off-peak window boundaries. ' type: string format: date-time example: '2021-03-18T22:00:00-07:00' end_time: description: ISO8601 datetime by which the charge must be complete. type: string format: date-time example: '2021-03-19T08:00:00-07:00' minutes_to_charge_complete: description: The number of minutes of charging required to complete a charge. type: integer example: 330 charge_block_resolution: description: The duration of the charge blocks to use in the returned `charge_block_active` param. type: string enum: - 5m - 10m - 15m - 30m - 1h default: 1h additionalProperties: false TimeSeriesItem: required: - timestamp - value properties: timestamp: description: ISO8601 timestamp indicating time of data collection type: string format: date-time value: description: Data value of resource type: number additionalProperties: false SmartChargeScheduleResponse: required: - start_time - charge_block_active - charge_block_resolution properties: start_time: type: string format: date-time example: '2021-03-18T22:00:00-07:00' charge_block_resolution: description: The duration of the charge blocks returned in the `charge_block_active` array. type: string enum: - 5m - 10m - 15m - 30m - 1h example: 1h charge_block_active: type: object required: - frequency - data properties: frequency: description: The duration of the charge blocks returned in the `charge_block_active` array. type: string enum: - 5m - 10m - 15m - 30m - 1h example: 1h data: type: array description: Whether or not the vehicle should be actively charging during each charging bucket, starting at the `start_time`. items: $ref: '#/components/schemas/TimeSeriesItem' additionalProperties: false SmartChargeFeatureAvailabilityError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - The smart_charge feature is not available for this UtilityAccount. - The smart_charge feature is not ready yet. Please refer to UtilityAccount#FeatureAvailability for updates. type: type: string enum: - BAD_REQUEST details: type: object nullable: true additionalProperties: false TariffRatesRequestBodyParams: required: - start_time properties: utility_account_id: description: (Beta - due to limited coverage) The unique ID of the utility account that this calculation is being run against. Either a `utility_account_id` or `main_tariff_id` is required for a valid request. type: integer main_tariff_id: type: string description: The Genability 'masterTariffId' unique identifier for this tariff. See [Genability documentation](https://developer.genability.com/api-reference/tariff-api/tariff/) for details. Either a `utility_account_id` or `main_tariff_id` is required for a valid request. example: gen_mtid_3331108 start_time: description: 'ISO8601 timestamp indicating start time. Note that the timestamp will be rounded down to the start of latest time_block_resolution ' type: string format: date-time example: '2021-03-18T22:00:00-07:00' end_time: description: 'ISO8601 timestamp indicating end of time period. Note that the timestamp will be rounded down to the start of latest time_block_resolution ' type: string format: date-time example: '2021-03-19T08:00:00-07:00' time_block_resolution: description: Requested time resolution type: string enum: - 5m - 10m - 15m - 30m - 1h default: 1h additionalProperties: false TariffRatesResponse: required: - tariff - rates_cost_per_kwh properties: tariff: $ref: '#/components/schemas/Tariff' rates_cost_per_kwh: description: Timeseries with data array of $/kWh rates type: object required: - data - freq properties: data: description: Array of TimeSeriesItems indicating $/kWh rates for each requested time period type: array items: $ref: '#/components/schemas/TimeSeriesItem' freq: description: The interval of the TimeSeriesItems in the data array type: string enum: - 5m - 10m - 15m - 30m - 1h additionalProperties: false LoadServingEntitySchema: required: - lse_id - name - code - num_customers properties: lse_id: type: string description: Genability ID of the load serving entity, prefixed with `gen_lse_`. example: gen_lse_734 name: type: string description: Name of the load serving entity. example: Pacific Gas & Electric code: type: string description: Alternate key identifying the load serving entity. For US companies, this is the EIA ID. example: '14328' num_customers: type: integer description: Total customer count for the load serving entity. Results will be sorted by this value in descending order (so the first result will be the most likely LSE). example: 5069189 additionalProperties: false SearchLoadServingEntitiesResponse: required: - data - total_count properties: data: type: array description: Results items: $ref: '#/components/schemas/LoadServingEntitySchema' example: - lse_id: gen_lse_734 name: Pacific Gas & Electric code: '14328' num_customers: 5069189 - lse_id: gen_lse_1074 name: San Francisco City & County of code: '16612' num_customers: 2173 total_count: type: integer description: Number of results example: 2 additionalProperties: false TariffApplicabilityQuestionSchema: required: - id - user_question - answer_data_type properties: id: type: string description: String identifier for the applicability question example: LOW_INCOME user_question: type: string description: The user question corresponding to this tariff applicability example: Do you qualify for your utility's low income assistance program? user_question_details: description: The user question details corresponding to this tariff applicability example: Contact your utility for specific qualifications, but common criteria include Supplemental Security Income, Temporary Assistance to Needy Persons/Families, Safety Net Assistance, Food Stamps, or receiving a Home Energy Assistance Program grant in the preceding 12 months. type: string nullable: true answer_data_type: type: string description: Type of answer expected to be returned for this tariff applicability question example: YES_NO additionalProperties: false TariffApplicabilityQuestionsResponse: required: - country - lse_id - zip_code - applicability_questions properties: country: type: string description: The country used for determining tariff applicability example: US lse_id: type: string example: gen_lse_734 description: The Genability 'lseId' unique identifier for this load serving entity. See [Genability documentation](https://developer.genability.com/api-reference/tariff-api/load-serving-entity/) for details. zip_code: type: string description: The zip code used for determining tariff applicability example: '94706' applicability_questions: type: array description: List of applicability questions that will determine optimization-eligible tariffs in this LSE. items: $ref: '#/components/schemas/TariffApplicabilityQuestionSchema' example: - id: EV user_question: Do you have an electric vehicle (EV)? user_question_details: null answer_data_type: YES_NO - id: SOLAR user_question: Do you have a rooftop solar system installed? user_question_details: null answer_data_type: YES_NO - id: ELECTRIC_HEAT user_question: Is your primary home heating electric? user_question_details: null answer_data_type: YES_NO - id: ELECTRIC_WATER user_question: Is your primary hot water heater electric? user_question_details: null answer_data_type: YES_NO - id: HEAT_PUMP user_question: Do you have a heat pump for home heating and cooling? user_question_details: null answer_data_type: YES_NO - id: SENIOR_CITIZEN user_question: Is the electric account owner a senior citizen? user_question_details: null answer_data_type: YES_NO - id: LOW_INCOME user_question: Do you qualify for your utility's low income assistance program? user_question_details: 'Contact your utility for specific qualifications, but common criteria include: Supplemental Security Income, Temporary Assistance to Needy Persons/Families, Safety Net Assistance, Food Stamps, or receiving a Home Energy Assistance Program grant in the preceding 12 months.' answer_data_type: YES_NO - id: MEDICAL user_question: Do you have medical equipment or a condition that qualifies for electricity assistance? user_question_details: Contact your utility for specific qualifications, but this commonly includes equipment like ventilators. answer_data_type: YES_NO - id: CA_CARE_CUSTOMER user_question: Do you qualify for the California Alternate Rates for Energy (CARE) program? user_question_details: CARE provides qualifying residential applicants with reduced energy charges. answer_data_type: YES_NO - id: CA_FERA user_question: Do you qualify for the Family Electric Rate Assistance program (FERA)? user_question_details: FERA is the rate reduction program in California for household with maximum annual income of between 200% and 250% of federal poverty guidelines and have three or more persons residing full time in their household. Additional eligibility criteria may apply. answer_data_type: YES_NO additionalProperties: false OptimizedTariffRecommendationsLseIdentificationParamError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - Either utility_account_id or zip_code/lse_id must be specified type: type: string enum: - BAD_REQUEST details: type: 'null' additionalProperties: false TariffApplicabilityAnswerSchema: required: - question_id - value - data_type properties: question_id: type: string description: String identifier for the applicability question example: LOW_INCOME value: type: boolean description: User response to the tariff applicability question example: true data_type: type: string description: Type of answer expected to be returned for this tariff applicability question example: YES_NO additionalProperties: false TariffApplicabilityAnswersRequestParams: required: [] properties: utility_account_id: type: integer example: 12345 description: The unique ID of the Utility Account for this tariff search. Optional if searching for tariffs by Genability `lse_id`/`zip_code`. zip_code: type: string example: '94706' description: The zip code of the site inside the LSE's territory. Must be provided if searching for tariffs by Genability `lse_id`/`zip_code`. lse_id: type: string example: gen_lse_734 description: The ID of the Genability [load serving entity](https://developer.genability.com/api-reference/tariff-api/load-serving-entity/) prefixed with `gen_lse_`. Must be provided if searching for tariffs by Genability `lse_id`/`zip_code`. applicability_answers: type: array description: Site or customer-specific answers to applicability questions to determine tariff eligibility. items: $ref: '#/components/schemas/TariffApplicabilityAnswerSchema' example: - question_id: EV value: true data_type: YES_NO - question_id: SOLAR value: true data_type: YES_NO - question_id: ELECTRIC_HEAT value: false data_type: YES_NO - question_id: ELECTRIC_WATER value: false data_type: YES_NO - question_id: HEAT_PUMP value: false data_type: YES_NO - question_id: SENIOR_CITIZEN value: false data_type: YES_NO - question_id: LOW_INCOME value: false data_type: YES_NO - question_id: CA_CARE_CUSTOMER value: false data_type: YES_NO - question_id: CA_FERA value: false data_type: YES_NO additionalProperties: false OptimizedTariffRecommendationsResponse: required: - country - lse_id - zip_code - recommendations properties: country: type: string description: The country used for determining tariff applicability example: US lse_id: type: string description: The Genability 'lseId' unique identifier for this load serving entity. See [Genability documentation](https://developer.genability.com/api-reference/tariff-api/load-serving-entity/) for details. example: gen_lse_734 zip_code: type: string description: The zip code used for determining tariff applicability example: '94706' recommendations: type: array description: List of tariffs that best fit the submitted applicability question answers. Used to define Tariff-Scenarios for the Calculate Tariff-Scenario Cost endpoint items: $ref: '#/components/schemas/Tariff' additionalProperties: false TariffScenarioDeviceSolarParams: required: - device - solar_system_kw properties: device: type: string description: Identifies this device as a rooftop solar system example: SOLAR enum: - SOLAR solar_system_kw: type: number description: Size of solar system in kW example: 5 additionalProperties: false EvChargePlan: description: Specifies a time window where the EV is at home and available for charging. required: - start_day_of_week - start_time - end_day_of_week - end_time - expected_consumption_kwh properties: start_day_of_week: type: integer description: Day of the week the available charging block begins. ISO format -- 1 is Monday, 7 is Sunday. example: 1 start_time: type: string description: Time when the EV is available to begin charging. For example, when the driver comes home in the evening. example: '15:00:00' end_day_of_week: type: integer description: Day of the week the available charging block ends. ISO format -- 1 is Monday, 7 is Sunday. example: 2 end_time: type: string description: Time when the EV is no longer available for charging. For example, when the driver leaves for their morning commute. example: 06:00:00 expected_consumption_kwh: type: number description: Expected kwh consumption until the next EvChargePlan residential charging event. example: 15 additionalProperties: false TariffScenarioDeviceEvChargingParams: description: Parameters for charging level and EV operation schedule required: - device - charging_availability - charging_power_kw - operation_schedule properties: device: type: string description: A value of `EV_CHARGING` indicates a future EV purchase. example: EV_CHARGING enum: - EV_CHARGING charging_availability: type: array description: Schedule of when the car is at home and able to be charged. `BASIC` charging will simulate a charging schedule assuming charging starts at the specified window start times (for example, at 18:00 when the driver comes home). `SMART` charging will simulate a charging schedule using our Calculate Smart Charging Schedule endpoint logic to charge during the cheapest hours on this tariff in the provided windows. items: $ref: '#/components/schemas/EvChargePlan' charging_power_kw: type: number example: 1.8 description: This helps to determine the EVSE (electric vehicle supply equipment) level. 0.0 indicates no charging at home. 1.8kW or 2.4kW chargers are typical power levels for wall outlets (Level 1). 7.2kW or 9.6kW are typical charging powers for a Level 2 charger. operation_schedule: type: string enum: - BASIC - SMART example: SMART description: An operation schedule of `BASIC` charging will simulate a charging schedule assuming charging starts at the specified window start times (for example, at 18:00 when the driver comes home). `SMART` charging will simulate a charging schedule using our Calculate Smart Charging Schedule endpoint logic to charge during the cheapest hours on this tariff in the provided windows. additionalProperties: false TariffScenarioDeviceRemovedEvChargingParams: description: Parameters for charging level and EV operation schedule properties: device: type: string description: The `REMOVED_EV_CHARGING` parameter is used to remove (disaggregate) simulated existing EV load, eg to simulate effects of adding smart charging by removing effects of basic charging. example: REMOVED_EV_CHARGING enum: - REMOVED_EV_CHARGING charging_availability: type: array description: Schedule of when the car is at home and able to be charged. `BASIC` charging will simulate a charging schedule assuming charging starts at the specified window start times (for example, at 18:00 when the driver comes home). `SMART` charging will simulate a charging schedule using our Calculate Smart Charging Schedule endpoint logic to charge during the cheapest hours on this tariff in the provided windows. items: $ref: '#/components/schemas/EvChargePlan' charging_power_kw: type: number example: 1.8 description: This helps to determine the EVSE (electric vehicle supply equipment) level. 0.0 indicates no charging at home. 1.8kW or 2.4kW chargers are typical power levels for wall outlets (Level 1). 7.2kW or 9.6kW are typical charging powers for a Level 2 charger. operation_schedule: type: string enum: - BASIC - SMART example: SMART description: An operation schedule of `BASIC` charging will simulate a charging schedule assuming charging starts at the specified window start times (for example, at 18:00 when the driver comes home). `SMART` charging will simulate a charging schedule using our Calculate Smart Charging Schedule endpoint logic to charge during the cheapest hours on this tariff in the provided windows. additionalProperties: false TariffScenarioCostRequestParams: required: - baseline_load - device_loads properties: utility_account_id: description: (Beta - due to limited coverage) The unique ID of the utility account that this calculation is being run against. Optional if calculating costs by Genability `main_tariff_id`/`zip_code`. type: integer main_tariff_id: type: string description: The Genability 'masterTariffId' unique identifier for this tariff. See [Genability documentation](https://developer.genability.com/api-reference/tariff-api/tariff/) for details. Must be provided if calculating costs by Genability `main_tariff_id`/`zip_code`. example: gen_mtid_3331108 zip_code: type: string description: The zip code of the scenario. Must be provided if calculating costs by Genability `main_tariff_id`/`zip_code`. example: '94105' applicability_answers: type: array description: Answers to tariff applicability questions items: $ref: '#/components/schemas/TariffApplicabilityAnswerSchema' example: - question_id: EV value: true data_type: YES_NO - question_id: SOLAR value: true data_type: YES_NO - question_id: ELECTRIC_HEAT value: false data_type: YES_NO - question_id: ELECTRIC_WATER value: false data_type: YES_NO - question_id: HEAT_PUMP value: false data_type: YES_NO - question_id: SENIOR_CITIZEN value: false data_type: YES_NO - question_id: LOW_INCOME value: false data_type: YES_NO - question_id: CA_CARE_CUSTOMER value: false data_type: YES_NO - question_id: CA_FERA value: false data_type: YES_NO baseline_load: type: string description: A `TYPICALS` `baseline_load` uses the typical hourly energy usage for the end-user's zip code. default: TYPICALS enum: - TYPICALS device_loads: type: array description: List of device simulations to add additional synthetic load curves on top of the `baseline_load` items: anyOf: - $ref: '#/components/schemas/TariffScenarioDeviceSolarParams' - $ref: '#/components/schemas/TariffScenarioDeviceEvChargingParams' - $ref: '#/components/schemas/TariffScenarioDeviceRemovedEvChargingParams' example: - device: EV_CHARGING charging_power_kw: 7.2 operation_schedule: SMART charging_availability: - start_day_of_week: 1 start_time: '18:00:00' end_day_of_week: 2 end_time: 09:00:00 expected_consumption_kwh: 10.4 - start_day_of_week: 2 start_time: '18:00:00' end_day_of_week: 3 end_time: 09:00:00 expected_consumption_kwh: 10.4 - start_day_of_week: 3 start_time: '18:00:00' end_day_of_week: 4 end_time: 09:00:00 expected_consumption_kwh: 10.4 - start_day_of_week: 4 start_time: '18:00:00' end_day_of_week: 5 end_time: 09:00:00 expected_consumption_kwh: 10.4 - start_day_of_week: 5 start_time: '18:00:00' end_day_of_week: 6 end_time: '10:00:00' expected_consumption_kwh: 10.4 - start_day_of_week: 6 start_time: '16:00:00' end_day_of_week: 7 end_time: '10:00:00' expected_consumption_kwh: 5 - start_day_of_week: 7 start_time: '16:00:00' end_day_of_week: 1 end_time: 09:00:00 expected_consumption_kwh: 5 - device: SOLAR solar_system_kw: 5 additionalProperties: false TariffScenarioCostResponse: description: Parameters for a rooftop solar system properties: cost: type: number description: Costs from multiple Tariff-Scenarios can be compared to find the optimal combination of tariff and device-scenarios. A baseline Tariff-Scenario cost can be calculated to present potential savings of each what-if Tariff-Scenario. Plug endpoints can be used to further compare to actual utility costs. example: 150 start_date: type: string format: date description: The start date of the calculated simulation. If using `baseline_load=TYPICALS`, this will be one year in the past. example: '2021-02-03' end_date: type: string format: date description: The end date of the calculated simulation. If using `baseline_load=TYPICALS`, this will be the current time. example: '2022-02-03' additionalProperties: false TariffScenarioCostRequestTariffIdentificationParamError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - Either utility_account_id or zip_code/main_tariff_id must be specified type: type: string enum: - BAD_REQUEST details: type: 'null' additionalProperties: false TouSeason: title: TouSeason type: object properties: seasonFromDay: title: Seasonfromday description: Day of the month on which this season begins (1 - 31). minimum: 1 maximum: 31 type: integer seasonToDay: title: Seasontoday description: Day of the month after which this season ends (1 - 31). minimum: 1 maximum: 31 type: integer seasonFromMonth: title: Seasonfrommonth description: Month of the year on which this season begins (1 - 12). minimum: 1 maximum: 12 type: integer seasonToMonth: title: Seasontomonth description: Month of the year after which this season ends (1 - 12). End month is included in the season. minimum: 1 maximum: 12 type: integer required: - seasonFromMonth - seasonToMonth TouPeriod: title: TouPeriod type: object properties: fromDayOfWeek: title: Fromdayofweek description: Day of the week on which this period begins (0 - 6, Monday - Sunday). default: 0 minimum: 0 maximum: 6 type: integer toDayOfWeek: title: Todayofweek description: Day of the week after which this period ends (0 - 6, Monday - Sunday). End day is included in the period. default: 6 minimum: 0 maximum: 6 type: integer fromHour: title: Fromhour description: Hour of the day on which this period begins (0 - 23). exclusiveMaximum: 24 minimum: 0 type: integer toHour: title: Tohour description: Hour of the day before which this period ends (0 - 24). End hour is not included in the period. minimum: 0 maximum: 24 type: integer required: - fromHour - toHour TimeOfUse: title: TimeOfUse type: object properties: season: title: Season description: Season to which this TOU schedule applies. allOf: - $ref: '#/components/schemas/TouSeason' touPeriods: title: Touperiods description: Set of TOU periods defining the schedule. type: array items: $ref: '#/components/schemas/TouPeriod' required: - touPeriods FixedSchedule: title: FixedSchedule type: object properties: chargeTous: title: Chargetous description: TOU schedule for charging the storage system. type: array items: $ref: '#/components/schemas/TimeOfUse' dischargeTous: title: Dischargetous description: TOU schedule for discharging the storage system. type: array items: $ref: '#/components/schemas/TimeOfUse' timezone: title: Timezone description: Timezone in which the schedule is defined. Defaults to tariff timezone. type: string required: - chargeTous - dischargeTous DispatchStrategy: title: DispatchStrategy type: object properties: optimize: title: Optimize description: If `true`, find the optimal dispatch schedule for the given tariff, solar, and consumption curves, assuming perfect forecasts. type: boolean chargeOnSurplus: title: Chargeonsurplus description: If `true`, charge whenever solar production exceeds consumption and discharge to meet consumption otherwise. type: boolean fixedSchedule: title: Fixedschedule description: If specified, use a fixed schedule to control battery dispatch, charging as much as possible during `charge_tous` and discharging as much as possible during `discharge_tous`. Times of use (TOUs) should be specified using [Genability format](https://developer.genability.com/api-reference/tariff-api/time-of-use/), in either camel or snake case. allOf: - $ref: '#/components/schemas/FixedSchedule' StorageOptimizationSchedulesRequestParams: type: object properties: main_tariff_id: description: The Genability 'masterTariffId' unique identifier for this tariff, prefixed with `gen_mtid_`. See [Genability documentation](https://developer.genability.com/api-reference/tariff-api/tariff/) for details. example: gen_mtid_3424821 type: string tariff_property_inputs: description: Genability `propertyInputs` applicable to the specified tariff that may affect the cost structure being optimized against. See [Genability documentation](https://developer.genability.com/api-reference/calculation-api/cost-calculation) for details on how to set these inputs for specific tariffs. Use Genability-defined input format. type: array items: type: object required: - keyName - dataValue properties: keyName: type: string example: accPlusAdderCustomerType dataValue: type: boolean example: nonLowIncome from_date_time: description: Start time of the consumption and solar curves. Must be the start of an hour (i.e. `:00:00`). example: '2021-03-18T00:00:00-07:00' type: string format: date-time consumption_curve_kwh_ac: description: Timeseries representing how much AC consumption needs to be met at each timestep (kWh AC). example: - 0.8 - 1 - 1.2 - 1 minItems: 1 type: array items: type: number minimum: 0 solar_generation_curve_kwh_dc: description: Timeseries representing how much DC solar production occurs at each timestep (kWh DC). If absent, assumed to be 0. If present, must have the same length as `consumption_curve_kwh_ac`. Note that DC to AC conversion is specified with `solar_dc_to_ac_efficiency`. example: - 0.5 - 2.4 - 1.3 - 0.4 type: array items: type: number minimum: 0 dispatch_strategy: description: 'Parameters controlling how to compute dispatch curves. Defaults to `{ ''optimize'': true }`, which uses constrained optimization to determine a best-case schedule. Also supports `charge_on_surplus` and `fixed_schedule` strategies.' allOf: - $ref: '#/components/schemas/DispatchStrategy' solar_dc_to_ac_efficiency: description: How efficiently the solar inverter converts outgoing DC power to AC (`0.0` - `1.0`). default: 0.96 minimum: 0 maximum: 1 type: number example: 0.96 allow_grid_to_battery: description: Allow the battery to be charged from the grid (`true`/`false`, defaults to `true`). DC-coupled batteries only chargable via solar should set this to `false`. default: true type: boolean example: true allow_solar_to_battery: description: Allow the battery to be charged from solar (`true`/`false`, defaults to `true`). AC-coupled batteries may want to set this to `false` if indirect AC charging from converted solar is not possible. default: true type: boolean example: true allow_solar_to_grid: description: Allow excess solar to be sold back to the grid (`true`/`false`, defaults to `true`). Solar tied exclusively to the battery and/or the site should set this to `false`, which may cause curtailment in the result. default: true type: boolean example: true allow_battery_to_grid: description: Allow battery to export energy to the grid (`true`/`false`, defaults to `true`). Batteries configured exclusively for self-consumption should set this to `false`. default: true type: boolean example: true battery_dc_coupled: description: Whether the battery is DC coupled (`true`/`false`). If `false`, solar power must be converted from DC to AC and then back to DC before it can be stored. default: true type: boolean example: true battery_ac_to_dc_efficiency: description: How efficiently the battery inverter converts incoming AC power to DC (`0.0` - `1.0`). default: 0.96 minimum: 0 maximum: 1 type: number example: 0.96 battery_dc_to_ac_efficiency: description: How efficiently the battery inverter converts outgoing DC power to AC (`0.0` - `1.0`) default: 0.96 minimum: 0 maximum: 1 type: number example: 0.96 battery_input_efficiency: description: Coulombic efficiency of the battery, i.e. ratio of input kWh for a full charge to output kWh for a full discharge (`0.0` - `1.0`). default: 0.975 minimum: 0 maximum: 1 type: number example: 0.975 battery_nameplate_power: description: The maximum amount of power that can instantaneously flow into or out of the battery (kW DC). default: 3 exclusiveMinimum: 0 type: number example: 3 battery_nameplate_capacity: description: Maximum charge that the battery can hold (kWh DC). default: 6 exclusiveMinimum: 0 type: number example: 6 battery_min_soc: description: Minimum state of charge of the battery (`0.0` - `1.0`). default: 0.1 minimum: 0 maximum: 1 type: number example: 0.1 battery_max_soc: description: Maximum state of charge of the battery (`0.0` - `1.0`). default: 1 minimum: 0 maximum: 1 type: number example: 1 battery_initial_soc: description: Initial state of charge of the battery (`0.0` - `1.0`). default: 0.5 minimum: 0 maximum: 1 type: number example: 0.5 battery_degradation_cost_per_discharge_kwh: description: Optionally impose a cost on total discharge from the battery as a simplified degradation model ($/kWh). default: 0 minimum: 0 type: number example: 0 export_limit_kwh_ac: description: Maximum energy that can be exported to the grid at any given timestep (kWh AC). Leave unspecified for unlimited exports, or set to `0` to forbid them. minimum: 0 type: number required: - main_tariff_id - from_date_time - consumption_curve_kwh_ac additionalProperties: false definitions: TouSeason: title: TouSeason type: object properties: seasonFromDay: title: Seasonfromday description: Day of the month on which this season begins (1 - 31). minimum: 1 maximum: 31 type: integer seasonToDay: title: Seasontoday description: Day of the month after which this season ends (1 - 31). minimum: 1 maximum: 31 type: integer seasonFromMonth: title: Seasonfrommonth description: Month of the year on which this season begins (1 - 12). minimum: 1 maximum: 12 type: integer seasonToMonth: title: Seasontomonth description: Month of the year after which this season ends (1 - 12). End month is included in the season. minimum: 1 maximum: 12 type: integer required: - seasonFromMonth - seasonToMonth TouPeriod: title: TouPeriod type: object properties: fromDayOfWeek: title: Fromdayofweek description: Day of the week on which this period begins (0 - 6, Monday - Sunday). default: 0 minimum: 0 maximum: 6 type: integer toDayOfWeek: title: Todayofweek description: Day of the week after which this period ends (0 - 6, Monday - Sunday). End day is included in the period. default: 6 minimum: 0 maximum: 6 type: integer fromHour: title: Fromhour description: Hour of the day on which this period begins (0 - 23). exclusiveMaximum: 24 minimum: 0 type: integer toHour: title: Tohour description: Hour of the day before which this period ends (0 - 24). End hour is not included in the period. minimum: 0 maximum: 24 type: integer required: - fromHour - toHour TimeOfUse: title: TimeOfUse type: object properties: season: title: Season description: Season to which this TOU schedule applies. allOf: - $ref: '#/components/schemas/TouSeason' touPeriods: title: Touperiods description: Set of TOU periods defining the schedule. type: array items: $ref: '#/components/schemas/TouPeriod' required: - touPeriods FixedSchedule: title: FixedSchedule type: object properties: chargeTous: title: Chargetous description: TOU schedule for charging the storage system. type: array items: $ref: '#/components/schemas/TimeOfUse' dischargeTous: title: Dischargetous description: TOU schedule for discharging the storage system. type: array items: $ref: '#/components/schemas/TimeOfUse' timezone: title: Timezone description: Timezone in which the schedule is defined. Defaults to tariff timezone. type: string required: - chargeTous - dischargeTous DispatchStrategy: title: DispatchStrategy type: object properties: optimize: title: Optimize description: If `true`, find the optimal dispatch schedule for the given tariff, solar, and consumption curves, assuming perfect forecasts. type: boolean chargeOnSurplus: title: Chargeonsurplus description: If `true`, charge whenever solar production exceeds consumption and discharge to meet consumption otherwise. type: boolean fixedSchedule: title: Fixedschedule description: If specified, use a fixed schedule to control battery dispatch, charging as much as possible during `charge_tous` and discharging as much as possible during `discharge_tous`. Times of use (TOUs) should be specified using [Genability format](https://developer.genability.com/api-reference/tariff-api/time-of-use/), in either camel or snake case. allOf: - $ref: '#/components/schemas/FixedSchedule' StorageOptimizationSchedulesResponse: type: object properties: from_date_time: description: Start time corresponding to the beginning of the hour when the consumption and solar curves start. Echoed back from request parameters. example: '2021-03-18T00:00:00-07:00' type: string format: date-time grid_to_site_kwh_ac: description: Amount of electricity flowing to site load from the grid (kWh AC). example: - 1.3 - 1.1 - 0 - 0 type: array items: type: number minimum: 0 grid_to_battery_kwh_ac: description: Amount of electricity flowing to the battery from the grid, before conversion with `battery_ac_to_dc_efficiency` (kWh AC). example: - 1.56 - 0 - 0 - 0 type: array items: type: number minimum: 0 solar_to_battery_kwh_dc: description: Amount of electricity flowing to the battery from PV solar generation, either without any conversion if `battery_dc_coupled` or after double-conversion with `solar_dc_to_ac_efficiency` * `battery_ac_to_dc_efficiency` if not (kWh DC). example: - 0 - 1.5 - 0 - 0 type: array items: type: number minimum: 0 solar_to_site_kwh_ac: description: Amount of electricity flowing to site load from PV solar generation, after conversion with `solar_dc_to_ac_efficiency` (kWh AC). example: - 0 - 0.1 - 1.3 - 1.5 type: array items: type: number minimum: 0 solar_to_grid_kwh_ac: description: Amount of electricity flowing to the grid from PV solar generation, after conversion with `solar_dc_to_ac_efficiency` (kWh AC). example: - 0 - 0 - 0.4 - 1.4 type: array items: type: number minimum: 0 solar_curtailed_kwh_dc: description: Amount of electricity from solar that goes unused (kWh DC). example: - 0 - 0 - 0 - 0 type: array items: type: number minimum: 0 battery_to_site_kwh_ac: description: Amount of electricity flowing to site load from the battery, after conversion with `battery_dc_to_ac_efficiency` (kWh AC). example: - 0 - 0 - 0.1 - 0.2 type: array items: type: number minimum: 0 battery_to_grid_kwh_ac: description: Amount of electricity flowing to the grid from battery, after conversion with `battery_dc_to_ac_efficiency` (kWh AC). example: - 0 - 0 - 0.1 - 0.2 type: array items: type: number minimum: 0 net_load_kwh_ac: description: Amount of electricity flowing from the grid if positive or to the grid if negative (kWh AC). Equals `grid_to_site_kwh_ac` + `grid_to_battery_kwh_ac` - `battery_to_grid_kwh_ac` - `solar_to_grid_kwh_ac`. example: - 1.86 - 1.1 - -0.5 - -1.6 type: array items: type: number battery_soc: description: Hourly battery state of charge (`0.0` - `1.0`, though in practice, all values will be between `battery_min_soc` and `battery_max_soc`). Multiply by `battery_nameplate_capacity` to get a timeseries of kWh DC stored. example: - 0.75 - 1 - 0.8 - 0.4 type: array items: type: number minimum: 0 maximum: 1 required: - from_date_time - grid_to_site_kwh_ac - grid_to_battery_kwh_ac - solar_to_battery_kwh_dc - solar_to_site_kwh_ac - solar_to_grid_kwh_ac - solar_curtailed_kwh_dc - battery_to_site_kwh_ac - battery_to_grid_kwh_ac - battery_soc additionalProperties: false BundleEnrollmentRequestBodyParams: required: - utility_account_ids properties: utility_account_ids: description: The list of Utility Account IDs associated with the provided Utility Credential to enroll in the Bundle product. To ensure no unintended Utility Accounts are enrolled in Bundle, we require every non-closed Utility Account associated with a Utility Credential to be explicitly provided in this parameter. We do not support Bundle for a subset of non-closed Utility Accounts associated with a Utility Credential at this time. type: array items: type: number example: - 12345 - 67890 additionalProperties: false IneligibilityReasonEnum: type: string enum: - 2fa - ebill_ineligible_incorrect_credentials - ebill_ineligible_third_party - gas_only - inactive_utility_account - incomplete_utility_account - missing_payment_method - past_due - payment_arrangement - sdg&e_paperless_gas_account - sibling_account_ineligible - solar_non_approved_utility - enrolled_in_mutually_exclusive_bundle_feature IneligibilityReason: required: - resolvable - reason properties: resolvable: type: boolean description: If `true`, signifies that corrective action can be taken to resolve this Ineligibility Reason. If `false`, this Ineligibility Reason cannot be resolved example: false reason: $ref: '#/components/schemas/IneligibilityReasonEnum' additionalProperties: false BundleEnrollment: required: - client_user_id - utility_account_id - product_key - status - ineligibility_reasons - removal_reason - start_date - override_email - sandboxed properties: client_user_id: description: Your organization's unique key provided to associate Arcadia resources with your user. type: string example: fff57dc7-3a2b-4395-8a62-e3486d46dabe utility_account_id: description: Unique `id` generated by Arcadia to identify the Utility Account associated with this resource. type: integer example: 1234 product_key: type: string enum: - hosted_payments - utility_remittance status: anyOf: - type: 'null' - type: string enum: - enrolled - pending_enrollment - ineligible - pending_removal - removed example: enrolled ineligibility_reasons: description: Reasons, if any, that an Account was ineligible for Bundle. This array will always be present but may be empty. type: array items: $ref: '#/components/schemas/IneligibilityReason' removal_reason: anyOf: - type: 'null' - type: string enum: - organization_requested - dropped_cant_login - dropped_payment_decline - dropped_no_remittance_scheduled - moved example: null start_date: description: Date the Bundle Enrollment was approved. format: date type: string nullable: true override_email: description: Email address generated by Arcadia to override the user's email address on file with their Utility. example: apb0123456@a.arcadiapower.com type: string nullable: true sandboxed: description: If `true`, this resource is in the sandboxed environment. If `false`, this resource is in the live environment. type: boolean example: false additionalProperties: false BundleEnrollmentsArray: type: array items: $ref: '#/components/schemas/BundleEnrollment' UtilityRemittanceEnrollError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - The utility_remittance feature is not available for this UtilityAccount. - The utility_remittance feature is not ready yet. Please refer to UtilityAccount#FeatureAvailability for updates. - No Utility Accounts to enroll for this Utility Credential. type: type: string enum: - BAD_REQUEST details: type: object nullable: true additionalProperties: false BundleEnrollmentInvalidUtilityAccountIdsError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - Request included utility_account_ids not valid for the specified Utility Credential type: type: string enum: - BAD_REQUEST details: anyOf: - type: object required: - utility_credential_id - excess_utility_account_ids properties: utility_credential_id: type: integer excess_utility_account_ids: type: array items: type: integer additionalProperties: false BundleEnrollmentMissingUtilityAccountIdsError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - Must provide all non-closed utility_account_ids associated with the provided Utility Credential type: type: string enum: - BAD_REQUEST details: anyOf: - type: object required: - utility_credential_id - missing_utility_account_ids properties: utility_credential_id: type: integer missing_utility_account_ids: type: array items: type: integer additionalProperties: false UnpermittedParametersError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - Request included unpermitted parameters type: type: string enum: - BAD_REQUEST details: type: object required: - unpermitted_parameters properties: unpermitted_parameters: type: array items: type: string additionalProperties: false InvalidResourceError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - The requested resource is not valid type: type: string enum: - BAD_REQUEST details: type: object required: - resource properties: resource: type: string enum: - user - utility_statement - utility_credential - utility_account - utility_remittance_item - invoice - payment_method resource_id: type: integer additionalProperties: false BundleUnenrollError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - No Utility Accounts to unenroll for this Utility Credential. type: type: string enum: - BAD_REQUEST details: type: object nullable: true additionalProperties: false BundleUtilityRemittanceItemCreateRequestBodyParams: properties: scheduled_at: description: You can specify a date for remittance using `scheduled_at`. Note that `scheduled_at` must be a date in the future. If the date you specify falls on a weekend or a banking holiday, remittance will be scheduled for the next business day. If `scheduled_at` is omitted, remittance will be scheduled for the next business day. type: string format: date example: '2021-07-28' amount_cents: description: You can specify how much to remit for this Utility Statement using `amount_cents`. In most cases, this should correspond to the `utility_charge` on a Utility Statement. If `amount_cents` is omitted, the Utility Remittance Item will be created using the `utility_charge` on the specified Utility Statement. At this time, `amount_cents` cannot exceed 3000000 cents ($30,000). Note that overpaying or underpaying the amount on a Utility Statement comes with risk. This field should be used with caution. type: integer example: '8000' additionalProperties: false UtilityRemittanceItem: required: - id - utility_statement_id - client_user_id - amount_cents - status - created_at - updated_at - scheduled_at - remitted_at - sandboxed properties: id: description: Unique `id` generated by Arcadia to identify this resource. type: number utility_statement_id: description: Unique `id` generated by Arcadia to identify the Utility Statement associated with this resource. type: number client_user_id: description: Your organization's unique key provided to associate Arcadia resources with your user. type: string example: fff57dc7-3a2b-4395-8a62-e3486d46dabe amount_cents: description: Monetary amount of this Utility Remittance Item. Given in cents. type: integer status: type: string enum: - scheduled - remitted - void created_at: description: Date and time at which this resource was created. Given in UTC. type: string format: date-time updated_at: description: Date and time at which this resource was most recently updated. Given in UTC. type: string format: date-time scheduled_at: description: Date and time this Utility Remittance Item is scheduled to be remitted to the user's associated Utility. Given in UTC. format: date-time type: string nullable: true remitted_at: description: Date and time this Utility Remittance Item was successfully remitted to the user's associated Utility. Given in UTC. format: date-time type: string nullable: true sandboxed: description: If `true`, this resource is in the sandboxed environment. If `false`, this resource is in the live environment. type: boolean example: 'false' additionalProperties: false ForbiddenError: required: - error properties: error: enum: - Access denied additionalProperties: false UtilityStatementNotFoundError: required: - error properties: error: type: string enum: - Couldn't find UtilityStatement additionalProperties: false UtilityRemittanceItemCreateError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - Utility Remittance Item must be scheduled at least one day from now - Utility Statement has already been scheduled for remittance - A Utility Remittance Item cannot be created for a Utility Account not enrolled in Utility Remittance - 'Invalid parameter: scheduled_at must be provided as an ISO date format and be a valid date.' - Utility Remittance Item amount_cents must be greater than 0 type: type: string enum: - BAD_REQUEST details: type: object nullable: true additionalProperties: false ThrottledError: required: - error properties: error: type: string pattern: '^Rate limit exceeded. Try again at ' additionalProperties: false WebhookEndpoint: required: - created_at - updated_at - id - signing_key - url - sandboxed - enabled - arc_version properties: created_at: type: string format: date-time updated_at: type: string format: date-time id: type: string format: uuid example: 3847dd41-8c90-499a-ac6e-10a027dd231f signing_key: type: string example: MIZ1ImBK1FiVisS1 url: type: string example: https://example.com/webhook-endpoint sandboxed: type: boolean example: false enabled: type: boolean example: true arc_version: type: string example: '2022-10-13' additionalProperties: false PaginatedWebhookEndpoints: required: - data - total_count properties: data: type: array items: $ref: '#/components/schemas/WebhookEndpoint' total_count: type: integer example: 1 additionalProperties: false CreateWebhookBodyParams: required: - url properties: url: type: string description: The URL that webhook events should be POSTed to. example: https://example.com/webhook-endpoint arc_version: type: string description: The version of the Arcadia API this endpoint is designed to understand. The JSON body corresponding to a webhook event type may change across versions. Arcadia will continue to send events to this endpoint using the event schemas as they existed in the selected version, insulating you from breaking changes. example: '2022-10-13' additionalProperties: false WebhookEndpointUnprocessableEntityError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - Provided url is not valid, see details for validation errors - Provided arc_version is not valid, see details for validation errors type: type: string enum: - BAD_REQUEST details: type: object oneOf: - required: - url - required: - arc_version properties: url: type: array items: type: string arc_version: type: array items: type: string additionalProperties: false UpdateWebhookBodyParams: properties: enabled: type: boolean description: 'Determines whether this webhook endpoint will receive webhook events. Webhook endpoints that are `enabled: true` will receive webhook events. Webhook endpoints that are `enabled: false` will not receive webhook events' example: 'true' arc_version: type: string description: The version of the Arcadia API this endpoint is designed to understand. The JSON body corresponding to a webhook event type may change across versions. Arcadia will continue to send events to this endpoint using the event schemas as they existed in the selected version, insulating you from breaking changes. example: '2022-10-13' additionalProperties: false WebhookEventSummary: required: - id - created_at - updated_at - webhook_endpoint_id - type - sandboxed - delivered properties: created_at: type: string format: date-time updated_at: type: string format: date-time id: type: string format: uuid example: 3847dd41-8c90-499a-ac6e-10a027dd231f webhook_endpoint_id: type: string format: uuid example: 3847dd41-8c90-499a-ac6e-10a027dd231f type: type: string enum: - test - utility_credential_verified - utility_credential_rejected - utility_credential_revoked - utility_credential_verification_error - utility_accounts_discovered - utility_accounts_discovery_error - new_utility_statement_available - invoice_collection_succeeded - invoice_collection_failed sandboxed: type: boolean example: false delivered: type: boolean example: true additionalProperties: false PaginatedWebhookEvents: required: - data - total_count properties: data: type: array items: $ref: '#/components/schemas/WebhookEventSummary' total_count: type: integer example: 1 additionalProperties: false WebhookDeliveryAttempt: required: - id - created_at - updated_at - response_body - response_status_code - webhook_event_id - sandboxed properties: id: type: string format: uuid created_at: type: string format: date-time updated_at: type: string format: date-time response_body: example: '{\"message\":\"ok\"}' type: string nullable: true response_status_code: example: 200 type: integer nullable: true webhook_event_id: type: string format: uuid example: 3847dd41-8c90-499a-ac6e-10a027dd231f sandboxed: type: boolean example: false additionalProperties: false WebhookEvent: required: - id - created_at - updated_at - webhook_endpoint_id - type - sandboxed - delivered properties: created_at: type: string format: date-time updated_at: type: string format: date-time id: type: string format: uuid example: 3847dd41-8c90-499a-ac6e-10a027dd231f webhook_endpoint_id: type: string format: uuid example: 3847dd41-8c90-499a-ac6e-10a027dd231f type: type: string enum: - test - utility_credential_verified - utility_credential_rejected - utility_credential_revoked - utility_credential_verification_error - utility_accounts_discovered - utility_accounts_discovery_error - new_utility_statement_available sandboxed: type: boolean example: false delivered: type: boolean example: true data: type: object description: Original `data` payload of the webhook event. See [webhook events](#tag/Webhook-Events) for schema details. delivery_attempts: type: array items: $ref: '#/components/schemas/WebhookDeliveryAttempt' additionalProperties: false SandboxBundleEnrollmentError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - No Utility Accounts to accept for this Utility Credential. - No Utility Accounts to reject for this Utility Credential. - No Utility Accounts to remove for this Utility Credential. type: type: string enum: - BAD_REQUEST details: type: object nullable: true additionalProperties: false SandboxBundleRejectReasonsError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - One or more unsupported reasons provided. type: type: string enum: - BAD_REQUEST additionalProperties: false SandboxBundleRemoveReasonError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - Unsupported reason parameter provided. type: type: string enum: - BAD_REQUEST additionalProperties: false WebhookTriggerError: required: - error properties: error: type: object required: - description - type - details properties: description: type: string enum: - This endpoint is only supported in the sandboxed API mode - This endpoint is only supported in the sandboxed API mode using a UtilityAccount with test scenario interval data type: type: string enum: - BAD_REQUEST details: type: object nullable: true additionalProperties: false UtilityCredentialVerifiedWebhookEvent: required: - type - created_at - data properties: type: type: string enum: - utility_credential_verified created_at: type: string format: date-time data: $ref: '#/components/schemas/UtilityCredential' additionalProperties: false UtilityCredentialRejectedWebhookEvent: required: - type - created_at - data properties: type: type: string enum: - utility_credential_rejected created_at: type: string format: date-time data: $ref: '#/components/schemas/UtilityCredential' additionalProperties: false UtilityCredentialRevokedWebhookEvent: required: - type - created_at - data properties: type: type: string enum: - utility_credential_revoked created_at: type: string format: date-time data: $ref: '#/components/schemas/UtilityCredential' additionalProperties: false UtilityCredentialVerificationErrorWebhookEvent: required: - type - created_at - data properties: type: type: string enum: - utility_credential_verification_error created_at: type: string format: date-time data: $ref: '#/components/schemas/UtilityCredential' additionalProperties: false UtilityAccountsDiscoveredWebhookEvent: required: - type - created_at - data properties: type: type: string enum: - utility_accounts_discovered created_at: type: string format: date-time data: type: object required: - client_user_id - utility_credential_id - utility_accounts properties: client_user_id: type: string example: fff57dc7-3a2b-4395-8a62-e3486d46dabe utility_credential_id: type: integer example: 1234 utility_accounts: type: array items: $ref: '#/components/schemas/UtilityAccount' additionalProperties: false UtilityAccountsDiscoveryErrorWebhookEvent: required: - type - created_at - data properties: type: type: string enum: - utility_accounts_discovery_error created_at: type: string format: date-time data: $ref: '#/components/schemas/UtilityCredential' additionalProperties: false IntervalUsage: required: - client_user_id - utility_account_id - intervals_start_time - intervals_end_time properties: client_user_id: type: string example: fff57dc7-3a2b-4395-8a62-e3486d46dabe utility_account_id: type: integer example: 1234 utility_meter_id: example: 1234 type: integer nullable: true intervals_start_time: type: string format: date-time intervals_end_time: type: string format: date-time additionalProperties: false HistoricalUtilityIntervalsDiscoveredWebhookEvent: required: - type - created_at - data properties: type: type: string enum: - historical_utility_intervals_discovered created_at: type: string format: date-time data: $ref: '#/components/schemas/IntervalUsage' additionalProperties: false NewUtilityIntervalsAvailableWebhookEvent: required: - type - created_at - data properties: type: type: string enum: - new_utility_intervals_available created_at: type: string format: date-time data: $ref: '#/components/schemas/IntervalUsage' additionalProperties: false UtilityAccountUpdatedWebhookEvent: required: - type - created_at - data properties: type: type: string enum: - utility_account_updated created_at: type: string format: date-time data: $ref: '#/components/schemas/UtilityAccount' additionalProperties: false HistoricalUtilityStatementsDiscoveredWebhookEvent: required: - type - created_at - data properties: type: type: string enum: - historical_utility_statements_discovered created_at: type: string format: date-time data: type: object required: - client_user_id - utility_account_id - utility_statements properties: client_user_id: type: string example: fff57dc7-3a2b-4395-8a62-e3486d46dabe utility_account_id: type: integer example: 1234 utility_statements: type: array items: $ref: '#/components/schemas/UtilityStatement' additionalProperties: false NewUtilityStatementAvailableWebhookEvent: required: - type - created_at - data properties: type: type: string enum: - new_utility_statement_available created_at: type: string format: date-time data: $ref: '#/components/schemas/UtilityStatement' additionalProperties: false UtilityRemittancePendingEnrollmentWebhookEvent: required: - created_at - data - type properties: type: type: string enum: - utility_remittance_pending_enrollment created_at: description: Date and time this Webhook Event was generated. Given in UTC. type: string format: date-time data: description: Data relevant to this Webhook Event. $ref: '#/components/schemas/BundleEnrollment' additionalProperties: false UtilityRemittanceIneligibleWebhookEvent: required: - created_at - data - type properties: type: type: string enum: - utility_remittance_ineligible created_at: description: Date and time this Webhook Event was generated. Given in UTC. type: string format: date-time data: description: Data relevant to this Webhook Event. $ref: '#/components/schemas/BundleEnrollment' additionalProperties: false UtilityRemittanceEnrolledWebhookEvent: required: - created_at - data - type properties: type: type: string enum: - utility_remittance_enrolled created_at: description: Date and time this Webhook Event was generated. Given in UTC. type: string format: date-time data: description: Data relevant to this Webhook Event. $ref: '#/components/schemas/BundleEnrollment' additionalProperties: false UtilityRemittancePendingRemovalWebhookEvent: required: - created_at - data - type properties: type: type: string enum: - utility_remittance_pending_removal created_at: description: Date and time this Webhook Event was generated. Given in UTC. type: string format: date-time data: description: Data relevant to this Webhook Event. $ref: '#/components/schemas/BundleEnrollment' additionalProperties: false UtilityRemittanceRemovedWebhookEvent: required: - created_at - data - type properties: type: type: string enum: - utility_remittance_removed created_at: description: Date and time this Webhook Event was generated. Given in UTC. type: string format: date-time data: description: Data relevant to this Webhook Event. $ref: '#/components/schemas/BundleEnrollment' additionalProperties: false UtilityRemittanceItemRemittedWebhookEvent: required: - type - created_at - data properties: type: type: string enum: - utility_remittance_item_remitted created_at: description: Date and time this Webhook Event was generated. Given in UTC. type: string format: date-time data: description: Data relevant to this Webhook Event. $ref: '#/components/schemas/UtilityRemittanceItem' additionalProperties: false UtilityRemittanceItemScheduledWebhookEvent: required: - type - created_at - data properties: type: type: string enum: - utility_remittance_item_scheduled created_at: description: Date and time this Webhook Event was generated. Given in UTC. type: string format: date-time data: description: Data relevant to this Webhook Event. $ref: '#/components/schemas/UtilityRemittanceItem' additionalProperties: false TestWebhookEvent: required: - type - created_at properties: type: type: string enum: - test created_at: type: string format: date-time additionalProperties: false x-readme: proxy-enabled: false headers: - key: from-readme value: true x-tagGroups: - name: General tags: - Auth - Webhooks - Webhook Events - name: Connections tags: - Utility Credentials - Utility Accounts - Utility Meters (Beta) - Users - name: Products tags: - Plug - Spark