curl --request GET \
--url https://api.runaether.dev/pr-reviews/{pullRequestID}/stack \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.runaether.dev/pr-reviews/{pullRequestID}/stack"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.runaether.dev/pr-reviews/{pullRequestID}/stack', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.runaether.dev/pr-reviews/{pullRequestID}/stack",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.runaether.dev/pr-reviews/{pullRequestID}/stack"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.runaether.dev/pr-reviews/{pullRequestID}/stack")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.runaether.dev/pr-reviews/{pullRequestID}/stack")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"layers": [
{
"depth": 1,
"has_review": true,
"html_url": "<string>",
"pr_number": 2,
"pull_request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ready_for_merge": true,
"title": "<string>",
"ci_status": "pending",
"parent_pull_request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"state": "open"
}
],
"base_branch": "<string>"
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}{
"code": "stack_cycle",
"error": "<string>",
"pr_number": 2
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}Get the whole stack a reviewed pull request belongs to
Walks the branch chain through the pull request up to its bottom layer, through the tracked open pull request whose head branch is each layer’s base, then returns the whole tree from there, forks included: every tracked open pull request based on a layer’s head is a child of that layer. Layers are depth first from the bottom, each layer’s children in ascending number; parent_pull_request_id is absent on the bottom layer only, depth is 0 there, and base_branch is its base. A pull request in no stack is one layer. A loop is a 409 stack_cycle, a layer based on a branch two open pull requests head a 409 stack_two_parents, and more than 64 layers a 409 stack_too_large; each names the pull request where it breaks, and none returns a partial stack. Authorized like getPRReview, with the same indistinguishable 404.
curl --request GET \
--url https://api.runaether.dev/pr-reviews/{pullRequestID}/stack \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.runaether.dev/pr-reviews/{pullRequestID}/stack"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.runaether.dev/pr-reviews/{pullRequestID}/stack', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.runaether.dev/pr-reviews/{pullRequestID}/stack",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.runaether.dev/pr-reviews/{pullRequestID}/stack"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.runaether.dev/pr-reviews/{pullRequestID}/stack")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.runaether.dev/pr-reviews/{pullRequestID}/stack")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"layers": [
{
"depth": 1,
"has_review": true,
"html_url": "<string>",
"pr_number": 2,
"pull_request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ready_for_merge": true,
"title": "<string>",
"ci_status": "pending",
"parent_pull_request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"state": "open"
}
],
"base_branch": "<string>"
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}{
"code": "stack_cycle",
"error": "<string>",
"pr_number": 2
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}