Перейти к содержимому

Загрузка через API

API позволяет полностью автоматизировать загрузку билдов.

Процесс загрузки

  1. Получите presigned URL для загрузки
  2. Загрузите файл по URL
  3. Подтвердите загрузку

Шаг 1: Получение URL

Окно терминала
curl -X POST "https://api.getuply.io/api/app-distribution/{projectId}/{appId}/builds/upload-link" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"fileName": "app-release.apk",
"fileSize": 15728640
}'

Ответ:

{
"uploadUrl": "https://storage.getuply.io/...",
"buildId": "build_abc123",
"expiresAt": "2024-01-15T12:00:00Z"
}

Шаг 2: Загрузка файла

Окно терминала
curl -X PUT "$UPLOAD_URL" \
-H "Content-Type: application/octet-stream" \
--data-binary @app-release.apk

Шаг 3: Подтверждение

Окно терминала
curl -X POST "https://api.getuply.io/api/app-distribution/{projectId}/{appId}/builds/verify" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"buildId": "build_abc123",
"notes": "Release notes"
}'

Полный пример (bash)

#!/bin/bash
set -e
PROJECT_ID="proj_xxx"
APP_ID="app_xxx"
FILE_PATH="./app-release.apk"
TOKEN="your_jwt_token"
# 1. Получаем URL
RESPONSE=$(curl -s -X POST \
"https://api.getuply.io/api/app-distribution/$PROJECT_ID/$APP_ID/builds/upload-link" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "{\"fileName\": \"$(basename $FILE_PATH)\", \"fileSize\": $(stat -f%z $FILE_PATH)}")
UPLOAD_URL=$(echo $RESPONSE | jq -r '.uploadUrl')
BUILD_ID=$(echo $RESPONSE | jq -r '.buildId')
# 2. Загружаем файл
curl -X PUT "$UPLOAD_URL" \
-H "Content-Type: application/octet-stream" \
--data-binary @$FILE_PATH
# 3. Подтверждаем
curl -X POST \
"https://api.getuply.io/api/app-distribution/$PROJECT_ID/$APP_ID/builds/verify" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "{\"buildId\": \"$BUILD_ID\"}"
echo "Build uploaded successfully!"

Ошибки

HTTP кодОписание
401Неверный или истёкший токен
403Нет прав на проект/приложение
404Проект или приложение не найдены
413Файл слишком большой
422Ошибка валидации

Подробнее в API Reference.