Interfejs Ad Manager API zawiera zarówno nazwane wersje główne, jak i wersje w miejscu, które są zgodne z poprzednimi wersjami.
Usługi, metody i pola mogą zostać oznaczone jako wycofane w dowolnym momencie w wersji głównej (np.v1). Będą one jednak obsługiwane do czasu została wycofana.
Wersje główne
Duża wersja to wersja z niezgodnymi wstecz zmianami w interfejsie API. Te wersje będą miały nazwy i różne punkty końcowe interfejsu API. Wcześniejsze główne wersje są obsługiwane w okresie migracji.
Interfejs API Ad Managera nie ma standardowej serii w przypadku wersji głównych. wersji. Nowe wersje główne będą publikowane tylko w razie potrzeby.
Wersje na miejscu
Zmiany zapewniające wsteczną zgodność, w tym nowe funkcje i poprawki błędów, są publikowane w ramach bieżącej głównej wersji interfejsu API. Klienci muszą obsługiwać nieznane pola w odpowiedziach interfejsu API.
Zgodność wsteczna
Zgodność wsteczna jest zachowana w przypadku zmian w ramach wersji głównej. Zgodność jest definiowana jako:
Zgodność źródła: kod napisany w porównaniu z poprzednią wersją to kompilacja w porównaniu z nowszą wersją programu z biblioteką klienta.
Zgodność z wersją roboczą: kod napisany w porównaniu z poprzednią wersją komunikuje się prawidłowo z nowszym serwerem. Innymi słowy, dane wejściowe i wyjściowe są zgodne, a oczekiwania dotyczące serializacji i deserializacji są nadal takie same.
Zgodność semantyczna: kod napisany w poprzedniej wersji nadal zachowuje oczekiwane przez większość rozsądnych programistów właściwości.
W tabeli poniżej wymieniono typy zmian w interfejsie API i wskazano, czy są one zgodne ze starszymi wersjami.
Usługi
Typ zmiany | Zgodność wsteczna |
---|---|
Dodawanie nowej usługi | Tak |
Usuwanie usługi | Nie |
Metody
Typ zmiany | Zgodność wsteczna |
---|---|
Dodaj nową metodę | Tak |
Usuwanie formy | Nie |
Zmienianie typu żądania lub odpowiedzi metody | Nie |
Obiekty
Typ zmiany | Zgodność wsteczna |
---|---|
Dodawanie wymaganego pola | Nie |
Dodawanie pola opcjonalnego | Tak |
Przenoszenie pola do podwiadomości lub z niego | Nie |
Zmiana pola z wymaganego na opcjonalne | Tak |
Zmień wartość pola z opcjonalnego na wymagane | Nie |
Usuwanie stałego ograniczenia | Tak |
Dodaj stałe ograniczenie | Nie |
Wyliczenia
Typ zmiany | Zgodność wsteczna |
---|---|
Dodawanie wartości typu wyliczeniowego | Tak |
Usuwanie wartości wyliczeniowej | Nie |
Zachowanie wycofanych pól
Pola zastępcze
W przypadku pól, które mają zastąpione wartości, oba pola zostaną wypełnione, jeśli to możliwe.
Podczas aktualizacji możesz ustawić dowolne z tych pól. Podanie obu pól w prośbie o zaktualizowanie spowoduje błąd INVALID_ARGUMENT
.
Rozważ ten schemat:
{
// The cost of this Foo in micros.
// Deprecated: Use `cost` instead.
"costMicros": number,
// The cost of this Foo.
"cost": {
object (Money)
}
}
Odpowiedź odczytu wypełnia oba pola odpowiednikami:
{
"costMicros": 1250000,
"cost": {
"currencyCode": "USD",
"units": "1",
"nanos": 250000000
}
}
Prośby o aktualizację mogą zawierać dowolną z tych wartości. Uwzględnienie obu pól powoduje utworzenie
INVALID_ARGUMENT
błąd:
costMicros
// Update payload
{
"costMicros": 1500000
}
// Response payload
{
"costMicros": 1500000,
"cost": {
"currencyCode": "USD",
"units": "1",
"nanos": 500000000
}
}
koszt
// Update payload
{
"cost": {
"currencyCode": "USD",
"units": "1",
"nanos": 500000000
}
}
// Response payload
{
"costMicros": 1500000,
"cost": {
"currencyCode": "USD",
"units": "1",
"nanos": 500000000
}
}
Obie opcje
// 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."
}
]
}
]
}
}
Funkcje wycofane
Jeśli funkcja produktu zostanie wycofana, odpowiednie pola zostaną oznaczone jako przestarzałe i mogą zwracać semantycznie odpowiednią wartość domyślną. Aktualizacje można zignorować.
{
// The salesperson split amount in micros.
// Deprecated: The Sales Management feature has been deprecated. This field
// will always be `0`.
"salespersonSplitMicros": number,
}