Sürüm oluşturma

Ad Manager API'sinde hem Ana sürüm sürümleri hem de geriye dönük uyumlu, şimdiki ana sürüme yapılan sürümlerle uyumludur.

Hizmetler, yöntemler ve alanlar, ana sürümde (ör. v1) herhangi bir zamanda desteği sonlandırılmış olarak işaretlenebilir ancak ana sürüm kullanımdan kaldırılana kadar desteklenmeye devam eder.

Ana sürüm sürümleri

Büyük sürüm sürümü, geriye dönük uyumlu olmayan API değişiklikleri içeren bir sürüm olarak tanımlanır. Bu sürümler adlandırılacak ve farklı API uç noktalarına sahip olacak. Önceki ana sürümler, taşıma döneminde desteklenir.

Ad Manager API'de büyük sürümler için düzenli bir sürüm yayınlama ritmi yoktur. Yeni büyük sürümler yalnızca gerektiğinde yayınlanır.

Yerinde sürümler

Yeni özellikler ve hata düzeltmeleri dahil geriye dönük uyumlu değişiklikler, mevcut ana API sürümünde yayınlanır. İstemciler bilinmeyen alanları işlemelidir API yanıtlarında.

Geriye Dönük Uyumluluk

Ana sürümdeki değişiklikler için geriye dönük uyumluluk korunur. Uyumluluk şu şekilde tanımlanır:

  1. Kaynak uyumluluğu: Önceki bir sürüm için yazılan kod, daha yeni bir sürüm için derlenir ve istemci kitaplığının daha yeni bir sürümüyle başarıyla çalışır.

  2. Kablo uyumluluğu: Önceki bir sürüme göre yazılmış kod yeni bir sunucuyla doğru şekilde iletişim kurduğundan emin olun. Başka bir deyişle, ve çıkışlar uyumlu olsa da serileştirme ve serileştirmeyle ilgili beklentiler eşleştirmeye devam eder.

  3. Anlamsal uyumluluk: Önceki bir sürüme göre yazılan kod, çoğu makul geliştiricinin beklediği şekilde çalışmaya devam eder.

Aşağıdaki tablolarda, API değişikliklerinin türleri ve geriye dönük uyumlu olup olmadıkları belirtilmektedir.

Hizmetler

Değişiklik Türü Geriye dönük uyumlu
Yeni hizmet ekleyin Evet
Hizmeti kaldırma Hayır

Yöntemler

Değişiklik Türü Geriye dönük uyumlu
Yeni bir yöntem ekleme Evet
Yöntemi kaldırma Hayır
Bir yöntemin istek veya yanıt türünü değiştirme Hayır

Nesneler

Değişiklik Türü Geriye dönük uyumlu
Zorunlu alan ekleyin Hayır
İsteğe bağlı bir alan ekleyin Evet
Bir alanı alt mesaja veya alt mesajdan taşıma Hayır
Zorunlu olan alanı isteğe bağlı olarak değiştirme Evet
İsteğe bağlı olan bir alanı zorunlu olarak değiştirme Hayır
Sabit kısıtlamayı kaldırma Evet
Sabit kısıtlama ekle Hayır

Listeleme

Değişiklik Türü Geriye dönük uyumlu
Enum değeri ekleme Evet
Bir enum değerini kaldırma Hayır

Desteği sonlandırılmış alan davranışı

Yeni alanlar

Değişimi olan alanlar için mümkün olduğunda her iki alan da doldurulur. Güncelleme sırasında her iki alan da ayarlanabilir. Bir güncelleme isteğine her iki alanı da eklemek INVALID_ARGUMENT hatasıyla sonuçlanır.

Aşağıdaki şemayı göz önünde bulundurun:

{
  // The cost of this Foo in micros.
  // Deprecated: Use `cost` instead.
  "costMicros": number,

  // The cost of this Foo.
  "cost": {
    object (Money)
  }
}

Okundu yanıtı her iki alanı da eşdeğer değerlerle doldurur:

{
  "costMicros": 1250000,
  "cost": {
    "currencyCode": "USD",
    "units": "1",
    "nanos": 250000000
  }
}

Güncelleme istekleri iki değerden birini ayarlayabilir. Her iki alan da dahil edildiğinde INVALID_ARGUMENT hata:

costMicros

// Update payload
{
  "costMicros": 1500000
}

// Response payload
{
  "costMicros": 1500000,
  "cost": {
    "currencyCode": "USD",
    "units": "1",
    "nanos": 500000000
  }
}

maliyet

// Update payload
{
  "cost": {
    "currencyCode": "USD",
    "units": "1",
    "nanos": 500000000
  }
}

// Response payload
{
  "costMicros": 1500000,
  "cost": {
    "currencyCode": "USD",
    "units": "1",
    "nanos": 500000000
  }
}

Her ikisi de

// 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."
          }
        ]
      }
    ]
  }
}

Desteği sonlandırılan özellikler

Bir ürün özelliği kullanımdan kaldırılırsa ilgili alanlar desteği sonlandırılmış olarak işaretlenir ve anlamsal olarak uygun bir varsayılan değer döndürebilir. Güncellemeler yoksayılabilir.

{
  // The salesperson split amount in micros.
  // Deprecated: The Sales Management feature has been deprecated. This field
  // will always be `0`.
  "salespersonSplitMicros": number,
}