הפניית API

בדף הזה מרוכזים מאמרי העזרה של נקודות הקצה של Metrics Configuration Generator ‏ (MCG) API.

סקירה כללית של נקודות קצה

בקטעים הבאים מפורטות נקודות הקצה של ה-API שזמינות ב-MCG.

הגדרת מדדים

קטלוגים של אותות לרכב

  • POST /api/v1/vs/: יצירה של קטלוג חדש של אותות רכב או עדכון של קטלוג קיים.
  • GET /api/v1/vs/: רשימת כל המטא-נתונים של Vehicle Signal Catalog.
  • DELETE /api/v1/vs/{version}: מחיקת קטלוג אותות הרכב שצוין.

סטטוס השירות

  • GET /health: בדיקת תקינות השירות.

סוגי תוכן של Protobuf

כמה נקודות קצה ל-API מקבלות או מחזירות נתונים בפורמט של מאגר אחסון לפרוטוקולים (protobuf). משתמשים בשני סוגי תוכן:

  • application/x-protobuf: מציין נתוני protobuf בפורמט הבינארי שלהם. הפורמט הזה יעיל לתקשורת בין מכונות, אבל הוא לא קריא לבני אדם.
  • text/x-protobuf: מציין נתוני protobuf בפורמט טקסט, שקריא לבני אדם ושימושי לניפוי באגים או לבדיקה ידנית.

כשנקודת קצה תומכת בכמה פורמטים של protobuf לבקשה או לתגובה, צריך להשתמש בכותרת Content-Type כדי לציין את הפורמט של נתוני הבקשה, ובכותרת Accept כדי לציין את הפורמט שנבחר של נתוני התגובה. לדוגמה:

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

שליחת קריאה ל-API

בדוגמאות שבדף הזה נעשה שימוש ב-curl כדי לקרוא ל-API בארכיטקטורת REST, והן מניחות שהגדרתם את משתנה הסביבה SERVICE_URL כך שיפנה למארח שבו MCG פרוס. כשמריצים באופן מקומי, בדרך כלל זה הנתיב http://localhost:8005.

כדי לטרגט מופע מרוחק של Cloud Run, מגדירים את SERVICE_URL באמצעות gcloud. לאחר מכן, מוסיפים כותרת הרשאה עם אסימון זהות של OpenID Connect ‏ (OIDC) לפקודה 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)"

הגדרת מדדים

בקטע הזה מתוארות נקודות קצה (endpoints) ליצירה ולאימות של הגדרות מדדים.

POST /api/v1/generate_metrics_config

יוצרים מכונת MetricsConfig מפרטי בקשה להגדרת מדדים. התהליך הזה כולל אימות, ואם היצירה נכשלת בגלל הפרות של הסכימה, הפניות פסולות, יחסי תלות מחזוריים או בעיות אחרות, ה-API מחזיר רשימה של פרטי שגיאה.

פרטים על נקודת הקצה
פרמטרים של שאילתה ignore_validation: boolean
אופציונלי. אם true, מתעלמים משגיאות האימות ומחזירים MetricsConfig.
גוף הבקשה גוף הבקשה חייב להכיל פרטים של בקשת הגדרת מדדים בפורמט JSON.
תגובת הצלחה גוף התשובה מכיל הודעה MetricsConfig בפורמט application/x-protobuf או text/x-protobuf.
הכותרת Metrics-Config-Size מכילה את גודל ההגדרה בבייטים.
דוגמה
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

מחזירה מתארים של קבצים עבור MetricsConfig מסוים לצורך פענוח דוחות.

פרטים על נקודת הקצה
גוף הבקשה גוף הבקשה צריך להכיל הודעה android.sdv.telemetry.MetricsConfig בפורמט application/x-protobuf או text/x-protobuf.
תגובת הצלחה גוף התשובה מכיל הודעה google.protobuf.FileDescriptorSet בפורמט application/x-protobuf או text/x-protobuf.
דוגמה
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

מאמת את MetricsConfig שסופק ומחזיר רשימה של שגיאות אימות.

