@apple/apple-ads-platform

中文文档
1.117.0发布于 2026/10/13MITTypeScriptCommonJS构建来源已验证近 30 天下载 1.4万

用于 Apple Ads 平台 API 的 Node.js 客户端库

中文使用文档
文档目录18 节
  1. 模型和端点文档
  2. 安装
  3. 开始
  4. 客户建设
  5. 可选设置
  6. 实例
  7. 处理错误
  8. 保存您的身份证明
  9. 重用客户端
  10. 元素类型
  11. 测试
  12. npm test
  13. npm run test:coverage
  14. 大楼
  15. npm run build
  16. 扶养管理
  17. npm run update-deps
  18. 许可证

Apples 平台 API 节点

用于苹果Ads平台API的Node.js / TypeScript客户端库.

模型和端点文档

该图书馆是安装和使用该图书馆的主要文件。 对于 关于数据模型和API端点的信息,见 Apple Ads 平台 API 文档 在苹果公司的开发商网站上找到.

安装

从 npm 安装此库 。 就像几乎任何软件依赖,你应该针 特定版本,仅在您明确打算时更新.

npm install @apple/apple-ads-platform

或者把它加进你的 package.json dependencies数字 :

{
  "dependencies": {
    "@apple/apple-ads-platform": "VERSION"
  }
}

载有类型Script申报的图书馆船——没有单独的 @types/... 需要软件包.

开始

这个图书馆很容易创建 AppleAdsApi 实例 a 一个 axios HTTP客户端已准备好呼叫苹果Ads平台API. 这个 createAppleAdsApi 工厂接受认证所需的信息 和各种可选设置。 由此产生的客户端透明地执行 OAuth 流量 .

客户建设

您可以以三种方式即时处理客户端, 由 authMode 选项对象上的字段.

使用您的私钥

创建客户端的第一个方法是提供一条通往您的路径 .pem 私有密钥文件与 其他相关的元数据。 图书馆在施工时读过钥匙一次 每次需要新的访问令牌时都会生成新的客户端秘密.

import { createAppleAdsApi } from '@apple/apple-ads-platform';

const api = await createAppleAdsApi({
  authMode: 'key',
  clientId: '...',
  teamId: '...',
  keyId: '...',
  privateKeyPath: '/path/to/your/private/key.pem',
});

使用自定义客户端加密工具

如果您希望以不同的方式生成客户机密(例如,生成其离线和 在运行时使用固定服务,或在签字时使用单独的服务),通过执行 ClientSecretProvider。图书馆在需要客户端保密时使用它 用于获取新的访问符.

import { createAppleAdsApi, ClientSecretProvider } from '@apple/apple-ads-platform';

const clientSecretProvider: ClientSecretProvider = {
  getClientSecret: () => '...',
};

const api = await createAppleAdsApi({
  authMode: 'clientSecret',
  clientId: '...',
  clientSecretProvider,
});

执行 OAuth 自己

我们建议让图书馆处理OAuth的流量 有具体要求的,可以 用一个 AccessTokenProvider。在这种情况下,图书馆在每一个API之前都叫它 请求以附加一个访问符作为 HTTP 标题.

import { createAppleAdsApi, AccessTokenProvider } from '@apple/apple-ads-platform';

const accessTokenProvider: AccessTokenProvider = new MyAccessTokenProvider(/* ... */);

const api = await createAppleAdsApi({
  authMode: 'token',
  accessTokenProvider,
});

可选设置

下面的所有选项都有合理的默认,可能会被省略. 选项作为字段在 相同的选项对象.

常见 authMode 数值)

