diff --git a/README.md b/README.md index abf5c87..3527c30 100644 --- a/README.md +++ b/README.md @@ -8,20 +8,19 @@ [![GitHub license](https://img.shields.io/github/license/bububa/kwai-marketing-api.svg)](https://github.com/bububa/kwai-marketing-api/blob/master/LICENSE) [![GitHub release](https://img.shields.io/github/release/bububa/kwai-marketing-api.svg)](https://GitHub.com/bububa/kwai-marketing-api/releases/) - - Oauth2 授权 (api/oauth) - 生成授权链接 [ Url(clt *core.SDKClient, req *oauth.UrlRequest) string ] - 获取AccessToken [ AccessToken(clt *core.SDKClient, authCode String) (*oauth.AccessTokenResponse, error) ] - 刷新Token [ RefreshToken(clt *core.SDKClient, refreshToken string) (*oauth.AccessTokenResponse, error)] - - 拉取token下授权广告账户接口 [ ApprovalList(clt *core.SDKClient, accessToken string) ([]uint64, error) ] + - 拉取token下授权广告账户接口 [ ApprovalList(clt \*core.SDKClient, accessToken string) ([]uint64, error) ] - 账号服务 - 广告主 (api/advertiser) - 获取广告主信息 [ Info(clt *core.SDKClient, accessToken string, advertiserID int64) (*advertiser.Info, error) ] - 获取广告账户余额信息 [ FundGet(clt *core.SDKClient, accessToken string, advertiserID int64) (float64, error) ] - - 获取广告主账户流水信息 [ FundDailyFlows(clt *core.SDK, accessToken string, req *advertiser.FundDailyFlowsRequest) (*advertiser.FundDailyFlowsResponse, error) ] + - 获取广告主账户流水信息 [ FundDailyFlows(clt *core.SDK, accessToken string, req *advertiser.FundDailyFlowsRequest) (*advertiser.FundDailyFlowsResponse, error) ] - 账户罗盘(api/adcompass) - - 获取罗盘绑定广告主列 [ Advertisers(clt *core.SDKClient, accessToken string, advertiserID uint64) ([]adcompass.Advertiser, error) ] - - 磁力罗盘对外 quota 腾挪接口 [ QuotaTending(clt *core.SDKClient, accessToken string, req *adcompass.QuotaTendingRequest) (string, error) ] + - 获取罗盘绑定广告主列 [ Advertisers(clt \*core.SDKClient, accessToken string, advertiserID uint64) ([]adcompass.Advertiser, error) ] + - 磁力罗盘对外 quota 腾挪接口 [ QuotaTending(clt *core.SDKClient, accessToken string, req *adcompass.QuotaTendingRequest) (string, error) ] - 广告投放 - 智能创编 (api/dsp) - 广告计划 (api/dsp/campaign) @@ -131,13 +130,13 @@ - 获取可选的定向标签 [ tool.TargetingTagsList(clt *core.SDKClient, accessToken string, req *tool.TargetingTagsListRequest) (*tool.TargetingTag, error) ] - 获取可选的应用定向 [ tool.AppSearch(clt *core.SDKClient, accessToken string, req *tool.AppSearchRequest) (*tool.TargetingApp, error) ] - 获取可选的推荐封面 [ tool.KeyFrame(clt *core.SDKClient, accessToken string, req *tool.KeyFrameRequest) ([]string, error) ] - - 获取可选的动态词包 [ tool.CreativeWordList(clt *core.SDKClient, accessToken string, advertiserID int64) ([]tool.CreativeWord, error) ] + - 获取可选的动态词包 [ tool.CreativeWordList(clt \*core.SDKClient, accessToken string, advertiserID int64) ([]tool.CreativeWord, error) ] - 获取行动号召按钮 [ creative.ActionBarTextList(clt *core.SDKClient, accessToken string, req *creative.ActionBarTextListRequest) ([]string, error) ] - - 获取可选的封面贴纸样式 [ tool.CreativeWordStyles(clt *core.SDKClient, accessToken string, advertiserID int64) ([]tool.CreativeWordStyle, error) ] + - 获取可选的封面贴纸样式 [ tool.CreativeWordStyles(clt \*core.SDKClient, accessToken string, advertiserID int64) ([]tool.CreativeWordStyle, error) ] - 获取可用的转化目标 [ tool.ConvertList(clt *core.SDKClient, accessToken string, req *tool.ConvertListRequest) (*tool.ConvertListResponse, error) ] - 获取可选白名单接口 [ advertiser.WhiteList(clt *core.SDKClient, accessToken string, advertiserID int64) (*advertiser.WhiteListResponse, error) ] - - 获取地域定向 [ region.List(clt *core.SDKClient, accessToken string) (map[string]region.Region, error) ] - - 获取商圈地域定向 [ region.DistrictList(clt *core.SDKClient, accessToken string, advertiserID int64) (map[string]region.District, error) ] + - 获取地域定向 [ region.List(clt \*core.SDKClient, accessToken string) (map[string]region.Region, error) ] + - 获取商圈地域定向 [ region.DistrictList(clt \*core.SDKClient, accessToken string, advertiserID int64) (map[string]region.District, error) ] - 获取可用咨询组件列表 [ lp.ConsultList(clt *core.SDKClient, accessToken string, req *lp.ConsultListRequest) (*lp.ConsultListResponse, error) ] - 出价建议 - 获取广告组出价建议 [ tool.unit.SuggestBidDetail(clt *core.SDKClient, accessToken string, req *unit.SuggestBidDetailRequest) ([]unit.SuggestBidUnit, error) ] @@ -181,11 +180,37 @@ - 人群包删除接口 [ PopulationDelete(clt *core.SDKClient, accessToken string, req *dmp.PopulationDeleteRequest) error ] - 人群包跨账户推送 [ PopulationAccountsPush(clt *core.SDKClient, accessToken string, req *dmp.PopulationAccountsPushRequest) (*dmp.PopulationAccountsPushResponse, error) ] - 人群包上线接口 [ PopulationPush(clt *core.SDKClient, accessToken string, req *dmp.PopulationPushRequest) error ] +- 应用管理 (api/appcenter) + - 文件上传 (api/appcenter/upload) + - 上传 APK 文件 [ Apk(clt *core.SDKClient, accessToken string, req *upload.ApkRequest) (string, error) ] + - 上传图片 [ Pic(clt *core.SDKClient, accessToken string, req *upload.PicRequest) (string, error) ] + - 应用创编 + - 创建 Android 应用 [ CreateAndroid(clt *core.SDKClient, accessToken string, req *app.CreateAndroidRequest) (*app.App, error) ] + - 创建 iOS 应用 [ CreateIos(clt *core.SDKClient, accessToken string, req *app.CreateIosRequest) (*app.App, error) ] + - 编辑 Android 应用 [ UpdateAndroid(clt *core.SDKClient, accessToken string, req *app.UpdateAndroidRequest) (*app.App, error) ] + - 更新 iOS 应用 [ UpdateIos(clt *core.SDKClient, accessToken string, req *app.UpdateIosRequest) (*app.App, error) ] + - 应用查询For单元投放 + - 获取新版应用发布列表【单元创编】[ app.ReleaseList(clt *core.SDKClient, accessToken string, req *app.ReleaseListRequest) (*app.ListResponse, error) ] + - 获取新版分包发布列表【单元创编】 [ subpkg.ReleaseList(clt *core.SDKClient, accessToken string, req *subpkg.ReleaseListRequest) (*subpkg.ListResponse, error) ] + - 应用查询For应用中心 + - 获取应用列表 [ app.List(clt *core.SDKClient, accessToken string, req *app.ListRequest) (*app.ListResponse, error) ] + - 获取应用详情 [ app.Detail(clt *core.SDKClient, accessToken string, req *app.DetailRequest) (*app.App, error) ] + - 应用操作 + - iOS 应用上报更新 [ app.IosUpdate(clt *core.SDKClient, accessToken string, req *app.IosUpdateRequest) error ] + - 发布应用 [ app.Release(clt *core.SDKClient, accessToken string, req *app.ReleaseRequest) (*app.App, error) ] + - 应用上架 [ app.Online(clt *core.SDKClient, accessToken string, req *app.OnlineRequest) error ] + - 应用下架 [ app.Offline(clt *core.SDKClient, accessToken string, req *app.OfflineRequest) error ] + - 应用商店上下架 [ app.OfflineAppStores(clt *core.SDKClient, accessToken string, req *app.OfflineAppStoresRequest) error ] + - 应用分包 + - 新建应用分包 [ subpkg.Add(clt *core.SDKClient, accessToken string, req *subpkg.AddRequest) ([]subpkg.SubPackage, error) ] + - 更新/恢复/删除应用分包 [ subpkg.Mod(clt *core.SDKClient, accessToken string, req *subpkg.ModRequest) error ] + - 修改应用分包备注 [ subpkg.Description(clt *core.SDKClient, accessToken string, req *subpkg.DescriptionRequest) error ] + - 获取分包管理/回收站列表 [ subpkg.List(clt *core.SDKClient, accessToken string, req *subpkg.ListRequest) (*subpkg.ListResponse, error) ] + - 分包失败重新构建 [ app.RetryBuildSubPackage(clt *core.SDKClient, accessToken string, req *app.RetryBuildSubPackageRequest) (int, error) ] - 数据上报管理 (api/track) - 转化回传 [ Activate(req *track.ActivateRequest) error ] - 点击检测链接 [ Click(baseUrl string, fields []string) string ] - # Reference -[API文档](https://developers.e.kuaishou.com/docs) +[API文档](https://developers.e.kuaishou.com/docs) diff --git a/api/appcenter/app/create_android.go b/api/appcenter/app/create_android.go new file mode 100644 index 0000000..77713b5 --- /dev/null +++ b/api/appcenter/app/create_android.go @@ -0,0 +1,15 @@ +package app + +import ( + "github.com/bububa/kwai-marketing-api/core" + "github.com/bububa/kwai-marketing-api/model/appcenter/app" +) + +// CreateAndroid 创建Android应用 +func CreateAndroid(clt *core.SDKClient, accessToken string, req *app.CreateAndroidRequest) (*app.App, error) { + var resp app.App + if err := clt.Post(accessToken, req, &resp); err != nil { + return nil, err + } + return &resp, nil +} diff --git a/api/appcenter/app/create_ios.go b/api/appcenter/app/create_ios.go new file mode 100644 index 0000000..837985b --- /dev/null +++ b/api/appcenter/app/create_ios.go @@ -0,0 +1,15 @@ +package app + +import ( + "github.com/bububa/kwai-marketing-api/core" + "github.com/bububa/kwai-marketing-api/model/appcenter/app" +) + +// CreateIos 创建iOS应用 +func CreateIos(clt *core.SDKClient, accessToken string, req *app.CreateIosRequest) (*app.App, error) { + var resp app.App + if err := clt.Post(accessToken, req, &resp); err != nil { + return nil, err + } + return &resp, nil +} diff --git a/api/appcenter/app/detail.go b/api/appcenter/app/detail.go new file mode 100644 index 0000000..a7a9444 --- /dev/null +++ b/api/appcenter/app/detail.go @@ -0,0 +1,15 @@ +package app + +import ( + "github.com/bububa/kwai-marketing-api/core" + "github.com/bububa/kwai-marketing-api/model/appcenter/app" +) + +// Detail 【应用中心】获取应用详情 +func Detail(clt *core.SDKClient, accessToken string, req *app.DetailRequest) (*app.App, error) { + var resp app.App + if err := clt.Post(accessToken, req, &resp); err != nil { + return nil, err + } + return &resp, nil +} diff --git a/api/appcenter/app/doc.go b/api/appcenter/app/doc.go new file mode 100644 index 0000000..3fdb0fd --- /dev/null +++ b/api/appcenter/app/doc.go @@ -0,0 +1,2 @@ +// Paackage app 应用相关 +package app diff --git a/api/appcenter/app/ios_update.go b/api/appcenter/app/ios_update.go new file mode 100644 index 0000000..d1fdeca --- /dev/null +++ b/api/appcenter/app/ios_update.go @@ -0,0 +1,20 @@ +package app + +import ( + "errors" + + "github.com/bububa/kwai-marketing-api/core" + "github.com/bububa/kwai-marketing-api/model/appcenter/app" +) + +// IosUpdate iOS 应用上报更新 +func IosUpdate(clt *core.SDKClient, accessToken string, req *app.IosUpdateRequest) error { + var resp app.IosUpdateResponse + if err := clt.Post(accessToken, req, &resp); err != nil { + return err + } + if !resp.Result { + return errors.New("iOS 应用上报更新失败") + } + return nil +} diff --git a/api/v2.2/appcenter/app/list.go b/api/appcenter/app/list.go similarity index 59% rename from api/v2.2/appcenter/app/list.go rename to api/appcenter/app/list.go index 2eb1caa..b86b091 100644 --- a/api/v2.2/appcenter/app/list.go +++ b/api/appcenter/app/list.go @@ -2,15 +2,14 @@ package app import ( "github.com/bububa/kwai-marketing-api/core" - "github.com/bububa/kwai-marketing-api/model/v2.2/appcenter/app" + "github.com/bububa/kwai-marketing-api/model/appcenter/app" ) +// List 【应用中心】获取应用列表 func List(clt *core.SDKClient, accessToken string, req *app.ListRequest) (*app.ListResponse, error) { var resp app.ListResponse - err := clt.Post(accessToken, req, &resp) - if err != nil { + if err := clt.Post(accessToken, req, &resp); err != nil { return nil, err } return &resp, nil } - diff --git a/api/appcenter/app/offline.go b/api/appcenter/app/offline.go new file mode 100644 index 0000000..b206b5a --- /dev/null +++ b/api/appcenter/app/offline.go @@ -0,0 +1,20 @@ +package app + +import ( + "errors" + + "github.com/bububa/kwai-marketing-api/core" + "github.com/bububa/kwai-marketing-api/model/appcenter/app" +) + +// Offline 【应用中心】应用下架 +func Offline(clt *core.SDKClient, accessToken string, req *app.OfflineRequest) error { + var resp app.OnlineOfflineResponse + if err := clt.Post(accessToken, req, &resp); err != nil { + return err + } + if !resp.Result { + return errors.New("应用下架失败") + } + return nil +} diff --git a/api/appcenter/app/offline_appstores.go b/api/appcenter/app/offline_appstores.go new file mode 100644 index 0000000..884d49b --- /dev/null +++ b/api/appcenter/app/offline_appstores.go @@ -0,0 +1,20 @@ +package app + +import ( + "errors" + + "github.com/bububa/kwai-marketing-api/core" + "github.com/bububa/kwai-marketing-api/model/appcenter/app" +) + +// OfflineAppStores 【应用中心】应用商店上下架 +func OfflineAppStores(clt *core.SDKClient, accessToken string, req *app.OfflineAppStoresRequest) error { + var resp app.OnlineOfflineResponse + if err := clt.Post(accessToken, req, &resp); err != nil { + return err + } + if !resp.Result { + return errors.New("应用商店上下架失败") + } + return nil +} diff --git a/api/appcenter/app/online.go b/api/appcenter/app/online.go new file mode 100644 index 0000000..cdb6ef2 --- /dev/null +++ b/api/appcenter/app/online.go @@ -0,0 +1,20 @@ +package app + +import ( + "errors" + + "github.com/bububa/kwai-marketing-api/core" + "github.com/bububa/kwai-marketing-api/model/appcenter/app" +) + +// Online 【应用中心】应用上架 +func Online(clt *core.SDKClient, accessToken string, req *app.OnlineRequest) error { + var resp app.OnlineOfflineResponse + if err := clt.Post(accessToken, req, &resp); err != nil { + return err + } + if !resp.Result { + return errors.New("应用上架失败") + } + return nil +} diff --git a/api/appcenter/app/release.go b/api/appcenter/app/release.go new file mode 100644 index 0000000..5dbd762 --- /dev/null +++ b/api/appcenter/app/release.go @@ -0,0 +1,15 @@ +package app + +import ( + "github.com/bububa/kwai-marketing-api/core" + "github.com/bububa/kwai-marketing-api/model/appcenter/app" +) + +// Release 【应用中心】发布应用 +func Release(clt *core.SDKClient, accessToken string, req *app.ReleaseRequest) (*app.App, error) { + var resp app.App + if err := clt.Post(accessToken, req, &resp); err != nil { + return nil, err + } + return &resp, nil +} diff --git a/api/appcenter/app/release_list.go b/api/appcenter/app/release_list.go new file mode 100644 index 0000000..6aa7945 --- /dev/null +++ b/api/appcenter/app/release_list.go @@ -0,0 +1,15 @@ +package app + +import ( + "github.com/bububa/kwai-marketing-api/core" + "github.com/bububa/kwai-marketing-api/model/appcenter/app" +) + +// ReleaseList 获取新版应用发布列表【单元创编】 +func ReleaseList(clt *core.SDKClient, accessToken string, req *app.ReleaseListRequest) (*app.ListResponse, error) { + var resp app.ListResponse + if err := clt.Post(accessToken, req, &resp); err != nil { + return nil, err + } + return &resp, nil +} diff --git a/api/appcenter/app/retry_build_sub_package.go b/api/appcenter/app/retry_build_sub_package.go new file mode 100644 index 0000000..d7dd750 --- /dev/null +++ b/api/appcenter/app/retry_build_sub_package.go @@ -0,0 +1,15 @@ +package app + +import ( + "github.com/bububa/kwai-marketing-api/core" + "github.com/bububa/kwai-marketing-api/model/appcenter/app" +) + +// RetryBuildSubPackage 【应用中心】分包失败,重新构建 +func RetryBuildSubPackage(clt *core.SDKClient, accessToken string, req *app.RetryBuildSubPackageRequest) (int, error) { + var resp app.RetryBuildSubPackageResponse + if err := clt.Post(accessToken, req, &resp); err != nil { + return 0, err + } + return resp.RetryCnt, nil +} diff --git a/api/appcenter/app/update_android.go b/api/appcenter/app/update_android.go new file mode 100644 index 0000000..be29802 --- /dev/null +++ b/api/appcenter/app/update_android.go @@ -0,0 +1,15 @@ +package app + +import ( + "github.com/bububa/kwai-marketing-api/core" + "github.com/bububa/kwai-marketing-api/model/appcenter/app" +) + +// UpdateAndroid 更新Android应用 +func UpdateAndroid(clt *core.SDKClient, accessToken string, req *app.UpdateAndroidRequest) (*app.App, error) { + var resp app.App + if err := clt.Post(accessToken, req, &resp); err != nil { + return nil, err + } + return &resp, nil +} diff --git a/api/appcenter/app/update_ios.go b/api/appcenter/app/update_ios.go new file mode 100644 index 0000000..3b8f165 --- /dev/null +++ b/api/appcenter/app/update_ios.go @@ -0,0 +1,15 @@ +package app + +import ( + "github.com/bububa/kwai-marketing-api/core" + "github.com/bububa/kwai-marketing-api/model/appcenter/app" +) + +// UpdateIos 更新iOS应用 +func UpdateIos(clt *core.SDKClient, accessToken string, req *app.UpdateIosRequest) (*app.App, error) { + var resp app.App + if err := clt.Post(accessToken, req, &resp); err != nil { + return nil, err + } + return &resp, nil +} diff --git a/api/appcenter/doc.go b/api/appcenter/doc.go new file mode 100644 index 0000000..05b8b27 --- /dev/null +++ b/api/appcenter/doc.go @@ -0,0 +1,2 @@ +// Package appcenter 应用管理 +package appcenter diff --git a/api/appcenter/subpkg/add.go b/api/appcenter/subpkg/add.go new file mode 100644 index 0000000..bc528a0 --- /dev/null +++ b/api/appcenter/subpkg/add.go @@ -0,0 +1,15 @@ +package subpkg + +import ( + "github.com/bububa/kwai-marketing-api/core" + "github.com/bububa/kwai-marketing-api/model/appcenter/subpkg" +) + +// Add 【应用中心】新建应用分包 +func Add(clt *core.SDKClient, accessToken string, req *subpkg.AddRequest) ([]subpkg.SubPackage, error) { + var resp []subpkg.SubPackage + if err := clt.Post(accessToken, req, &resp); err != nil { + return resp, err + } + return resp, nil +} diff --git a/api/appcenter/subpkg/description.go b/api/appcenter/subpkg/description.go new file mode 100644 index 0000000..95c3c88 --- /dev/null +++ b/api/appcenter/subpkg/description.go @@ -0,0 +1,20 @@ +package subpkg + +import ( + "errors" + + "github.com/bububa/kwai-marketing-api/core" + "github.com/bububa/kwai-marketing-api/model/appcenter/subpkg" +) + +// Description 【应用中心】修改应用分包备注 +func Description(clt *core.SDKClient, accessToken string, req *subpkg.DescriptionRequest) error { + var resp subpkg.ModResponse + if err := clt.Post(accessToken, req, &resp); err != nil { + return err + } + if !resp.Result { + return errors.New("修改应用分包备注失败") + } + return nil +} diff --git a/api/v2.2/appcenter/subpkg/list.go b/api/appcenter/subpkg/list.go similarity index 58% rename from api/v2.2/appcenter/subpkg/list.go rename to api/appcenter/subpkg/list.go index 601ea1a..9b0ac65 100644 --- a/api/v2.2/appcenter/subpkg/list.go +++ b/api/appcenter/subpkg/list.go @@ -2,13 +2,13 @@ package subpkg import ( "github.com/bububa/kwai-marketing-api/core" - "github.com/bububa/kwai-marketing-api/model/v2.2/appcenter/subpkg" + "github.com/bububa/kwai-marketing-api/model/appcenter/subpkg" ) +// List 【应用中心】获取分包管理/回收站列表 func List(clt *core.SDKClient, accessToken string, req *subpkg.ListRequest) (*subpkg.ListResponse, error) { var resp subpkg.ListResponse - err := clt.Post(accessToken, req, &resp) - if err != nil { + if err := clt.Post(accessToken, req, &resp); err != nil { return nil, err } return &resp, nil diff --git a/api/appcenter/subpkg/mod.go b/api/appcenter/subpkg/mod.go new file mode 100644 index 0000000..46aeff5 --- /dev/null +++ b/api/appcenter/subpkg/mod.go @@ -0,0 +1,20 @@ +package subpkg + +import ( + "errors" + + "github.com/bububa/kwai-marketing-api/core" + "github.com/bububa/kwai-marketing-api/model/appcenter/subpkg" +) + +// Mod 【应用中心】更新/恢复/删除应用分包 +func Mod(clt *core.SDKClient, accessToken string, req *subpkg.ModRequest) error { + var resp subpkg.ModResponse + if err := clt.Post(accessToken, req, &resp); err != nil { + return err + } + if !resp.Result { + return errors.New("更新/删除/恢复分包失败") + } + return nil +} diff --git a/api/appcenter/subpkg/release_list.go b/api/appcenter/subpkg/release_list.go new file mode 100644 index 0000000..2e31495 --- /dev/null +++ b/api/appcenter/subpkg/release_list.go @@ -0,0 +1,15 @@ +package subpkg + +import ( + "github.com/bububa/kwai-marketing-api/core" + "github.com/bububa/kwai-marketing-api/model/appcenter/subpkg" +) + +// ReleaseList 获取新版分包发布列表【单元创编】 +func ReleaseList(clt *core.SDKClient, accessToken string, req *subpkg.ReleaseListRequest) (*subpkg.ListResponse, error) { + var resp subpkg.ListResponse + if err := clt.Post(accessToken, req, &resp); err != nil { + return nil, err + } + return &resp, nil +} diff --git a/api/appcenter/upload/apk.go b/api/appcenter/upload/apk.go new file mode 100644 index 0000000..d40d560 --- /dev/null +++ b/api/appcenter/upload/apk.go @@ -0,0 +1,15 @@ +package upload + +import ( + "github.com/bububa/kwai-marketing-api/core" + "github.com/bububa/kwai-marketing-api/model/appcenter/upload" +) + +// Apk 上传 APK 文件 +func Apk(clt *core.SDKClient, accessToken string, req *upload.ApkRequest) (string, error) { + var resp upload.ApkResponse + if err := clt.Upload(accessToken, req, &resp); err != nil { + return "", err + } + return resp.BlobStoreKey, nil +} diff --git a/api/appcenter/upload/doc.go b/api/appcenter/upload/doc.go new file mode 100644 index 0000000..8813ece --- /dev/null +++ b/api/appcenter/upload/doc.go @@ -0,0 +1,2 @@ +// Package upload 文件上传 +package upload diff --git a/api/appcenter/upload/pic.go b/api/appcenter/upload/pic.go new file mode 100644 index 0000000..6d64ca0 --- /dev/null +++ b/api/appcenter/upload/pic.go @@ -0,0 +1,15 @@ +package upload + +import ( + "github.com/bububa/kwai-marketing-api/core" + "github.com/bububa/kwai-marketing-api/model/appcenter/upload" +) + +// Pic 上传图片 +func Pic(clt *core.SDKClient, accessToken string, req *upload.PicRequest) (string, error) { + var resp upload.PicResponse + if err := clt.Upload(accessToken, req, &resp); err != nil { + return "", err + } + return resp.URL, nil +} diff --git a/api/v2.2/appcenter/subpkg/create.go b/api/v2.2/appcenter/subpkg/create.go deleted file mode 100644 index 64c280c..0000000 --- a/api/v2.2/appcenter/subpkg/create.go +++ /dev/null @@ -1,15 +0,0 @@ -package subpkg - -import ( - "github.com/bububa/kwai-marketing-api/core" - "github.com/bububa/kwai-marketing-api/model/v2.2/appcenter/subpkg" -) - -func Create(clt *core.SDKClient, accessToken string, req *subpkg.CreateRequest) (*subpkg.CreateResponse, error) { - var resp subpkg.CreateResponse - err := clt.Post(accessToken, req, &resp.Item) - if err != nil { - return &resp, err - } - return &resp, nil -} diff --git a/api/v2.2/appcenter/subpkg/update.go b/api/v2.2/appcenter/subpkg/update.go deleted file mode 100644 index 0a33971..0000000 --- a/api/v2.2/appcenter/subpkg/update.go +++ /dev/null @@ -1,15 +0,0 @@ -package subpkg - -import ( - "github.com/bububa/kwai-marketing-api/core" - "github.com/bububa/kwai-marketing-api/model/v2.2/appcenter/subpkg" -) - -func Update(clt *core.SDKClient, accessToken string, req *subpkg.UpdateRequest) (*subpkg.UpdateResponse, error) { - var resp subpkg.UpdateResponse - err := clt.Post(accessToken, req, &resp) - if err != nil { - return &resp, err - } - return &resp, nil -} \ No newline at end of file diff --git a/go.mod b/go.mod index 0ee0b96..3dac6c8 100644 --- a/go.mod +++ b/go.mod @@ -1,5 +1,3 @@ module github.com/bububa/kwai-marketing-api go 1.19 - - diff --git a/model/api/appcenter/doc.go b/model/api/appcenter/doc.go new file mode 100644 index 0000000..05b8b27 --- /dev/null +++ b/model/api/appcenter/doc.go @@ -0,0 +1,2 @@ +// Package appcenter 应用管理 +package appcenter diff --git a/model/api/doc.go b/model/api/doc.go new file mode 100644 index 0000000..05b8b27 --- /dev/null +++ b/model/api/doc.go @@ -0,0 +1,2 @@ +// Package appcenter 应用管理 +package appcenter diff --git a/model/appcenter/app/app.go b/model/appcenter/app/app.go new file mode 100644 index 0000000..5c4a8fd --- /dev/null +++ b/model/appcenter/app/app.go @@ -0,0 +1,134 @@ +package app + +// App 应用 +type App struct { + // AccountID Long 账号ID + AccountID uint64 `json:"account_id,omitempty"` + // AppDetailImg String 应用详情图片 + AppDetailImg string `json:"app_detail_img,omitempty"` + // AppIconURL String 应用图标链接 + AppIconURL string `json:"app_icon_url,omitempty"` + // AppID Long 应用ID + AppID uint64 `json:"app_id,omitempty"` + // AppPrivacyURL String 应用隐私政策链接 + AppPrivacyURL string `json:"app_privacy_url,omitempty"` + // ApplyAge 使用年龄 + ApplyAge int `json:"apply_age,omitempty"` + // AuditSerialNumber 审核序列号 + AuditSerialNumber uint64 `json:"audit_serial_number,omitempty"` + // Category 应用类型 + // 1-软件 2-游戏 + Category int `json:"category,omitempty"` + // Compatibility 兼容性 + Compatibility string `json:"compatibility,omitempty"` + // ContactEmail 联系人邮箱 + ContactEmail string `json:"contact_email,omitempty"` + // ContactName 联系人姓名 + ContactName string `json:"contact_name,omitempty"` + // ContactTel 联系人电话 + ContactTel string `json:"contact_tel,omitempty"` + // Description 备注 + Description string `json:"description,omitempty"` + // Developer 开发者 + Developer string `json:"developer,omitempty"` + // Location 开发者地区 + Location string `json:"location,omitempty"` + // IosAppID String 解析出的iosAppID + IosAppID string `json:"ios_app_id,omitempty"` + // OfflineAppStores String 下架的应用商店 "huawei","oppo","vivo","xiaomi","meizu","smartisan" + OfflineAppStores string `json:"offline_app_stores,omitempty"` + // OnlineEarnType 网赚类型 + // 1-是 2-否 + OnlineEarnType int `json:"online_earn_type,omitempty"` + // PackageID Long 应用包ID + PackageID uint64 `json:"package_id,omitempty"` + // PackageName String 应用包名 + PackageName string `json:"package_name,omitempty"` + // PackageSize Long 应用包大小 + PackageSize int64 `json:"package_size,omitempty"` + // PermissionInformation int[] 权限信息ID列表 + PermissionInformation []int `json:"permission_information,omitempty"` + // Platform String android或ios + Platform string `json:"platform,omitempty"` + // PrivacyID 隐私ID + PrivacyID uint64 `json:"privacy_id,omitempty"` + // PrivacyType 隐私链接类型 + PrivacyType int `json:"privacy_type,omitempty"` + // RealAppName String 应用名称 + RealAppName string `json:"real_app_name,omitempty"` + // RealAppVersion String 应用版本信息 + RealAppVersion string `json:"real_app_version,omitempty"` + // ReleaseType 发布类型 + // 1-手动 2-自动 + ReleaseType int `json:"release_type,omitempty"` + // SourceType Integer 应用来源 1-我创建的 2-共享给我的 + SourceType int `json:"source_type,omitempty"` + // AppSource 应用创建者信息 + AppSource []AppSource `json:"app_source,omitempty"` + // AppStatus 应用状态 + // 1-审核中 2-审核失败 3-待发布 4-已发布 5-已下架 + AppStatus int `json:"app_status,omitempty"` + // PutStatus 投放状态 + PutStatus int `json:"put_status,omitempty"` + // ReviewDetail 审核详情 + ReviewDetail string `json:"review_detail,omitempty"` + // ReviewStatus 审核状态 + ReviewStatus int `json:"review_status,omitempty"` + // SensitivePermissionDesc 敏感权限用途 + SensitivePermissionDesc string `json:"sensitive_permission_desc,omitempty"` + // ShareAccountCount 应用共享账号个数 + ShareAccountCount int `json:"share_account_count,omitempty"` + // TraceActivation 转化追踪状态 + TraceActivation int `json:"trace_activation,omitempty"` + // UpdateTime Long 更新时间 单位:毫秒 + UpdateTime int64 `json:"update_time,omitempty"` + // URL String 应用下载地址 + URL string `json:"url,omitempty"` + // UseSDK Integer 是否接入快手广告监测SDK 0-未接入,1-已接入 + UseSDK int `json:"use_sdk,omitempty"` + // VersionCode 应用版本号 + VersionCode int `json:"version_code,omitempty"` + // ShareType 共享类型,0-不共享,1-账号,2-主体 + ShareType int `json:"share_type,omitempty"` + // FunctionIntroduction 安卓应用功能介绍 + FunctionIntroduction string `json:"function_introduction,omitempty"` + // RecordNumber 备案号 + RecordNumber string `json:"record_number,omitempty"` + // DocumentNumber 证件号码 + DocumentNumber string `json:"document_number,omitempty"` + // ServiceCategory 服务类目 + ServiceCategory string `json:"service_category,omitempty"` + // NetworkType 网络类型 + // 1-联网,2-单机 + NetworkType int `json:"network_type,omitempty"` + // OfflineAppLetterURL 单机承诺函 + OfflineAppLetterURL string `json:"offline_app_letter_url,omitempty"` +} + +// AppSource 应用创建者信息 +type AppSource struct { + // AccountID 应用创建账号id + AccountID uint64 `json:"account_id,omitempty"` + // AccountName 应用创建账号名称 + AccountName string `json:"account_name,omitempty"` +} + +// AppPrivacyInfo 隐私声明数据 +type AppPrivacyInfo struct { + // PrivacyID 隐私声明ID + PrivacyID uint64 `json:"privacy_id,omitempty"` + // URL 隐私声明链接 + URL string `json:"url,omitempty"` +} + +// PackageInfo 应用包数据 +type PackageInfo struct { + // PackageID 应用包ID + PackageID uint64 `json:"package_id,omitempty"` + // AppName 应用名称:可不填,如果不填则默认使用上传 APK 时解析出的应用名称。 + AppName string `json:"app_name,omitempty"` + // BlobStoreKey 应用存储 Key,上传应用 APK 时返回。 + BlobStoreKey string `json:"blob_store_key,omitempty"` + // SensitivePermissionDesc 敏感权限用途 + SensitivePermissionDesc string `json:"sensitive_permission_desc,omitempty"` +} diff --git a/model/appcenter/app/create_android.go b/model/appcenter/app/create_android.go new file mode 100644 index 0000000..428bcad --- /dev/null +++ b/model/appcenter/app/create_android.go @@ -0,0 +1,25 @@ +package app + +import "github.com/bububa/kwai-marketing-api/model" + +// CreateAndroidRequest 创建 Android 应用 API Request +type CreateAndroidRequest struct { + // AdvertiserID 广告主ID + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // AppInfo 应用数据 + AppInfo *App `json:"app_info,omitempty"` + // AppPrivacyInfo 隐私声明数据 + AppPrivacyInfo *AppPrivacyInfo `json:"app_privacy_info,omitempty"` + // PackageInfo 应用包数据 + PackageInfo *PackageInfo `json:"package_info,omitempty"` +} + +// Url implements PostRequest interface +func (r CreateAndroidRequest) Url() string { + return "gw/dsp/appcenter/app/create/android" +} + +// Encode implements PostRequest interface +func (r CreateAndroidRequest) Encode() []byte { + return model.JSONMarshal(r) +} diff --git a/model/appcenter/app/create_ios.go b/model/appcenter/app/create_ios.go new file mode 100644 index 0000000..2841591 --- /dev/null +++ b/model/appcenter/app/create_ios.go @@ -0,0 +1,23 @@ +package app + +import "github.com/bububa/kwai-marketing-api/model" + +// CreateIosRequest 创建 iOS 应用 API Request +type CreateIosRequest struct { + // AdvertiserID 广告主ID + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // AppIconURL 应用图标,可不填,如果填写则覆盖应用解析出的应用图标,可通过通过上传图片 API 获取链接。 + AppIconURL string `json:"app_icon_url,omitempty"` + // IosDownloadURL App Store 应用下载链接 + IosDownloadURL string `json:"ios_download_url,omitempty"` +} + +// Url implements PostRequest interface +func (r CreateIosRequest) Url() string { + return "gw/dsp/appcenter/app/create/ios" +} + +// Encode implements PostRequest interface +func (r CreateIosRequest) Encode() []byte { + return model.JSONMarshal(r) +} diff --git a/model/appcenter/app/detail.go b/model/appcenter/app/detail.go new file mode 100644 index 0000000..2ab6f8e --- /dev/null +++ b/model/appcenter/app/detail.go @@ -0,0 +1,22 @@ +package app + +import "github.com/bububa/kwai-marketing-api/model" + +// DetailRequest 【应用中心】获取应用详情 API Request +type DetailRequest struct { + // AdvertiserID Long 必填 广告主id + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // PackageID 应用包id + // 仅支持应用母包 + PackageID uint64 `json:"package_id,omitempty"` +} + +// Url implements PostRequest interface +func (r DetailRequest) Url() string { + return "gw/dsp/appcenter/app/detail" +} + +// Encode implement PostRequest interface +func (r DetailRequest) Encode() []byte { + return model.JSONMarshal(r) +} diff --git a/model/appcenter/app/doc.go b/model/appcenter/app/doc.go new file mode 100644 index 0000000..3fdb0fd --- /dev/null +++ b/model/appcenter/app/doc.go @@ -0,0 +1,2 @@ +// Paackage app 应用相关 +package app diff --git a/model/appcenter/app/ios_update.go b/model/appcenter/app/ios_update.go new file mode 100644 index 0000000..5b6baa8 --- /dev/null +++ b/model/appcenter/app/ios_update.go @@ -0,0 +1,31 @@ +package app + +import "github.com/bububa/kwai-marketing-api/model" + +// IosUpdateRequest 【应用中心】iOS 应用上报更新 +type IosUpdateRequest struct { + // AdvertiserID 广告主id + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // AppID 应用ID + AppID uint64 `json:"app_id,omitempty"` + // IosAppID 苹果商店 iOS App Id + IosAppID uint64 `json:"ios_app_id,omitempty"` + // PackageID 应用包ID + PackageID uint64 `json:"package_id,omitempty"` +} + +// Url implement PostRequest interface +func (r IosUpdateRequest) Url() string { + return "gw/dsp/appcenter/app/ios/update" +} + +// Encode implement PostRequest interface +func (r IosUpdateRequest) Encode() []byte { + return model.JSONMarshal(r) +} + +// IosUpdateResponse【应用中心】iOS 应用上报更新 API Response +type IosUpdateResponse struct { + // Result 上报更新结果 + Result bool `json:"result,omitempty"` +} diff --git a/model/appcenter/app/list.go b/model/appcenter/app/list.go new file mode 100644 index 0000000..1294210 --- /dev/null +++ b/model/appcenter/app/list.go @@ -0,0 +1,50 @@ +package app + +import "github.com/bububa/kwai-marketing-api/model" + +// ListRequest 【应用中心】获取应用列表 API Request +type ListRequest struct { + // AdvertiserID Long 必填 广告主id + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // ListType Integer 可选 列表类型 不传-全部, 1-我创建的, 2-共享给我的 + ListType int `json:"list_type,omitempty"` + // Platform String "ios" 可选 android或ios + Platform string `json:"platform,omitempty"` + // AppStatus 应用状态 + // 不传-全部,1-审核中,2-审核未通过,3-待发布,4-已发布,5-已下架 + AppStatus int `json:"app_status,omitempty"` + // KeyWord String 可选 关键词 支持应用ID或应用名称搜索 + KeyWord string `json:"key_word,omitempty"` + // StartDate 发布时间范围-起始 + // 同时需要填写end_date + StartDate string `json:"start_date,omitempty"` + // EndDate 发布时间范围-截止 + // 同时需要填写start_date + EndDate string `json:"end_date,omitempty"` + // Page Integer 可选 当前页 页码,默认1 + Page int `json:"page,omitempty"` + // PageSize Integer 可选 分页大小 个数,默认10 + PageSize int `json:"page_size,omitempty"` +} + +// Url implements PostRequest interface +func (r ListRequest) Url() string { + return "gw/dsp/appcenter/app/list" +} + +// Encode implement PostRequest interface +func (r ListRequest) Encode() []byte { + return model.JSONMarshal(r) +} + +// ListRequest 【应用中心】获取应用列表 API Response +type ListResponse struct { + // CurrentPage 当前页 + CurrentPage int `json:"current_page,omitempty"` + // PageSize 分页大小 + PageSize int `json:"page_size,omitempty"` + // TotalCount 总数 + TotalCount int `json:"total_count,omitempty"` + // List 应用列表 + List []App `json:"list,omitempty"` +} diff --git a/model/appcenter/app/offline.go b/model/appcenter/app/offline.go new file mode 100644 index 0000000..8a36228 --- /dev/null +++ b/model/appcenter/app/offline.go @@ -0,0 +1,21 @@ +package app + +import "github.com/bububa/kwai-marketing-api/model" + +// OfflineRequest 【应用中心】应用上架 API Request +type OfflineRequest struct { + // AdvertiserID 广告主id + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // PackageIDs 应用包ID + PackageIDs []uint64 `json:"package_ids,omitempty"` +} + +// Url implement PostRequest interface +func (r OfflineRequest) Url() string { + return "gw/dsp/appcenter/app/offline" +} + +// Encode implement PostRequest interface +func (r OfflineRequest) Encode() []byte { + return model.JSONMarshal(r) +} diff --git a/model/appcenter/app/offline_appstores.go b/model/appcenter/app/offline_appstores.go new file mode 100644 index 0000000..f993cd3 --- /dev/null +++ b/model/appcenter/app/offline_appstores.go @@ -0,0 +1,23 @@ +package app + +import "github.com/bububa/kwai-marketing-api/model" + +// OfflineAppStoresRequest 【应用中心】应用商店上下架 API Request +type OfflineAppStoresRequest struct { + // AdvertiserID 广告主id + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // AppIDs 应用ID + AppIDs []uint64 `json:"app_ids,omitempty"` + // OfflineStores 应用商店 + OfflineStores []string `json:"offline_stores,omitempty"` +} + +// Url implement PostRequest interface +func (r OfflineAppStoresRequest) Url() string { + return "gw/dsp/appcenter/app/offline/appstores" +} + +// Encode implement PostRequest interface +func (r OfflineAppStoresRequest) Encode() []byte { + return model.JSONMarshal(r) +} diff --git a/model/appcenter/app/online.go b/model/appcenter/app/online.go new file mode 100644 index 0000000..6b05cc2 --- /dev/null +++ b/model/appcenter/app/online.go @@ -0,0 +1,27 @@ +package app + +import "github.com/bububa/kwai-marketing-api/model" + +// OnlineRequest 【应用中心】应用上架 API Request +type OnlineRequest struct { + // AdvertiserID 广告主id + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // PackageIDs 应用包ID + PackageIDs []uint64 `json:"package_ids,omitempty"` +} + +// Url implement PostRequest interface +func (r OnlineRequest) Url() string { + return "gw/dsp/appcenter/app/online" +} + +// Encode implement PostRequest interface +func (r OnlineRequest) Encode() []byte { + return model.JSONMarshal(r) +} + +// OnlineOfflineResponse 【应用中心】应用上/下架 API Response +type OnlineOfflineResponse struct { + // Result 上架结果 + Result bool `json:"result,omitempty"` +} diff --git a/model/appcenter/app/release.go b/model/appcenter/app/release.go new file mode 100644 index 0000000..ff75ab0 --- /dev/null +++ b/model/appcenter/app/release.go @@ -0,0 +1,21 @@ +package app + +import "github.com/bububa/kwai-marketing-api/model" + +// ReleaseRequest 发布应用 API Request +type ReleaseRequest struct { + // AdvertiserID 广告主id + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // PackageIDs 应用包ID【母包ID】。只有安卓审核通过的母包才可以发布,发布后的package_id才能绑定单元。 + PackageIDs []uint64 `json:"package_ids,omitempty"` +} + +// Url implement PostRequest interface +func (r ReleaseRequest) Url() string { + return "gw/dsp/appcenter/app/release" +} + +// Encode implement PostRequest interface +func (r ReleaseRequest) Encode() []byte { + return model.JSONMarshal(r) +} diff --git a/model/appcenter/app/release_list.go b/model/appcenter/app/release_list.go new file mode 100644 index 0000000..0b3a4f2 --- /dev/null +++ b/model/appcenter/app/release_list.go @@ -0,0 +1,30 @@ +package app + +import "github.com/bububa/kwai-marketing-api/model" + +// ReleaseListRequest 获取新版应用发布列表【单元创编】API Request +type ReleaseListRequest struct { + // advertiserID Long 必填 广告主id + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // ListType Integer 可选 列表类型 不传-全部, 1-我创建的, 2-共享给我的 + ListType int `json:"list_type,omitempty"` + // Platform String "ios" 可选 android或ios + Platform string `json:"platform,omitempty"` + // AppIDs Long[] 可选 批量应用id查询 最多支持查询100个 + AppIDs []uint64 `json:"app_ids,omitempty"` + // KeyWord String 可选 关键词 支持应用ID或应用名称搜索 + KeyWord string `json:"key_word,omitempty"` + // Page Integer 可选 当前页 页码,默认1 + Page int `json:"page,omitempty"` + // PageSize Integer 可选 分页大小 个数,默认10 + PageSize int `json:"page_size,omitempty"` +} + +func (r ReleaseListRequest) Url() string { + return "gw/dsp/appcenter/app/release/list" +} + +// Encode implement PostRequest interface +func (r ReleaseListRequest) Encode() []byte { + return model.JSONMarshal(r) +} diff --git a/model/appcenter/app/retry_build_sub_package.go b/model/appcenter/app/retry_build_sub_package.go new file mode 100644 index 0000000..f735035 --- /dev/null +++ b/model/appcenter/app/retry_build_sub_package.go @@ -0,0 +1,28 @@ +package app + +import "github.com/bububa/kwai-marketing-api/model" + +// RetryBuildSubPackageRequest 分包失败,重新构建 API Request +type RetryBuildSubPackageRequest struct { + // AdvertiserID 广告主id + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // AppID 应用ID + AppID []uint64 `json:"app_id,omitempty"` +} + +// Url implement PostRequest interface +func (r RetryBuildSubPackageRequest) Url() string { + return "gw/dsp/appcenter/app/retryBuildSubPackage" +} + +// Encode implement PostRequest interface +func (r RetryBuildSubPackageRequest) Encode() []byte { + return model.JSONMarshal(r) +} + +// RetryBuildSubPackageResponse 分包失败,重新构建 API Response +type RetryBuildSubPackageResponse struct { + // RetryCnt 本次发起重新构建,应用分包的数量。 + // cnt=0表示没有需要重建的分包,cnt=x表示对x个分包发起了重建 + RetryCnt int `json:"retry_cnt,omitempty"` +} diff --git a/model/appcenter/app/update_android.go b/model/appcenter/app/update_android.go new file mode 100644 index 0000000..bfb7375 --- /dev/null +++ b/model/appcenter/app/update_android.go @@ -0,0 +1,25 @@ +package app + +import "github.com/bububa/kwai-marketing-api/model" + +// UpdateAndroidRequest 更新 Android 应用 API Request +type UpdateAndroidRequest struct { + // AdvertiserID 广告主ID + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // AppInfo 应用数据 + AppInfo *App `json:"app_info,omitempty"` + // AppPrivacyInfo 隐私声明数据 + AppPrivacyInfo *AppPrivacyInfo `json:"app_privacy_info,omitempty"` + // PackageInfo 应用包数据 + PackageInfo *PackageInfo `json:"package_info,omitempty"` +} + +// Url implements PostRequest interface +func (r UpdateAndroidRequest) Url() string { + return "gw/dsp/appcenter/app/update/android" +} + +// Encode implements PostRequest interface +func (r UpdateAndroidRequest) Encode() []byte { + return model.JSONMarshal(r) +} diff --git a/model/appcenter/app/update_ios.go b/model/appcenter/app/update_ios.go new file mode 100644 index 0000000..f12978a --- /dev/null +++ b/model/appcenter/app/update_ios.go @@ -0,0 +1,27 @@ +package app + +import "github.com/bububa/kwai-marketing-api/model" + +// UpdateIosRequest 创建 iOS 应用 API Request +type UpdateIosRequest struct { + // AdvertiserID 广告主ID + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // AppID 应用ID + AppID uint64 `json:"app_id,omitempty"` + // PackageID 应用包ID + PackageID uint64 `json:"package_id,omitempty"` + // AppIconURL 应用图标,可不填,如果填写则覆盖应用解析出的应用图标,可通过通过上传图片 API 获取链接。 + AppIconURL string `json:"app_icon_url,omitempty"` + // IosDownloadURL App Store 应用下载链接 + IosDownloadURL string `json:"ios_download_url,omitempty"` +} + +// Url implements PostRequest interface +func (r UpdateIosRequest) Url() string { + return "gw/dsp/appcenter/app/update/ios" +} + +// Encode implements PostRequest interface +func (r UpdateIosRequest) Encode() []byte { + return model.JSONMarshal(r) +} diff --git a/model/appcenter/doc.go b/model/appcenter/doc.go new file mode 100644 index 0000000..05b8b27 --- /dev/null +++ b/model/appcenter/doc.go @@ -0,0 +1,2 @@ +// Package appcenter 应用管理 +package appcenter diff --git a/model/appcenter/subpkg/add.go b/model/appcenter/subpkg/add.go new file mode 100644 index 0000000..6c45480 --- /dev/null +++ b/model/appcenter/subpkg/add.go @@ -0,0 +1,26 @@ +package subpkg + +import "github.com/bububa/kwai-marketing-api/model" + +// AddRequest 创建分包 API Request +type AddRequest struct { + // AdvertiserID 广告主ID + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // ParentPackageID Long 必填 应用(母)包id 仅支持android应用的包id新建分包 + ParentPackageID uint64 `json:"parent_package_id,omitempty"` + // Type Integer 必填 分包方式 1-系统自动分包,2-上传渠道号列表 + Type int `json:"type,omitempty"` + // Count Integer 可选 分包数量 当type=1时填写,单次最多100 + Count int `json:"count,omitempty"` + // ChannelID String[] 可选 上传的渠道号列表 当type=2时填写,单次最多填写100个。同一应用包下填写的渠道号不可重复 + ChannelID []string `json:"channel_id,omitempty"` +} + +func (r AddRequest) Url() string { + return "gw/dsp/appcenter/subpkg/add" +} + +// Encode implement PostRequest interface +func (r AddRequest) Encode() []byte { + return model.JSONMarshal(r) +} diff --git a/model/appcenter/subpkg/description.go b/model/appcenter/subpkg/description.go new file mode 100644 index 0000000..179f899 --- /dev/null +++ b/model/appcenter/subpkg/description.go @@ -0,0 +1,23 @@ +package subpkg + +import "github.com/bububa/kwai-marketing-api/model" + +// DescriptionRequest 【应用中心】修改应用分包备注 API Request +type DescriptionRequest struct { + // AdvertiserID 广告主id + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // PackageID 应用分包id + PackageID uint64 `json:"package_id,omitempty"` + // Description 分包的备注信息 当应用分包处于构建中或更新中时,不可对分包修改备注 + Description string `json:"description,omitempty"` +} + +// Url implement PostRequest interface +func (r DescriptionRequest) Url() string { + return "gw/dsp/appcenter/subpkg/description" +} + +// Encode implement PostRequest interface +func (r DescriptionRequest) Encode() []byte { + return model.JSONMarshal(r) +} diff --git a/model/appcenter/subpkg/list.go b/model/appcenter/subpkg/list.go new file mode 100644 index 0000000..c40a4a2 --- /dev/null +++ b/model/appcenter/subpkg/list.go @@ -0,0 +1,49 @@ +package subpkg + +import "github.com/bububa/kwai-marketing-api/model" + +// ListRequest 【应用中心】获取分包管理/回收站列表 API Request +type ListRequest struct { + // AdvertiserID 广告主ID + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // AppID 应用id + AppID uint64 `json:"app_id,omitempty"` + // ListType 列表类型 + // 不填为分包管理列表,填2-分包回收列表 + ListType int `json:"list_type,omitempty"` + // KeyWord 关键词 + // 支持渠道号关键词搜索 + KeyWord string `json:"key_word,omitempty"` + // Status 分包状态筛选 + // 分包管理列表生效,筛选分包状态,单选。不传默认全部,0-全部,1-审核中,2-审核未通过,4-已发布,6-分包构建中,7-分包更新中,8-分包构建失败 + Status int `json:"status,omitempty"` + // Version 分包版本筛选 + // 分包管理列表生效,筛选版本信息,多选。不传默认全部。 + Version []string `json:"version,omitempty"` + // Page 当前页 页码,默认1 + Page int `json:"page,omitempty"` + // PageSize 分页大小 个数,默认10 + PageSize int `json:"page_size,omitempty"` +} + +// Url implements PostRequest interface +func (r ListRequest) Url() string { + return "gw/dsp/appcenter/subPackage/list" +} + +// Encode implement PostRequest interface +func (r ListRequest) Encode() []byte { + return model.JSONMarshal(r) +} + +// ListResponse 获取新版分包列表 API Response +type ListResponse struct { + // CurrentPage 当前页 + CurrentPage int `json:"current_page,omitempty"` + // PageSize 分页大小 + PageSize int `json:"page_size,omitempty"` + // TotalCount 总数 + TotalCount int `json:"total_count,omitempty"` + // List 应用分包列表 + List []SubPackage `json:"list,omitempty"` +} diff --git a/model/appcenter/subpkg/mod.go b/model/appcenter/subpkg/mod.go new file mode 100644 index 0000000..ce1a46c --- /dev/null +++ b/model/appcenter/subpkg/mod.go @@ -0,0 +1,31 @@ +package subpkg + +import "github.com/bububa/kwai-marketing-api/model" + +// ModRequest 【应用中心】更新/恢复/删除应用分包 +type ModRequest struct { + // AdvertiserID 广告主id + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // PackageID 应用分包id + PackageID []uint64 `json:"package_id,omitempty"` + // PutStatus 操作分包的类型: 0-更新分包, 1-恢复分包, 2-删除分包 + // 当分包状态处于构建中或更新中时,不可对分包进行操作。更新分包指将分包升级到绑定最新发布版本的母包;删除分包将不能使用该分包创建广告;恢复分包可重新使用分包物料创建广告。 + PutStatus int `json:"put_status,omitempty"` +} + +// Url implement PostRequest interface +func (r ModRequest) Url() string { + return "gw/dsp/appcenter/subpkg/mod" +} + +// Encode implement PostRequest interface +func (r ModRequest) Encode() []byte { + return model.JSONMarshal(r) +} + +// ModResponse 更新/恢复/删除应用分包响应 API Response +type ModResponse struct { + // Result 更新/删除/恢复分包是否成功 + // true-成功,false-失败 + Result bool `json:"result"` +} diff --git a/model/appcenter/subpkg/release_list.go b/model/appcenter/subpkg/release_list.go new file mode 100644 index 0000000..21314cd --- /dev/null +++ b/model/appcenter/subpkg/release_list.go @@ -0,0 +1,27 @@ +package subpkg + +import "github.com/bububa/kwai-marketing-api/model" + +// ReleaseListRequest 获取新版分包发布列表【单元创编】 API Request +type ReleaseListRequest struct { + // AdvertiserID 广告主ID + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // AppID 应用id + AppID uint64 `json:"app_id,omitempty"` + // KeyWord 关键词 + // 支持渠道号关键词搜索 + KeyWord string `json:"key_word,omitempty"` + // Page 当前页 页码,默认1 + Page int `json:"page,omitempty"` + // PageSize 分页大小 个数,默认10 + PageSize int `json:"page_size,omitempty"` +} + +func (r ReleaseListRequest) Url() string { + return "gw/dsp/appcenter/subPackage/release/list" +} + +// Encode implement PostRequest interface +func (r ReleaseListRequest) Encode() []byte { + return model.JSONMarshal(r) +} diff --git a/model/appcenter/subpkg/sub_package.go b/model/appcenter/subpkg/sub_package.go new file mode 100644 index 0000000..d87394d --- /dev/null +++ b/model/appcenter/subpkg/sub_package.go @@ -0,0 +1,63 @@ +package subpkg + +// SubPackage 应用分包 +type SubPackage struct { + // AccountID Long 账号ID + AccountII uint64 `json:"account_id,omitempty"` + // AppDetailImg String 应用详情图片 + AppDetailImg string `json:"app_detail_img,omitempty"` + // AppIconURL String 应用图标链接 + AppIconURL string `json:"app_icon_url,omitempty"` + // AppID Long 应用ID + AppID uint64 `json:"app_id,omitempty"` + // AppPrivacyURL String 应用隐私政策链接 + AppPrivacyURL string `json:"app_privacy_url,omitempty"` + // ChannelID String 渠道号(分包号) + ChannelID string `json:"channel_id,omitempty"` + // IosAppID String 解析出的iosAppID + IosAppID string `json:"ios_app_id,omitempty"` + // OfflineAppStores String 下架的应用商店 "huawei","oppo","vivo","xiaomi","meizu","smartisan" + OfflineAppStores string `json:"offline_app_stores,omitempty"` + // PackageID Long 应用包ID + PackageID uint64 `json:"package_id,omitempty"` + // PackageName String 应用包名 + PackageName string `json:"package_name,omitempty"` + // PackageSize Long 应用包大小 + PackageSize int64 `json:"package_size,omitempty"` + // ParentPackageID 分包的母包ID + ParentPackageID uint64 `json:"parent_package_id,omitempty"` + // PermissionInformation int[] 权限信息ID列表 + PermissionInformation []int `json:"permission_information,omitempty"` + // Platform String android或ios + Platform string `json:"platform,omitempty"` + // RealAppName String 应用名称 + RealAppName string `json:"real_app_name,omitempty"` + // RealAppVersion String 应用版本信息 + RealAppVersion string `json:"real_app_version,omitempty"` + // SourceType Integer 应用来源 1-我创建的 2-共享给我的 + SourceType int `json:"source_type,omitempty"` + // SubPackageStatus 应用分包状态 + // 1-审核中,2-审核失败,3-待发布,4-已发布,5-已下架 6-创建中,7-更新中,8-构建失败 + SubPackageStatus int `json:"sub_package_status,omitempty"` + // UpdateTime Long 更新时间 单位:毫秒 + UpdateTime int64 `json:"update_time,omitempty"` + // DeleteTime 删除时间 + // 仅分包回收站列表时有效,表示应用分包的删除时间 + DeleteTime int64 `json:"delete_time,omitempty"` + // URL String 应用下载地址 + URL string `json:"url,omitempty"` + // UseSDK Integer 是否接入快手广告监测SDK 0-未接入,1-已接入 + UseSDK int `json:"use_sdk,omitempty"` + // VersionCode + VersionCode int `json:"version_code,omitempty"` + // BuildStatus 构建状态 0-创建中,1-构建中,2-构建成功,3-构建失败 + BuildStatus int `json:"build_status,omitempty"` + // Description 分包备注 + Description string `json:"description,omitempty"` + // CanUpdate 是否可更新 + // 仅分包管理列表时有效,表示应用分包是否可以更新 + CanUpdate bool `json:"can_update,omitempty"` + // CanRecycle 是否可恢复 + // 仅分包回收站列表时有效,表示应用分包是否可以恢复 + CanRecycle bool `json:"can_recycle,omitempty"` +} diff --git a/model/appcenter/upload/apk.go b/model/appcenter/upload/apk.go new file mode 100644 index 0000000..c9502a3 --- /dev/null +++ b/model/appcenter/upload/apk.go @@ -0,0 +1,45 @@ +package upload + +import ( + "strconv" + + "github.com/bububa/kwai-marketing-api/model" +) + +// ApkRequest 上传 APK 文件 API Request +type ApkRequest struct { + // AdvertiserID 广告主ID + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // File APK 文件 + File *model.UploadField `json:"file,omitempty"` +} + +// Url implement UploadRequest interface +func (r ApkRequest) Url() string { + return "gw/dsp/appcenter/upload/apk" +} + +// Encode implenent UploadRequest interface +func (r ApkRequest) Encode() []model.UploadField { + fileName := r.File.Value + if fileName == "" { + fileName = "file" + } + return []model.UploadField{ + { + Key: "advertiser_id", + Value: strconv.FormatUint(r.AdvertiserID, 10), + }, + { + Key: "file", + Value: fileName, + Reader: r.File.Reader, + }, + } +} + +// ApkResponse 上传 APK 文件 API Response +type ApkResponse struct { + // BlobStoreKey APK 文件在快手的存储 Key + BlobStoreKey string `json:"blob_store_key,omitempty"` +} diff --git a/model/appcenter/upload/doc.go b/model/appcenter/upload/doc.go new file mode 100644 index 0000000..8813ece --- /dev/null +++ b/model/appcenter/upload/doc.go @@ -0,0 +1,2 @@ +// Package upload 文件上传 +package upload diff --git a/model/appcenter/upload/pic.go b/model/appcenter/upload/pic.go new file mode 100644 index 0000000..d74a7cd --- /dev/null +++ b/model/appcenter/upload/pic.go @@ -0,0 +1,52 @@ +package upload + +import ( + "strconv" + + "github.com/bububa/kwai-marketing-api/model" +) + +// PicRequest 上传图片 API Request +type PicRequest struct { + // AdvertiserID 广告主ID + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // File 图片文件 + File *model.UploadField `json:"file,omitempty"` + // Type 图片类型:1=应用图标;2=应用图片, 5=单机承诺函 + // 应用图标:尺寸:450 x 450,小于1MB;格式为 PNG/JPG/JPEG。应用图片:宽高比9:20,宽:大于等于720,高:大于等于1280,小于2 MB;格式为 PNG/JPG/JPEG。单机承诺函:小于10MB;格式为 PNG/JPG/JPEG。 + Type int `json:"type,omitempty"` +} + +// Url implement UploadRequest interface +func (r PicRequest) Url() string { + return "gw/dsp/appcenter/upload/pic" +} + +// Encode implenent UploadRequest interface +func (r PicRequest) Encode() []model.UploadField { + fileName := r.File.Value + if fileName == "" { + fileName = "file" + } + return []model.UploadField{ + { + Key: "advertiser_id", + Value: strconv.FormatUint(r.AdvertiserID, 10), + }, + { + Key: "type", + Value: strconv.Itoa(r.Type), + }, + { + Key: "file", + Value: fileName, + Reader: r.File.Reader, + }, + } +} + +// PicResponse 上传图片 API Response +type PicResponse struct { + // URL 所上传图片的快手CDN链接 + URL string `json:"url,omitempty"` +} diff --git a/model/creative/create_request.go b/model/creative/create_request.go index 36b8e83..27e12d1 100644 --- a/model/creative/create_request.go +++ b/model/creative/create_request.go @@ -1,6 +1,6 @@ package creative -import "encoding/json" +import "github.com/bububa/kwai-marketing-api/model" // CreateRequest 创建创意API Request type CreateRequest struct { @@ -59,6 +59,5 @@ func (r CreateRequest) Url() string { // Encode implement PostRequest interface func (r CreateRequest) Encode() []byte { - ret, _ := json.Marshal(r) - return ret + return model.JSONMarshal(r) } diff --git a/model/v2.2/appcenter/app/list_request.go b/model/v2.2/appcenter/app/list_request.go deleted file mode 100644 index d4d3d97..0000000 --- a/model/v2.2/appcenter/app/list_request.go +++ /dev/null @@ -1,29 +0,0 @@ -package app -import "encoding/json" - -type ListRequest struct { - //advertiser_id Long 必填 广告主id - AdvertiserId int64 `json:"advertiser_id"` - //list_type Integer 可选 列表类型 不传-全部, 1-我创建的, 2-共享给我的 - ListType int `json:"list_type,omitempty"` - //platform String "ios" 可选 android或ios - Platform string `json:"platform,omitempty"` - //app_ids Long[] 可选 批量应用id查询 最多支持查询100个 - AppIds []int64 `json:"app_ids,omitempty"` - //key_word String 可选 关键词 支持应用ID或应用名称搜索 - KeyWord string `json:"key_word,omitempty"` - //page Integer 可选 当前页 页码,默认1 - Page int `json:"page,omitempty"` - //page_size Integer 可选 分页大小 个数,默认10 - PageSize int `json:"page_size,omitempty"` -} - -func (r ListRequest) Url() string { - return "gw/dsp/appcenter/app/release/list" -} - -// Encode implement PostRequest interface -func (r ListRequest) Encode() []byte { - ret, _ := json.Marshal(r) - return ret -} \ No newline at end of file diff --git a/model/v2.2/appcenter/app/list_response.go b/model/v2.2/appcenter/app/list_response.go deleted file mode 100644 index 322cc91..0000000 --- a/model/v2.2/appcenter/app/list_response.go +++ /dev/null @@ -1,49 +0,0 @@ -package app - -type ListResponse struct { - CurrentPage int `json:"current_page"` - PageSize int `json:"page_size"` - TotalCount int `json:"total_count"` - List []Item `json:"list"` -} - -type Item struct { - //account_id Long 账号ID - AccountId int64 `json:"account_id"` - //app_detail_img String 应用详情图片 - AppDetailImg string `json:"app_detail_img"` - //app_icon_url String 应用图标链接 - AppIconUrl string `json:"app_icon_url"` - //app_id Long 应用ID - AppId int64 `json:"app_id"` - //app_privacy_url String 应用隐私政策链接 - AppPrivacyUrl string `json:"app_privacy_url"` - //ios_app_id String 解析出的iosAppID - IosAppId string `json:"ios_app_id"` - //offline_app_stores String 下架的应用商店 "huawei","oppo","vivo","xiaomi","meizu","smartisan" - OfflineAppStores string `json:"offline_app_stores"` - //package_id Long 应用包ID - PackageId int64 `json:"package_id"` - //package_name String 应用包名 - PackageName string `json:"package_name"` - //package_size Long 应用包大小 - PackageSize int64 `json:"package_size"` - //permission_information int[] 权限信息ID列表 - PermissionInformation []int `json:"permission_information"` - //platform String android或ios - Platform string `json:"platform"` - //real_app_name String 应用名称 - RealAppName string `json:"real_app_name"` - //real_app_version String 应用版本信息 - RealAppVersion string `json:"real_app_version"` - //source_type Integer 应用来源 1-我创建的 2-共享给我的 - SourceType int `json:"source_type"` - //update_time Long 更新时间 单位:毫秒 - UpdateTime int64 `json:"update_time"` - //url String 应用下载地址 - Url string `json:"url"` - //use_sdk Integer 是否接入快手广告监测SDK 0-未接入,1-已接入 - UseSdk int `json:"use_sdk"` - //version_code - VersionCode int `json:"version_code"` -} diff --git a/model/v2.2/appcenter/subpkg/create_request.go b/model/v2.2/appcenter/subpkg/create_request.go deleted file mode 100644 index 561b49f..0000000 --- a/model/v2.2/appcenter/subpkg/create_request.go +++ /dev/null @@ -1,27 +0,0 @@ -package subpkg - -import "encoding/json" - -// CreateRequest 创建分包 API Request -type CreateRequest struct { - // AdvertiserID 广告主ID - AdvertiserID uint64 `json:"advertiser_id,omitempty"` - //parent_package_id Long 必填 应用(母)包id 仅支持android应用的包id新建分包 - ParentPackageID uint64 `json:"parent_package_id,omitempty"` - //type Integer 必填 分包方式 1-系统自动分包,2-上传渠道号列表 - Type int `json:"type,omitempty"` - //count Integer 可选 分包数量 当type=1时填写,单次最多100 - Count int `json:"count,omitempty"` - //channel_id String[] 可选 上传的渠道号列表 当type=2时填写,单次最多填写100个。同一应用包下填写的渠道号不可重复 - ChannelID []string `json:"channel_id,omitempty"` -} - -func (r CreateRequest) Url() string { - return "gw/dsp/appcenter/subpkg/add" -} - -// Encode implement PostRequest interface -func (r CreateRequest) Encode() []byte { - ret, _ := json.Marshal(r) - return ret -} diff --git a/model/v2.2/appcenter/subpkg/create_response.go b/model/v2.2/appcenter/subpkg/create_response.go deleted file mode 100644 index edbbace..0000000 --- a/model/v2.2/appcenter/subpkg/create_response.go +++ /dev/null @@ -1,14 +0,0 @@ -package subpkg - -type CreateResponse struct { - // CreativeID 创意ID - Item []Item -} - -type Item struct { - PackageId int64 `json:"package_id"` - BuildStatus int `json:"build_status"` - ParentPackageId int64 `json:"parent_package_id"` - ChannelId string `json:"channel_id"` -} - diff --git a/model/v2.2/appcenter/subpkg/list_request.go b/model/v2.2/appcenter/subpkg/list_request.go deleted file mode 100644 index 2d8c443..0000000 --- a/model/v2.2/appcenter/subpkg/list_request.go +++ /dev/null @@ -1,22 +0,0 @@ -package subpkg - -import "encoding/json" - -type ListRequest struct { - // AdvertiserID 广告主ID - AdvertiserID uint64 `json:"advertiser_id,omitempty"` - AppId int64 `json:"app_id"` - KeyWord string `json:"key_word"` - Page int `json:"page"` - PageSize int `json:"page_size"` -} - -func (r ListRequest) Url() string { - return "gw/dsp/appcenter/subPackage/release/list" -} - -// Encode implement PostRequest interface -func (r ListRequest) Encode() []byte { - ret, _ := json.Marshal(r) - return ret -} diff --git a/model/v2.2/appcenter/subpkg/list_response.go b/model/v2.2/appcenter/subpkg/list_response.go deleted file mode 100644 index fcbd8e4..0000000 --- a/model/v2.2/appcenter/subpkg/list_response.go +++ /dev/null @@ -1,52 +0,0 @@ -package subpkg - -type ListResponse struct { - CurrentPage int `json:"current_page"` - PageSize int `json:"page_size"` - TotalCount int `json:"total_count"` - List []SubpkgItem `json:"list"` -} - -type SubpkgItem struct { - //account_id Long 账号ID - AccountId int64 `json:"account_id"` - //app_detail_img String 应用详情图片 - AppDetailImg string `json:"app_detail_img"` - //app_icon_url String 应用图标链接 - AppIconUrl string `json:"app_icon_url"` - //app_id Long 应用ID - AppId int64 `json:"app_id"` - //app_privacy_url String 应用隐私政策链接 - AppPrivacyUrl string `json:"app_privacy_url"` - //channel_id String 渠道号(分包号) - ChannelId string `json:"channel_id"` - //ios_app_id String 解析出的iosAppID - IosAppId string `json:"ios_app_id"` - //offline_app_stores String 下架的应用商店 "huawei","oppo","vivo","xiaomi","meizu","smartisan" - OfflineAppStores string `json:"offline_app_stores"` - //package_id Long 应用包ID - PackageId int64 `json:"package_id"` - //package_name String 应用包名 - PackageName string `json:"package_name"` - //package_size Long 应用包大小 - PackageSize int64 `json:"package_size"` - //permission_information int[] 权限信息ID列表 - PermissionInformation []int `json:"permission_information"` - //platform String android或ios - Platform string `json:"platform"` - //real_app_name String 应用名称 - RealAppName string `json:"real_app_name"` - //real_app_version String 应用版本信息 - RealAppVersion string `json:"real_app_version"` - //source_type Integer 应用来源 1-我创建的 2-共享给我的 - SourceType int `json:"source_type"` - //update_time Long 更新时间 单位:毫秒 - UpdateTime int64 `json:"update_time"` - //url String 应用下载地址 - Url string `json:"url"` - //use_sdk Integer 是否接入快手广告监测SDK 0-未接入,1-已接入 - UseSdk int `json:"use_sdk"` - //version_code - VersionCode int `json:"version_code"` - ChannelID string `json:"channel_id"` -} diff --git a/model/v2.2/appcenter/subpkg/update_request.go b/model/v2.2/appcenter/subpkg/update_request.go deleted file mode 100644 index bca229f..0000000 --- a/model/v2.2/appcenter/subpkg/update_request.go +++ /dev/null @@ -1,20 +0,0 @@ -package subpkg - -import "encoding/json" - -type UpdateRequest struct { - AdvertiserId int64 `json:"advertiser_id,omitempty"` - PackageId []int64 `json:"package_id,omitempty"` - PutStatus int `json:"put_status,omitempty"` -} - - -func (r UpdateRequest) Url() string { - return "gw/dsp/appcenter/subpkg/mod" -} - -// Encode implement PostRequest interface -func (r UpdateRequest) Encode() []byte { - ret, _ := json.Marshal(r) - return ret -} \ No newline at end of file diff --git a/model/v2.2/appcenter/subpkg/update_response.go b/model/v2.2/appcenter/subpkg/update_response.go deleted file mode 100644 index 5c50211..0000000 --- a/model/v2.2/appcenter/subpkg/update_response.go +++ /dev/null @@ -1,5 +0,0 @@ -package subpkg - -type UpdateResponse struct { - Result bool `json:"result"` -} diff --git a/model/v2.2/campaign/create_request.go b/model/v2.2/campaign/create.go similarity index 91% rename from model/v2.2/campaign/create_request.go rename to model/v2.2/campaign/create.go index 4fbf64d..9de3742 100644 --- a/model/v2.2/campaign/create_request.go +++ b/model/v2.2/campaign/create.go @@ -1,6 +1,6 @@ package campaign -import "encoding/json" +import "github.com/bububa/kwai-marketing-api/model" // CreateRequest 创建广告计划 API Request type CreateRequest struct { @@ -33,6 +33,11 @@ func (r CreateRequest) Url() string { // Encode implement PostRequest interface func (r CreateRequest) Encode() []byte { - ret, _ := json.Marshal(r) - return ret + return model.JSONMarshal(r) +} + +// CreateResponse 创建广告计划 API Response +type CreateResponse struct { + // CampaignID 广告计划ID + CampaignID uint64 `json:"campaign_id,omitempty"` } diff --git a/model/v2.2/campaign/create_response.go b/model/v2.2/campaign/create_response.go deleted file mode 100644 index 7c872db..0000000 --- a/model/v2.2/campaign/create_response.go +++ /dev/null @@ -1,7 +0,0 @@ -package campaign - -// CreateResponse 创建广告计划 API Response -type CreateResponse struct { - // CampaignID 广告计划ID - CampaignID uint64 `json:"campaign_id,omitempty"` -} diff --git a/model/v2.2/campaign/list.go b/model/v2.2/campaign/list.go new file mode 100644 index 0000000..9d621c7 --- /dev/null +++ b/model/v2.2/campaign/list.go @@ -0,0 +1,47 @@ +package campaign + +import "github.com/bububa/kwai-marketing-api/model" + +// ListRequest 获取广告计划信息 API Request +type ListRequest struct { + // AdvertiserID 广告主 ID,在获取 access_token 的时候返回,必填 + AdvertiserID uint64 `json:"advertiser_id"` + // CampaignID 广告计划 ID,过滤筛选条件,若不传或传空则视为无限制条件 + CampaignID uint64 `json:"campaign_id,omitempty"` + // CampaignName 计划名称,过滤筛选条件,若不传或传空则视为无限制条件 + CampaignName string `json:"campaign_name,omitempty"` + // CampaignIDs 广告计划 ID 集,不超过 200 个 + CampaignIDs []uint64 `json:"campaign_ids,omitempty"` + // PutStatusList 计划投放状态筛选,1:投放;2:暂停;3:删除。传了该参数会覆盖 status 参数筛选,因为二者是相同筛选项 + PutStatusList int `json:"put_status_list,omitempty"` + // Status 计划状态,过滤筛选条件;1:广告计划已暂停;4:有效;5:广告计划已删除; -2 不限 + Status int `json:"status,omitempty"` + // StartDate 开始时间,格式为"yyyy-MM-dd",与 end_date 同时传或同时不传;过滤筛选条件,参数值对应 update_time 信息 + StartDate string `json:"start_date,omitempty"` + // EndDate 结束时间,格式为"yyyy-MM-dd",与 start_date 同时传或同时不传;过滤筛选条件,参数值对应 update_time 信息 + EndDate string `json:"end_date,omitempty"` + // TimeFilterType 按创建时间,还是更新时间进行筛选。1.如传入此字段时不传"start_date",与"end_date"字段,则不根据时间筛选。2.传入"start_date",与"end_date"字段,且此字段为 1 时,按照创建时间进行筛选。3.传入"start_date",与"end_date"字段,此字段不传,或传值为 0 时,则按照更新时间进行筛选 + TimeFilterType int `json:"time_filter_type,omitempty"` + // Page 请求的页码数,默认为 1 + Page int `json:"page,omitempty"` + // PageSize 请求的每页行数,默认为 20 + PageSize int `json:"page_size,omitempty"` +} + +// Url implement PostRequest interface +func (r ListRequest) Url() string { + return "gw/dsp/campaign/list" +} + +// Encode implement PostRequest interface +func (r ListRequest) Encode() []byte { + return model.JSONMarshal(r) +} + +// ListResponse 获取广告计划信息 API Response +type ListResponse struct { + // TotalCount 数据总数 + TotalCount int `json:"total_count,omitempty"` + // Details 返回值详情 + Details []Campaign `json:"details,omitempty"` +} diff --git a/model/v2.2/campaign/list_request.go b/model/v2.2/campaign/list_request.go deleted file mode 100644 index f81170a..0000000 --- a/model/v2.2/campaign/list_request.go +++ /dev/null @@ -1,28 +0,0 @@ -package campaign - -import "encoding/json" - -type ListRequest struct { - AdvertiserID uint64 `json:"advertiser_id"` // 广告主 ID,在获取 access_token 的时候返回,必填 - CampaignID uint64 `json:"campaign_id,omitempty"` // 广告计划 ID,过滤筛选条件,若不传或传空则视为无限制条件 - CampaignName string `json:"campaign_name,omitempty"` // 计划名称,过滤筛选条件,若不传或传空则视为无限制条件 - CampaignIDs []uint64 `json:"campaign_ids,omitempty"` // 广告计划 ID 集,不超过 200 个 - PutStatusList int `json:"put_status_list,omitempty"` // 计划投放状态筛选,1:投放;2:暂停;3:删除。传了该参数会覆盖 status 参数筛选,因为二者是相同筛选项 - Status int `json:"status,omitempty"` // 计划状态,过滤筛选条件;1:广告计划已暂停;4:有效;5:广告计划已删除; -2 不限 - StartDate string `json:"start_date,omitempty"` // 开始时间,格式为"yyyy-MM-dd",与 end_date 同时传或同时不传;过滤筛选条件,参数值对应 update_time 信息 - EndDate string `json:"end_date,omitempty"` // 结束时间,格式为"yyyy-MM-dd",与 start_date 同时传或同时不传;过滤筛选条件,参数值对应 update_time 信息 - TimeFilterType int `json:"time_filter_type,omitempty"` // 按创建时间,还是更新时间进行筛选。1.如传入此字段时不传"start_date",与"end_date"字段,则不根据时间筛选。2.传入"start_date",与"end_date"字段,且此字段为 1 时,按照创建时间进行筛选。3.传入"start_date",与"end_date"字段,此字段不传,或传值为 0 时,则按照更新时间进行筛选 - Page int `json:"page,omitempty"` // 请求的页码数,默认为 1 - PageSize int `json:"page_size,omitempty"` // 请求的每页行数,默认为 20 -} - -// Url implement PostRequest interface -func (r ListRequest) Url() string { - return "gw/dsp/campaign/list" -} - -// Encode implement PostRequest interface -func (r ListRequest) Encode() []byte { - ret, _ := json.Marshal(r) - return ret -} diff --git a/model/v2.2/campaign/list_response.go b/model/v2.2/campaign/list_response.go deleted file mode 100644 index 1261393..0000000 --- a/model/v2.2/campaign/list_response.go +++ /dev/null @@ -1,9 +0,0 @@ -package campaign - -// ListResponse 获取广告计划信息 API Response -type ListResponse struct { - // TotalCount 数据总数 - TotalCount int `json:"total_count,omitempty"` - // Details 返回值详情 - Details []Campaign `json:"details,omitempty"` -} diff --git a/model/v2.2/campaign/status_update.go b/model/v2.2/campaign/status_update.go new file mode 100644 index 0000000..2c8f6c7 --- /dev/null +++ b/model/v2.2/campaign/status_update.go @@ -0,0 +1,29 @@ +package campaign + +import "github.com/bububa/kwai-marketing-api/model" + +// StatusUpdateRequest 广告计划状态更新 API Request +type StatusUpdateRequest struct { + // advertiser_id long 必填 广告主 ID 在获取 access_token 的时候返回 + AdvertiserID uint64 `json:"advertiser_id,omitempty"` + // unit_ids long 必填 广告计划 ID + CampaignIds []uint64 `json:"campaign_ids,omitempty"` + // 1-投放、2-暂停、3-删除,传其他数字非法 + PutStatus int `json:"put_status,omitempty"` +} + +// Url implement PostRequest interface +func (r StatusUpdateRequest) Url() string { + return "v1/campaign/update/status" +} + +// Encode implement PostRequest interface +func (r StatusUpdateRequest) Encode() []byte { + return model.JSONMarshal(r) +} + +// StatusUpdateResponse 广告计划状态更新 API Response +type StatusUpdateResponse struct { + // CampaignIds 所有修改状态成功的计划 id + CampaignIds []uint64 `json:"campaign_ids,omitempty"` +} diff --git a/model/v2.2/campaign/status_update_request.go b/model/v2.2/campaign/status_update_request.go deleted file mode 100644 index afab7f0..0000000 --- a/model/v2.2/campaign/status_update_request.go +++ /dev/null @@ -1,23 +0,0 @@ -package campaign - -import "encoding/json" - -type StatusUpdateRequest struct { - //advertiser_id long 必填 广告主 ID 在获取 access_token 的时候返回 - AdvertiserID uint64 `json:"advertiser_id,omitempty"` - //unit_ids long 必填 广告计划 ID - CampaignIds []uint64 `json:"campaign_ids"` - //1-投放、2-暂停、3-删除,传其他数字非法 - PutStatus int `json:"put_status"` -} - -// Url implement PostRequest interface -func (r StatusUpdateRequest) Url() string { - return "v1/campaign/update/status" -} - -// Encode implement PostRequest interface -func (r StatusUpdateRequest) Encode() []byte { - ret, _ := json.Marshal(r) - return ret -} diff --git a/model/v2.2/campaign/status_update_response.go b/model/v2.2/campaign/status_update_response.go deleted file mode 100644 index b05724a..0000000 --- a/model/v2.2/campaign/status_update_response.go +++ /dev/null @@ -1,5 +0,0 @@ -package campaign - -type StatusUpdateResponse struct { - CampaignIds []uint64 `json:"campaign_ids"` // 所有修改状态成功的计划 id -} diff --git a/model/v2.2/campaign/update_request.go b/model/v2.2/campaign/update.go similarity index 96% rename from model/v2.2/campaign/update_request.go rename to model/v2.2/campaign/update.go index 3ad3f97..f8deda9 100644 --- a/model/v2.2/campaign/update_request.go +++ b/model/v2.2/campaign/update.go @@ -45,3 +45,9 @@ func (r UpdateRequest) Url() string { func (r UpdateRequest) Encode() []byte { return model.JSONMarshal(r) } + +// UpdateResponse 更新广告计划 API Response +type UpdateResponse struct { + // CampaignID 广告计划ID + CampaignID uint64 `json:"campaign_id,omitempty"` +} diff --git a/model/v2.2/campaign/update_response.go b/model/v2.2/campaign/update_response.go deleted file mode 100644 index d8eca09..0000000 --- a/model/v2.2/campaign/update_response.go +++ /dev/null @@ -1,7 +0,0 @@ -package campaign - -// UpdateResponse 更新广告计划 API Response -type UpdateResponse struct { - // CampaignID 广告计划ID - CampaignID uint64 `json:"campaign_id,omitempty"` -}