メインコンテンツまでスキップ

提交应用版本

您可以通过 Aptoide Connect 开发者控制台 中的 应用提交表单,或通过下面描述的 Uploader API提交 一个 新的 Android 应用版本

端点

方法URL
POSThttps://uploader.catappult.io/api

身份验证

要访问此 API,您需要在 Aptoide Connect 上拥有一个有效的账户订阅,并使用 API 密钥进行身份验证(请查看此处了解如何生成密钥)。

⚠️
所需账户类型

应用版本只能由 Developer 类型的账户提交。

请求头

请求头类型是否必需描述
Api-Keystring必需用于对您的 API 请求进行身份验证。其值为您的 Aptoide Connect API 密钥。

请求体参数

⚠️
重要
  • 所有参数都必须以 表单数据multipart/form-data)形式发送。不支持 JSON 请求。请在 cURL 中使用 -F 标志来发送每个字段。
  • 所有文件参数(apk、obbs、splits、icon、featureGraphic、screenshots)均可通过以下任一方式提供:
    • 作为 直接上传,或
    • 作为 可公开访问的 URL(如果文件已托管在服务器或云存储上,例如 Amazon S3、Dropbox,则推荐此方式)。请确保所有 URL 均可公开访问,并在上传过程完成前保持有效。服务将直接从所提供的 URL 获取文件。

注意:请勿在同一请求中混用已上传的文件和 URL。每个请求请选择一种方式。

您可以一次性为多种语言提供 特定于区域设置的元数据locales[<language_code>][...])。请参阅可用的语言代码

参数

类型

是否必需

描述

apk

string (URL)file

必需

基础 APK 文件。

obbs[0], obbs[1]

string (URL)file

可选

可选的 OBB(扩展)文件。

obbFileNames[0], obbFileNames[1]

string

仅当 obbs[0]obbs[1] 以 URL 形式提供时必需

通过 URL 提交时,与每个 OBB 文件对应的文件名。

splits[0], splits[1], ...

string (URL)file

可选

可选的 APK 拆分包文件(例如 config.arm64_v8a.apk)。

billingMethod

string

