
Use a API Nest para ouvir mudanças em estruturas e dispositivos, para que você possa tomar medidas para economizar energia quando os proprietários estão fora, notificá-los de que algo está errado (por exemplo, a porta da garagem está aberta) ou ativar recursos para fazer o casa mais confortável e acolhedora.
Este guia mostra como ler dados de dispositivos e estruturas Nest. Para saber como fazer chamadas de gravação, consulte API Escrever Exemplos .
Pré-requisitos
Antes de fazer chamadas de API, obter um token de acesso, conforme descrito na autenticação com o OAuth 2.0 .
Sobre chamadas de leitura REST
Para chamadas REST, use GET para ler os dados.
As chamadas de leitura REST são úteis em cenários limitados, como os seguintes casos de uso:
- Chamadas pontuais ad-hoc
- Laboratórios de prova de conceito
- Solução de problemas
- Aplicativos que pesquisam aproximadamente a cada minuto
- Implementações do botão Atualizar
As chamadas de leitura REST não são úteis para cenários contínuos em tempo real ou de streaming.
Autenticação do portador
Recomendamos conformidade com o padrão OAuth , que oferece maior segurança usando "Bearer"
de autenticação para transmitir o token de acesso. Chamadas com credenciais de cliente no URL não são recomendadas.
O "Content-Type"
cabeçalho dirige o servidor para usar JSON.
A "Authorization"
cabeçalho fornece acesso à API.
Exemplos
Nos exemplos a seguir, substitua YOUR_TOKEN_HERE
com o seu token de acesso específico, como "c.twC2q ...".
Leia estruturas e dispositivos
Para ler toda a estrutura e os dados do dispositivo (nível de base), use a URL de nível raiz. Para respostas mais granulares, modifique o URL conforme necessário.
curl -v --location-trusted \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -X GET "https://developer-api.nest.com/"
curl -v --location-trusted \ -H "Accept: text/event-stream" \ -H "Authorization: Bearer LIST_OF_ACCESS_TOKENS" \ -X GET "https://developer-api.nest.com/multiplex"
package main import ( "errors" "fmt" "io/ioutil" "net/http" ) const token = "YOUR_TOKEN_HERE" // Update with your token func main() { url := "https://developer-api.nest.com/" req, _ := http.NewRequest(http.MethodGet, url, nil) req.Header.Add( "Authorization", fmt.Sprintf("Bearer %s", token), ) customClient := http.Client { CheckRedirect: func(redirRequest *http.Request, via []*http.Request) error { // Go's http.DefaultClient does not forward headers when a redirect 3xx // response is received. Thus, the header (which in this case contains the // Authorization token) needs to be passed forward to the redirect // destinations. redirRequest.Header = req.Header // Go's http.DefaultClient allows 10 redirects before returning an // an error. We have mimicked this default behavior. if len(via) >= 10 { return errors.New("stopped after 10 redirects") } return nil }, } response, _ := customClient.Do(req) if response.StatusCode != 200 { panic(fmt.Sprintf( "Expected a 200 status code; got a %d", response.StatusCode, )) } defer response.Body.Close() body, _ := ioutil.ReadAll(response.Body) fmt.Println(string(body)) }
"use strict" var request = require('request'); var token = "YOUR_TOKEN_HERE"; // Update with your token var url = "https://developer-api.nest.com"; var options = { "method": "GET", "path": "/", "headers": { "Authorization": "Bearer " + token }, "followRedirect": true }; var req = request(url, options, function(err, resp, data) { console.log('response code: ' + resp.statusCode); if (err) { console.log('Error: ' + err.message); } console.log("data: " + data); }); req.end();
Para usar o exemplo de código Node.js, instale o módulo de solicitação ( https://www.npmjs.com/package/request ).
npm install request
import hashlib import json import os import requests url = "https://developer-api.nest.com/" token = "YOUR_TOKEN_HERE" # Update with your token headers = {'Authorization': 'Bearer {0}'.format(token), 'Content-Type': 'application/json'} response = requests.get(url, headers=headers, allow_redirects=False) if response.status_code == 307: response = requests.get(response.headers['Location'], headers=headers, allow_redirects=False) print(response.text)
import http.client from urllib.parse import urlparse token = "YOUR_TOKEN_HERE" # Update with your token conn = http.client.HTTPSConnection("developer-api.nest.com") headers = {'authorization': "Bearer {0}".format(token)} conn.request("GET", "/", headers=headers) response = conn.getresponse() if response.status == 307: redirectLocation = urlparse(response.getheader("location")) conn = http.client.HTTPSConnection(redirectLocation.netloc) conn.request("GET", "/", headers=headers) response = conn.getresponse() if response.status != 200: raise Exception("Redirect with non 200 response") data = response.read() print(data.decode("utf-8"))
import java.io.IOException; import okhttp3.Headers; import okhttp3.OkHttpClient; import okhttp3.OkHttpClient.Builder; import okhttp3.Request; import okhttp3.Response; import okhttp3.Authenticator; import okhttp3.Route; public class ReadNest { public static void main(String[] args) throws IOException { String auth = "Bearer YOUR_TOKEN_HERE"; // Update with your token OkHttpClient client = new OkHttpClient.Builder() .authenticator(new Authenticator() { @Override public Request authenticate(Route route, Response response) throws IOException { return response.request().newBuilder() .header("Authorization", auth) .build(); } }) .followRedirects(true) .followSslRedirects(true) .build(); Request request = new Request.Builder() .url("https://developer-api.nest.com") .get() .addHeader("content-type", "application/json; charset=UTF-8") .addHeader("authorization", auth) .build(); try { System.out.println("Begin request: "); Response response = client.newCall(request).execute(); System.out.println(response.body().string()); System.out.println("End request"); System.out.println(); Thread.sleep(2 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } } }
Para usar o exemplo de código Java:
1. Faça o download do mais recente okhttp e arquivos JAR Okio em http://square.github.io/okhttp/ . Além disso, baixe o arquivo Kotlin stdlib em https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib se sua versão do okhttp depende disso.
2. Construa seu código.
3. Compile e execute o programa com as seguintes configurações de caminho de classe.
Substituir seus números de versão de biblioteca no javac e comandos java abaixo:
javac -cp .:okhttp-<ver>.jar:okio-<ver>.jar ReadNest.java
java -cp .:okhttp-<ver>.jar:okio-<ver>.jar:kotlin-stdlib-<ver>.jar ReadNest
Por exemplo, se você tem as seguintes versões 3.11.0, 2.1.0 e 1.3.0, os comandos ficaria assim:
javac -cp .:okhttp-3.11.0.jar:okio-2.1.0.jar ReadNest.java
java -cp .:okhttp-3.11.0.jar:okio-2.1.0.jar:kotlin-stdlib-1.3.0.jar ReadNest
Usando Postman para testar a API
A chamada do Curl acima pode ser facilmente replicada no Postman.

Use o link Código de carteiro para traduzir uma chamada em diferentes idiomas como ponto de partida para o desenvolvimento.