外地类型说明默认
apiTimeoutnumber (单位:百万美元)API请求的超时 .5000
maxSocketsnumberAPI 连接池每个主机的最大打开套接字 .50
maxFreeSocketsnumberAPI 连接池中每个主机最大闲置的 keep- socket .10
freeSocketTimeoutnumber (单位:百万美元)这么多毫秒后, Idle socket 被从 API 池中拆出 。 设定在服务器的保存- 闲置超时下, 以避免 Stale 连接出错 .30000
apiAxiosCustomizer(instance: AxiosInstance) => void创建后对主 API axios 实例应用回调,允许额外定制(代理设置,额外截取器,头等). 见 轴 可能情况下的文件.无适用
loggerLogger | null请求/响应日志截取器使用的 Logger 。 过 null 要完全禁用日志。 执行 Logger 接口工程(与 console, (中文(简体) ), winston,以及 pino 一个小包装。 这个 Authorization 信头从未被记录 .console
requestLogLevel'debug' | 'info' | 'warn' | 'error'请求启动和成功响应的日志级别 。 适用于 API 和 assios 实例 .'info'
errorLogLevel'debug' | 'info' | 'warn' | 'error'请求错误的日志级别 。 适用于 API 和 assios 实例 .'error'

增加额用于 authMode: 'key' 财务报告和审定财务报表 authMode: 'clientSecret'

外地类型说明默认
authTimeoutnumber (单位:百万美元)给 Auth 服务器的令牌请求超时 .5000
authAxiosCustomizer(instance: AxiosInstance) => void与 apiAxiosCustomizer 但对于axios的例子 用于认证符号请求.无适用

可选设置示例

const api = await createAppleAdsApi({
  authMode: 'key',
  clientId: '...',
  teamId: '...',
  keyId: '...',
  privateKeyPath: '/path/to/your/private/key.pem',
  apiTimeout: 10_000,
  requestLogLevel: 'debug',
});

实例

这个 xApContext 标出该请求适用的广告账户. 这是一个简单的字符串——按照API的要求为您所呼叫的终点构建它.

查询活动

import {
  createAppleAdsApi,
  QueryRequest,
  QueryFilterOperator,
  CampaignSystemStatus,
} from '@apple/apple-ads-platform';

const api = await createAppleAdsApi({
  authMode: 'key',
  clientId: '...',
  teamId: '...',
  keyId: '...',
  privateKeyPath: '/path/to/your/private/key.pem',
});

const runningCampaignsRequest: QueryRequest = {
  filters: [
    {
      field: 'systemStatus',
      operator: QueryFilterOperator.Equals,
      value: CampaignSystemStatus.Running,
    },
  ],
};

const xApContext = '...'; // e.g. "adAccountId=12345678;" 

const response = await api.campaignsQueryPost(xApContext, runningCampaignsRequest);

通过 ID 获取商务品牌

const api = await createAppleAdsApi({
  authMode: 'key',
  clientId: '...',
  teamId: '...',
  keyId: '...',
  privateKeyPath: '/path/to/your/private/key.pem',
});

const brandId = '...';
const xApContext = '...';

const response = await api.getBrand(xApContext, brandId);

更新关键字标注

import { createAppleAdsApi, KeywordUpdate } from '@apple/apple-ads-platform';

const api = await createAppleAdsApi({
  authMode: 'key',
  clientId: '...',
  teamId: '...',
  keyId: '...',
  privateKeyPath: '/path/to/your/private/key.pem',
});

const keywordId = '...';
const xApContext = '...';

const keywordUpdate: KeywordUpdate = {
  bid: { amount: '1.00', currency: 'USD' },
};

const response = await api.keywordsIdPut(keywordId, xApContext, keywordUpdate);

处理错误

每个失败的请求——非-2xx响应或运输/网络故障——被转换为 ApiRequestError 在它逃出图书馆之前 错误是平整的 可序列( 安全到 JSON.stringify 它只载着平板球code, (中文(简体) ), status, (中文(简体) ), statusText, (中文(简体) ), method, (中文(简体) ), url加服务器的应答有效载荷(data) (中文(简体) ). 从来没有 保留了基本的轴误差、套接字或连接池代理.

import { ApiRequestError } from '@apple/apple-ads-platform';

try {
  await api.getBrand(xApContext, brandId);
} catch (err) {
  if (err instanceof ApiRequestError) {
    console.error(err.status, err.data);
  }
  throw err;
}

保存您的身份证明

你的私人密钥和客户秘密是敏感的证明 别把它们当作纯正的文字. 把访问符也当作秘密 库中不记录任何这些值( Authorization 页眉在日志输出中被明确省略). 如果您选择添加任何 通过客户端的更定制,增加记录或可观察性.

重用客户端

在许多飞行请求中,客户可以安全地同时使用。 创建单一实例 并在整个应用程序中分享。 最大限度地扩大 内置的保持-活性连接池并最小化给 OAuth 服务器的呼叫. 如果你提供你的 拥有 AccessTokenProvider,货币行为取决于执行.

元素类型

模型定义使用 TypeScript enum 有字符串值的类型(参见 src/model) 整个API模型. 随着API本身随时间演变,新的enum 值可能会出现。 因为库中不会显示未知的enum值 解序列化,一个响应可以包含一个不匹配当前任何成员的字符串 um. 与已知的馆员相比,请注意,并更新图书馆,以确保 您有匹配最新版本API的模型类型.

节点命令

测试

npm test

运行完整测试套房一次并报告结果. 使用此功能进行CI或快速本地检查 .

npm run test:coverage

运行完整的测试套件并生成编码封面报告 coverage/打开 coverage/lcov-report/index.html 在浏览器中显示逐行的详细视图.

大楼

npm run build

编译类型脚本源入 src/ 到 Java 脚本在 dist/,包括类型声明文件(.d.ts) (中文(简体) ). 这个 prebuild 步骤自动清理 dist/ 先说 在发布前运行此功能 .

扶养管理

npm run update-deps

检查所有依赖关系的最新版本并交互升级 package.json,然后安装更新的软件包。 电源 npm-check-updates (单位:千美元)ncu) (中文(简体) ). 运行后的审查和测试——主要版本的起伏可能包含断裂变化.

许可证

这个项目根据麻省理工学院的许可发布. 见 自由主义 详细情况.

版本与发布记录

@apple/apple-ads-platform 共发布 3 个版本,首次发布于 2026/08/15;过去 12 个月发布了 3 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.117.0latest2026/10/1325 天前
1.109.02026/08/152 个月前
0.0.12026/08/152 个月前

关于 @apple/apple-ads-platform 的常见问题

@apple/apple-ads-platform 是什么?

用于 Apple Ads 平台 API 的 Node.js 客户端库

如何安装 @apple/apple-ads-platform?

在项目目录运行 npm install @apple/apple-ads-platform,或使用 pnpm add / yarn add / bun add。

@apple/apple-ads-platform 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@apple/apple-ads-platform 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@apple/apple-ads-platform 可以商用吗?

@apple/apple-ads-platform 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@apple/apple-ads-platform 的下载量有多少?

根据 npm 官方下载统计,@apple/apple-ads-platform 在 2026/10/07 – 2026/11/05 这 30 天内被下载 14,176 次,日均约 473 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@apple/apple-ads-platform 还在维护吗?

最新版本 1.117.0 发布于 2026/10/13(25 天前);至今共发布 3 个版本,其中过去 12 个月发布了 3 个;首次发布于 2026/08/15。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。