curl --request GET \
--url https://api.runaether.dev/pull-requests/{pullRequestID}/proof \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.runaether.dev/pull-requests/{pullRequestID}/proof"
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/pull-requests/{pullRequestID}/proof', 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/pull-requests/{pullRequestID}/proof",
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/pull-requests/{pullRequestID}/proof"
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/pull-requests/{pullRequestID}/proof")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.runaether.dev/pull-requests/{pullRequestID}/proof")
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{
"published": [
{
"linked_at": "2023-11-07T05:31:56Z",
"media": [
{
"capture": {
"actions": [
{
"at_ms": 1,
"kind": "click",
"label": "<string>"
}
],
"chapters": [
{
"at_ms": 1,
"title": "<string>",
"description": "<string>"
}
],
"description": "<string>",
"duration_ms": 1,
"height": 2,
"kind": "recording",
"pages": [
"<string>"
],
"source": "browser",
"title": "<string>",
"width": 2,
"notes": [
"<string>"
]
},
"content_type": "image/png",
"created_at": "2023-11-07T05:31:56Z",
"head_sha": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"public_url": "<string>"
}
],
"task_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"task_name": "<string>"
}
],
"pull_request": {
"head_sha": "<string>",
"html_url": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"merged_at": "2023-11-07T05:31:56Z",
"pr_number": 2,
"repository": "<string>",
"title": "<string>"
},
"reviews": [
{
"linked_at": "2023-11-07T05:31:56Z",
"media": [
{
"capture": {
"actions": [
{
"at_ms": 1,
"kind": "click",
"label": "<string>"
}
],
"chapters": [
{
"at_ms": 1,
"title": "<string>",
"description": "<string>"
}
],
"description": "<string>",
"duration_ms": 1,
"height": 2,
"kind": "recording",
"pages": [
"<string>"
],
"source": "browser",
"title": "<string>",
"width": 2,
"notes": [
"<string>"
]
},
"content_type": "image/png",
"created_at": "2023-11-07T05:31:56Z",
"head_sha": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"public_url": "<string>"
}
],
"reviewed_head_sha": "<string>",
"task_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"task_name": "<string>",
"verdict": "COMMENT"
}
]
}{
"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>"
}
]
}{
"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>"
}
]
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}Get everything recorded as proof of a pull request
The captures of every task that published this pull request, and every review run against it with the verdict it posted, the head it reviewed and its own captures. Captures are the same task media rows /tasks//media serves, newest first, each carrying the head it was recorded against to compare with the pull request’s current head. Nothing is fetched from GitHub. Requires membership in the owning organization of a task linked to this pull request — the task that published it or a task that reviewed it — and current GitHub access to the repository. 404 covers an unknown pull request, one linked to no organization the caller belongs to, and one whose GitHub access the caller has lost; the three are deliberately indistinguishable.
curl --request GET \
--url https://api.runaether.dev/pull-requests/{pullRequestID}/proof \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.runaether.dev/pull-requests/{pullRequestID}/proof"
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/pull-requests/{pullRequestID}/proof', 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/pull-requests/{pullRequestID}/proof",
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/pull-requests/{pullRequestID}/proof"
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/pull-requests/{pullRequestID}/proof")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.runaether.dev/pull-requests/{pullRequestID}/proof")
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{
"published": [
{
"linked_at": "2023-11-07T05:31:56Z",
"media": [
{
"capture": {
"actions": [
{
"at_ms": 1,
"kind": "click",
"label": "<string>"
}
],
"chapters": [
{
"at_ms": 1,
"title": "<string>",
"description": "<string>"
}
],
"description": "<string>",
"duration_ms": 1,
"height": 2,
"kind": "recording",
"pages": [
"<string>"
],
"source": "browser",
"title": "<string>",
"width": 2,
"notes": [
"<string>"
]
},
"content_type": "image/png",
"created_at": "2023-11-07T05:31:56Z",
"head_sha": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"public_url": "<string>"
}
],
"task_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"task_name": "<string>"
}
],
"pull_request": {
"head_sha": "<string>",
"html_url": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"merged_at": "2023-11-07T05:31:56Z",
"pr_number": 2,
"repository": "<string>",
"title": "<string>"
},
"reviews": [
{
"linked_at": "2023-11-07T05:31:56Z",
"media": [
{
"capture": {
"actions": [
{
"at_ms": 1,
"kind": "click",
"label": "<string>"
}
],
"chapters": [
{
"at_ms": 1,
"title": "<string>",
"description": "<string>"
}
],
"description": "<string>",
"duration_ms": 1,
"height": 2,
"kind": "recording",
"pages": [
"<string>"
],
"source": "browser",
"title": "<string>",
"width": 2,
"notes": [
"<string>"
]
},
"content_type": "image/png",
"created_at": "2023-11-07T05:31:56Z",
"head_sha": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"public_url": "<string>"
}
],
"reviewed_head_sha": "<string>",
"task_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"task_name": "<string>",
"verdict": "COMMENT"
}
]
}{
"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>"
}
]
}{
"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>"
}
]
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.