版本控制

Ad Manager REST API 包含已命名的主要版本发布版本和 向后兼容的就地版本。

服务、方法和字段可能会随时标记为“已弃用” 主要版本(如 v1),但直到该主要版本才开始支持这些版本 版本已停用。

主要版本版本

主要版本是指具有向后不兼容状态的版本 API 更改。这些版本将被命名并具有不同的 API 端点。 迁移期间支持之前的主要版本。

Ad Manager REST API 的 Major 版本没有常规发布频率 版本。新的主要版本将仅在必要时发布。

就地发布

发布了向后兼容的更改,包括新功能和问题修复 当前 Major API 版本。客户端必须处理未知字段 。

向后兼容性

主要版本中的更改会保持向后兼容性。 兼容性的定义如下:

  1. 源代码兼容性:针对之前的版本编译的代码 与较新版本的应用一起成功运行 客户端库。

  2. 线路兼容性:针对先前版本编写的代码 与较新的服务器正常通信。换句话说, 和输出兼容,但序列化和反序列化预期满足 继续匹配。

  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,
}