curl --request GET \
--url https://api.cloud.corbado.io/v1/observe/annotations/{annotationID} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cloud.corbado.io/v1/observe/annotations/{annotationID}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cloud.corbado.io/v1/observe/annotations/{annotationID}', 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.cloud.corbado.io/v1/observe/annotations/{annotationID}",
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.cloud.corbado.io/v1/observe/annotations/{annotationID}"
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.cloud.corbado.io/v1/observe/annotations/{annotationID}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloud.corbado.io/v1/observe/annotations/{annotationID}")
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{
"id": "<string>",
"kind": "event",
"platform": true,
"headline": "<string>",
"approximate": true,
"display": true,
"source": "manual",
"createdMs": 123,
"updatedMs": 123,
"description": "<string>",
"dateFrom": "<string>",
"dateTo": "<string>",
"datePrecision": "month",
"dateFromMs": 123,
"dateToMs": 123,
"status": "open",
"effect": "context",
"reading": "<string>",
"scope": {
"applicationID": "<string>",
"os": "<string>",
"osVersion": "<string>",
"browser": "<string>",
"customTag1": "<string>",
"customTag2": "<string>",
"customTag3": "<string>",
"customTag4": "<string>",
"customTag5": "<string>",
"customTag6": "<string>",
"customTag7": "<string>",
"customTag8": "<string>",
"customTag9": "<string>",
"customTag10": "<string>",
"experimentRunID": "<string>",
"experimentVariantID": "<string>"
},
"series": [
"<string>"
],
"evidence": [
"code"
],
"refs": [
{
"type": "finding",
"value": "<string>"
}
],
"externalKey": "<string>"
}{
"error": {
"message": "Validation failed",
"details": [
{
"field": "projectID",
"message": "required"
}
]
}
}Get annotation
Returns one annotation of the project or a platform annotation.
Required API key permission: observe:annotations:read.
curl --request GET \
--url https://api.cloud.corbado.io/v1/observe/annotations/{annotationID} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cloud.corbado.io/v1/observe/annotations/{annotationID}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cloud.corbado.io/v1/observe/annotations/{annotationID}', 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.cloud.corbado.io/v1/observe/annotations/{annotationID}",
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.cloud.corbado.io/v1/observe/annotations/{annotationID}"
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.cloud.corbado.io/v1/observe/annotations/{annotationID}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloud.corbado.io/v1/observe/annotations/{annotationID}")
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{
"id": "<string>",
"kind": "event",
"platform": true,
"headline": "<string>",
"approximate": true,
"display": true,
"source": "manual",
"createdMs": 123,
"updatedMs": 123,
"description": "<string>",
"dateFrom": "<string>",
"dateTo": "<string>",
"datePrecision": "month",
"dateFromMs": 123,
"dateToMs": 123,
"status": "open",
"effect": "context",
"reading": "<string>",
"scope": {
"applicationID": "<string>",
"os": "<string>",
"osVersion": "<string>",
"browser": "<string>",
"customTag1": "<string>",
"customTag2": "<string>",
"customTag3": "<string>",
"customTag4": "<string>",
"customTag5": "<string>",
"customTag6": "<string>",
"customTag7": "<string>",
"customTag8": "<string>",
"customTag9": "<string>",
"customTag10": "<string>",
"experimentRunID": "<string>",
"experimentVariantID": "<string>"
},
"series": [
"<string>"
],
"evidence": [
"code"
],
"refs": [
{
"type": "finding",
"value": "<string>"
}
],
"externalKey": "<string>"
}{
"error": {
"message": "Validation failed",
"details": [
{
"field": "projectID",
"message": "required"
}
]
}
}Authorizations
Use an Observe API key from the management console. The key selects the project and must grant the permission listed on the operation. Keep this key on your server.
Path Parameters
Annotation ID (format ann-<number>).
Response
The annotation.
Annotation ID (format ann-<number>).
What the annotation records: event something changed, period something held over a span, setup a fact
about how the project works, interpretation how to read the data, constraint which data may be used,
follow-up an unknown or open work.
event, period, setup, interpretation, constraint, follow-up Platform annotation that applies to every project; managed by Corbado.
One line saying what the annotation records.
The date is not exact.
Shown on charts.
Who wrote the annotation or made a change.
manual, agent, system Creation time in milliseconds since epoch.
Last update time in milliseconds since epoch.
Optional Markdown body with details.
Date as stated, in project time (UTC for platform annotations), in the format of its precision.
Last unit a period covers (inclusive), in the same format. Absent on an ongoing period.
Unit the annotation's dates were stated in.
month, date, hour, datetime Start of dateFrom in milliseconds since epoch.
End of the span (exclusive) in milliseconds since epoch.
Where a follow-up stands.
open, done How an event or period changes the reading of the data: context background only, boundary compare only
within one side, degraded data partly wrong, broken data wrong, missing no data.
context, boundary, degraded, broken, missing Reading rule this date brings (events and periods).
Narrows what the annotation applies to, by time-series dimension. Absent means the whole project.
Show child attributes
Show child attributes
504Kind of evidence an annotation rests on.
code, trace, data, customer 50Show child attributes
Show child attributes
Was this page helpful?