warmup-api
TypeScript icon, indicating that this package has built-in type declarations

1.1.6 • Public • Published

warmup-api

An API for communicating with a wifi-enabled home thermostat made by Warmup.

Coverage Badge

Using this library

Installation

Install with:

npm install --save warmup-api

Usage

Currently, there are only a couple of pieces of functionality available: getting an access token and calling the GraphQL endpoint.

import { getToken, makeGQLQuery } from 'warmup-api';

const token = await getToken('email', 'password'); // Email and password from the user's my.warmup.com account
const getUserProfileQuery = {
  operationName: "getUserProfile",
  query: "query getUserProfile {\n  user {\n    userProfile {\n      email\n      firstName\n      lastName\n    }\n  }\n}",
  variables: null
};
const { data: { user: { userProfile } } } = await makeGQLQuery(getUserProfileQuery, token);
console.log(userProfile.email, userProfile.firstName, userProfile.lastName );

The full Warmup GraphQL schema can be found ./warmup-schema.graphql.

Developing

Regenerating the schema

The schema, located at ./warmup-schema.graphql can be regenerated at any time by running (using Node >= 20.x):

npm run create-warmup-schema

This requires the following in a .env file which you will need to create:

USERNAME=""
PASSWORD=""
AUTH_TOKEN=""

See the first query in ./http-requests.http for how to obtain an auth token.

Testing

Run the tests with the usual command:

npm test

This will run the tests with a coverage report (requires 100% across the board to pass), which you can view with:

open coverage/lcov-report/index.html

Package Sidebar

Install

npm i warmup-api

Weekly Downloads

13

Version

1.1.6

License

Apache-2.0

Unpacked Size

31.1 kB

Total Files

45

Last publish

Collaborators

  • jondarrer