Die Ad Manager REST API enthält sowohl Hauptversions-Releases als auch abwärtskompatible direkte Releases zur aktuellen Hauptversion.
Dienste, Methoden und Felder können jederzeit in einem Hauptversion (z. B. v1). Sie werden jedoch bis zu dieser Hauptversion unterstützt. wird eingestellt.
Releases von Hauptversionen
Eine Hauptversion ist definiert als ein Release mit nicht abwärtskompatibler API-Änderungen. Diese Releases werden benannt und haben unterschiedliche API-Endpunkte. Vorherige Hauptversionen werden für einen Migrationszeitraum unterstützt.
Für die Ad Manager REST API gibt es keinen regelmäßigen Releaserhythmus für die Hauptversion Versionen. Neue Hauptversionen werden nur bei Bedarf veröffentlicht.
Direkte Releases
Abwärtskompatible Änderungen, einschließlich neuer Funktionen und Fehlerkorrekturen die der aktuellen Haupt-API-Version entsprechen. Clients müssen unbekannte Felder verarbeiten in API-Antworten.
Abwärtskompatibilität
Die Abwärtskompatibilität wird für Änderungen innerhalb einer Hauptversion aufrechterhalten. Kompatibilität ist definiert als:
Quellkompatibilität: Code, der für eine vorherige Version geschrieben wurde, wird kompiliert. und erfolgreich mit einer neueren Version des Clientbibliothek.
Wire-Kompatibilität: Code, der aus einem früheren Release geschrieben wurde mit einem neueren Server korrekt kommuniziert. Mit anderen Worten, es sind nicht nur Eingaben und Ausgaben kompatibel, aber die Serialisierung und Deserialisierung weiter übereinstimmen.
Semantische Kompatibilität: Code, der für eine vorherige Version geschrieben wurde, wird fortgesetzt um das zu erhalten, was die vernünftigsten Entwickler erwarten.
In den folgenden Tabellen sind die Arten von API-Änderungen aufgeführt und die möglichen Auswirkungen abwärtskompatibel.
Dienste
Art der Änderung | Abwärtskompatibel |
---|---|
Neuen Dienst hinzufügen | Ja |
Dienst entfernen | Nein |
Methoden
Art der Änderung | Abwärtskompatibel |
---|---|
Neue Methode hinzufügen | Ja |
Methode entfernen | Nein |
Anfrage- oder Antworttyp einer Methode ändern | Nein |
Objekte
Art der Änderung | Abwärtskompatibel |
---|---|
Pflichtfeld hinzufügen | Nein |
Optionales Feld hinzufügen | Ja |
Feld in eine untergeordnete Nachricht oder aus einer untergeordneten Nachricht verschieben | Nein |
Feld von „erforderlich“ in „optional“ ändern | Ja |
Feld von optional in erforderlich ändern | Nein |
Unveränderliche Einschränkung entfernen | Ja |
Unveränderliche Einschränkung hinzufügen | Nein |
Aufzählungen
Art der Änderung | Abwärtskompatibel |
---|---|
Enum-Wert hinzufügen | Ja |
Enum-Wert entfernen | Nein |
Veraltetes Feldverhalten
Ersatzfelder
Bei Feldern mit einem Ersatz werden nach Möglichkeit beide Felder ausgefüllt.
Beim Aktualisieren kann jedes Feld festgelegt werden. Beide Felder in eine Aktualisierung einbeziehen
-Anfrage führt zu einem INVALID_ARGUMENT
-Fehler.
Betrachten Sie das folgende Schema:
{
// The cost of this Foo in micros.
// Deprecated: Use `cost` instead.
"costMicros": number,
// The cost of this Foo.
"cost": {
object (Money)
}
}
Eine Leseantwort füllt beide Felder mit äquivalenten Werten:
{
"costMicros": 1250000,
"cost": {
"currencyCode": "USD",
"units": "1",
"nanos": 250000000
}
}
Bei Aktualisierungsanfragen können beide Werte festgelegt werden. Das Einschließen beider Felder führt zu einer
INVALID_ARGUMENT
Fehler:
costMicros
// Update payload
{
"costMicros": 1500000
}
// Response payload
{
"costMicros": 1500000,
"cost": {
"currencyCode": "USD",
"units": "1",
"nanos": 500000000
}
}
Kosten
// Update payload
{
"cost": {
"currencyCode": "USD",
"units": "1",
"nanos": 500000000
}
}
// Response payload
{
"costMicros": 1500000,
"cost": {
"currencyCode": "USD",
"units": "1",
"nanos": 500000000
}
}
Beides
// Update payload
{
"costMicros": 1250000,
"cost": {
"currencyCode": "USD",
"units": "1",
"nanos": 500000000
}
}
// Response payload
{
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"field": "costMicros",
"description": "Cannot update both costMicros and cost."
}
]
}
]
}
}
Eingestellte Funktionen
Wenn eine Produktfunktion eingestellt wird, werden die entsprechenden Felder wie folgt gekennzeichnet: veraltet und gibt möglicherweise einen semantisch geeigneten Standardwert zurück. Aktualisierungen können ignoriert werden.
{
// The salesperson split amount in micros.
// Deprecated: The Sales Management feature has been deprecated. This field
// will always be `0`.
"salespersonSplitMicros": number,
}