POST /v1/releases/{releaseId}/distribute¶
Открывает доступ к релизу для указанных групп тестирования. При необходимости отправляет уведомления участникам групп о доступности новой сборки.
Группы тестирования должны быть предварительно созданы в консоли PWS. Один релиз может быть распространён на несколько групп.
Request¶
Path-параметры
releaseId
string
required
Идентификатор релиза.
Body
access
string
Тип доступа к релизу:
private— доступ получают только выбранные группы тестирования. Можно настроить email-рассылку участникам групп.public— релиз доступен по прямой ссылке. Группы и уведомления не применяются.
groupIds
array[string]
Идентификаторы групп тестировщиков. Применяется только для
access: private. Если не указаны — доступ получают все тестировщики проекта.
sendNotification
boolean
Отправить email-уведомления участникам указанных групп. Применяется только для
access: private. По умолчанию: false
notificationChannels
array[string]
Каналы уведомлений. Применяется только для
access: private. Сейчас поддерживается только ["email"]
resendNotification
boolean
Отправить повторно уже уведомлённым.
Response
status
string
Статус операции:
success
message
string
Сообщение о результате
Примеры запроса¶
curl -X POST "https://<DOMAIN>/v1/releases/{releaseId}/distribute" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"access": "private",
"groupIds": ["group-uuid-1", "group-uuid-2"],
"sendNotification": true,
"notificationChannels": ["email"]
}'
import requests
release_id = "release-uuid-2"
url = f"https://<DOMAIN>/v1/releases/{release_id}/distribute"
headers = {
"Authorization": "Bearer <API_KEY>",
"Content-Type": "application/json"
}
data = {
"access": "private",
"groupIds": ["group-uuid-1", "group-uuid-2"],
"sendNotification": True,
"notificationChannels": ["email"]
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
const releaseId = 'release-uuid-2';
fetch(`https://<DOMAIN>/v1/releases/${releaseId}/distribute`, {
method: 'POST',
headers: {
'Authorization': 'Bearer <API_KEY>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
access: 'private',
groupIds: ['group-uuid-1', 'group-uuid-2'],
sendNotification: true,
notificationChannels: ['email']
})
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
var releaseId = "release-uuid-2";
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, $"https://<DOMAIN>/v1/releases/{releaseId}/distribute");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", "<API_KEY>");
var data = new {
access = "private",
groupIds = new[] { "group-uuid-1", "group-uuid-2" },
sendNotification = true,
notificationChannels = new[] { "email" }
};
request.Content = new StringContent(JsonSerializer.Serialize(data), Encoding.UTF8, "application/json");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
releaseId := "release-uuid-2"
data := map[string]interface{}{
"access": "private",
"groupIds": []string{"group-uuid-1", "group-uuid-2"},
"sendNotification": true,
"notificationChannels": []string{"email"},
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", "https://<DOMAIN>/v1/releases/"+releaseId+"/distribute", bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <API_KEY>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
res, err := client.Do(req)
if err != nil { /* ... обработка ошибки ... */ }
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}
import okhttp3.*;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.IOException;
String releaseId = "release-uuid-2";
OkHttpClient client = new OkHttpClient();
JSONObject data = new JSONObject();
data.put("access", "private");
data.put("groupIds", new JSONArray().put("group-uuid-1").put("group-uuid-2"));
data.put("sendNotification", true);
data.put("notificationChannels", new JSONArray().put("email"));
RequestBody body = RequestBody.create(
data.toString(), MediaType.parse("application/json"));
Request request = new Request.Builder()
.url("https://<DOMAIN>/v1/releases/" + releaseId + "/distribute")
.post(body)
.addHeader("Authorization", "Bearer <API_KEY>")
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
System.out.println(response.body().string());
}
Пример ответа¶
{
"status": "success",
"message": "Test groups successfully added to the release. Notifications sent via email."
}
Ошибки¶
| Код | Описание |
|---|---|
| 204 | Все группы уже были добавлены ранее, изменений не было |
| 400 | Ошибка валидации входных данных |
| 401 | Неавторизованный запрос |
| 403 | Недостаточно прав |
| 404 | Релиз не найден |
| 500 | Внутренняя ошибка сервера |