Riferimento API

Questa pagina fornisce la documentazione di riferimento per gli endpoint API del generatore di configurazione delle metriche (MCG).

Panoramica degli endpoint

Le sezioni seguenti descrivono in dettaglio gli endpoint API disponibili in MCG.

Configurazione delle metriche

Cataloghi di segnali per veicoli

Stato del servizio

Tipi di contenuti Protobuf

Diversi endpoint API accettano o restituiscono dati nel formato buffer di protocollo (protobuf). Vengono utilizzati due tipi di contenuti:

  • application/x-protobuf: Indica i dati protobuf nel formato binario. Questo formato è efficiente per la comunicazione da macchina a macchina, ma non è leggibile da persone.
  • text/x-protobuf: indica i dati protobuf nel formato di testo, che è leggibile e utile per il debug o l'ispezione manuale.

Quando un endpoint supporta più formati protobuf per una richiesta o una risposta, utilizza l'intestazione Content-Type per specificare il formato dei dati della richiesta e l'intestazione Accept per specificare il formato selezionato dei dati della risposta. Ad esempio:

  • -H 'Content-Type: application/x-protobuf'
  • -H 'Accept: text/x-protobuf'

Chiama l'API

Gli esempi in questa pagina utilizzano curl per chiamare l'API REST e presuppongono che tu abbia impostato la variabile di ambiente SERVICE_URL in modo che faccia riferimento all'host in cui è stato eseguito il deployment di MCG. Quando viene eseguito localmente, questo valore è in genere http://localhost:8005.

Per scegliere come target un'istanza Cloud Run remota, imposta SERVICE_URL utilizzando gcloud. Poi, aggiungi un'intestazione di autorizzazione con un token di identità OpenID Connect (OIDC) al comando curl:

SERVICE_URL=$(gcloud run services describe mcg-service --region=<var label="Google Cloud region">GCP_REGION</var> --format='value(status.url)')

# Authorization header to append to curl command:
-H "Authorization: Bearer $(gcloud auth print-identity-token)"

Configurazione delle metriche

Questa sezione descrive gli endpoint per la generazione e la convalida delle configurazioni delle metriche.

POST /api/v1/generate_metrics_config

Crea un'istanza MetricsConfig dai dettagli della richiesta di configurazione delle metriche. Questo processo include la convalida e, se la generazione non va a buon fine a causa di violazioni dello schema, riferimenti non validi, dipendenze cicliche o altri problemi, l'API restituisce un elenco di dettagli degli errori.

Dettagli endpoint
Parametri di query ignore_validation: boolean
Facoltativo. Se true, ignora gli errori di convalida e restituisci MetricsConfig.
Corpo della richiesta Il corpo della richiesta deve contenere i dettagli della richiesta di configurazione delle metriche in formato JSON.
Risposta di successo Il corpo della risposta contiene un messaggio MetricsConfig in formato application/x-protobuf o text/x-protobuf.
L'intestazione Metrics-Config-Size contiene le dimensioni della configurazione in byte.
Esempio
curl -H "Content-Type: application/json" \
  -H "Accept: text/x-protobuf" \
  --data-binary @PATH_TO_METRICS_CONFIG_JSON \
  "$SERVICE_URL/api/v1/generate_metrics_config"
      

POST /api/v1/get_file_descriptor_set

Restituisce i descrittori di file per un determinato MetricsConfig per i report di decodifica.

Dettagli endpoint
Corpo della richiesta Il corpo della richiesta deve contenere un messaggio android.sdv.telemetry.MetricsConfig nel formato application/x-protobuf o text/x-protobuf.
Risposta di successo Il corpo della risposta contiene un messaggio google.protobuf.FileDescriptorSet in formato application/x-protobuf o text/x-protobuf.
Esempio
curl -H "Content-Type: application/x-protobuf" \
  -H "Accept: application/x-protobuf" \
  --data-binary @PATH_TO_METRICS_CONFIG_PB \
  "$SERVICE_URL/api/v1/get_file_descriptor_set"
      

