{ "openapi": "3.1.0", "info": { "title": "signal", "version": "2022-12-21-Signal" }, "servers": [ { "url": "https://api.genability.com" } ], "components": { "securitySchemes": { "sec0": { "type": "http", "scheme": "basic" } } }, "security": [ { "sec0": [] } ], "paths": { "/rest/echo/{error_code}": { "get": { "summary": "Echo Overview", "description": "Validate how you are calling the Arcadia APIs and debug request formatting, authentication, and input values.", "operationId": "echo", "parameters": [ { "name": "errorCode", "in": "path", "schema": { "type": "string", "enum": [ "200", "301", "400", "403", "404", "500" ] }, "required": true } ], "deprecated": false, "x-readme": { "code-samples": [ { "language": "text", "code": "GET /rest/echo/hello" }, { "language": "text", "code": "GET /rest/echo", "name": "Basic" }, { "language": "text", "code": "GET /rest/echo/authenticate", "name": "Authenticate" }, { "language": "text", "code": "GET /rest/echo/validate", "name": "Validate" } ], "samples-languages": [ "text" ] } } }, "/rest/echo/hello": { "get": { "summary": "Echo Hello", "description": "Return a Hello World response when the passed-in credentials are valid or an unauthorized response when they are invalid.", "operationId": "echo-api-hello", "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/echo/errors": { "get": { "summary": "Simulate Errors", "description": "Simulate possible error messages to test how your application responds to API errors.", "operationId": "echo-api-errors", "parameters": [ { "name": "errorCode", "in": "query", "schema": { "type": "string", "enum": [ "200", "301", "400", "403", "404", "500" ] } } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"status\": \"success\",\n \"count\": 1,\n \"type\": null,\n \"results\": [\n \"success\"\n ]\n}" } }, "schema": { "type": "object", "properties": { "status": { "type": "string", "example": "success" }, "count": { "type": "integer", "example": 1, "default": 0 }, "type": {}, "results": { "type": "array", "items": { "type": "string", "example": "success" } } } } } } }, "301": { "description": "301", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"status\": \"error\",\n \"count\": 2,\n \"type\": \"Error\",\n \"results\": [\n {\n \"code\": \"301\",\n \"message\": \"Moved Permanently\",\n \"objectName\": \"http\"\n },\n {\n \"code\": \"301\",\n \"message\": \"Moved Permanently\",\n \"objectName\": \"http\",\n \"propertyName\": \"someProperty\"\n }\n ]\n}" } }, "schema": { "type": "object", "properties": { "status": { "type": "string", "example": "error" }, "count": { "type": "integer", "example": 2, "default": 0 }, "type": { "type": "string", "example": "Error" }, "results": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "example": "301" }, "message": { "type": "string", "example": "Moved Permanently" }, "objectName": { "type": "string", "example": "http" } } } } } } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"status\": \"error\",\n \"count\": 2,\n \"type\": \"Error\",\n \"results\": [\n {\n \"code\": \"301\",\n \"message\": \"Moved Permanently\",\n \"objectName\": \"http\"\n },\n {\n \"code\": \"301\",\n \"message\": \"Moved Permanently\",\n \"objectName\": \"http\",\n \"propertyName\": \"someProperty\"\n }\n ]\n}" } }, "schema": { "type": "object", "properties": { "status": { "type": "string", "example": "error" }, "count": { "type": "integer", "example": 2, "default": 0 }, "type": { "type": "string", "example": "Error" }, "results": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "example": "301" }, "message": { "type": "string", "example": "Moved Permanently" }, "objectName": { "type": "string", "example": "http" } } } } } } } } }, "403": { "description": "403", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"status\": \"error\",\n \"count\": 2,\n \"type\": \"Error\",\n \"results\": [\n {\n \"code\": \"403\",\n \"message\": \"Not Authorized\",\n \"objectName\": \"http\"\n },\n {\n \"code\": \"403\",\n \"message\": \"Not Authorized\",\n \"objectName\": \"http\",\n \"propertyName\": \"someProperty\"\n }\n ]\n}" } }, "schema": { "type": "object", "properties": { "status": { "type": "string", "example": "error" }, "count": { "type": "integer", "example": 2, "default": 0 }, "type": { "type": "string", "example": "Error" }, "results": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "example": "403" }, "message": { "type": "string", "example": "Not Authorized" }, "objectName": { "type": "string", "example": "http" } } } } } } } } }, "404": { "description": "404", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"status\": \"error\",\n \"count\": 2,\n \"type\": \"Error\",\n \"results\": [\n {\n \"code\": \"404\",\n \"message\": \"Not Found\",\n \"objectName\": \"http\"\n },\n {\n \"code\": \"404\",\n \"message\": \"Not Found\",\n \"objectName\": \"http\",\n \"propertyName\": \"someProperty\"\n }\n ]\n}" } }, "schema": { "type": "object", "properties": { "status": { "type": "string", "example": "error" }, "count": { "type": "integer", "example": 2, "default": 0 }, "type": { "type": "string", "example": "Error" }, "results": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "example": "404" }, "message": { "type": "string", "example": "Not Found" }, "objectName": { "type": "string", "example": "http" } } } } } } } } }, "500": { "description": "500", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"status\": \"error\",\n \"count\": 1,\n \"type\": \"Error\",\n \"results\": [\n \"A server error has occurred. Sorry. It has been logged and we will work to fix it.\"\n ]\n}" } }, "schema": { "type": "object", "properties": { "status": { "type": "string", "example": "error" }, "count": { "type": "integer", "example": 1, "default": 0 }, "type": { "type": "string", "example": "Error" }, "results": { "type": "array", "items": { "type": "string", "example": "A server error has occurred. Sorry. It has been logged and we will work to fix it." } } } } } } } }, "deprecated": false } }, "/rest/echo/authenticate": { "get": { "summary": "Validate Authentication", "description": "Quickly validate the appId and appKey you are using. A successful response indicates they are valid.", "operationId": "echo-api-authenticate", "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/echo/validate": { "get": { "summary": "Validate Input Formats", "description": "Validate whether an input value is in a valid and recognized format, including dates, times, integers, and arrays.", "operationId": "echo-api-validate", "parameters": [ { "name": "dateTime", "in": "query", "description": "Validates the passed in string to the ISO 8601 format (e.g. the date and time you want to validate). See the example below for a valid format.", "schema": { "type": "string" } }, { "name": "integer", "in": "query", "description": "Validates the passed in integer to validate it is recognized as an integer.", "schema": { "type": "integer", "format": "int32" } }, { "name": "array", "in": "query", "description": "Validates the passed in array to validate it is in a recognized format.", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/v1/ondemand/calculate": { "post": { "summary": "Calculate Cost", "description": "Run one on-demand cost calculation for a tariff, date range, and calculation inputs.", "operationId": "calculate", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "masterTariffId", "fromDateTime", "toDateTime", "propertyInputs" ], "properties": { "masterTariffId": { "type": "integer", "description": "Unique Arcadia ID for the master tariff of this tariff version.", "format": "int64" }, "fromDateTime": { "type": "string", "description": "Starting date and time for this calculation.", "default": "2021-08-11T00:00:00-07:00", "format": "date" }, "toDateTime": { "type": "string", "description": "End date and time for this calculation.", "default": "2022-08-11T00:00:00-07:00", "format": "date" }, "propertyInputs": { "type": "array", "description": "Specify the usage data and applicabilities for the calculation as an Array of PropertyData", "items": { "properties": { "keyName": { "type": "string", "description": "The key name of the property associated with this input. The most common one will be consumption (which is the kWh for the period), and second most common is demand (kW), but can also be applicability properties like cityLimits or hasElectricVehicle" }, "fromDateTime": { "type": "string", "description": "The start of the period where this property is applicable. (Default= fromDateTime for the calculation request)", "format": "date" }, "toDateTime": { "type": "string", "description": "The end of the period where this property is applicable. (Default= toDateTime for the calculation request)", "format": "date" }, "period": { "type": "string", "description": "The Time of Use type: OFF_PEAK, PARTIAL_PEAK, ON_PEAK or CRITICAL_PEAK. As input, can alternatively be specified as a Date Period" }, "dataValue": { "type": "string", "description": "The value to use for this property. Can be input as the native type, but when populated will be returned as a string. (Required on input when not using dataSeries. dataValue or dataSeries is required, but requests must not specify both.)" }, "dataSeries": { "type": "array", "description": "Used for properties which have many values, such as consumption time series data. (Required on input when not using dataValue. dataValue or dataSeries is required, but requests must not specify both.)", "default": [], "items": { "type": "number", "format": "double" } }, "duration": { "type": "integer", "description": "Used with dataSeries to specify the time span corresponding to each value in the dataSeries. (Required on input when using dataSeries)", "format": "int32" }, "unit": { "type": "string", "description": "Where applicable, this is the unit of the value. Most common are: \"kWh\" - for keys of consumption, \"kW\" - for keys of demand." }, "dataFactor": { "type": "number", "description": "For applicable properties (like usage data) scales the inputs by the value provided", "format": "double" }, "operator": { "type": "string", "description": "For profile data only. Specifies how profiles should be joined.", "enum": [ "+", "-" ] } }, "required": [ "keyName" ], "type": "object" } }, "detailLevel": { "type": "string", "description": "Toggles the level of details for the calculation result.", "default": "ALL", "enum": [ "ALL", "TOTAL", "CHARGE_TYPE", "CHARGE_TYPE_AND_TOU", "RATE" ] }, "groupBy": { "type": "string", "description": "This controls how the calculation details are grouped. Examples (Optional, Defaults to the natural grouping for the rates)", "default": "MONTH", "enum": [ "ALL", "YEAR", "MONTH", "DAY", "HOUR", "QTRHOUR" ] }, "excludeChargeClass": { "type": "array", "description": "Specifies a charge class to exclude from the calculation results. Available options are TRANSMISSION, DISTRIBUTION, SUPPLY, TAX, CONTRACTED, USER_ADJUSTED, AFTER_TAX, and OTHER.", "items": { "type": "string" } }, "zipCode": { "type": "string", "description": "See examples for the cases when you need location data. When populating this field you should also populate country too. (Optional and usually not needed)" }, "country": { "type": "string", "description": "Use this when passing in a zipCode or postCode, and set it to the ISO Country Code of your zipCode since some countries use the same format (Use with zipCode)" }, "address": { "type": "object", "description": "An alternative to using zipCode and country. (Optional and usually not needed)", "properties": { "addressString": { "type": "string", "description": "Full free text string representing address. This is the property that is usually passed in. Zip will suffice but the full address is better." }, "addressName": { "type": "string", "description": "A name associated with the address (e.g. Headquarters). Not usually set." }, "address1": { "type": "string", "description": "First part of the address. Usually populated by our address validation from the addressString passed in." }, "address2": { "type": "string", "description": "Second part of the address. Usually populated by our address validation from the addressString passed in." }, "city": { "type": "string", "description": "City of the address. Usually populated by our address validation from the addressString passed in." }, "state": { "type": "string", "description": "State of the address. Usually populated by our address validation from the addressString passed in." }, "zip": { "type": "string", "description": "Postcode or ZIP code of the address. Usually populated by our address validation from the addressString passed in." }, "country": { "type": "string", "description": "Usually the ISO Country Code of the address. Usually populated by our address validation from the addressString passed in." }, "lon": { "type": "number", "description": "Longitude of the address. We\u2019ll populate this by geo-tagging the address.", "format": "double" }, "lat": { "type": "number", "description": "Latitude of the address. We\u2019ll populate this by geo-tagging the address.", "format": "double" } } }, "tariffEffectiveOn": { "type": "string", "description": "This field enables doing a calculation with a single, specified version of a given tariff. For example, if the user specifies that they want to use the 2016-01-01 version of PG&E\u2019s E-1 tariff, any calculation, regardless of it's time range, would use the rate data from that version and only that version of the tariff.", "format": "date" }, "rateInputs": { "type": "array", "description": "The rate input values are used to override existing rates on the tariff during the calculation. This enables modeling and/or setting customer specific rates during a calculation.", "items": { "properties": { "tariffRateId": { "type": "integer", "description": "Unique Genability ID (primary key) for each tariff rate", "format": "int64" }, "tariffId": { "type": "integer", "description": "Associates the rate with a tariff (foreign key)", "format": "int64" }, "riderTariffId": { "type": "integer", "description": "Tariff ID of the rider attached to this tariff version. null otherwise", "format": "int64" }, "riderId": { "type": "integer", "description": "Master Tariff ID of the rider linked to this tariff rate.", "format": "int64" }, "tariffSequenceNumber": { "type": "integer", "description": "Sequence of this rate in the tariff, for display purposes only (e.g. this is the order on the bill)", "format": "int32" }, "tariffBookSequenceNumber": { "type": "integer", "description": "Sequence of this rate in the tariff source document, if it differs from tariffSequenceNumber", "format": "int32" }, "rateGroupName": { "type": "string", "description": "Name of the group this rate belongs to" }, "tariffBookRateGroupName": { "type": "string", "description": "Name of the group this rate belongs to in the tariff source document, if it differs from rateGroupName" }, "rateName": { "type": "string", "description": "Name of this rate. Can be null (in which case use the group name)" }, "tariffBookRateName": { "type": "string", "description": "Name of this rate in the tariff source document, if it differs from rateName" }, "rateBands": { "type": "array", "description": "List of TariffRateBands", "items": { "properties": { "rateAmount": { "type": "string" }, "rateUnit": { "type": "string", "enum": [ "COST_PER_UNIT", "PERCENTAGE" ] } }, "type": "object" } }, "fromDateTime": { "type": "string", "description": "If populated, this indicates the rates effective date is not the same as that of its tariff", "format": "date" }, "toDateTime": { "type": "string", "description": "If populated, this indicates the rates end date is not the same as that of its tariff", "format": "date" }, "territory": { "type": "string", "description": "Only populated when this rate applies to a different region than the whole tariff (e.g. California Baseline Regions). This how-to has more." }, "season": { "type": "string", "description": "The season this rate applies to. Only used for seasonal rates (null otherwise)" }, "timeOfUse": { "type": "string", "description": "The time period this rate applies to. Only used for TOU rates (null otherwise)" }, "chargeType": { "type": "string", "description": "Possible values: FIXED_PRICE - a fixed charge for the period CONSUMPTION_BASED - based on quantity used (e.g. kW/h) DEMAND_BASED - based on the peak demand (e.g. kW) QUANTITY - a rate per number of items (e.g. $5 per street light) FORMULA - a rate that has a specific or custom formula MINIMUM - a minimum amount that the LSE will charge you, overriding lower pre-tax charges MAXIMUM - a maximum amount that the LSE will charge you, overriding higher pre-tax charges TAX - a percentage tax rate which is applied to the sum of all of the other charges on a bill" }, "chargeClass": { "type": "string", "description": "A comma separated string that indicates what class(es) of charges this rate is for. Values include: SUPPLY - Energy related charges. TRANSMISSION - Transmission level delivery charges. DISTRIBUTION - Distribution level (last mile) delivery charges of moving electricity into your home or business. TAX - Tax surcharges which appear in the utility tariff document. CONTRACTED - Charges which get replaced or overridden when you pass the retail (contracted) energy supply rate in the calculation. USER_ADJUSTED - Additional or custom rates you can add to a public or private tariff. An example would be a local tax rate which Genability does not model but you would want included. AFTER_TAX - Charges which apply post utility and other taxes. A good example would be the California Climate credit which is applied to the bill after the taxes are applied to the bill subtotal. OTHER - Charges which cannot be classified in any of the above buckets. This is very rare. NON_BYPASSABLE - Charges which cannot be offset by credits (usually Net Metering)" }, "chargePeriod": { "type": "string", "description": "Indicates what period this charge is calculated for. This is usually the same as the billing period (and is usually monthly) but can be other intervals. Possible values are: MONTHLY - each calendar month DAILY - calculated for each day QUARTERLY - every 3 months ANNUALLY - every year" }, "transactionType": { "type": "string", "description": "Indicates whether this rate is BUY (charge when importing from the grid, no credit when exporting), SELL (credit when exporting to the grid, no charge when importing), or NET (charge when importing, credit when exporting) with imports and exports resolved according the the chargePeriod. BUY_IMPORT (charge only when importing) and SELL_EXPORT (credit only when exporting) indicate that imports and exports are resolved in real-time (instantaneous netting)." }, "quantityKey": { "type": "string", "description": "When not null, the property that defines the type of quantity this rate applies to. (e.g. billingMeter : property which defines the number of billing meters the rate will apply to)" }, "applicabilityKey": { "type": "string", "description": "When not null, the property that defines the eligibility criteria for this rate. (e.g. connectionType : property which defines how the service is connected to the grid)" }, "variableLimitKey": { "type": "string", "description": "When populated this defines the variable which determines the upper limit(s) of this rate. (e.g. demandMultiplierTierswithkWhTiers2416: property which uses the demand value to drive the consumption limits)" }, "variableRateKey": { "type": "string", "description": "When not null, this is the name of the property that defines the variable rate. In this case the rate field is null, or can (rarely) be used as an input to the determination of the variable rate. (e.g massachusettsResidentialRetailPrevailingRates : property which provides the regional prevailing residential supply rate for Massachusetts )" }, "variableFactorKey": { "type": "string", "description": "When not null, this is the name of the property that defines the variable factor to apply to this rate. (e.g billingPeriodProrationFactor: property which defines a prorated number of billing days)" } }, "type": "object" } }, "minimums": { "type": "boolean", "description": "This field enables enforcing minimum charges on this calculation.", "default": true }, "billingPeriod": { "type": "boolean", "description": "A true or false flag. If the dates of the calculation represent an actual billing cycle, then you should set this to true. This will give you precise values for items like fixed charges. When it\u2019s not set, or set to false, these charges will be prorated across the number of days in the calculation.", "default": false }, "applyUtilityTax": { "type": "boolean", "description": "When true, the calculation attempts to apply a utility tax to the provided location. (Optional, Default = true when zipCode and country, or address provided, false otherwise)" } } }, "examples": { "Calculation With Arcadia's Typical Electricity Dataset": { "value": { "masterTariffId": 512, "fromDateTime": "2021-08-11T00:00:00-07:00", "toDateTime": "2022-08-11T00:00:00-07:00", "detailLevel": "ALL", "groupBy": "MONTH", "minimums": true, "billingPeriod": false, "propertyInputs": [ { "keyName": "baselineType", "dataValue": "typicalElectricity" }, { "keyName": "buildingId", "dataValue": "RESIDENTIAL" } ] }, "summary": "Calculation With Arcadia's Typical Electricity Dataset" }, "Calculating Last Month's Electricity Bill": { "value": { "fromDateTime": "2016-07-13T00:00:00-07:00", "toDateTime": "2016-08-11T00:00:00-07:00", "masterTariffId": 522, "groupBy": "MONTH", "detailLevel": "RATE", "billingPeriod": true, "propertyInputs": [ { "keyName": "consumption", "fromDateTime": "2016-07-13T00:00:00-07:00", "duration": 3600000, "dataSeries": [ 1.58, 1.58, 1.58, 1.58, 1.59, 1.6, 1.61, 1.62, 1.63, 1.63, 1.64, 1.64, 1.66, 1.68, 1.7, 1.73, 1.75, 1.76, 1.78, 1.8, 1.8, 1.81, 1.81, 1.81, 1.84, 1.88, 1.91, 1.95, 1.97, 1.98, 2, 2.01, 2.02, 2.03, 2.04, 2.05, 2.06, 2.07, 2.08, 2.09, 2.09, 2.11, 2.12, 2.13, 2.13, 2.11, 2.09, 2.08, 2.07, 2.05, 2.03, 2.02, 2.01, 2.01, 2.01, 2.01, 2.02, 2.02, 2.03, 2.04, 2.02, 1.99, 1.96, 1.92, 1.9, 1.89, 1.88, 1.86, 1.85, 1.83, 1.82, 1.79, 1.77, 1.74, 1.71, 1.67, 1.65, 1.63, 1.61, 1.6, 1.58, 1.55, 1.53, 1.51, 1.51, 1.51, 1.52, 1.52, 1.54, 1.56, 1.58, 1.6, 1.6, 1.59, 1.58, 1.58, 1.58, 1.59, 1.59, 1.6, 1.61, 1.63, 1.65, 1.67, 1.67, 1.67, 1.67, 1.67, 1.69, 1.72, 1.74, 1.77, 1.78, 1.79, 1.79, 1.8, 1.8, 1.79, 1.79, 1.78, 1.81, 1.85, 1.89, 1.94, 1.96, 1.97, 1.98, 2, 2.01, 2.02, 2.04, 2.05, 2.06, 2.06, 2.07, 2.07, 2.08, 2.09, 2.11, 2.12, 2.12, 2.12, 2.12, 2.12, 2.12, 2.11, 2.09, 2.08, 2.08, 2.08, 2.08, 2.08, 2.07, 2.07, 2.06, 2.05, 2.03, 2, 1.97, 1.94, 1.91, 1.9, 1.88, 1.86, 1.84, 1.83, 1.82, 1.81, 1.78, 1.74, 1.7, 1.66, 1.65, 1.64, 1.64, 1.63, 1.61, 1.57, 1.54, 1.51, 1.51, 1.51, 1.52, 1.52, 1.54, 1.56, 1.58, 1.6, 1.6, 1.59, 1.58, 1.57, 1.54, 1.54, 1.54, 1.54, 1.55, 1.56, 1.56, 1.57, 1.58, 1.57, 1.57, 1.57, 1.58, 1.61, 1.63, 1.65, 1.68, 1.71, 1.73, 1.76, 1.78, 1.79, 1.8, 1.81, 1.83, 1.85, 1.88, 1.9, 1.91, 1.92, 1.92, 1.93, 1.93, 1.93, 1.92, 1.91, 1.92, 1.93, 1.93, 1.94, 1.95, 1.97, 1.99, 2.01, 2.01, 2, 1.99, 1.98, 1.97, 1.97, 1.96, 1.96, 1.96, 1.95, 1.95, 1.94, 1.95, 1.96, 1.97, 1.98, 1.97, 1.96, 1.94, 1.92, 1.9, 1.89, 1.87, 1.86, 1.84, 1.81, 1.79, 1.76, 1.74, 1.72, 1.71, 1.69, 1.66, 1.64, 1.61, 1.58, 1.56, 1.54, 1.52, 1.49, 1.48, 1.49, 1.49, 1.5, 1.52, 1.53, 1.55, 1.57, 1.57, 1.56, 1.55, 1.53, 1.51, 1.51, 1.52, 1.52, 1.53, 1.53, 1.54, 1.55, 1.55, 1.55, 1.55, 1.55, 1.56, 1.58, 1.61, 1.62, 1.65, 1.67, 1.7, 1.73, 1.74, 1.74, 1.75, 1.76, 1.77, 1.8, 1.82, 1.85, 1.86, 1.86, 1.86, 1.86, 1.86, 1.86, 1.85, 1.85, 1.85, 1.86, 1.86, 1.87, 1.88, 1.9, 1.91, 1.93, 1.93, 1.92, 1.91, 1.9, 1.9, 1.89, 1.89, 1.88, 1.88, 1.88, 1.88, 1.87, 1.88, 1.9, 1.91, 1.93, 1.92, 1.9, 1.88, 1.86, 1.85, 1.84, 1.83, 1.82, 1.8, 1.78, 1.76, 1.73, 1.71, 1.69, 1.68, 1.66, 1.64, 1.61, 1.58, 1.55, 1.52, 1.5, 1.48, 1.46, 1.46, 1.46, 1.47, 1.47, 1.49, 1.51, 1.53, 1.55, 1.54, 1.53, 1.52, 1.5, 1.48, 1.48, 1.49, 1.5, 1.51, 1.51, 1.52, 1.52, 1.52, 1.52, 1.52, 1.52, 1.54, 1.56, 1.58, 1.6, 1.62, 1.64, 1.66, 1.69, 1.7, 1.7, 1.7, 1.7, 1.72, 1.74, 1.77, 1.79, 1.8, 1.8, 1.8, 1.8, 1.8, 1.79, 1.79, 1.78, 1.78, 1.79, 1.79, 1.8, 1.81, 1.82, 1.83, 1.85, 1.85, 1.84, 1.83, 1.83, 1.82, 1.82, 1.81, 1.8, 1.8, 1.8, 1.8, 1.8, 1.82, 1.83, 1.85, 1.87, 1.86, 1.85, 1.83, 1.81, 1.8, 1.79, 1.79, 1.78, 1.76, 1.74, 1.73, 1.71, 1.69, 1.67, 1.65, 1.63, 1.61, 1.57, 1.54, 1.51, 1.49, 1.47, 1.45, 1.43, 1.43, 1.44, 1.44, 1.45, 1.46, 1.48, 1.5, 1.52, 1.52, 1.51, 1.49, 1.49, 1.52, 1.53, 1.53, 1.54, 1.55, 1.55, 1.56, 1.56, 1.57, 1.57, 1.57, 1.57, 1.58, 1.6, 1.62, 1.64, 1.66, 1.68, 1.7, 1.73, 1.73, 1.73, 1.74, 1.74, 1.76, 1.78, 1.8, 1.83, 1.84, 1.84, 1.84, 1.85, 1.84, 1.84, 1.83, 1.83, 1.83, 1.83, 1.84, 1.85, 1.86, 1.86, 1.88, 1.89, 1.89, 1.88, 1.87, 1.86, 1.86, 1.85, 1.85, 1.84, 1.84, 1.84, 1.84, 1.84, 1.85, 1.87, 1.88, 1.9, 1.89, 1.88, 1.86, 1.84, 1.83, 1.82, 1.82, 1.81, 1.79, 1.77, 1.75, 1.73, 1.71, 1.69, 1.68, 1.66, 1.63, 1.6, 1.57, 1.55, 1.52, 1.5, 1.48, 1.46, 1.46, 1.47, 1.48, 1.48, 1.5, 1.52, 1.54, 1.55, 1.56, 1.54, 1.53, 1.54, 1.57, 1.57, 1.58, 1.58, 1.59, 1.59, 1.6, 1.6, 1.61, 1.61, 1.61, 1.61, 1.62, 1.64, 1.66, 1.68, 1.7, 1.72, 1.74, 1.76, 1.76, 1.77, 1.77, 1.78, 1.79, 1.82, 1.84, 1.86, 1.88, 1.88, 1.88, 1.89, 1.89, 1.88, 1.88, 1.88, 1.88, 1.88, 1.88, 1.89, 1.9, 1.91, 1.92, 1.93, 1.93, 1.91, 1.91, 1.9, 1.89, 1.89, 1.89, 1.88, 1.88, 1.88, 1.88, 1.88, 1.89, 1.9, 1.92, 1.93, 1.92, 1.91, 1.89, 1.87, 1.86, 1.85, 1.85, 1.84, 1.82, 1.8, 1.78, 1.76, 1.74, 1.72, 1.7, 1.68, 1.66, 1.63, 1.61, 1.58, 1.56, 1.54, 1.52, 1.49, 1.49, 1.5, 1.51, 1.52, 1.53, 1.55, 1.57, 1.59, 1.59, 1.58, 1.58, 1.57, 1.58, 1.58, 1.58, 1.58, 1.59, 1.6, 1.62, 1.63, 1.64, 1.64, 1.63, 1.63, 1.64, 1.67, 1.7, 1.73, 1.74, 1.76, 1.77, 1.78, 1.79, 1.79, 1.78, 1.78, 1.8, 1.83, 1.86, 1.9, 1.91, 1.92, 1.92, 1.93, 1.93, 1.94, 1.94, 1.95, 1.96, 1.97, 1.98, 1.99, 1.99, 2.01, 2.01, 2.02, 2.02, 2.01, 2.01, 2, 2 ], "unit": "kWh" } ] }, "summary": "Calculating Last Month's Electricity Bill" }, "Passing Enumerable Period Values": { "value": { "masterTariffId": 525, "fromDateTime": "2015-12-08T00:00:00-08:00", "toDateTime": "2016-01-03T00:00:00-08:00", "billingPeriod": true, "minimums": true, "groupBy": "MONTH", "detailLevel": "RATE", "fields": "ext", "propertyInputs": [ { "keyName": "consumption", "unit": "kWh", "period": "PARTIAL_PEAK", "dataValue": "300.1" }, { "keyName": "consumption", "unit": "kWh", "period": "OFF_PEAK", "dataValue": "200.6" } ] }, "summary": "Passing Enumerable Period Values" }, "Passing Custom Period propertyInputs": { "value": { "masterTariffId": 525, "fromDateTime": "2015-12-08T00:00:00-08:00", "toDateTime": "2016-01-03T00:00:00-08:00", "billingPeriod": true, "minimums": true, "groupBy": "MONTH", "detailLevel": "RATE", "fields": "ext", "propertyInputs": [ { "keyName": "consumption", "unit": "kWh", "period": "1:5e 0H", "dataValue": "300.1" }, { "keyName": "consumption", "unit": "kWh", "period": "6:7e 0H", "dataValue": "200.6" } ] }, "summary": "Passing Custom Period propertyInputs" }, "Contracted Supply Rate In Deregulated Markets": { "value": { "masterTariffId": 522, "fromDateTime": "2015-01-01T00:00:00-07:00", "toDateTime": "2016-01-01T00:00:00-07:00", "groupBy": "MONTH", "detailLevel": "CHARGE_TYPE", "propertyInputs": [ { "fromDateTime": "2015-01-01", "toDateTime": "2015-02-01", "keyName": "consumption", "dataValue": 520 }, { "fromDateTime": "2015-02-01", "toDateTime": "2015-03-01", "keyName": "consumption", "dataValue": 980 }, { "fromDateTime": "2015-03-01", "toDateTime": "2015-04-01", "keyName": "consumption", "dataValue": 1235 }, { "fromDateTime": "2015-04-01", "toDateTime": "2015-05-01", "keyName": "consumption", "dataValue": 1013 }, { "fromDateTime": "2015-05-01", "toDateTime": "2015-06-01", "keyName": "consumption", "dataValue": 520 }, { "fromDateTime": "2015-06-01", "toDateTime": "2015-07-01", "keyName": "consumption", "dataValue": 980 }, { "fromDateTime": "2015-07-01", "toDateTime": "2015-08-01", "keyName": "consumption", "dataValue": 1235 }, { "fromDateTime": "2015-08-01", "toDateTime": "2015-09-01", "keyName": "consumption", "dataValue": 1013 }, { "fromDateTime": "2015-09-01", "toDateTime": "2015-10-01", "keyName": "consumption", "dataValue": 784 }, { "fromDateTime": "2015-10-01", "toDateTime": "2015-11-01", "keyName": "consumption", "dataValue": 895 }, { "fromDateTime": "2015-11-01", "toDateTime": "2015-12-01", "keyName": "consumption", "dataValue": 953 }, { "fromDateTime": "2015-12-01", "toDateTime": "2016-01-01", "keyName": "consumption", "dataValue": 1015 } ], "rateInputs": [ { "fromDateTime": "2015-01-01T00:00:00-07:00", "toDateTime": "2016-01-01T00:00:00-07:00", "chargeClass": "CONTRACTED", "rateBands": [ { "rateAmount": ".05" } ] } ] }, "summary": "Contracted Supply Rate In Deregulated Markets" }, "Community Choice Aggregation (CCA)": { "value": { "masterTariffId": 3251054, "fromDateTime": "2016-01-03", "toDateTime": "2016-02-05", "groupBy": "MONTH", "detailLevel": "RATE", "billingPeriod": true, "excludeChargeClass": "SUPPLY", "propertyInputs": [ { "keyName": "consumption", "unit": "kWh", "dataValue": "1200" } ] }, "summary": "Community Choice Aggregation (CCA)" }, "Rate Adjustments Using Calculation Factor": { "value": { "masterTariffId": 3251054, "fromDateTime": "2011-11-01T00:00:00-05:00", "toDateTime": "2012-01-01T00:00:00-05:00", "propertyInputs": [ { "keyName": "consumption", "dataValue": 1000 } ], "rateInputs": [ { "chargeType": "CONSUMPTION_BASED", "rateBands": [ { "calculationFactor": 1.1 } ] } ] }, "summary": "Rate Adjustments Using Calculation Factor" }, "Adding Supplemental Tax Rates ": { "value": { "masterTariffId": 522, "fromDateTime": "2016-06-01", "toDateTime": "2016-07-03", "billingPeriod": true, "propertyInputs": [ { "keyName": "consumption", "dataValue": 1000 } ], "rateInputs": [ { "rateGroupName": "Taxes", "rateName": "Utility Users Tax", "chargeType": "TAX", "rateBands": [ { "rateAmount": 0.075, "rateUnit": "PERCENTAGE" } ] } ] }, "summary": "Adding Supplemental Tax Rates " }, "Custom Time Of Use (TOU) Intervals": { "value": { "masterTariffId": 83653, "fromDateTime": "2015-09-01", "toDateTime": "2015-09-30", "minimums": "true", "detailLevel": "RATE", "groupBy": "HOUR", "billingPeriod": "true", "propertyInputs": [ { "fromDateTime": "2015-09-01", "toDateTime": "2015-09-30", "keyName": "consumption", "dataValue": "2400" }, { "keyName": "pdpProgramEventOption", "dataValue": "No Limit - Four Hour Window" } ], "customTimeOfUseIntervals": [ { "touName": "Critical Peak PDP", "fromDateTime": "2015-09-11T02:00:00-07:00", "toDateTime": "2015-09-11T04:00:00-07:00", "touType": "CRITICAL_PEAK" }, { "touName": "Critical Peak PDP", "fromDateTime": "2015-09-12T02:00:00-07:00", "toDateTime": "2015-09-12T04:00:00-07:00", "touType": "CRITICAL_PEAK" }, { "touName": "Critical Peak PDP", "fromDateTime": "2015-09-13T02:00:00-07:00", "toDateTime": "2015-09-13T04:00:00-07:00", "touType": "CRITICAL_PEAK" } ] }, "summary": "Custom Time Of Use (TOU) Intervals" } } } } }, "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/v1/ondemand/calculate/mass": { "post": { "summary": "Calculate Multiple Scenarios", "description": "Run multiple on-demand calculation scenarios in one request.", "operationId": "mass-calculate", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "fromDateTime", "toDateTime", "scenarios" ], "properties": { "fromDateTime": { "type": "string", "description": "Starting date and time for this request.", "default": "2022-07-13T00:00:00-07:00", "format": "date" }, "toDateTime": { "type": "string", "description": "End date and time for this request.", "default": "2022-08-11T00:00:00-07:00", "format": "date" }, "detailLevel": { "type": "string", "description": "Toggles the level of details for the calculation result.", "default": "ALL", "enum": [ "ALL", "TOTAL", "CHARGE_TYPE", "CHARGE_TYPE_AND_TOU" ] }, "scenarios": { "type": "array", "description": "A list of the scenarios to calculate. A user-provided identifier for this calculation. If provided, it will be used to identify the scenario in the calculation results. Defaults to a simple index. Format example: \"scenarios\": [{ \"scenarioName\": \"E-1\", \"masterTariffId\": 522 }, { \"scenarioName\": \"E-6-TOU\", \"masterTariffId\": 525 }, { \"scenarioName\": \"E-6-TOU-SmartRate\", \"masterTariffId\": 525, \"propertyInputs\": [{ \"keyName\": \"isSmartRateCustomer\", \"dataValue\": true }]", "items": { "properties": { "masterTariffId": { "type": "integer", "description": "The Genability ID of the tariff used for this particular calculation.", "format": "int32" }, "scenarioName": { "type": "string", "description": "A user-provided identifier for this calculation. If provided, it will be used to identify the scenario in the calculation results. Defaults to a simple index" }, "propertyInputs": { "type": "array", "description": "This is where you\u2019ll specify the usage data and applicabilities for the calculation.", "items": { "properties": { "keyName": { "type": "string", "description": "The key name of the property associated with this input. The most common one will be consumption (which is the kWh for the period), and second most common is demand (kW), but can also be applicability properties like cityLimits or hasElectricVehicle" }, "fromDateTime": { "type": "string", "description": "The start of the period where this property is applicable. (Default= fromDateTime for the calculation request)", "format": "date" }, "toDateTime": { "type": "string", "description": "The end of the period where this property is applicable. (Default= toDateTime for the calculation request)", "format": "date" }, "period": { "type": "string", "description": "The Time of Use type: OFF_PEAK, PARTIAL_PEAK, ON_PEAK or CRITICAL_PEAK. As input, can alternatively be specified as a Date Period" }, "dataValue": { "type": "string", "description": "The value to use for this property. Can be input as the native type, but when populated will be returned as a string. (Required on input when not using dataSeries. dataValue or dataSeries is required, but requests must not specify both.)" }, "dataSeries": { "type": "array", "description": "Used for properties which have many values, such as consumption time series data. (Required on input when not using dataValue. dataValue or dataSeries is required, but requests must not specify both.)", "default": [], "items": { "type": "number", "format": "double" } }, "duration": { "type": "integer", "description": "Used with dataSeries to specify the time span corresponding to each value in the dataSeries. (Required on input when using dataSeries)", "format": "int32" }, "unit": { "type": "string", "description": "Where applicable, this is the unit of the value. Most common are: \"kWh\" - for keys of consumption, \"kW\" - for keys of demand." }, "dataFactor": { "type": "number", "description": "For applicable properties (like usage data) scales the inputs by the value provided", "format": "double" }, "operator": { "type": "string", "description": "For profile data only. Specifies how profiles should be joined.", "enum": [ "+", "-" ] } }, "required": [ "keyName" ], "type": "object" } }, "rateInputs": { "type": "array", "description": "Any custom rates that you want to supply for this scenario.", "items": { "properties": { "tariffRateId": { "type": "integer", "description": "Unique Genability ID (primary key) for each tariff rate", "format": "int64" }, "tariffId": { "type": "integer", "description": "Associates the rate with a tariff (foreign key)", "format": "int64" }, "riderTariffId": { "type": "integer", "description": "Tariff ID of the rider attached to this tariff version. null otherwise", "format": "int64" }, "riderId": { "type": "integer", "description": "Master Tariff ID of the rider linked to this tariff rate.", "format": "int64" }, "tariffSequenceNumber": { "type": "integer", "description": "Sequence of this rate in the tariff, for display purposes only (e.g. this is the order on the bill)", "format": "int32" }, "tariffBookSequenceNumber": { "type": "integer", "description": "Sequence of this rate in the tariff source document, if it differs from tariffSequenceNumber", "format": "int32" }, "rateGroupName": { "type": "string", "description": "Name of the group this rate belongs to" }, "tariffBookRateGroupName": { "type": "string", "description": "Name of the group this rate belongs to in the tariff source document, if it differs from rateGroupName" }, "rateName": { "type": "string", "description": "Name of this rate. Can be null (in which case use the group name)" }, "tariffBookRateName": { "type": "string", "description": "Name of this rate in the tariff source document, if it differs from rateName" }, "rateBands": { "type": "array", "description": "List of TariffRateBands", "items": { "properties": { "rateAmount": { "type": "string" }, "rateUnit": { "type": "string", "enum": [ "COST_PER_UNIT", "PERCENTAGE" ] } }, "type": "object" } }, "fromDateTime": { "type": "string", "description": "If populated, this indicates the rates effective date is not the same as that of its tariff", "format": "date" }, "toDateTime": { "type": "string", "description": "If populated, this indicates the rates end date is not the same as that of its tariff", "format": "date" }, "territory": { "type": "string", "description": "Only populated when this rate applies to a different region than the whole tariff (e.g. California Baseline Regions). This how-to has more." }, "season": { "type": "string", "description": "The season this rate applies to. Only used for seasonal rates (null otherwise)" }, "timeOfUse": { "type": "string", "description": "The time period this rate applies to. Only used for TOU rates (null otherwise)" }, "chargeType": { "type": "string", "description": "Possible values: FIXED_PRICE - a fixed charge for the period CONSUMPTION_BASED - based on quantity used (e.g. kW/h) DEMAND_BASED - based on the peak demand (e.g. kW) QUANTITY - a rate per number of items (e.g. $5 per street light) FORMULA - a rate that has a specific or custom formula MINIMUM - a minimum amount that the LSE will charge you, overriding lower pre-tax charges MAXIMUM - a maximum amount that the LSE will charge you, overriding higher pre-tax charges TAX - a percentage tax rate which is applied to the sum of all of the other charges on a bill" }, "chargeClass": { "type": "string", "description": "A comma separated string that indicates what class(es) of charges this rate is for. Values include: SUPPLY - Energy related charges. TRANSMISSION - Transmission level delivery charges. DISTRIBUTION - Distribution level (last mile) delivery charges of moving electricity into your home or business. TAX - Tax surcharges which appear in the utility tariff document. CONTRACTED - Charges which get replaced or overridden when you pass the retail (contracted) energy supply rate in the calculation. USER_ADJUSTED - Additional or custom rates you can add to a public or private tariff. An example would be a local tax rate which Genability does not model but you would want included. AFTER_TAX - Charges which apply post utility and other taxes. A good example would be the California Climate credit which is applied to the bill after the taxes are applied to the bill subtotal. OTHER - Charges which cannot be classified in any of the above buckets. This is very rare. NON_BYPASSABLE - Charges which cannot be offset by credits (usually Net Metering)" }, "chargePeriod": { "type": "string", "description": "Indicates what period this charge is calculated for. This is usually the same as the billing period (and is usually monthly) but can be other intervals. Possible values are: MONTHLY - each calendar month DAILY - calculated for each day QUARTERLY - every 3 months ANNUALLY - every year" }, "transactionType": { "type": "string", "description": "Indicates whether this rate is BUY (charge when importing from the grid, no credit when exporting), SELL (credit when exporting to the grid, no charge when importing), or NET (charge when importing, credit when exporting) with imports and exports resolved according the the chargePeriod. BUY_IMPORT (charge only when importing) and SELL_EXPORT (credit only when exporting) indicate that imports and exports are resolved in real-time (instantaneous netting)." }, "quantityKey": { "type": "string", "description": "When not null, the property that defines the type of quantity this rate applies to. (e.g. billingMeter : property which defines the number of billing meters the rate will apply to)" }, "applicabilityKey": { "type": "string", "description": "When not null, the property that defines the eligibility criteria for this rate. (e.g. connectionType : property which defines how the service is connected to the grid)" }, "variableLimitKey": { "type": "string", "description": "When populated this defines the variable which determines the upper limit(s) of this rate. (e.g. demandMultiplierTierswithkWhTiers2416: property which uses the demand value to drive the consumption limits)" }, "variableRateKey": { "type": "string", "description": "When not null, this is the name of the property that defines the variable rate. In this case the rate field is null, or can (rarely) be used as an input to the determination of the variable rate. (e.g massachusettsResidentialRetailPrevailingRates : property which provides the regional prevailing residential supply rate for Massachusetts )" }, "variableFactorKey": { "type": "string", "description": "When not null, this is the name of the property that defines the variable factor to apply to this rate. (e.g billingPeriodProrationFactor: property which defines a prorated number of billing days)" } }, "type": "object" } }, "expected": { "type": "string", "description": "Set expectations on calculation results (totalCost, adjustedTotalCost, kWh, kW) to enable accuracy validation", "format": "json" } }, "required": [ "masterTariffId" ], "type": "object" } }, "sharedScenario": { "type": "object", "description": "A single scenario, the values for which will be shared among all calculations. Example: \"sharedScenario\": { \"propertyInputs\": [{ \"keyName\": \"consumption\", \"dataValue\": 1000 }]", "required": [ "keyName" ], "properties": { "keyName": { "type": "string", "description": "The key name of the property associated with this input. The most common one will be consumption (which is the kWh for the period), and second most common is demand (kW), but can also be applicability properties like cityLimits or hasElectricVehicle" }, "fromDateTime": { "type": "string", "description": "The start of the period where this property is applicable. (Default= fromDateTime for the calculation request)", "format": "date" }, "toDateTime": { "type": "string", "description": "The end of the period where this property is applicable. (Default= toDateTime for the calculation request)", "format": "date" }, "period": { "type": "string", "description": "The Time of Use type: OFF_PEAK, PARTIAL_PEAK, ON_PEAK or CRITICAL_PEAK. As input, can alternatively be specified as a Date Period" }, "dataValue": { "type": "string", "description": "The value to use for this property. Can be input as the native type, but when populated will be returned as a string. (Required on input when not using dataSeries. dataValue or dataSeries is required, but requests must not specify both.)" }, "dataSeries": { "type": "array", "description": "Used for properties which have many values, such as consumption time series data. (Required on input when not using dataValue. dataValue or dataSeries is required, but requests must not specify both.)", "items": { "type": "number", "format": "double" } }, "duration": { "type": "integer", "description": "Used with dataSeries to specify the time span corresponding to each value in the dataSeries. (Required on input when using dataSeries)", "format": "int32" }, "unit": { "type": "string", "description": "Where applicable, this is the unit of the value. Most common are: \"kWh\" - for keys of consumption, \"kW\" - for keys of demand." }, "dataFactor": { "type": "number", "description": "For applicable properties (like usage data) scales the inputs by the value provided", "format": "double" }, "operator": { "type": "string", "description": "For profile data only. Specifies how profiles should be joined.", "enum": [ "+", "-" ] } } }, "groupBy": { "type": "string", "description": "This controls how the calculation details are grouped. Examples (Defaults to the natural grouping for the rates)", "enum": [ "MONTH", "DAY", "QTRHOUR" ] }, "address": { "type": "object", "description": "Specifies the location in which to apply a utility tax. (Required if applyUtilityTax = true)", "properties": { "addressString": { "type": "string", "description": "Full free text string representing address. This is the property that is usually passed in. Zip will suffice but the full address is better." }, "addressName": { "type": "string", "description": "A name associated with the address (e.g. Headquarters). Not usually set." }, "address1": { "type": "string", "description": "First part of the address. Usually populated by our address validation from the addressString passed in." }, "address2": { "type": "string", "description": "Second part of the address. Usually populated by our address validation from the addressString passed in." }, "city": { "type": "string", "description": "City of the address. Usually populated by our address validation from the addressString passed in." }, "state": { "type": "string", "description": "State of the address. Usually populated by our address validation from the addressString passed in." }, "zip": { "type": "string", "description": "Postcode or ZIP code of the address. Usually populated by our address validation from the addressString passed in." }, "country": { "type": "string", "description": "Usually the ISO Country Code of the address. Usually populated by our address validation from the addressString passed in." }, "lon": { "type": "number", "description": "Longitude of the address. We\u2019ll populate this by geo-tagging the address.", "format": "double" }, "lat": { "type": "number", "description": "Latitude of the address. We\u2019ll populate this by geo-tagging the address.", "format": "double" } } }, "billingPeriod": { "type": "boolean", "description": "A true or false flag. If the dates of the calculation represent an actual billing cycle, then you should set this to true. This will give you precise values for items like fixed charges. When it\u2019s not set, or set to false, these charges will be prorated across the number of days in the calculation.", "default": true }, "applyUtilityTax": { "type": "boolean", "description": "When true, the calculation attempts to apply a utility tax to the provided address. (Default =\u00a0`true`\u00a0when\u00a0`address`\u00a0provided,\u00a0else `false`)" }, "minimums": { "type": "boolean", "description": "This field enables enforcing minimum charges on this calculation." }, "excludeChargeClass": { "type": "array", "description": "Specifies a charge class to exclude from the calculation results. Available options are TRANSMISSION, DISTRIBUTION, SUPPLY, TAX, CONTRACTED, USER_ADJUSTED, AFTER_TAX, and OTHER.", "items": { "type": "string" } }, "tariffEffectiveOn": { "type": "string", "description": "Use the version of the tariff that was active on the given date. By default the calculation uses the tariff version(s) effective between fromDateTime and toDateTime.", "format": "date" } } }, "examples": { "A Calculation with Multiple Tariffs": { "value": { "fromDateTime": "2016-07-13T00:00:00-07:00", "toDateTime": "2016-08-11T00:00:00-07:00", "groupBy": "MONTH", "detailLevel": "CHARGE_TYPE", "billingPeriod": true, "scenarios": [ { "scenarioName": "E-1", "masterTariffId": 522 }, { "scenarioName": "E-6-TOU", "masterTariffId": 525 }, { "scenarioName": "E-6-TOU-SmartRate", "masterTariffId": 525, "propertyInputs": [ { "keyName": "isSmartRateCustomer", "dataValue": true } ] } ], "sharedScenario": { "propertyInputs": [ { "keyName": "consumption", "dataValue": 1000 } ] } } }, "Granular usage data": { "value": { "fromDateTime": "2016-07-13T00:00:00-07:00", "toDateTime": "2016-08-15T00:00:00-07:00", "groupBy": "MONTH", "detailLevel": "TOTAL", "billingPeriod": true, "scenarios": [ { "scenarioName": "E-1", "masterTariffId": 522 }, { "scenarioName": "E-6-TOU", "masterTariffId": 525 }, { "scenarioName": "E-6-TOU-SmartRate", "masterTariffId": 525, "propertyInputs": [ { "keyName": "isSmartRateCustomer", "dataValue": true } ] } ], "sharedScenario": { "propertyInputs": [ { "keyName": "consumption", "fromDateTime": "2016-07-13T00:00:00-07:00", "duration": 3600000, "dataSeries": [ 1.58, 1.55, 1.58, 1.58, 1.59, 1.6, 1.61, 1.62, 1.63, 1.63, 1.64, 1.64, 1.66, 1.68, 1.7, 1.73, 1.75, 1.76, 1.78, 1.8, 1.8, 1.81, 1.81, 1.81, 1.84, 1.88, 1.91, 1.95, 1.97, 1.98, 2, 2.01, 2.02, 2.03, 2.04, 2.05, 2.06, 2.07, 2.08, 2.09, 2.09, 2.11, 2.12, 2.13, 2.13, 2.11, 2.09, 2.08, 2.07, 2.05, 2.03, 2.02, 2.01, 2.01, 2.01, 2.01, 2.02, 2.02, 2.03, 2.04, 2.02, 1.99, 1.96, 1.92, 1.9, 1.89, 1.88, 1.86, 1.85, 1.83, 1.82, 1.79, 1.77, 1.74, 1.71, 1.67, 1.65, 1.63, 1.61, 1.6, 1.58, 1.55, 1.53, 1.51, 1.51, 1.51, 1.52, 1.52, 1.54, 1.56, 1.58, 1.6, 1.6, 1.59, 1.58, 1.58, 1.58, 1.59, 1.59, 1.6, 1.61, 1.63, 1.65, 1.67, 1.67, 1.67, 1.67, 1.67, 1.69, 1.72, 1.74, 1.77, 1.78, 1.79, 1.79, 1.8, 1.8, 1.79, 1.79, 1.78, 1.81, 1.85, 1.89, 1.94, 1.96, 1.97, 1.98, 2, 2.01, 2.02, 2.04, 2.05, 2.06, 2.06, 2.07, 2.07, 2.08, 2.09, 2.11, 2.12, 2.12, 2.12, 2.12, 2.12, 2.12, 2.11, 2.09, 2.08, 2.08, 2.08, 2.08, 2.08, 2.07, 2.07, 2.06, 2.05, 2.03, 2, 1.97, 1.94, 1.91, 1.9, 1.88, 1.86, 1.84, 1.83, 1.82, 1.81, 1.78, 1.74, 1.7, 1.66, 1.65, 1.64, 1.64, 1.63, 1.61, 1.57, 1.54, 1.51, 1.51, 1.51, 1.52, 1.52, 1.54, 1.56, 1.58, 1.6, 1.6, 1.59, 1.58, 1.57, 1.54, 1.54, 1.54, 1.54, 1.55, 1.56, 1.56, 1.57, 1.58, 1.57, 1.57, 1.57, 1.58, 1.61, 1.63, 1.65, 1.68, 1.71, 1.73, 1.76, 1.78, 1.79, 1.8, 1.81, 1.83, 1.85, 1.88, 1.9, 1.91, 1.92, 1.92, 1.93, 1.93, 1.93, 1.92, 1.91, 1.92, 1.93, 1.93, 1.94, 1.95, 1.97, 1.99, 2.01, 2.01, 2, 1.99, 1.98, 1.97, 1.97, 1.96, 1.96, 1.96, 1.95, 1.95, 1.94, 1.95, 1.96, 1.97, 1.98, 1.97, 1.96, 1.94, 1.92, 1.9, 1.89, 1.87, 1.86, 1.84, 1.81, 1.79, 1.76, 1.74, 1.72, 1.71, 1.69, 1.66, 1.64, 1.61, 1.58, 1.56, 1.54, 1.52, 1.49, 1.48, 1.49, 1.49, 1.5, 1.52, 1.53, 1.55, 1.57, 1.57, 1.56, 1.55, 1.53, 1.51, 1.51, 1.52, 1.52, 1.53, 1.53, 1.54, 1.55, 1.55, 1.55, 1.55, 1.55, 1.56, 1.58, 1.61, 1.62, 1.65, 1.67, 1.7, 1.73, 1.74, 1.74, 1.75, 1.76, 1.77, 1.8, 1.82, 1.85, 1.86, 1.86, 1.86, 1.86, 1.86, 1.86, 1.85, 1.85, 1.85, 1.86, 1.86, 1.87, 1.88, 1.9, 1.91, 1.93, 1.93, 1.92, 1.91, 1.9, 1.9, 1.89, 1.89, 1.88, 1.88, 1.88, 1.88, 1.87, 1.88, 1.9, 1.91, 1.93, 1.92, 1.9, 1.88, 1.86, 1.85, 1.84, 1.83, 1.82, 1.8, 1.78, 1.76, 1.73, 1.71, 1.69, 1.68, 1.66, 1.64, 1.61, 1.58, 1.55, 1.52, 1.5, 1.48, 1.46, 1.46, 1.46, 1.47, 1.47, 1.49, 1.51, 1.53, 1.55, 1.54, 1.53, 1.52, 1.5, 1.48, 1.48, 1.49, 1.5, 1.51, 1.51, 1.52, 1.52, 1.52, 1.52, 1.52, 1.52, 1.54, 1.56, 1.58, 1.6, 1.62, 1.64, 1.66, 1.69, 1.7, 1.7, 1.7, 1.7, 1.72, 1.74, 1.77, 1.79, 1.8, 1.8, 1.8, 1.8, 1.8, 1.79, 1.79, 1.78, 1.78, 1.79, 1.79, 1.8, 1.81, 1.82, 1.83, 1.85, 1.85, 1.84, 1.83, 1.83, 1.82, 1.82, 1.81, 1.8, 1.8, 1.8, 1.8, 1.8, 1.82, 1.83, 1.85, 1.87, 1.86, 1.85, 1.83, 1.81, 1.8, 1.79, 1.79, 1.78, 1.76, 1.74, 1.73, 1.71, 1.69, 1.67, 1.65, 1.63, 1.61, 1.57, 1.54, 1.51, 1.49, 1.47, 1.45, 1.43, 1.43, 1.44, 1.44, 1.45, 1.46, 1.48, 1.5, 1.52, 1.52, 1.51, 1.49, 1.49, 1.52, 1.53, 1.53, 1.54, 1.55, 1.55, 1.56, 1.56, 1.57, 1.57, 1.57, 1.57, 1.58, 1.6, 1.62, 1.64, 1.66, 1.68, 1.7, 1.73, 1.73, 1.73, 1.74, 1.74, 1.76, 1.78, 1.8, 1.83, 1.84, 1.84, 1.84, 1.85, 1.84, 1.84, 1.83, 1.83, 1.83, 1.83, 1.84, 1.85, 1.86, 1.86, 1.88, 1.89, 1.89, 1.88, 1.87, 1.86, 1.86, 1.85, 1.85, 1.84, 1.84, 1.84, 1.84, 1.84, 1.85, 1.87, 1.88, 1.9, 1.89, 1.88, 1.86, 1.84, 1.83, 1.82, 1.82, 1.81, 1.79, 1.77, 1.75, 1.73, 1.71, 1.69, 1.68, 1.66, 1.63, 1.6, 1.57, 1.55, 1.52, 1.5, 1.48, 1.46, 1.46, 1.47, 1.48, 1.48, 1.5, 1.52, 1.54, 1.55, 1.56, 1.54, 1.53, 1.54, 1.57, 1.57, 1.58, 1.58, 1.59, 1.59, 1.6, 1.6, 1.61, 1.61, 1.61, 1.61, 1.62, 1.64, 1.66, 1.68, 1.7, 1.72, 1.74, 1.76, 1.76, 1.77, 1.77, 1.78, 1.79, 1.82, 1.84, 1.86, 1.88, 1.88, 1.88, 1.89, 1.89, 1.88, 1.88, 1.88, 1.88, 1.88, 1.88, 1.89, 1.9, 1.91, 1.92, 1.93, 1.93, 1.91, 1.91, 1.9, 1.89, 1.89, 1.89, 1.88, 1.88, 1.88, 1.88, 1.88, 1.89, 1.9, 1.92, 1.93, 1.92, 1.91, 1.89, 1.87, 1.86, 1.85, 1.85, 1.84, 1.82, 1.8, 1.78, 1.76, 1.74, 1.72, 1.7, 1.68, 1.66, 1.63, 1.61, 1.58, 1.56, 1.54, 1.52, 1.49, 1.49, 1.5, 1.51, 1.52, 1.53, 1.55, 1.57, 1.59, 1.59, 1.58, 1.58, 1.57, 1.58, 1.58, 1.58, 1.58, 1.59, 1.6, 1.62, 1.63, 1.64, 1.64, 1.63, 1.63, 1.64, 1.67, 1.7, 1.73, 1.74, 1.76, 1.77, 1.78, 1.79, 1.79, 1.78, 1.78, 1.8, 1.83, 1.86, 1.9, 1.91, 1.92, 1.92, 1.93, 1.93, 1.94, 1.94, 1.95, 1.96, 1.97, 1.98, 1.99, 1.99, 2.01, 2.01, 2.02, 2.02, 2.01, 2.01, 2, 2, 1.73, 1.74, 1.76, 1.77, 1.78, 1.79, 1.79, 1.78, 1.78, 1.8, 1.83, 1.86, 1.9, 1.91, 1.92, 1.92, 1.93, 1.93, 1.94, 1.94, 1.95, 1.96, 1.97, 1.98, 1.99, 1.99, 2.01, 2.01, 2.02, 2.02, 2.01, 2.01, 2, 2, 2.02, 2.01, 2.01, 2, 2, 1.73, 1.74, 1.76, 1.77, 1.78, 1.79, 1.79, 1.78, 1.78, 1.8, 1.83, 1.86, 1.9, 1.91, 1.92, 1.92, 1.93, 1.93, 1.94, 1.94, 1.95, 1.96, 1.97, 1.98, 1.99, 1.99, 2.01, 2.01, 2.02, 2.02, 2.01, 2.01 ] } ] } } } } } } }, "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Success!": { "value": "{\n \"status\": \"success\",\n \"count\": 1,\n \"type\": \"MassCalculation\",\n \"requestId\": \"7c9e7708-07d9-466f-879c-6ce8055b6eac\",\n \"results\": [\n {\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"scenarios\": {\n \"E-1\": {\n \"masterTariffId\": 522,\n \"tariffName\": \"Residential\",\n \"totalCost\": 249.13,\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"currency\": \"USD\",\n \"summary\": {\n \"subTotalCost\": 249.13,\n \"taxCost\": 0,\n \"totalCost\": 249.13,\n \"adjustedTotalCost\": 249.42,\n \"kWh\": 1000,\n \"kW\": 0\n },\n \"accuracy\": 1,\n \"items\": [\n {\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"quantityKey\": \"fixed\",\n \"rateAmount\": 0,\n \"itemQuantity\": 0,\n \"cost\": 0,\n \"chargeType\": \"FIXED_PRICE\"\n },\n {\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"quantityKey\": \"consumption\",\n \"rateAmount\": 0.24942061,\n \"itemQuantity\": 1000,\n \"cost\": 249.42061,\n \"chargeType\": \"CONSUMPTION_BASED\"\n }\n ],\n \"assumptions\": [\n {\n \"keyName\": \"tariffId\",\n \"dataType\": \"INTEGER\",\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"dataValue\": \"3258081\"\n },\n {\n \"keyName\": \"territoryId\",\n \"dataType\": \"INTEGER\",\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"dataValue\": \"3534\",\n \"accuracy\": 80\n },\n {\n \"keyName\": \"dailyMedicalAllowance\",\n \"displayName\": \"Daily Medical Allowance \",\n \"description\": \"Residential customers on a medical allowance get additional quantities of energy at the lowest (baseline) price. The medical allowance is a daily value. \",\n \"dataType\": \"DECIMAL\",\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"dataValue\": \"0\",\n \"accuracy\": 80\n },\n {\n \"keyName\": \"hasCAEnergySurchargeExemption\",\n \"displayName\": \"Has Energy Surcharge Exemption\",\n \"description\": \"Exemptions for CA Energy Surcharge apply to the following:\\r\\n1. Federal Agencies\\r\\n2. American National Red Cross facilities\\r\\n3. Energy consumed on Indian reservations\\r\\n4. Foreign consular employees\\r\\n5. Federal Credit Unions\",\n \"dataType\": \"BOOLEAN\",\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"dataValue\": \"false\",\n \"accuracy\": 80\n },\n {\n \"keyName\": \"smartMeterOptOut\",\n \"displayName\": \"Has Smart Meter Opt-Out\",\n \"description\": \"Customers who elect to opt-out of receiving a smart meter and choose to retain a non-smart meter, are subject to the Smart Meter Opt-Out fees.\\r\\n\\r\\nSmart Meter Opt-Out Customers are subject to one-time, up-front fee and a recurring monthly fee \",\n \"dataType\": \"BOOLEAN\",\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"dataValue\": \"false\",\n \"accuracy\": 80\n },\n {\n \"keyName\": \"isSmartRateCustomer\",\n \"displayName\": \"Is SmartRate Customer\",\n \"description\": \"The residential SmartRate program is a voluntary rate supplement to the customer's \\r\\notherwise applicable rate schedule (OAS).\\r\\nThe customer will be billed for all regular charges applicable under the customer's OAS. \\r\\nAdditional charges (based on usage during SmartDay High-Price Periods) and \\r\\nSmartRate credits will be determined according to the rates specified in this schedule. The customer must have a SmartMeter system to participate in the residential \\r\\nSmartRate program\",\n \"dataType\": \"BOOLEAN\",\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"dataValue\": \"false\",\n \"accuracy\": 80\n },\n {\n \"keyName\": \"utilityEmployee\",\n \"displayName\": \"Is Utility Employee\",\n \"description\": \"Applicable to domestic service utility employees \",\n \"dataType\": \"BOOLEAN\",\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"dataValue\": \"false\",\n \"accuracy\": 80\n },\n {\n \"keyName\": \"powerChargeIndifferenceAdjustmentVintageYear\",\n \"displayName\": \"Power Charge Indifference Adjustment Vintage Year \",\n \"description\": \"The adjustment (either a \\r\\ncharge or credit) is intended to ensure that customers that purchase electricity from \\r\\nnon-utility suppliers pay their share of cost for generation acquired prior to 2003\",\n \"dataType\": \"STRING\",\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"dataValue\": \"None\",\n \"accuracy\": 80\n },\n {\n \"keyName\": \"solarChoiceCustomerCategory\",\n \"displayName\": \"Solar Choice Customer Category\",\n \"description\": \"The customer is a solar choice customer taking service under Schedule E-GT. The customer will pay the applicable Program Charge based on the year service under this schedule was started. \",\n \"dataType\": \"STRING\",\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"dataValue\": \"None\",\n \"accuracy\": 80\n }\n ],\n \"calculatedCostId\": \"c792e7eb-1f2a-40e2-845a-40a00c2c7370\"\n },\n \"E-6-TOU\": {\n \"masterTariffId\": 525,\n \"tariffName\": \"Residential - Time of Use\",\n \"totalCost\": 339.42,\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"currency\": \"USD\",\n \"summary\": {\n \"subTotalCost\": 339.42,\n \"taxCost\": 0,\n \"totalCost\": 339.42,\n \"adjustedTotalCost\": 339.71,\n \"kWh\": 1000,\n \"kW\": 0\n },\n \"accuracy\": 1,\n \"items\": [\n {\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"quantityKey\": \"fixed\",\n \"rateAmount\": 0,\n \"itemQuantity\": 0,\n \"cost\": 0,\n \"chargeType\": \"FIXED_PRICE\"\n },\n {\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"quantityKey\": \"consumption\",\n \"rateAmount\": 0.33971225,\n \"itemQuantity\": 1000,\n \"cost\": 339.7122546,\n \"chargeType\": \"CONSUMPTION_BASED\"\n }\n ],\n \"assumptions\": [],\n \"calculatedCostId\": \"9e9e1957-ac6c-4647-9027-dcc61284181b\"\n },\n \"E-6-TOU-SmartRate\": {\n \"masterTariffId\": 525,\n \"tariffName\": \"Residential - Time of Use\",\n \"totalCost\": 309.96,\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"currency\": \"USD\",\n \"summary\": {\n \"subTotalCost\": 309.96,\n \"taxCost\": 0,\n \"totalCost\": 309.96,\n \"adjustedTotalCost\": 310.25,\n \"kWh\": 1000,\n \"kW\": 0\n },\n \"accuracy\": 100,\n \"items\": [\n {\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"quantityKey\": \"fixed\",\n \"rateAmount\": 0,\n \"itemQuantity\": 0,\n \"cost\": 0,\n \"chargeType\": \"FIXED_PRICE\"\n },\n {\n \"fromDateTime\": \"2016-07-13T00:00:00-07:00\",\n \"toDateTime\": \"2016-08-11T00:00:00-07:00\",\n \"quantityKey\": \"consumption\",\n \"rateAmount\": 0.3102515,\n \"itemQuantity\": 1000,\n \"cost\": 310.2515046,\n \"chargeType\": \"CONSUMPTION_BASED\"\n }\n ],\n \"assumptions\": [],\n \"calculatedCostId\": \"281a791b-ba04-4748-9a43-f46aa008bd4c\"\n }\n }\n }\n ]\n}" } }, "schema": { "type": "object", "properties": { "status": { "type": "string", "example": "success" }, "count": { "type": "integer", "example": 1, "default": 0 }, "type": { "type": "string", "example": "MassCalculation" }, "requestId": { "type": "string", "example": "7c9e7708-07d9-466f-879c-6ce8055b6eac" }, "results": { "type": "array", "items": { "type": "object", "properties": { "fromDateTime": { "type": "string", "example": "2016-07-13T00:00:00-07:00" }, "toDateTime": { "type": "string", "example": "2016-08-11T00:00:00-07:00" }, "scenarios": { "type": "object", "properties": { "E-1": { "type": "object", "properties": { "masterTariffId": { "type": "integer", "example": 522, "default": 0 }, "tariffName": { "type": "string", "example": "Residential" }, "totalCost": { "type": "number", "example": 249.13, "default": 0 }, "fromDateTime": { "type": "string", "example": "2016-07-13T00:00:00-07:00" }, "toDateTime": { "type": "string", "example": "2016-08-11T00:00:00-07:00" }, "currency": { "type": "string", "example": "USD" }, "summary": { "type": "object", "properties": { "subTotalCost": { "type": "number", "example": 249.13, "default": 0 }, "taxCost": { "type": "integer", "example": 0, "default": 0 }, "totalCost": { "type": "number", "example": 249.13, "default": 0 }, "adjustedTotalCost": { "type": "number", "example": 249.42, "default": 0 }, "kWh": { "type": "integer", "example": 1000, "default": 0 }, "kW": { "type": "integer", "example": 0, "default": 0 } } }, "accuracy": { "type": "integer", "example": 1, "default": 0 }, "items": { "type": "array", "items": { "type": "object", "properties": { "fromDateTime": { "type": "string", "example": "2016-07-13T00:00:00-07:00" }, "toDateTime": { "type": "string", "example": "2016-08-11T00:00:00-07:00" }, "quantityKey": { "type": "string", "example": "fixed" }, "rateAmount": { "type": "integer", "example": 0, "default": 0 }, "itemQuantity": { "type": "integer", "example": 0, "default": 0 }, "cost": { "type": "integer", "example": 0, "default": 0 }, "chargeType": { "type": "string", "example": "FIXED_PRICE" } } } }, "assumptions": { "type": "array", "items": { "type": "object", "properties": { "keyName": { "type": "string", "example": "tariffId" }, "dataType": { "type": "string", "example": "INTEGER" }, "fromDateTime": { "type": "string", "example": "2016-07-13T00:00:00-07:00" }, "toDateTime": { "type": "string", "example": "2016-08-11T00:00:00-07:00" }, "dataValue": { "type": "string", "example": "3258081" } } } }, "calculatedCostId": { "type": "string", "example": "c792e7eb-1f2a-40e2-845a-40a00c2c7370" } } }, "E-6-TOU": { "type": "object", "properties": { "masterTariffId": { "type": "integer", "example": 525, "default": 0 }, "tariffName": { "type": "string", "example": "Residential - Time of Use" }, "totalCost": { "type": "number", "example": 339.42, "default": 0 }, "fromDateTime": { "type": "string", "example": "2016-07-13T00:00:00-07:00" }, "toDateTime": { "type": "string", "example": "2016-08-11T00:00:00-07:00" }, "currency": { "type": "string", "example": "USD" }, "summary": { "type": "object", "properties": { "subTotalCost": { "type": "number", "example": 339.42, "default": 0 }, "taxCost": { "type": "integer", "example": 0, "default": 0 }, "totalCost": { "type": "number", "example": 339.42, "default": 0 }, "adjustedTotalCost": { "type": "number", "example": 339.71, "default": 0 }, "kWh": { "type": "integer", "example": 1000, "default": 0 }, "kW": { "type": "integer", "example": 0, "default": 0 } } }, "accuracy": { "type": "integer", "example": 1, "default": 0 }, "items": { "type": "array", "items": { "type": "object", "properties": { "fromDateTime": { "type": "string", "example": "2016-07-13T00:00:00-07:00" }, "toDateTime": { "type": "string", "example": "2016-08-11T00:00:00-07:00" }, "quantityKey": { "type": "string", "example": "fixed" }, "rateAmount": { "type": "integer", "example": 0, "default": 0 }, "itemQuantity": { "type": "integer", "example": 0, "default": 0 }, "cost": { "type": "integer", "example": 0, "default": 0 }, "chargeType": { "type": "string", "example": "FIXED_PRICE" } } } }, "assumptions": { "type": "array" }, "calculatedCostId": { "type": "string", "example": "9e9e1957-ac6c-4647-9027-dcc61284181b" } } }, "E-6-TOU-SmartRate": { "type": "object", "properties": { "masterTariffId": { "type": "integer", "example": 525, "default": 0 }, "tariffName": { "type": "string", "example": "Residential - Time of Use" }, "totalCost": { "type": "number", "example": 309.96, "default": 0 }, "fromDateTime": { "type": "string", "example": "2016-07-13T00:00:00-07:00" }, "toDateTime": { "type": "string", "example": "2016-08-11T00:00:00-07:00" }, "currency": { "type": "string", "example": "USD" }, "summary": { "type": "object", "properties": { "subTotalCost": { "type": "number", "example": 309.96, "default": 0 }, "taxCost": { "type": "integer", "example": 0, "default": 0 }, "totalCost": { "type": "number", "example": 309.96, "default": 0 }, "adjustedTotalCost": { "type": "number", "example": 310.25, "default": 0 }, "kWh": { "type": "integer", "example": 1000, "default": 0 }, "kW": { "type": "integer", "example": 0, "default": 0 } } }, "accuracy": { "type": "integer", "example": 100, "default": 0 }, "items": { "type": "array", "items": { "type": "object", "properties": { "fromDateTime": { "type": "string", "example": "2016-07-13T00:00:00-07:00" }, "toDateTime": { "type": "string", "example": "2016-08-11T00:00:00-07:00" }, "quantityKey": { "type": "string", "example": "fixed" }, "rateAmount": { "type": "integer", "example": 0, "default": 0 }, "itemQuantity": { "type": "integer", "example": 0, "default": 0 }, "cost": { "type": "integer", "example": 0, "default": 0 }, "chargeType": { "type": "string", "example": "FIXED_PRICE" } } } }, "assumptions": { "type": "array" }, "calculatedCostId": { "type": "string", "example": "281a791b-ba04-4748-9a43-f46aa008bd4c" } } } } } } } } } } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/v1/prices/smart": { "get": { "summary": "Get Smart Price", "description": "Retrieve marginal pricing for a location or tariff over a specified time window.", "operationId": "smart-price-api", "parameters": [ { "name": "fromDateTime", "in": "query", "description": "Start date and time to get prices for. (Optional, Defaults to \"now\".)", "schema": { "type": "string", "format": "date" } }, { "name": "toDateTime", "in": "query", "description": "End date and time to get prices for. (Optional, Defaults to fromDateTime plus 3 days.)", "schema": { "type": "string", "format": "date" } }, { "name": "masterTariffId", "in": "query", "description": "You can use this rather than a location (addressString or zipCode) and customer class. We will use the tariffs information to return its price, or in the case of a smart price request, its applicable Smart Tariffs price (Optional)", "schema": { "type": "integer", "format": "int64" } }, { "name": "zipCode or postCode", "in": "query", "description": "Recommended way to pass a location. Make sure it\u2019s just the ZIP code or post code though. (Optional)", "schema": { "type": "string" } }, { "name": "country", "in": "query", "description": "Use when passing in a postCode or zipCode. Set to the ISO Country Code you require (Optional)", "schema": { "type": "string" } }, { "name": "addressString", "in": "query", "description": "An alternate to using postCode or zipCode and can be an address of any kind. Ideally this will contain a ZIP code or post code. (Optional)", "schema": { "type": "string" } }, { "name": "customerClass", "in": "query", "description": "Denotes the type of customer and is used to determine the appropriate tariff or smart tariff. (Optional) Defaults to \"RESIDENTIAL\"", "schema": { "type": "string" } }, { "name": "endUse", "in": "query", "description": "Primarily used for smart tariffs. You can use this denote what end use (e.g. appliance, EV, whole home, thermostat etc) the price signal is for. (Optional). You can get the actual values that you can pass in from the property keys residentialEndUse and commercialEndUse", "schema": { "type": "string" } }, { "name": "groupBy", "in": "query", "description": "Use to specify the intervals you want the price changes back in. (Optional) When not passed in you get a change record for each actual change in price. Passing in \"HOUR\" will give hourly prices, even if the price doesn\u2019t change.", "schema": { "type": "string" } }, { "name": "territoryId", "in": "query", "description": "Rarely needed. This is the for when a tariff has different rates for different territories (so its not for a utility companies service area territory). Only needed when you want to override the default territory. (Optional)", "schema": { "type": "integer", "format": "int64" } }, { "name": "consumptionAmount", "in": "query", "description": "A monthly consumption in kWh. This is used for banded consumption to determine which pricing to use for the request. By default, the rate amount calculation assumes the highest banded level of consumption. (Optional)", "schema": { "type": "number", "format": "double" } }, { "name": "demandAmount", "in": "query", "description": "A monthly demand in kW. This is used for banded demand to determine which pricing to use for the request. By default, the rate amount calculation assumes the highest banded level of demand. (Optional)", "schema": { "type": "number", "format": "double" } } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/tariffs": { "get": { "summary": "List Tariffs", "description": "Return tariffs matching the provided filters.", "operationId": "get-tariff", "parameters": [ { "name": "lseId", "in": "query", "description": "Filter tariffs for a specific LSE", "schema": { "type": "integer", "format": "int64" } }, { "name": "masterTariffId", "in": "query", "description": "If specified, all versions of a tariff belonging to the master tariff Id are returned.", "schema": { "type": "integer", "format": "int64" } }, { "name": "effectiveOn", "in": "query", "description": "Only tariffs that are effective on this date", "schema": { "type": "string", "format": "date" } }, { "name": "openOn", "in": "query", "description": "Only tariffs that were open (i.e. were not closed to new customers) on this date.", "schema": { "type": "string", "format": "date" } }, { "name": "isActive", "in": "query", "description": "Only the current, active tariff version for the LSE or master tariff Id.", "schema": { "type": "boolean" } }, { "name": "fromDateTime", "in": "query", "description": "Only include tariffs that are effective on or after this date", "schema": { "type": "string", "format": "date" } }, { "name": "toDateTime", "in": "query", "description": "Only include tariffs that are effective on or before this date", "schema": { "type": "string", "format": "date" } }, { "name": "customerClasses", "in": "query", "description": "Comma separated string that indicates the customer classes to include. Choices are: RESIDENTIAL, GENERAL, SPECIAL_USE", "schema": { "type": "string" } }, { "name": "chargeTypes", "in": "query", "description": "Comma separated string that indicates the charge types to include. Choices are: FIXED_PRICE, CONSUMPTION_BASED, DEMAND_BASED, QUANTITY, MINIMUM, TAX, NET_EXCESS_GENERATION", "schema": { "type": "string" } }, { "name": "tariffTypes", "in": "query", "description": "Comma separated string that indicates the tariff types to include. Choices are: DEFAULT, ALTERNATIVE, OPTIONAL_EXTRA, RIDER", "schema": { "type": "string" } }, { "name": "serviceTypes", "in": "query", "description": "Comma separated string that indicates the service types to include. Choices are: ELECTRICITY, SOLAR_PV, \u2018GAS\u2019 (default is all serviceTypes)", "schema": { "type": "string" } }, { "name": "privacyFlags", "in": "query", "description": "Comma separated string that indicates the privacy flags types to include. Only applicable if you publish private tariffs. Choices are: PUBLIC, UNLISTED, PRIVATE", "schema": { "type": "string" } }, { "name": "zipCode", "in": "query", "description": "(Optional but Recommended) Use this to return just the Tariffs that are for this given location. Most Tariffs apply for a regional, not national, geography.", "schema": { "type": "string" } }, { "name": "postCode", "in": "query", "description": "Alias for zipCode. You can use either.", "schema": { "type": "string" } }, { "name": "lat", "in": "query", "description": "(Optional) Represents the latitude of a geographical location. This should be paired with lng when not supplying a zip code or address.", "schema": { "type": "number", "format": "float" } }, { "name": "lng", "in": "query", "description": "(Optional) Represents the longitude of a geographical location. This should be paired with lat when not supplying a zip code or address.", "schema": { "type": "number", "format": "float" } }, { "name": "addressString", "in": "query", "description": "An alternative to using zipCode. Use this if you do not have the address parsed out in your app, but instead have a long string. For the best results this string will contain a zipcode or post code. If you do have the address split out it is better to use postCode.", "schema": { "type": "string" } }, { "name": "riderId", "in": "query", "description": "When set to the masterTariffId of a Rider, this will return all of the tariffs that the rider is used on", "schema": { "type": "integer", "format": "int64" } }, { "name": "populateProperties", "in": "query", "description": "Populates the properties for the returned tariffs", "schema": { "type": "boolean" } }, { "name": "populateRates", "in": "query", "description": "Populates the rate details for the returned tariffs", "schema": { "type": "boolean" } }, { "name": "populateDocuments", "in": "query", "description": "Populates the document links for the returned tariffs", "schema": { "type": "boolean" } }, { "name": "consumption", "in": "query", "description": "Return tariffs which are eligible for this consumption amount", "schema": { "type": "number", "format": "double" } }, { "name": "demand", "in": "query", "description": "Return tariffs which are eligible for this demand amount", "schema": { "type": "number", "format": "double" } }, { "name": "hasNetMetering", "in": "query", "description": "Return tariffs which have or do not have any net metered tariff rates", "schema": { "type": "boolean" } }, { "name": "hasTimeOfUseRates", "in": "query", "description": "Return tariffs which have or do not have any time-of-use rates", "schema": { "type": "boolean" } }, { "name": "hasTieredRates", "in": "query", "description": "Return tariffs which have or do not have any tiered rates", "schema": { "type": "boolean" } }, { "name": "hasContractedRates", "in": "query", "description": "Return tariffs which have or do not have any contracted rates", "schema": { "type": "boolean" } }, { "name": "bundleRates", "in": "query", "description": "When true (false by default) the rates are summarized (bundled). Note that this only works for tariffs with a customerClass of RESIDENTIAL.", "schema": { "type": "boolean" } }, { "name": "applicableRatesOnly", "in": "query", "description": "When true (false by default) rate applicability criteria will be applied to the rates. You\u2019ll only get back rates that match the requests rate applicability values, or the default rate applicability value as set on the tariff.", "schema": { "type": "boolean" } }, { "name": "filterRiderRates", "in": "query", "description": "Used in concert with populateRates = true, when filterRiderRates = true (false by default) rider rates will not be returned. However pointers to the riders will be returned. This is used primarily when using and existing tariff\u2019s structure when creating private tariffs", "schema": { "type": "string" } }, { "name": "filterByApplicability", "in": "query", "description": "applies a rule that results should also be filtered by applicability (i.e., additional eligibility properties).", "schema": { "type": "boolean" } }, { "name": "applicabilityFilters[solarPvEligible]", "in": "query", "description": "which is the specific applicability criteria to filter by", "schema": { "type": "boolean" } }, { "name": "fields", "in": "query", "description": "ext to return extended fields", "schema": { "type": "string" } } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/tariffs/{masterTariffId}/history": { "get": { "summary": "Get Tariff History", "description": "Return a complete history of tariff revisions for a given masterTariffId.", "operationId": "get-tariff-history", "parameters": [ { "name": "masterTariffId", "in": "path", "description": "Unique Arcadia ID that persists across all revisions of this tariff", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/lses": { "get": { "summary": "List LSEs", "description": "Return a full or filtered list of Load Serving Entities (LSEs).", "operationId": "get-lses", "parameters": [ { "name": "searchOn", "in": "query", "description": "This is from the standard searching and sorting parameters. You can search within one or more of the attributes within the LSE object (see above).", "schema": { "type": "string" } }, { "name": "zipCode", "in": "query", "description": "Zip or post code where you would like to see a list of LSEs for (e.g. 5 digit ZIP code for USA). Most countries have regional, not national, Utility Service Areas. When populating this field you should also populate country too. (Recommended)", "schema": { "type": "string" } }, { "name": "postCode", "in": "query", "description": "Alias for zipCode, you can use either.", "schema": { "type": "string" } }, { "name": "country", "in": "query", "description": "Use an ISO Country Code when passing in a zipCode or postCode, and set it to the ISO Country Code of your zipCode or postCode since some countries use the same format", "schema": { "type": "string" } }, { "name": "ownerships", "in": "query", "description": "Filter results by the type of ownership structure for the LSE. Values include \"INVESTOR\", \"COOP\", \"MUNI\", but see ownership field above for complete list.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serviceTypes", "in": "query", "description": "Filter results to LSEs that just offer this service type to a customer class. Valid values include \"ELECTRICITY\" and \"SOLAR_PV\"", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "residentialServiceTypes", "in": "query", "description": "Filter results to LSEs that just offer this service type to their residential customers. Valid values include \"ELECTRICITY\" and \"SOLAR_PV\"", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "commercialServiceTypes", "in": "query", "description": "Filter results to LSEs that just offer this service type to their commercial (business) customers. Valid values include \"ELECTRICITY\" and \"SOLAR_PV\"", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "industrialServiceTypes", "in": "query", "description": "Filter results to LSEs that just offer this service type to their industrial customers. Valid values include \"ELECTRICITY\" and \"SOLAR_PV\"", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "transportationServiceTypes", "in": "query", "description": "Filter results to LSEs that just offer this service type to their transportation customers. Valid values include \"ELECTRICITY\" and \"SOLAR_PV\" (Optional).", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false, "x-readme": { "code-samples": [ { "language": "text", "code": "GET /rest/public/lses?zipCode=94105&country=US&residentialServiceTypes=ELECTRICITY&fields=ext", "name": "Example 1 : Find residential electricity utilities for a zipcode" }, { "language": "text", "code": "GET /rest/public/lses?&search=Pacific", "name": "Example 2 : Find based on wildcard" }, { "language": "text", "code": "-- Resource URI: GET /rest/public/lses/{lseId}\n\nGET /rest/public/lses/2756\n" } ], "samples-languages": [ "text" ] } } }, "/rest/public/lses/{lseId}": { "get": { "summary": "Get LSE by ID", "description": "Return one Load Serving Entity (LSE) by lseId.", "operationId": "get-one-lse", "parameters": [ { "name": "lseId", "in": "path", "description": "Unique Arcadia ID (primary key) for each LSE", "schema": { "type": "integer", "format": "int64" }, "required": true } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/territories": { "get": { "summary": "List Territories", "description": "Return a full or filtered list of Territories.", "operationId": "territory-1", "parameters": [ { "name": "zipCode", "in": "query", "description": "Filters the result to include only territories that this ZIP code is a part of.", "schema": { "type": "string" } }, { "name": "postCode", "in": "query", "description": "Alias for zipCode, you can use either.", "schema": { "type": "string" } }, { "name": "country", "in": "query", "description": "Recommended when passing in zipCode or postCode. We default this to US when zipCode or postCode is populated.", "schema": { "type": "string" } }, { "name": "addressString", "in": "query", "description": "An address of any kind (e.g. San Francisco, CA, 94105, USA). Ideally this will contain a zipcode or post code, plus a country. Use this if you do not have the address parsed out in your app. If you do, its better to use postCode and country", "schema": { "type": "string" } }, { "name": "address", "in": "query", "description": "Alias for addressString, you can use either.", "schema": { "type": "string" } }, { "name": "lat", "in": "query", "description": "(Optional) Represents the latitude of a geographical location. This should be paired with lng when not supplying a zip code or address.", "schema": { "type": "number", "format": "float" } }, { "name": "lng", "in": "query", "description": "(Optional) Represents the longitude of a geographical location. This should be paired with lat when not supplying a zip code or address.", "schema": { "type": "number", "format": "float" } }, { "name": "lseId", "in": "query", "description": "Filters the result set to only include territories within this LSE ID", "schema": { "type": "integer", "format": "int32" } }, { "name": "populateItems", "in": "query", "description": "If true, this returns a list of territory items for each territory in the result set.", "schema": { "type": "boolean", "default": false } }, { "name": "masterTariffId", "in": "query", "description": "For tariffs with prices varying by geographic location, this will return the list of those territories covered by this tariff. 3% of all tariffs have territory based pricing and those are typically in CA, NY and MA. For the 97% of tariffs that do not have territory based pricing, the result set will be empty.", "schema": { "type": "integer", "format": "int32" } }, { "name": "usageTypes", "in": "query", "description": "Result will include territories of the specified usageType. If not set the results will be limited to those of usage type \"SERVICE\" or \"TARIFF\".", "schema": { "type": "string" } }, { "name": "populateLses", "in": "query", "description": "If true, this returns a list of territory LSEs which are all the LSEs providing service in this territory.", "schema": { "type": "boolean", "default": false } }, { "name": "containsItemType", "in": "query", "description": "Filters by the type of the territory items in each territory and must appear with containsItemValue. Possible values are: STATE, COUNTY, CITY, and ZIPCODE.", "schema": { "type": "string" } }, { "name": "containsItemValue", "in": "query", "description": "Filters by the value of the territory items in each territory and must appear with containsItemType.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/territories/{territoryId}": { "get": { "summary": "Get Territory by ID", "description": "Return a Territory with the corresponding territoryId.", "operationId": "get-one-territory", "parameters": [ { "name": "territoryId", "in": "path", "description": "Unique Arcadia ID (primary key) for each territory", "schema": { "type": "integer", "format": "int32" }, "required": true } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/seasons": { "get": { "summary": "List Season Groups", "description": "Return a list of season groups for a given LSE.", "operationId": "get-season", "parameters": [ { "name": "lseId", "in": "query", "description": "The LSE ID who\u2019s seasons you want.", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/timeofuses/{lseId}/{touGroupId}": { "get": { "summary": "Get TOU Group", "description": "Return a Time of Use group by lseId and touGroupId.", "operationId": "get-tou-group", "parameters": [ { "name": "lseId", "in": "query", "description": "Get a TOU group for a specific LSE", "required": true, "schema": { "type": "integer", "format": "int64" } }, { "name": "touGroupId", "in": "query", "description": "Get a TOU group by its ID (required when LSE ID is provided)", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/timeofuses/{lseId}/{touGroupId}/intervals": { "get": { "summary": "List TOU Group Intervals", "description": "Return intervals for a Time of Use group by lseId and touGroupId.", "operationId": "get-tou-group-intervals", "parameters": [ { "name": "lseId", "in": "query", "description": "Get a TOU group for a specific LSE", "required": true, "schema": { "type": "integer", "format": "int64" } }, { "name": "touGroupId", "in": "query", "description": "Get a TOU group by its ID (required when LSE ID is provided)", "required": true, "schema": { "type": "integer", "format": "int64" } } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/timeofuses/{touId}": { "get": { "summary": "Get TOU by ID", "description": "Return a single Time of Use definition by touId.", "operationId": "get-tou", "parameters": [ { "name": "touId", "in": "path", "description": "Unique Arcadia ID (primary key) for each time of use. This is unique across all LSEs.", "schema": { "type": "integer", "format": "int64" }, "required": true } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/timeofuses/intervals/{touId}": { "get": { "summary": "List TOU Intervals", "description": "Return intervals for a specific Time of Use definition by touId.", "operationId": "get-tou-intervals", "parameters": [ { "name": "touId", "in": "path", "description": "Unique Arcadia ID (primary key) for each time of use. This is unique across all LSEs.", "schema": { "type": "integer", "format": "int64" }, "required": true } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/timeofuses": { "post": { "summary": "Create Private TOU Definition", "description": "Creating a private TOU definition requires special API permissions. Contact platformsupport@arcadia.com to request access.", "operationId": "tou-api-copy-3", "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/calendars/": { "get": { "summary": "List Calendars", "description": "Return full or filtered calendar definitions for a utility, including holiday, billing, and pricing period calendars.", "operationId": "get-calendars", "parameters": [ { "name": "lseId", "in": "query", "description": "Load serving entity id", "schema": { "type": "integer", "format": "int64" } }, { "name": "calendarType", "in": "query", "description": "Type of calendar. Can be either HOLIDAY, BILLING, or PRICING_PERIOD (Optional).", "schema": { "type": "string" } }, { "name": "fromDateTime", "in": "query", "description": "from date (Optional)", "schema": { "type": "string", "format": "date" } }, { "name": "toDateTime", "in": "query", "schema": { "type": "string", "format": "date", "default": "to date (Optional)" } } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/calendars/{calendarId}": { "get": { "summary": "Get Calendar by ID", "description": "Return one Calendar and its event definitions by calendarId.", "operationId": "get-one-calendar", "parameters": [ { "name": "calendarId", "in": "path", "description": "A unique ID for each calendar", "schema": { "type": "integer", "format": "int64" }, "required": true }, { "name": "fromDateTime", "in": "query", "description": "from date (Optional)", "schema": { "type": "string", "format": "date" } }, { "name": "toDateTime", "in": "query", "description": "from date (Optional)", "schema": { "type": "string", "format": "date" } } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/calendars/dates": { "get": { "summary": "List Calendar Dates", "description": "Return actual dates for calendar events, filtered by calendar, utility, locale, date range, event type, or date definition type.", "operationId": "get-calendar-dates", "parameters": [ { "name": "calendarId", "in": "query", "description": "Optionally return only dates for a given calendar.", "schema": { "type": "integer", "format": "int64" } }, { "name": "lseId", "in": "query", "description": "Optional filter for a given utility. Since calendars belong to LSEs, you don\u2019t need to send this if sending calendarId.", "schema": { "type": "integer", "format": "int64" } }, { "name": "locale", "in": "query", "description": "Optional ISO country code of the locale you are interested in (e.g. US).", "schema": { "type": "string" } }, { "name": "fromDateTime", "in": "query", "description": "Event dates on or after this date (Optional).", "schema": { "type": "string", "format": "date" } }, { "name": "toDateTime", "in": "query", "description": "Event dates on or before this date (Optional).", "schema": { "type": "string", "format": "date" } }, { "name": "calendarEventTypes", "in": "query", "description": "Comma separated string that indicates the calendar event types to include. Choices are: HOLIDAY, BILLING, PRICING_PERIOD (Optional).", "schema": { "type": "string" } }, { "name": "dateDefinitionTypes", "in": "query", "description": "Comma separated string that indicates the date definition types to include. Choices are: FIXED_DATE, MANUAL, FLOATING_DATE, EASTER_DATE (Optional).", "schema": { "type": "string" } } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/properties": { "get": { "summary": "List Properties", "description": "Return a list of Property Keys and sub-property keys based on search criteria.", "operationId": "properties-api", "parameters": [ { "name": "dataType", "in": "query", "description": "Filters the result set to only include properties that have the specified dataType", "schema": { "type": "string" } }, { "name": "family", "in": "query", "description": "Filters the result by the family. Examples of family include \"billing\", \"metering\" and \"connection\". Look at the properties to see more examples of the family", "schema": { "type": "string" } }, { "name": "keySpace", "in": "query", "description": "Filters the result by the key space. Possible values include \"electricity\" and \"solarPv\"", "schema": { "type": "string" } }, { "name": "entityId", "in": "query", "description": "Filters the result set to only include properties that belong to this entityId. entityType must also be specified, otherwise this is ignored", "schema": { "type": "integer", "format": "int64" } }, { "name": "entityType", "in": "query", "description": "Filters the result set to only include properties that belong to this entityType. entityId must also be specified, otherwise this is ignored. Currently the only supported value is \"LSE\"", "schema": { "type": "string" } }, { "name": "excludeGlobal", "in": "query", "description": "Filters the result set to only include entity specific properties.", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/properties/{keyName}": { "get": { "summary": "Get Property by Key", "description": "Return one Property Key by keyName.", "operationId": "get-one-property", "parameters": [ { "name": "keyName", "in": "path", "description": "The unique name for this property.", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/GET /rest/v1/utilitytaxes": { "get": { "summary": "Get Utility Taxes", "description": "Retrieve a list of Utility Taxes", "operationId": "get-utility-taxes", "parameters": [ { "name": "territoryId", "in": "query", "description": "Arcadia ID of the Territory covered by the utility tax.", "schema": { "type": "integer", "format": "int32" } }, { "name": "customerClasses", "in": "query", "description": "A customer class specification can be one or more of RESIDENTIAL, GENERAL, or SPECIAL_USE", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "fromDateTime", "in": "query", "description": "The date when the utility tax became or will become effective.", "schema": { "type": "string", "format": "date" } }, { "name": "toDateTime", "in": "query", "description": "The date when the utility tax expires.", "schema": { "type": "string", "format": "date" } }, { "name": "lseId", "in": "query", "description": "Arcadia ID of the utility associated with one or more utility taxes.", "schema": { "type": "integer", "format": "int32" } }, { "name": "searchOn", "in": "query", "description": "A comma separated list of fields to search on. Currently one of utilityTaxId, taxName, or location", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "search", "in": "query", "description": "The value to search for in the utility taxes.", "schema": { "type": "string" } }, { "name": "sortOn", "in": "query", "description": "A comma separated list off fields to search on. Currently one of utilityTaxId, taxName, rateAmountElectricity, rateAmountGas, fromDateTime or toDateTime.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "sortOrder", "in": "query", "description": "ASC for ascending or DESC for descending.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/v1/utilitytaxes/{utilityTaxId}": { "get": { "summary": "Get One Utility Tax", "description": "", "operationId": "get-one-utility-tax", "parameters": [ { "name": "utilityTaxId", "in": "path", "description": "Arcadia ID of the Utility Tax", "schema": { "type": "integer", "format": "int32" }, "required": true } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/properties/{keyName}/lookups": { "get": { "summary": "List Lookup Values", "description": "Return lookup table values for a LOOKUP Property Key.", "operationId": "get-lookups", "parameters": [ { "name": "keyName", "in": "query", "description": "Property key name", "schema": { "type": "string" } }, { "name": "subKeyName", "in": "query", "description": "Subproperty key name", "schema": { "type": "string" } }, { "name": "fromDateTime", "in": "query", "description": "Date range - from value", "schema": { "type": "string", "format": "date" } }, { "name": "toDateTime", "in": "query", "description": "Date range - to value", "schema": { "type": "string", "format": "date" } }, { "name": "keyName", "in": "path", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/properties/{propertyKey}/stats": { "get": { "summary": "Get Lookup Stats", "description": "Return summary statistics for a LOOKUP Property Key.", "operationId": "lookup-stats-api", "parameters": [ { "name": "propertyKey", "in": "path", "description": "Property key name.", "schema": { "type": "string", "default": "hourlyPricingRealTimeERCOT" }, "required": true } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } } } }, "/rest/v1/typicals/baselines/best": { "get": { "summary": "Get Best Typical Baseline", "description": "Retrieve the baseline that best fits the provided location, building type, and optional building details.", "operationId": "typical-baseline-api", "parameters": [ { "name": "zipCode", "in": "query", "description": "The zip code or postal code we will use to look up local buildings.", "schema": { "type": "string" } }, { "name": "country", "in": "query", "description": "The ISO country code. Use in conjunction with zipCode | postCode parameters.", "schema": { "type": "string" } }, { "name": "addressString", "in": "query", "description": "The address string we will geo-tag (isolate latitude & longitude) to look up local buildings.", "schema": { "type": "string" } }, { "name": "lat", "in": "query", "description": "Latitude to look up. Use in concert with lng if you choose this method.", "schema": { "type": "number", "format": "double" } }, { "name": "lng", "in": "query", "description": "Longitude to look up. Use in concert with lat if you choose this method.", "schema": { "type": "number", "format": "double" } }, { "name": "customerClass", "in": "query", "description": "The class of customer, which is one of RESIDENTIAL, GENERAL, or SPECIAL_USE.", "schema": { "type": "string" } }, { "name": "buildingType", "in": "query", "description": "The building type that best describes this building. Use RESIDENTIAL for a residential default or one of the more explicit choices returned from the property key buildingTypeResidential or buildingTypeCommercial.", "schema": { "type": "string" } }, { "name": "serviceType", "in": "query", "description": "This is currently limited to ELECTRICITY.", "schema": { "type": "string" } }, { "name": "buildingArea", "in": "query", "description": "If you have the site footprint, pass in size of the building in square feet. If this is not passed directly we will default to the average for the region and buildingType.", "schema": { "type": "integer", "format": "int64" } }, { "name": "buildingVintage", "in": "query", "description": "The construction year of the building, options include Pre1980, Post1980 (1980 - 2003), or New (2003+).", "schema": { "type": "string" } }, { "name": "excludeMeasures", "in": "query", "description": "Setting to true will omit the measures (makes the call faster if you don't need this data). Defaults to false.", "schema": { "type": "boolean" } }, { "name": "measuresUnit", "in": "query", "description": "By default, we will return total usage per interval. If you ask for intensity we'll convert this into energy intensity (e.g. per square foot or meter). Your final choice is proportion which means that each value in the year will add up to 100.", "schema": { "type": "string" } }, { "name": "groupBy", "in": "query", "description": "When supplied the response will roll up measures into this period. Possible values are MONTH, DAY, YEAR.", "schema": { "type": "string" } }, { "name": "sizingKeyName", "in": "query", "description": "Pass this parameter when you want to adjust the size of the load. Currently supports loadSize. Used in concert with sizingDataValue and sizingUnit.", "schema": { "type": "string" } }, { "name": "sizingDataValue", "in": "query", "description": "This should be set to the quantity to size (e.g. 12000 for 12,000 kWh). (See sizingKeyName above)", "schema": { "type": "integer", "format": "int32" } }, { "name": "sizingUnit", "in": "query", "description": "This denotes the unit of measure for the accompanying sizingDataValue. Currently, we support only kWh. (See sizingKeyName above)", "schema": { "type": "string" } }, { "name": "intervalFromDateTime", "in": "query", "description": "Pass this parameter when you want the \"intervals\" to be populated from a certain date (e.g. 2024-01-01).", "schema": { "type": "string", "format": "date" } }, { "name": "intervalToDateTime", "in": "query", "description": "Pass this parameter when you want the \"intervals\" to be populated to a certain date (e.g. 2025-01-01).", "schema": { "type": "string", "format": "date" } } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/zipcodes/{zipCode}": { "get": { "summary": "Get ZIP Code Details", "description": "Retrieve details for a ZIP code, including city, county, latitude, longitude, and time zone information.", "operationId": "zip-code-api", "parameters": [ { "name": "zipCode", "in": "path", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/v1/orgs/usage": { "get": { "summary": "Get Organization Usage", "description": "Retrieve month-to-date API usage statistics for your organization.", "operationId": "product-usage-data", "parameters": [ { "name": "populateAggregateUsage", "in": "query", "description": "Boolean flag to indicate whether to include aggregate usage data in the response.", "schema": { "type": "boolean", "default": false } }, { "name": "populateChildOrgs", "in": "query", "description": "Boolean flag to determine if usage data for child organizations should be included.", "schema": { "type": "boolean", "default": false } }, { "name": "populateMasterTariffIds", "in": "query", "description": "Boolean flag to specify whether to include master tariff IDs in the response.", "schema": { "type": "boolean", "default": false } }, { "name": "startYearMonth", "in": "query", "description": "Date flag to filter usage to a specific range at a monthly granularity. ISO formatting. Used in combination with endYearMonth.", "schema": { "type": "string", "format": "date" } }, { "name": "endYearMonth", "in": "query", "description": "Date flag to filter usage to a specific range at a monthly granularity. ISO formatting. Used in combination with startYearMonth.", "schema": { "type": "string", "format": "date" } } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } }, "/rest/public/tariffs/{masterTariffId}": { "get": { "summary": "Get Tariff by MTID", "description": "Return tariffs matching the provided filters.", "operationId": "get-tariff-1", "parameters": [ { "name": "effectiveOn", "in": "query", "description": "Only tariffs that are effective on this date", "schema": { "type": "string", "format": "date" } }, { "name": "openOn", "in": "query", "description": "Only tariffs that were open (i.e. were not closed to new customers) on this date.", "schema": { "type": "string", "format": "date" } }, { "name": "isActive", "in": "query", "description": "Only the current, active tariff version for the LSE or master tariff Id.", "schema": { "type": "boolean" } }, { "name": "fromDateTime", "in": "query", "description": "Only include tariffs that are effective on or after this date", "schema": { "type": "string", "format": "date" } }, { "name": "toDateTime", "in": "query", "description": "Only include tariffs that are effective on or before this date", "schema": { "type": "string", "format": "date" } }, { "name": "populateProperties", "in": "query", "description": "Populates the properties for the returned tariffs", "schema": { "type": "boolean" } }, { "name": "populateRates", "in": "query", "description": "Populates the rate details for the returned tariffs", "schema": { "type": "boolean" } }, { "name": "populateDocuments", "in": "query", "description": "Populates the document links for the returned tariffs", "schema": { "type": "boolean" } }, { "name": "bundleRates", "in": "query", "description": "When true (false by default) the rates are summarized (bundled). Note that this only works for tariffs with a customerClass of RESIDENTIAL.", "schema": { "type": "boolean" } }, { "name": "applicableRatesOnly", "in": "query", "description": "When true (false by default) rate applicability criteria will be applied to the rates. You\u2019ll only get back rates that match the requests rate applicability values, or the default rate applicability value as set on the tariff.", "schema": { "type": "boolean" } }, { "name": "filterRiderRates", "in": "query", "description": "Used in concert with populateRates = true, when filterRiderRates = true (false by default) rider rates will not be returned. However pointers to the riders will be returned. This is used primarily when using and existing tariff\u2019s structure when creating private tariffs", "schema": { "type": "string" } }, { "name": "fields", "in": "query", "description": "ext to return extended fields", "schema": { "type": "string" } }, { "in": "path", "name": "masterTariffId", "schema": { "type": "string" }, "required": true, "description": "If specified, all versions of a tariff belonging to the master tariff Id are returned." } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{}" } }, "schema": { "type": "object", "properties": {} } } } } }, "deprecated": false } } }, "x-readme": { "headers": [], "explorer-enabled": true, "proxy-enabled": true }, "x-readme-fauxas": true }