版本管理

Ad Manager REST API 同時包含「主要版本」和「主要版本」 可回溯相容的內部版本至目前的主要版本。

服務、方法和欄位隨時都可以在 不過,主要版本 (例如第 1 版) 會持續受到支援,直到該主要版本為止 已淘汰

主要版本

主要版本定義為不具回溯相容性的版本 API 變更。系統會將這些版本命名,並採用不同的 API 端點。 系統支援先前的主要版本,

Ad Manager REST API 沒有定期使用主要版本 版本。新的主要版本只會在必要時發布。

就地發布

發布回溯相容的變更 (包括新功能和錯誤修正) 固定在目前的主要 API 版本上用戶端必須處理不明欄位 。

回溯相容性

針對主要版本中的變更,系統會維持回溯相容性。 相容性的定義如下:

  1. 原始碼相容性:針對先前版本編譯內容編寫的程式碼 搭配較新的版本運作,且能使用較新的 用戶端程式庫

  2. 傳輸相容性:針對先前版本編寫的程式碼 與較新的伺服器正常通訊換句話說,不單只是輸入 但 Cloud Storage 是支援序列化與去序列化的 會繼續比對。

  3. 語意相容性:針對先前版本編寫的程式碼繼續進行 享有最合理的開發人員期望

下表列舉 API 變更的類型,以及是否考慮變更 回溯相容

服務

變更類型 回溯相容
新增服務
移除服務

方法

變更類型 回溯相容
新增方法
移除方法
變更方法的要求或回應類型

物件

變更類型 回溯相容
新增必填欄位
新增選用欄位
將欄位移入或移出子訊息
將欄位從必填變更為選填
將欄位從選填變更為必填
移除不可變動的限制
新增不可變動的限制

列舉

變更類型 回溯相容
新增列舉值
移除列舉值

已淘汰的欄位行為

替換欄位

如果可以替換的欄位,兩個欄位都會盡可能填入。 更新時,可以設定任一欄位。更新作業同時納入這兩個欄位 要求會導致 INVALID_ARGUMENT 錯誤。

請考慮使用下列結構定義:

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

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

讀取回應會在兩個欄位中填入對等的值:

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

更新要求可設定任一值。若同時加入這兩個欄位,都會產生 INVALID_ARGUMENT 錯誤:

costMicros

// Update payload
{
  "costMicros": 1500000
}

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

費用

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

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

兩者皆有

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

已停用的功能

如果產品功能已終止,對應的欄位會標示為 且可能會傳回語意適當的預設值。最新快訊 可以忽略

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