POST /api/v1/validate_metrics_config

Convalida il MetricsConfig fornito, restituendo un elenco di eventuali errori di convalida.

Dettagli endpoint
Parametri di query return_config: boolean
Facoltativo. Se true, restituisci MetricsConfig al termine della convalida.
Corpo della richiesta Il corpo della richiesta deve contenere un messaggio android.sdv.telemetry.MetricsConfig nel formato application/x-protobuf o text/x-protobuf.
Risposta di successo Il corpo della risposta contiene un oggetto vuoto (impostazione predefinita) o MetricsConfig (se return_config è true).
L'intestazione Metrics-Config-Size contiene le dimensioni della configurazione in byte.
Esempio
curl -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  --data-binary @PATH_TO_METRICS_CONFIG_JSON \
  "$SERVICE_URL/api/v1/validate_metrics_config"
      

Cataloghi di segnali per veicoli

Questa sezione descrive gli endpoint per la gestione dei cataloghi di segnali del veicolo.

POST /api/v1/vs/

Crea un nuovo catalogo dei segnali del veicolo o aggiornane uno esistente.

Dettagli endpoint
Corpo della richiesta Il corpo della richiesta deve contenere un oggetto JSON con una stringa version e un FileDescriptorSet con codifica base64 per vehicle_signals.
{
  "version": "string",
  "vehicle_signals": "string"
}
Risposta di successo Se l'operazione ha esito positivo, l'API restituisce application/json con la versione del catalogo che è stata aggiunta o aggiornata:
{"version": "string"}
Esempio Per istruzioni sulla generazione di FileDescriptorSet con codifica base64 per il campo vehicle_signals, vedi Cataloghi dei segnali del veicolo.
curl -H "Content-Type: application/json" \
  --data-binary @- "$SERVICE_URL/api/v1/vs/" << EOF
{
  "version": "v1.0",
  "vehicle_signals": "VEHICLE_SIGNALS_BASE64"
}
EOF
      

GET /api/v1/vs/

Elenca tutti i metadati del catalogo dei segnali del veicolo.

Dettagli endpoint
Risposta di successo In caso di esito positivo, l'API restituisce application/json contenente un elenco di versioni del catalogo:
{"versions": [{"version": "string"}]}
Esempio
curl "$SERVICE_URL/api/v1/vs/"
      

DELETE /api/v1/vs/{version}

Elimina il catalogo dei segnali del veicolo specificato.

Dettagli endpoint
Parametri del percorso version: string
Obbligatorio. L'identificatore del catalogo dei segnali del veicolo da eliminare, come fornito nel campo version della richiesta POST.
Risposta di successo Se l'operazione ha esito positivo, l'API restituisce application/json con la versione del catalogo eliminata:
{"version": "string"}
Esempio
curl --request DELETE "$SERVICE_URL/api/v1/vs/v1.0"
      

Stato del servizio

Questa sezione descrive gli endpoint per il controllo dell'integrità del servizio.

GET /health

Controlla l'integrità del servizio.

Dettagli endpoint
Risposta di successo Se è integro, il servizio restituisce un codice di stato 200 OK.
Esempio
curl "$SERVICE_URL/health"
      

Risposte di errore

Quando una chiamata API genera un errore (HTTP status 4xx o 5xx), il corpo della risposta contiene un oggetto di errore con la seguente struttura:

{
  "error": {
    "code": 400,
    "status": "INVALID_ARGUMENT",
    "message": "Request validation failed",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "fieldName",
            "description": "error description"
          }
        ]
      }
    ]
  }
}
Campi di errore
code int32
Il codice di stato HTTP (ad esempio 400, 404 o 500).
status string
Il codice di stato canonico RPC di Google (ad esempio INVALID_ARGUMENT, NOT_FOUND o INTERNAL).
message string
Un messaggio di errore rivolto agli sviluppatori in inglese.
details Array<object>
Un array di oggetti contenenti ulteriori dettagli sull'errore, identificati dal membro @type.