可选(默认:none

指示该 APK 是否集成了我们的 Billing SDK。如适用,请使用 aptoide-sdk

releaseMode

string

可选
(默认:IMMEDIATE

控制提交的 APK 在我们的管理团队批准后如何以及何时发布。可能的值:
IMMEDIATE — 批准后自动发布
MANUAL — 等待开发者手动发布
SCHEDULED — 在指定时间自动发布(需要 releaseTimestamp)。

releaseTimestamp

stringYYYY-MM-DD HH:mm:ss

可选

仅当 releaseMode 设置为 SCHEDULED 时使用。定义发布的确切 UTC 日期和时间。

requiresDeveloperApproval

boolean

可选(默认:false

启用(true)时,您必须在 Aptoide Connect 开发者控制台中手动批准该提交,然后它才会被送审。禁用(false)时,一旦满足所有要求,提交将自动送审。

icon

string (URL)file

可选

应用图标。

featureGraphic

string (URL)file

可选

应用的特色图片。

locales[<language_code>][title]

string

可选

指定语言的标题。

locales[<language_code>][description]

string

仅当提供了 locales[<language_code>][title] 时必需

指定语言的描述。

locales[<language_code>][news]

string

可选

指定语言的发行说明。

locales[<language_code>][screenshots][0], locales[<language_code>][screenshots][1], ...

string (URL)file

仅当提供了 locales[<language_code>][title] 时必需

指定语言的屏幕截图。

响应

成功

如果 API 调用返回 HTTP 200 状态码,则表示上传请求 成功,所提交的版本现在 正等待 Aptoide 团队的管理员批准

错误

如果 HTTP 状态码 不是 200,则表示提交 失败
响应体通常会包含一个描述问题的错误代码和消息。

错误代码HTTP 状态码含义修复方法
MISSING-APK400 Bad Request未提供 APK 文件或 URL上传一个 APK 或提供一个有效的公开 APK URL
INVALID-APK-FILE400 Bad Request提供的 APK 文件无效提供一个有效的 APK 文件或一个有效的公开 APK URL
INVALID-APK-URL400 Bad Request提供的 APK URL 无法下载或无效检查 URL 的可访问性和文件类型
APK-TOO-LARGE413 Payload Too LargeAPK 文件过大提供一个更小的 APK。请在此处查看允许的最大大小
OBB-TOO-LARGE413 Payload Too LargeOBB 文件过大提供一个更小的 OBB。请在此处查看允许的最大大小
SPLIT-TOO-LARGE413 Payload Too Large拆分包文件过大提供一个更小的拆分包。请在此处查看允许的最大大小
APK-NOT-SIGNED422 Unprocessable EntityAPK 未签名在提交前对 APK 进行签名
INVALID-BILLING-METHOD400 Bad Request检测到不允许的计费方法使用允许的计费方法。允许的值:aptoide-sdknone
APPLICATION-OWNED-BY-OTHER-ACCOUNT403 Forbidden该应用归另一个开发者账户所有如果您是该应用的合法所有者,请联系支持团队
APK-ALREADY-EXISTS409 Conflict该 APK 此前已由您提交过提交一个不同的 APK
APK-SIGNATURE-MISMATCH-MARKET409 ConflictAPK 签名与 Google Play 版本不匹配使用与 Google Play 上相同的密钥库
APK-SIGNATURE-MISMATCH-PREVIOUS409 ConflictAPK 签名与此前为该应用提交的 APK 不匹配使用与上一版本相同的密钥库
APK-VERCODE-LOWER-THAN-MARKET409 ConflictAPK 的 versionCode 低于 Google Play 版本将 versionCode 递增至与 Google Play 上相同或更高的值
FAILED-MOVING-APK-TO-STORAGE500 Internal Server Error将 APK 移至内部存储失败重试
FAILED-MOVING-OBB-TO-STORAGE500 Internal Server Error将 OBB 移至内部存储失败重试
FAILED-MOVING-SPLIT-TO-STORAGE500 Internal Server Error将拆分包文件移至内部存储失败重试
SUBMISSION-NOT-ALLOWED403 Forbidden该应用不在 Google Play 中。只有当应用同时在 Google Play 中可用时,您才能通过 API 密钥首次将其提交到 Aptoide Connect。通过 Aptoide Connect 开发者控制台上的应用提交表单提交第一个版本
SUBMISSION-NOT-ALLOWED403 Forbidden等待批准的待处理提交过多在新提交之前等待批准完成

备注

  • 大多数瞬时错误(如网络或存储故障)可通过短暂延迟后重试来解决。
  • 验证错误(如签名或所有权问题)必须在重试之前修复。
  • 非 200 的 HTTP 状态始终表示没有新版本被排入审查队列。

示例

文件上传示例(带 Billing SDK 的 APK)(cURL):

curl -X POST "https://uploader.catappult.io/api" \
-H "Api-Key: YOUR_API_KEY" \
-F "[email protected]" \
-F "billingMethod=aptoide-sdk"

文件上传示例(APK + 1 个 OBB + 1 个拆分包)(cURL):

curl -X POST "https://uploader.catappult.io/api" \
-H "Api-Key: YOUR_API_KEY" \
-F "[email protected]" \
-F "obbs[0][email protected]" \
-F "splits[0][email protected]_v8a.apk"

文件上传示例(带 Billing SDK 的 APK + 图标 + 特色图片 + 2 个区域设置,各含 2 张屏幕截图)(cURL):

curl -X POST "https://uploader.catappult.io/api" \
-H "Api-Key: YOUR_API_KEY" \
-F "[email protected]" \
-F "billingMethod=aptoide-sdk" \
-F "[email protected]" \
-F "[email protected]" \
-F "locales[en_GB][title]=Title via API" \
-F "locales[en_GB][description]=Description via API" \
-F "locales[en_GB][news]=News via API" \
-F "locales[en_GB][screenshots][0][email protected]" \
-F "locales[en_GB][screenshots][1][email protected]" \
-F "locales[pt_PT][title]=Titulo via API" \
-F "locales[pt_PT][description]=Descricao via API" \
-F "locales[pt_PT][news]=Noticias via API" \
-F "locales[pt_PT][screenshots][0][email protected]" \
-F "locales[pt_PT][screenshots][1][email protected]"

公开 URL 示例(带 Billing SDK 的 APK + 1 个 OBB + 1 个拆分包)(cURL):

curl -X POST "https://uploader.catappult.io/api" \
-H "Api-Key: YOUR_API_KEY" \
-F "apk=https://example-bucket.s3.amazonaws.com/app-release.apk" \
-F "obbs[0]=https://example-bucket.s3.amazonaws.com/main.12345.com.example.obb" \
-F "obbFileNames[0]=main.12345.com.example.obb" \
-F "splits[0]=https://example-bucket.s3.amazonaws.com/config.arm64_v8a.apk" \
-F "billingMethod=aptoide-sdk"

公开 URL 示例(带 Billing SDK 的 APK + 2 个 OBB + 2 个拆分包)(cURL):

curl -X POST "https://uploader.catappult.io/api" \
-H "Api-Key: YOUR_API_KEY" \
-F "apk=https://example-bucket.s3.amazonaws.com/app-release.apk" \
-F "obbs[0]=https://example-bucket.s3.amazonaws.com/main.12345.com.example.obb" \
-F "obbs[1]=https://example-bucket.s3.amazonaws.com/patch.12345.com.example.obb" \
-F "obbFileNames[0]=main.12345.com.example.obb" \
-F "obbFileNames[1]=patch.12345.com.example.obb" \
-F "splits[0]=https://example-bucket.s3.amazonaws.com/config.arm64_v8a.apk" \
-F "splits[1]=https://example-bucket.s3.amazonaws.com/config.xhdpi.apk" \
-F "billingMethod=aptoide-sdk"

公开 URL 示例(带 Billing SDK 的 APK + 图标 + 特色图片 + 2 个区域设置,各含 2 张屏幕截图)(cURL):

curl -X POST "https://uploader.catappult.io/api" \
-H "Api-Key: YOUR_API_KEY" \
-F "apk=https://example-bucket.s3.amazonaws.com/app-release.apk" \
-F "billingMethod=aptoide-sdk" \
-F "icon=https://example-bucket.s3.amazonaws.com/icon.png" \
-F "featureGraphic=https://example-bucket.s3.amazonaws.com/FG.png" \
-F "locales[en_GB][title]=Title via API" \
-F "locales[en_GB][description]=Description via API" \
-F "locales[en_GB][news]=News via API" \
-F "locales[en_GB][screenshots][0]=https://example-bucket.s3.amazonaws.com/s03.png" \
-F "locales[en_GB][screenshots][1]=https://example-bucket.s3.amazonaws.com/s04.png" \
-F "locales[pt_PT][title]=Titulo via API" \
-F "locales[pt_PT][description]=Descricao via API" \
-F "locales[pt_PT][news]=Noticias via API" \
-F "locales[pt_PT][screenshots][0]=https://example-bucket.s3.amazonaws.com/s01.png" \
-F "locales[pt_PT][screenshots][1]=https://example-bucket.s3.amazonaws.com/s02.png"