Realiza tus primeras llamadas a la API

Para completar los pasos necesarios para realizar llamadas básicas a la API de publicación de Street View, sigue los pasos de este instructivo.

Realizar llamadas HTTP

Se puede llamar a la API de publicación de Street View con varias herramientas, como curl, wget y Postman. En la mayoría de los casos, querrás usar el lenguaje de programación que prefieras para compilar una aplicación cliente que use la API, pero en este instructivo se te guiará a través de los comandos individuales a través de los conceptos básicos.

También ofrecemos algunas bibliotecas cliente si no deseas realizar llamadas HTTP directas.

Requisitos previos

  1. Necesitas una cuenta de Google para acceder a la Consola de API de Google, solicitar una clave de API y registrar tu aplicación.

  2. Crea un proyecto en Google Developers Console y obtén credenciales de autorización para que tu aplicación pueda enviar solicitudes de API.

  3. Después de crear tu proyecto, asegúrate de que la API de publicación de Street View sea uno de los servicios que tu aplicación está registrada para usar:

    1. Ve a la Consola de API y selecciona el proyecto que acabas de registrar.
    2. Visita la página de API habilitadas. Asegúrate de que la API de Google Street View esté en la lista de API habilitadas. Si no lo está, abre la biblioteca de API y habilita la API.
  4. Lee la guía de autenticación para saber cómo se implementa la autorización OAuth 2.0.

  5. Familiarízate con los conceptos principales del formato de datos de JavaScript Object Notation (JSON). JSON es un formato de datos común e independiente del lenguaje que proporciona una representación de texto simple de estructuras de datos arbitrarias. Para obtener más información, visita json.org.

Cómo obtener una clave de API

Para la autenticación y la cuota, deberás usar la API de publicación de Google Street View con las credenciales generadas desde la Consola para programadores.

  1. Navega a la página Credenciales en Developers Console.
  2. Si ya tienes una clave de API, puedes usar su valor. De lo contrario, selecciona Clave de API en el menú Credenciales nuevas para crear una.

Cómo obtener un token de acceso

  1. Navega a Google Developers OAuth 2.0 Playground.
  2. Haz clic en el menú de configuración (ícono de ajustes en la parte superior derecha), marca la opción Use your own OAuth credentials, ingresa tus Client ID y Client secret en los campos correspondientes y, luego, haz clic en Close.
  3. En Paso 1: Selecciona &autorizar API, ingresa el alcance de la API https://www.googleapis.com/auth/streetviewpublish en el campo Ingresa tus propios alcances y haz clic en Autorizar API. Se abrirá una página nueva para confirmar que deseas autorizar la API.
  4. Haga clic en Intercambiar código de autorización para tokens. Esto propagará el campo Token de acceso, que contendrá tu token de acceso para usar en el siguiente paso. El token de acceso vence en 60 minutos. Puedes seleccionar la opción para actualizar el token automáticamente antes de su vencimiento, lo que creará un token nuevo.

Enviar una solicitud HTTP

Una vez que tengas la clave de API y el token de acceso, puedes ejecutar el siguiente comando en un shell para realizar una llamada HTTP al servicio. En el siguiente ejemplo, hacemos una llamada al 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'
  

Ejemplos de solicitudes

Una vez que te sientas cómodo con el envío de la solicitud HTTP anterior, intenta usar algunos métodos adicionales. A continuación, se muestra una variedad de llamadas.

Obteniendo una lista de tus fotos

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

Obteniendo una foto

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

Subiendo una foto

Para crear una foto, se necesitan tres llamadas separadas. La primera llamada mostrará una URL de carga, que se usa en la segunda llamada para subir los bytes de la foto. Después de subir los bytes de la foto, la tercera llamada sube los metadatos de la foto y muestra el ID.

  1. Solicitar una URL de carga
            $ 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. Sube los bytes de la foto a la URL de carga
            $ curl --request POST \
            --url 'UPLOAD_URL' \
            --upload-file 'PATH_TO_FILE' \
            --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
          
    .
  3. Subir los metadatos de la 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
                      },
                    }'
          

Actualizando una 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
                 }
               }
             }'
  

Actualización por lotes de varias 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"
                  }
              ]
          }'
  

Cómo eliminar una foto

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

¿Qué es updateMask?

updateMask es una forma de mantener solicitudes pequeñas si deseas actualizar parte de tu foto en lugar de todas. Sin updateMask, tu solicitud actualiza toda la foto. Esto significa que si no estableces updateMask y a tu solicitud le falta pose, se borrará tu pose de la foto. Estos son algunos valores posibles para updateMask: places, pose.heading, pose.latlngpair, pose.level, connections. Puedes colocar varios valores separados por comas en updateMask.