Sürüm oluşturma

Ad Manager API'de hem adlandırılmış ana sürüm yayınları hem de mevcut ana sürümle geriye dönük uyumlu yerinde yayınlar bulunur.

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

Ana sürüm yayınları

Ana 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 süresi boyunca desteklenir.

Ad Manager API'sinde ana sürümler için düzenli bir yayınlanma sıklığı yoktur. Yeni ana sürümler yalnızca gerektiğinde yayınlanır.

Yerinde sürümler

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

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üme göre yazılan kod, daha yeni bir sürüme göre derlenir ve istemci kitaplığının daha yeni bir sürümüyle başarıyla çalışır.

  2. Kablolu uyumluluk: Önceki bir sürüm için yazılan kod, daha yeni bir sunucuyla doğru şekilde iletişim kurar. Diğer bir deyişle, yalnızca girişler ve çıkışlar uyumlu olmakla kalmaz, aynı zamanda serileştirme ve seri durumdan çıkarma beklentileri de eşleşmeye devam eder.

  3. Anlamsal uyumluluk: Önceki bir sürüme göre yazılan kod, makul geliştiricilerin çoğunun 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ı listelenmektedir.

Hizmetler

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

Yöntemler

Değişiklik Türü Geriye dönük uyumlu
Yeni bir yöntem ekleme Evet
Yöntem 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 ekleme Hayır
İsteğe bağlı bir alan ekleme Evet
Bir alanı alt mesaja taşıma veya alt mesajdan çıkarma Hayır
Bir alanı zorunlu durumdan isteğe bağlı duruma değiştirme Evet
İsteğe bağlı bir alanı zorunlu olarak değiştirme Hayır
Değiştirilemez bir kısıtlamayı kaldırma Evet
Değiştirilemez bir kısıtlama ekleme Hayır

Numaralandırmalar

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

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

Değiştirme alanları

Değiştirilen alanlar varsa mümkün olduğunda her iki alan da doldurulur. Güncelleme sırasında her iki alan da ayarlanabilir. Güncelleme isteğine her iki alanın da dahil edilmesi INVALID_ARGUMENT hatasıyla sonuçlanır.

Aşağıdaki şemayı inceleyin:

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

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

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

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

Güncelleme istekleri her iki değeri de ayarlayabilir. Her iki alanın da eklenmesi INVALID_ARGUMENT hatasına neden olur:

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 kullanımdan kaldırıldı 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,
}