פרטים על נקודת הקצה
פרמטרים של שאילתה return_config: boolean
אופציונלי. אם true, מחזירה MetricsConfig אחרי אימות מוצלח.
גוף הבקשה גוף הבקשה צריך להכיל הודעה android.sdv.telemetry.MetricsConfig בפורמט application/x-protobuf או text/x-protobuf.
תגובת הצלחה גוף התגובה מכיל אובייקט ריק (ברירת מחדל) או MetricsConfig (אם return_config הוא true).
הכותרת Metrics-Config-Size מכילה את גודל ההגדרה בבייטים.
דוגמה
curl -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  --data-binary @PATH_TO_METRICS_CONFIG_JSON \
  "$SERVICE_URL/api/v1/validate_metrics_config"
      

קטלוגים של אותות לרכב

בקטע הזה מתוארות נקודות קצה (endpoints) לניהול קטלוגים של אותות רכב.

POST /api/v1/vs/

יצירה של קטלוג חדש של אותות רכב או עדכון של קטלוג קיים.

פרטים על נקודת הקצה
גוף הבקשה גוף הבקשה חייב להכיל אובייקט JSON עם מחרוזת version ו-FileDescriptorSet בקידוד base64 בשביל vehicle_signals.
{
  "version": "string",
  "vehicle_signals": "string"
}
תגובת הצלחה אם הפעולה בוצעה ללא שגיאות, ה-API יחזיר את קוד הסטטוס application/json עם הגרסה של הקטלוג שנוספה או עודכנה:
{"version": "string"}
דוגמה הוראות ליצירת FileDescriptorSet בקידוד Base64 בשדה vehicle_signals מופיעות במאמר Vehicle Signal Catalogs.
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/

הצגת רשימה של כל המטא-נתונים של Vehicle Signal Catalog.

פרטים על נקודת הקצה
תגובת הצלחה אם הפעולה מצליחה, ה-API מחזיר application/json שמכיל רשימה של גרסאות הקטלוג:
{"versions": [{"version": "string"}]}
דוגמה
curl "$SERVICE_URL/api/v1/vs/"
      

DELETE /api/v1/vs/{version}

מוחקים את קטלוג אותות הרכב שצוין.

פרטים על נקודת הקצה
פרמטרים של נתיבים version: string
שדה חובה. המזהה של קטלוג אותות הרכב שרוצים למחוק, כפי שמופיע בשדה version של בקשת ה-POST.
תגובת הצלחה אם הפעולה בוצעה בהצלחה, ה-API מחזיר application/json עם הגרסה של הקטלוג שנמחקה:
{"version": "string"}
דוגמה
curl --request DELETE "$SERVICE_URL/api/v1/vs/v1.0"
      

סטטוס השירות

בקטע הזה מתוארות נקודות קצה (endpoints) לבדיקת תקינות השירות.

‫GET /health

בודקים את תקינות השירות.

פרטים על נקודת הקצה
תגובת הצלחה אם השירות תקין, הוא מחזיר קוד סטטוס 200 OK.
דוגמה
curl "$SERVICE_URL/health"
      

תגובות שגיאה

כשקריאה ל-API מובילה לשגיאה (HTTP status 4xx או 5xx), גוף התגובה מכיל אובייקט שגיאה עם המבנה הבא:

{
  "error": {
    "code": 400,
    "status": "INVALID_ARGUMENT",
    "message": "Request validation failed",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "fieldName",
            "description": "error description"
          }
        ]
      }
    ]
  }
}
שדות שגיאה
code int32
קוד סטטוס HTTP (לדוגמה, 400,‏ 404 או 500).
status string
קוד הסטטוס הקנוני של Google RPC (לדוגמה, INVALID_ARGUMENT,‏ NOT_FOUND או INTERNAL).
message string
הודעת שגיאה באנגלית שמוצגת למפתחים.
details Array<object>
מערך של אובייקטים שמכילים פרטים נוספים על השגיאה, שמזוהים לפי חבר @type שלהם.