Faça suas primeiras chamadas de API

Para concluir as etapas necessárias para fazer chamadas básicas para a API Street View Publish, siga as etapas neste tutorial.

Como fazer chamadas HTTP

A API Street View Publish pode ser chamada com várias ferramentas, como curl, wget e Postman. Na maioria dos casos, convém usar uma linguagem de programação de sua escolha para criar um aplicativo cliente que use a API, mas este tutorial guiará você pelas noções básicas guiando você pelos comandos individuais.

Também fornecemos algumas bibliotecas de cliente se você não quer fazer chamadas HTTP diretas.

Pré-requisitos

  1. Você precisa de uma Conta do Google para acessar o Console de APIs do Google, solicitar uma chave de API e registrar o app.

  2. Crie um projeto no Google Developers Console e receba credenciais de autorização para que seu aplicativo possa enviar solicitações de API.

  3. Depois de criar o projeto, verifique se a API Street View Publish é um dos serviços que seu aplicativo está registrado para usar:

    1. Acesse o Console de APIs e selecione o projeto que você acabou de registrar.
    2. Acesse a página APIs ativadas. Verifique se a API Google Street View está na lista de APIs ativadas. Se não estiver, abra a biblioteca da API e ative a API.
  4. Leia o guia de autenticação para saber como implementar a autorização OAuth 2.0.

  5. Conheça os principais conceitos do formato de dados JavaScript Object Notation (JSON). JSON é um formato de dados comum e independente de linguagem que fornece uma representação de texto simples de estruturas de dados arbitrárias. Para mais informações, acesse json.org.

Receber uma chave de API

Para fins de autenticação e cota, você precisará usar a API Publish do Google Street View com credenciais geradas no Developers Console.

  1. Acesse a página Credenciais no Developers Console.
  2. Se você já tiver uma chave de API, use o valor dela. Caso contrário, crie uma nova selecionando Chave de API no menu Novas credenciais.

Adquirir um token de acesso

  1. Acesse o Google Developers OAuth 2.0 Playground.
  2. Clique no menu de configurações (ícone de engrenagem no canto superior direito), marque a opção Use your own OAuth credentials e insira Client ID e Client secret nos campos correspondentes. Em seguida, clique em Close.
  3. Em Etapa 1: selecionar & autorizar APIs, insira o escopo da API https://www.googleapis.com/auth/streetviewpublish no campo Insira seus próprios escopos e clique em Autorizar APIs. Uma nova página será aberta para confirmar que você quer autorizar a API.
  4. Clique em Trocar código de autorização dos tokens. O campo Token de acesso será preenchido. Ele conterá seu token de acesso para ser usado na próxima etapa. O token de acesso expira em 60 minutos. Selecione a opção para atualizar automaticamente o token antes que ele expire. Isso cria um novo token.

Enviar uma solicitação HTTP

Depois de ter a chave de API e o token de acesso, é possível executar o seguinte comando em um shell para realizar uma chamada HTTP para o serviço. No exemplo abaixo, fazemos uma chamada para o método /v1/photo:startUpload.

    $ curl --request POST \
    --url 'https://streetviewpublish.googleapis.com/v1/photo:startUpload?key=YOUR_API_KEY' \
    --header 'authorization: Bearer YOUR_ACCESS_TOKEN' \
    --header 'Content-Length: 0'
  

Exemplos de solicitação

Depois que você enviar a solicitação HTTP acima, tente usar alguns métodos adicionais. Uma variedade de chamadas é exibida abaixo.

Recebendo uma lista das suas fotos

    $ curl --request GET \
    --url 'https://streetviewpublish.googleapis.com/v1/photos?key=YOUR_API_KEY' \
    --header 'authorization: Bearer YOUR_ACCESS_TOKEN'
  

Tirar uma foto

    $ curl --request GET \
    --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY' \
    --header 'authorization: Bearer YOUR_ACCESS_TOKEN'
  

Enviando uma foto

Criar uma foto requer três chamadas separadas. A primeira chamada retorna um URL de upload, que é usado na segunda chamada para fazer o upload dos bytes da foto. Depois do upload dos bytes da foto, a terceira chamada faz o upload dos metadados da foto e retorna o ID da foto.

  1. Solicitar um URL de upload
            $ curl --request POST \
            --url 'https://streetviewpublish.googleapis.com/v1/photo:startUpload?key=YOUR_API_KEY' \
            --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
            --header 'Content-Length: 0'
          
  2. Faça upload dos bytes da foto para o URL de upload
            $ curl --request POST \
            --url 'UPLOAD_URL' \
            --upload-file 'PATH_TO_FILE' \
            --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
          
  3. Faça upload dos metadados da foto
            $ curl --request POST \
            --url 'https://streetviewpublish.googleapis.com/v1/photo?key=YOUR_API_KEY' \
            --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
            --header 'Content-Type: application/json' \
            --data '{
                      "uploadReference":
                      {
                        "uploadUrl": "UPLOAD_URL"
                      },
                      "pose":
                       {
                         "heading": 105.0,
                         "latLngPair":
                         {
                           "latitude": 46.7512623,
                           "longitude": -121.9376983
                         }
                      },
                      "captureTime":
                      {
                        "seconds": 1483202694
                      },
                    }'
          

Atualizando uma foto

   $ curl --request PUT \
    --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY&updateMask=pose.latLngPair' \
    --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
     --header 'Content-Type: application/json' \
     --data '{
               "pose":
               {
                 "latLngPair":
                 {
                   "latitude": 46.7512624,
                   "longitude": -121.9376982
                 }
               }
             }'
  

Atualização em lote de várias fotos

   $ curl --request POST \
    --url 'https://streetviewpublish.googleapis.com/v1/photos:batchUpdate?key=YOUR_API_KEY' \
    --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
     --header 'Content-Type: application/json' \
     --data '{
              "updatePhotoRequests": [
                  {
                      "photo": {
                          "photoId": {
                              "id": "FIRST_PHOTO_ID"
                          },
                          "pose": {
                              "latLngPair": {
                                  "latitude": 37.1701638,
                                  "longitude": -122.3624387
                              }
                          }
                      },
                      "updateMask": "pose.latLngPair"
                  },
                  {
                      "photo": {
                          "photoId": {
                              "id": "SECOND_PHOTO_ID"
                          },
                          "pose": {
                              "latLngPair": {
                                  "latitude": 37.1685704,
                                  "longitude": -122.3618021
                              }
                          }
                      },
                      "updateMask": "pose.latLngPair"
                  }
              ]
          }'
  

Como excluir uma foto

    $ curl --request DELETE \
    --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY' \
    --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
  

O que é updateMask?

updateMask é uma forma de manter pequenas solicitações se você quiser atualizar parte da sua foto, e não toda a imagem. Sem updateMask, sua solicitação atualizará toda a foto. Isso significa que, se você não definir updateMask, e a solicitação não tiver pose, os dados de pose da foto serão apagados. Alguns valores possíveis para updateMask são: places, pose.heading, pose.latlngpair, pose.level, connections. É possível colocar vários valores delimitados por vírgulas em updateMask.