Demo Utility

Description: Demo Utility is a test utility used to demonstrate our Green Button Connect and benchmarking functionality.

Website: https://greenbutton.demoutility.com/

Utility ID: DEMOUTILITY (this is the utility identifier you use in our API)

In order for you to request data from Demo Utility customers, you must register with Demo Utility as a third party company.

As part of their Green Button Connect My Data (GBCMD) program, Demo Utility is using UtilityAPI's EE/DER Engagement Platform to allow third-party companies to request data access from Demo Utility customers. Authorizations use the Green Button OAuth process, which means that third-parties have to be pre-registered with Demo Utility so they can be assigned a client_id.

NOTE: When you register, you will be automatically put into "sandbox" mode. This means you can only request data from test accounts, not real Demo Utility customers. After you register, Demo Utility will review your registration and switch you to "live" mode (you will get an email when this happens).

After registering with Demo Utility as a third party, to request authorizations from Demo Utility customers and test accounts, you can use any of these methods:

Once a customer has authorized, you will see an Authorization appear on your dashboard and via both our JSON API and Green Button API.

When your first register as a third party, your registration status is set to Sandbox mode. This means you can only request data from test accounts, so you can try it out or start building an integration, but real customers won't be able to authorize data sharing with you yet. Demo Utility will review your registration, then you'll get an email letting you know that you can now switch your status to Live mode in your settings.

During the OAuth authorization flow, we offer multiple ways that customers can look up their Demo Utility account. To make things smoother for the customer, you can pre-fill these lookup identifiers (phone number, email, etc.) in the OAuth scope string if you already know it. We'll automatically try to find that user using your provided information so they can skip the lookup step of authentication and go directly to the OTP sending step. If we can't find that user automatically given your prefilled value, we'll fall back using the default authentication flow.

Scope parameter format:
auth-{type}[-{value}]

Full scope string example with authentication option (percent encoded):
scope=FB%3D4_16_51%3BAdditionalScope%3Dauth-test-test_residential

Type Can Have Value? Description Scope String Example
account Yes Try to lookup the customer via their utility account number. auth-account-111111111-1
phone Yes Try to lookup the customer via the phone number they have on file at the utility. auth-phone-5554443333
email Yes Try to lookup the customer via the email they have on file at the utility. auth-email-joe%40example.com
address Yes Try to lookup the customer via their utility billing address. auth-address-123%20Main%20St%2C%20Anytown%2C%20CA%2012345
lastbill Yes

Authenticate using a customer's latest bill date and amount. The prefill value for this authentication type is the customer's account number.

auth-lastbill-111111111-1
test Yes Authenticate using a specific test scenario. auth-test-test_residential

The Demo Utility OAuth authorization flow doesn't use usernames or passwords by default. Instead it asks the user to lookup their account via some identifier (e.g. phone number, address, etc.), then sends them a One-Time-Passcode (OTP) to verify their identity.

That means you can't use UtilityAPI's default test usernames to manually simulate a test scenario. Instead, below we have created test identifiers so you can simulate authorizing as a Demo Utility customer under various test scenarios.

When you use these test identifiers, we won't actually send an OTP. Instead, we will display it directly on the authentication page so you can enter it while you're testing. If you'd like to see what the sent OTP messages look like, use the OTP Testing guide.

Try one with your Demo Utility data share link
(you aren't logged into an account that has a registered Demo Utility client)

Account Number Equivalent Test Scenario Description
111111111-1 residential A residential customer with 3 services.
222222222-2 commercial A commercial customer with 5 services.
333333333-3 badlogin Simulate error where we couldn't find that customer.
Phone Number Equivalent Test Scenario Description
111-111-1111 residential A residential customer with 3 services.
222-222-2222 commercial A commercial customer with 5 services.
333-333-3333 badlogin Simulate error where we couldn't find that customer.
Email Address Equivalent Test Scenario Description
uapi-test-residential@example.com residential A residential customer with 3 services.
uapi-test-commercial@example.com commercial A commercial customer with 5 services.
uapi-test-badlogin@example.com badlogin Simulate error where we couldn't find that customer.
Physical Address Equivalent Test Scenario Description
100 DEMO AVE, ANYTOWN, NY 12345 residential A residential customer with 3 services.
200 DEMO AVE, ANYTOWN, NY 12345 commercial A commercial customer with 5 services.
300 DEMO AVE, ANYTOWN, NY 12345 badlogin Simulate error where we couldn't find that customer.
Account # Last Bill Amount Last Bill Date Equivalent Test Scenario Description
111111111-1 100.00 2022-01-01 residential A residential customer with 3 services.
222222222-2 200.00 2022-02-02 commercial A commercial customer with 5 services.
333333333-3 300.00 2022-03-03 badlogin Simulate error where we couldn't find that customer.
Username Password Equivalent Test Scenario Description
test_residential test_residential residential A residential customer with 3 services.
test_commercial test_commercial commercial A commercial customer with 5 services.
test_badlogin test_badlogin badlogin Simulate error where we couldn't find that customer.
Test Account Equivalent Test Scenario Description
test_residential residential A residential customer with 3 services.
test_commercial commercial A commercial customer with 5 services.
test_badlogin badlogin Simulate error where we couldn't find that customer.

If you want to send a one-time passcode to a real phone number or email to see what it looks like, you can prefix a special string to your phone number or email during lookup time and we'll set that number as the test scenario's OTP contact method. NOTE: These are intended for manual testing and not for automated testing (since they will really send an OTP), so please use our test credentials or the /test-submit API for automated tests.

Format Equivalent Test Scenario Description
TEST_residential_<your_phone_number>
TEST_residential_<your_email>
residential A residential customer with 3 services.
TEST_commercial_<your_phone_number>
TEST_commercial_<your_email>
commercial A commercial customer with 5 services.
TEST_badlogin_<your_phone_number>
TEST_badlogin_<your_email>
badlogin Simulate error where we couldn't find that customer.

To demonstrate how you can integrate the GBC OAuth authorization process into your apps and websites, we offer a demo third party website that can be configured with any GBC client, so long as it has a specific redirect_uri added. We have also created public, sandbox-only GBC clients that you can try out (see table below).

Client ID Company Name Pre-configured Demo Link
DEMOUTILITY_ccccccccc Test Company Link