Official Documentation: https://advertising.amazon.com/API/docs
Project Status: Beta - All 45 APIs Implemented
Current Version: v0.3.0
Amazon Advertising API 的非官方 Go SDK,提供完整的类型安全 API 封装,支持所有广告产品。
最新更新 (v0.3.0):
- ✅ 接口抽象层 - Logger, MetricsCollector, Tracer 接口
- ✅ 零依赖友好 - No-Op 默认实现,无需强制依赖
- ✅ Facade 设计模式 - 更好的内部组件封装
- ✅ 架构优化 - 移除 zap 和 prometheus 硬依赖
- ✅ 所有 45 个 API 已生成(100% API 覆盖)
- ✅ 核心模块单元测试覆盖率 90%+
- ✅ 完整的 API 覆盖 - 支持所有主要的 Amazon Ads API
- ✅ 类型安全 - 完整的 Go 类型定义和编译时检查
- ✅ 零依赖友好 - 可选的日志和指标收集,No-Op 默认实现
- ✅ 接口抽象 - 面向接口编程,易于扩展和测试
- ✅ 生产级质量 - 90%+ 测试覆盖率,完善的错误处理
- ✅ 自动认证 - 内置 LWA OAuth 2.0 认证和 Token 刷新
- ✅ 速率限制 - 智能速率限制管理,避免 API 限流
- ✅ 重试机制 - 自动重试和熔断器保护
- ✅ 官方监控 - 自动监控 API 规范变更
- ✅ 丰富示例 - 完整的使用示例和最佳实践
| 类别 | 数量 | 状态 |
|---|---|---|
| 核心广告产品 | 4 | ✅ |
| 账户管理 | 4 | ✅ |
| 报告与分析 | 5 | ✅ |
| DSP | 5 | ✅ |
| 受众与定向 | 3 | ✅ |
| 创意与素材 | 4 | ✅ |
| 产品与目录 | 2 | ✅ |
| 归因与测量 | 2 | ✅ |
| 财务与预算 | 2 | ✅ |
| 数据管理 | 4 | ✅ |
| 其他 (优化/审计/合作伙伴/测试等) | 4 | ✅ |
| 统一 API | 1 | ✅ |
| Retail Ad Service | 2 | ✅ |
| 已弃用/旧版本 | 3 | ✅ |
点击查看完整 API 列表(45 个)
- ✅ Sponsored Products v3
- ✅ Sponsored Brands v4
- ✅ Sponsored Display v3
- ✅ Sponsored TV
- ✅ Profiles v3
- ✅ Portfolios v2
- ✅ Advertising Accounts
- ✅ Manager Accounts
- ✅ Reporting v3
- ✅ Brand Metrics
- ✅ Insights
- ✅ Stores Analytics
- ✅ Marketing Mix Modeling
- ✅ DSP Audiences
- ✅ DSP Conversions
- ✅ DSP Measurement
- ✅ DSP Target KPI
- ✅ DSP Advertisers
- ✅ Audiences Discovery
- ✅ Persona Builder
- ✅ Locations
- ✅ Creative Assets
- ✅ Moderation
- ✅ Pre-Moderation
- ✅ Ad Library
- ✅ Product Metadata
- ✅ Product Eligibility
- ✅ Amazon Attribution
- ✅ Reach Forecasting
- ✅ Billing
- ✅ Account Budgets
- ✅ Exports
- ✅ Marketing Stream
- ✅ Hashed Records
- ✅ Data Provider
- ✅ Tactical Recommendations
- ✅ Change History
- ✅ Partner Opportunities
- ✅ Test Accounts
- ✅ Amazon Ads API v1 (Unified)
- ✅ Retail Ad Service (2)
- ✅ Deprecated/Older (3)
完整列表请查看 docs/API_COVERAGE.md
已下载规范: 45 个 OpenAPI 文件(38 JSON + 7 YAML)
已实现 API: 45/45 (100% ✅)
生成文件数: 8,449 个
代码生成: swagger-codegen-cli-3.0.62.jar
自动修复: Creative Assets, Billing, Amazon Ads v1
编译状态: ✅ 全部通过
go get github.com/vanling1111/amazon-ads-api-go-sdkpackage main
import (
"context"
"fmt"
"log"
"net/http"
"github.com/vanling1111/amazon-ads-api-go-sdk/pkg/adsapi"
sp "github.com/vanling1111/amazon-ads-api-go-sdk/pkg/adsapi/sponsored-products-v3"
)
func main() {
// 1. 创建客户端配置
cfg := &adsapi.Config{
ClientID: "amzn1.application-oa2-client.xxx",
ClientSecret: "your-client-secret",
RefreshToken: "Atzr|xxx",
ProfileID: "123456789",
Region: "NA",
}
// 2. 创建主客户端
client, err := adsapi.NewClient(cfg)
if err != nil {
log.Fatal(err)
}
// 3. 创建 Sponsored Products API 客户端配置
spConfig := sp.NewConfiguration()
spConfig.HTTPClient = client.GetHTTPClient()
spConfig.BasePath = "https://advertising-api.amazon.com"
// 4. 创建 Sponsored Products API 客户端
spClient := sp.NewAPIClient(spConfig)
// 5. 调用 API(示例:列出广告活动)
// 注意:实际使用时需要根据生成的 API 方法调用
// campaigns, response, err := spClient.CampaignsApi.ListCampaigns(context.Background(), ...)
// if err != nil {
// log.Fatal(err)
// }
fmt.Println("Client initialized successfully!")
}注意:
- 实际 API 调用方法请参考各 API 包的
doc.go文件 - swagger-codegen 生成的客户端使用方式与手动封装略有不同
- 查看
pkg/adsapi/sponsored-products-v3/doc.go获取完整示例
package main
import (
"github.com/vanling1111/amazon-ads-api-go-sdk/pkg/adsapi"
"github.com/vanling1111/amazon-ads-api-go-sdk/internal/models"
)
func main() {
// 使用默认的 No-Op 实现(零依赖)
client := adsapi.NewClient(
adsapi.WithRegion(models.RegionNA),
adsapi.WithCredentials("client-id", "secret", "token"),
adsapi.WithProfileID(123456789),
)
// 或使用自定义的日志和指标实现
client := adsapi.NewClient(
adsapi.WithRegion(models.RegionNA),
adsapi.WithCredentials("client-id", "secret", "token"),
adsapi.WithProfileID(123456789),
adsapi.WithLogger(myCustomLogger), // 实现 adsapi.Logger 接口
adsapi.WithMetrics(myCustomMetrics), // 实现 adsapi.MetricsCollector 接口
)
}新架构优势:
- ✅ 不再强制依赖 zap 或 prometheus
- ✅ 可以使用任何日志库(只需实现 Logger 接口)
- ✅ 可以使用任何指标收集器(只需实现 MetricsCollector 接口)
- ✅ 默认使用 No-Op 实现,零依赖
所有 API 的详细文档都在各自的 doc.go 文件中:
- Profiles API v3:
pkg/adsapi/profiles-v3/doc.go - Portfolios API v2:
pkg/adsapi/portfolios-v2/doc.go - Sponsored Products API v3:
pkg/adsapi/sponsored-products-v3/doc.go - Sponsored Brands API v4:
pkg/adsapi/sponsored-brands-v4/doc.go - Sponsored Display API v3:
pkg/adsapi/sponsored-display-v3/doc.go - Reporting API v3:
pkg/adsapi/reporting-v3/doc.go
- 认证:
internal/auth/- LWA OAuth 2.0 - 传输:
internal/transport/- HTTP 客户端、重试 - 速率限制:
internal/ratelimit/- 令牌桶算法 - 指标:
internal/metrics/- Prometheus 监控
详细示例请参考各 API 包的 doc.go 文件:
- Profiles API:
pkg/adsapi/profiles-v3/doc.go - Sponsored Products API:
pkg/adsapi/sponsored-products-v3/doc.go - Reporting API:
pkg/adsapi/reporting-v3/doc.go
所有 API 客户端都使用 swagger-codegen 从官方 OpenAPI 规范生成,包含:
- APIClient: 主客户端结构
- Configuration: 配置管理
- API Services: 各功能模块的 API 服务(
api_*.go) - Models: 数据模型定义(
model_*.go)
如需重新生成代码:
# 批量生成所有 API
.\scripts\generate-all-apis-batch.ps1
# 单个 API 生成示例
java -jar swagger-codegen-cli-3.0.62.jar generate `
-i specs/sponsored-products-v3.json `
-l go `
-o pkg/adsapi/sponsored-products-v3 `
--additional-properties packageName=sponsoredproductsv3// 内置 LWA OAuth 2.0 自动认证
// Token 自动刷新,无需手动管理
cfg := &adsapi.Config{
ClientID: "your-client-id",
ClientSecret: "your-client-secret",
RefreshToken: "your-refresh-token",
}// 使用令牌桶算法自动管理速率限制
// 避免触发 API 限流
import "github.com/vanling1111/amazon-ads-api-go-sdk/internal/ratelimit"
limiter := ratelimit.NewManager(10.0, 100) // 10 请求/秒,桶容量 100// Prometheus 指标收集
import "github.com/vanling1111/amazon-ads-api-go-sdk/internal/metrics"
metrics := metrics.NewPrometheusMetrics()
metrics.RecordRequest("sponsored-products", "ListCampaigns", 200, 0.5)// 自定义 HTTP 客户端(重试、超时等)
import "github.com/vanling1111/amazon-ads-api-go-sdk/internal/transport"
httpClient := transport.NewHTTPClient(&transport.Config{
MaxRetries: 3,
Timeout: 30 * time.Second,
EnableMetrics: true,
})SDK 内置自动监控工具,实时跟踪 Amazon Ads API 的变更。
- ✅ 全面覆盖 - 监控所有 45 个官方 API
- ✅ 自动检测 - API 新增、删除、版本更新
- ✅ SHA256 校验 - 精确检测规范文件变更
- ✅ GitHub 集成 - 自动创建 Issue 通知
- ✅ 定时运行 - 每周自动 + 手动触发
cd tools/api-monitor
go run main.go- 自动运行: 每周一 00:00 UTC
- 手动触发: Actions 页面手动运行
- 变更通知: 自动创建 Issue
🔍 Starting Amazon Ads API Monitor...
📊 Monitoring 45 APIs in total
🆕 New APIs:
• New Feature API (v1.0)
🔄 Updated APIs:
• Sponsored Products v3: 3.0 → 3.1
• Reporting v3: 2.5 → 3.0
详细文档:tools/api-monitor/README.md
- Amazon SP-API Go SDK - 本项目的姊妹项目,提供 Selling Partner API 封装
双许可证模式:
免费用于:
- ✅ 个人项目
- ✅ 教育用途
- ✅ 开源项目(必须同样开源)
需购买商业许可证:
- 🏢 企业内部使用
- 🔒 闭源商业产品
- 💼 SaaS 服务
购买商业许可证: 联系 vanling1111@gmail.com
欢迎贡献!请查看 CONTRIBUTING.md
贡献者要求:
- ✅ 遵循 Go 官方代码规范
- ✅ 提供单元测试(覆盖率 90%+)
- ✅ 使用 Google 风格注释(中文)
- ✅ 通过所有 CI 检查
- 文档: https://github.com/vanling1111/amazon-ads-api-go-sdk/docs
- Issues: https://github.com/vanling1111/amazon-ads-api-go-sdk/issues
- 邮箱: vanling1111@gmail.com
- 参考了 Amazon SP-API Go SDK 的架构设计
- 感谢 Amazon Advertising API 官方文档
项目状态: ✅ Alpha 版本
当前版本: v0.2.0 (2025-10-07)
API 覆盖: 45/45 (100%) ✅
已下载规范: 45 个 OpenAPI 文件 (38 JSON + 7 YAML)
生成文件数: 8,449 个
核心模块测试覆盖: 90%+
维护者: @vanling1111