Documentation de référence de l'API

Cette page fournit une documentation de référence pour les points de terminaison de l'API Metrics Configuration Generator (MCG).

Présentation d'Endpoints

Les sections suivantes décrivent en détail les points de terminaison d'API disponibles dans MCG.

Configuration des métriques

Catalogues de signaux de véhicules

État du service

Types de contenus Protobuf

Plusieurs points de terminaison d'API acceptent ou renvoient des données au format Protocol Buffer (protobuf). Deux types de contenus sont utilisés :

  • application/x-protobuf : indique les données protobuf dans leur format de communication binaire. Ce format est efficace pour la communication entre machines, mais n'est pas lisible par l'homme.
  • text/x-protobuf : indique les données protobuf au format texte, qui sont lisibles par l'homme et utiles pour le débogage ou l'inspection manuelle.

Lorsqu'un point de terminaison accepte plusieurs formats protobuf pour une requête ou une réponse, utilisez l'en-tête Content-Type pour spécifier le format des données de requête et l'en-tête Accept pour spécifier le format sélectionné des données de réponse. Exemple :

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

Appeler l'API

Les exemples de cette page utilisent curl pour appeler l'API REST et supposent que vous avez défini la variable d'environnement SERVICE_URL pour faire référence à l'hôte sur lequel MCG est déployé. Lors de l'exécution en local, cette valeur est généralement http://localhost:8005.

Pour cibler une instance Cloud Run distante, définissez SERVICE_URL à l'aide de gcloud. Ensuite, ajoutez un en-tête d'autorisation avec un jeton d'identité OpenID Connect (OIDC) à votre commande 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)"

Configuration des métriques

Cette section décrit les points de terminaison permettant de générer et de valider les configurations de métriques.

POST /api/v1/generate_metrics_config

Créez une instance MetricsConfig à partir des détails de la requête de configuration des métriques. Ce processus inclut la validation. Si la génération échoue en raison de non-respect du schéma, de références non valides, de dépendances cycliques ou d'autres problèmes, l'API renvoie une liste d'informations sur les erreurs.

Endpoint details
Paramètres de requête ignore_validation : boolean
Facultatif. Si la valeur est true, ignorez les erreurs de validation et renvoyez MetricsConfig.
Corps de la requête Le corps de la requête doit contenir les détails de la requête de configuration des métriques au format JSON.
Réponse de réussite Le corps de la réponse contient un message MetricsConfig au format application/x-protobuf ou text/x-protobuf.
L'en-tête Metrics-Config-Size contient la taille de la configuration en octets.
Exemple
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

Renvoie les descripteurs de fichier pour un MetricsConfig donné pour les rapports de décodage.

Endpoint details
Corps de la requête Le corps de la requête doit contenir un message android.sdv.telemetry.MetricsConfig au format application/x-protobuf ou text/x-protobuf.
Réponse de réussite Le corps de la réponse contient un message google.protobuf.FileDescriptorSet au format application/x-protobuf ou text/x-protobuf.
Exemple
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

Validez le MetricsConfig fourni et renvoyez une liste des erreurs de validation.

Endpoint details
Paramètres de requête return_config : boolean
Facultatif. Si la validation réussit, renvoie MetricsConfig si true.
Corps de la requête Le corps de la requête doit contenir un message android.sdv.telemetry.MetricsConfig au format application/x-protobuf ou text/x-protobuf.
Réponse de réussite Le corps de la réponse contient un objet vide (par défaut) ou MetricsConfig (si return_config est true).
L'en-tête Metrics-Config-Size contient la taille de la configuration en octets.
Exemple
curl -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  --data-binary @PATH_TO_METRICS_CONFIG_JSON \
  "$SERVICE_URL/api/v1/validate_metrics_config"
      

Catalogues de signaux de véhicules

Cette section décrit les points de terminaison permettant de gérer les catalogues de signaux de véhicules.

POST /api/v1/vs/

Créez ou mettez à jour le catalogue de signaux de véhicules.

Endpoint details
Corps de la requête Le corps de la requête doit contenir un objet JSON avec une chaîne version et un FileDescriptorSet encodé en base64 pour vehicle_signals.
{
  "version": "string",
  "vehicle_signals": "string"
}
Réponse de réussite Si l'opération réussit, l'API renvoie application/json avec la version du catalogue qui a été ajoutée ou mise à jour :
{"version": "string"}
Exemple Pour obtenir des instructions sur la génération de FileDescriptorSet encodé en base64 pour le champ vehicle_signals, consultez Catalogues de signaux de véhicules.
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/

Répertoriez toutes les métadonnées du catalogue de signaux de véhicules.

Endpoint details
Réponse de réussite Si l'opération réussit, l'API renvoie application/json contenant une liste des versions du catalogue :
{"versions": [{"version": "string"}]}
Exemple
curl "$SERVICE_URL/api/v1/vs/"
      

DELETE /api/v1/vs/{version}

Supprime le catalogue de signaux de véhicule spécifié.

Endpoint details
Paramètres de chemin d'accès version : string
Obligatoire. Identifiant du catalogue de signaux du véhicule à supprimer, tel qu'indiqué dans le champ version de la requête POST.
Réponse de réussite Si l'opération réussit, l'API renvoie application/json avec la version du catalogue qui a été supprimée :
{"version": "string"}
Exemple
curl --request DELETE "$SERVICE_URL/api/v1/vs/v1.0"
      

État du service

Cette section décrit les points de terminaison permettant de vérifier l'état du service.

GET /health

Vérifiez l'état du service.

Endpoint details
Réponse de réussite Si le service est opérationnel, il renvoie un code d'état 200 OK.
Exemple
curl "$SERVICE_URL/health"
      

Réponses d'erreur

Lorsqu'un appel d'API génère une erreur (HTTP status 4xx ou 5xx), le corps de la réponse contient un objet d'erreur avec la structure suivante :

{
  "error": {
    "code": 400,
    "status": "INVALID_ARGUMENT",
    "message": "Request validation failed",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "fieldName",
            "description": "error description"
          }
        ]
      }
    ]
  }
}
Champs d'erreur
code int32
Code d'état HTTP (par exemple, 400, 404 ou 500).
status string
Code d'état canonique Google RPC (par exemple, INVALID_ARGUMENT, NOT_FOUND ou INTERNAL).
message string
Message d'erreur destiné aux développeurs, en anglais.
details Array<object>
Tableau d'objets contenant des informations supplémentaires sur les erreurs, identifiées par leur membre @type.