curl --request GET \
--url https://api.ctrl-hub.com/v3/comments \
--header 'X-Session-Token: <api-key>'import requests
url = "https://api.ctrl-hub.com/v3/comments"
headers = {"X-Session-Token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Session-Token': '<api-key>'}};
fetch('https://api.ctrl-hub.com/v3/comments', 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.ctrl-hub.com/v3/comments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Session-Token: <api-key>"
],
]);
$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.ctrl-hub.com/v3/comments"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Session-Token", "<api-key>")
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.ctrl-hub.com/v3/comments")
.header("X-Session-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ctrl-hub.com/v3/comments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Session-Token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "comments",
"attributes": {
"body": "<string>"
},
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"previous_versions": [
{
"body": "<string>",
"author": {
"type": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"edited_at": "2023-11-07T05:31:56Z"
}
]
},
"relationships": {
"organisation": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "organisations"
}
},
"author": {
"data": {
"type": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"agent_issue": {
"data": {
"type": "agent-issues",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"plane_project": {
"data": {
"type": "plane-projects",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"plane_goal": {
"data": {
"type": "plane-goals",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"plane_plan": {
"data": {
"type": "plane-plans",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
}
}
}
],
"meta": {
"pagination": {
"counts": {
"pages": 1,
"resources": 1
},
"current_page": 1,
"offsets": {
"next": null,
"previous": null
},
"requested": {
"limit": 10,
"offset": 0
}
},
"features": {
"include": {
"options": [
"related.resource"
]
}
}
},
"jsonapi": {
"version": "1.0"
},
"included": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "agent-issues",
"attributes": {
"title": "<string>",
"description": "<string>",
"status": "backlog",
"priority": "none",
"labels": [
"<string>"
],
"closed": true
},
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"relationships": {
"organisation": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "organisations"
}
},
"author": {
"data": {
"type": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"project": {
"data": {
"type": "plane-projects",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"goal": {
"data": {
"type": "plane-goals",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"form": {
"data": {
"type": "forms",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"parent_issue": {
"data": {
"type": "agent-issues",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"duplicate_of": {
"data": {
"type": "agent-issues",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"blocked_by": {
"data": [
{
"type": "agent-issues",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
]
},
"assignee_agent": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "agents"
}
}
}
}
]
}{
"id": "98ca4a78-b66f-4234-9719-aaf832ee6669",
"status": "400",
"title": "A validation error was encountered",
"source": {
"parameter": "include"
},
"meta": {
"resource": "wrong_value"
}
}{
"id": "05fc9c8d-73b9-4697-9337-57f7a567a48f",
"status": "401",
"title": "You are not authorised to access this resource",
"detail": "In order to access this resource, you need the 'admin' role.",
"code": "AUTH.001"
}{
"id": "fe9d9a69-f0a7-4fdc-bb2c-176027f316c5",
"status": "500",
"title": "Internal Server Error",
"detail": "An unexpected error occurred on the server."
}List comments
Retrieve a list of comments, filtered by the commentable resource.
curl --request GET \
--url https://api.ctrl-hub.com/v3/comments \
--header 'X-Session-Token: <api-key>'import requests
url = "https://api.ctrl-hub.com/v3/comments"
headers = {"X-Session-Token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Session-Token': '<api-key>'}};
fetch('https://api.ctrl-hub.com/v3/comments', 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.ctrl-hub.com/v3/comments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Session-Token: <api-key>"
],
]);
$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.ctrl-hub.com/v3/comments"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Session-Token", "<api-key>")
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.ctrl-hub.com/v3/comments")
.header("X-Session-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ctrl-hub.com/v3/comments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Session-Token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "comments",
"attributes": {
"body": "<string>"
},
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"previous_versions": [
{
"body": "<string>",
"author": {
"type": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"edited_at": "2023-11-07T05:31:56Z"
}
]
},
"relationships": {
"organisation": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "organisations"
}
},
"author": {
"data": {
"type": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"agent_issue": {
"data": {
"type": "agent-issues",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"plane_project": {
"data": {
"type": "plane-projects",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"plane_goal": {
"data": {
"type": "plane-goals",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"plane_plan": {
"data": {
"type": "plane-plans",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
}
}
}
],
"meta": {
"pagination": {
"counts": {
"pages": 1,
"resources": 1
},
"current_page": 1,
"offsets": {
"next": null,
"previous": null
},
"requested": {
"limit": 10,
"offset": 0
}
},
"features": {
"include": {
"options": [
"related.resource"
]
}
}
},
"jsonapi": {
"version": "1.0"
},
"included": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "agent-issues",
"attributes": {
"title": "<string>",
"description": "<string>",
"status": "backlog",
"priority": "none",
"labels": [
"<string>"
],
"closed": true
},
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"relationships": {
"organisation": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "organisations"
}
},
"author": {
"data": {
"type": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"project": {
"data": {
"type": "plane-projects",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"goal": {
"data": {
"type": "plane-goals",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"form": {
"data": {
"type": "forms",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"parent_issue": {
"data": {
"type": "agent-issues",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"duplicate_of": {
"data": {
"type": "agent-issues",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"blocked_by": {
"data": [
{
"type": "agent-issues",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
]
},
"assignee_agent": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "agents"
}
}
}
}
]
}{
"id": "98ca4a78-b66f-4234-9719-aaf832ee6669",
"status": "400",
"title": "A validation error was encountered",
"source": {
"parameter": "include"
},
"meta": {
"resource": "wrong_value"
}
}{
"id": "05fc9c8d-73b9-4697-9337-57f7a567a48f",
"status": "401",
"title": "You are not authorised to access this resource",
"detail": "In order to access this resource, you need the 'admin' role.",
"code": "AUTH.001"
}{
"id": "fe9d9a69-f0a7-4fdc-bb2c-176027f316c5",
"status": "500",
"title": "Internal Server Error",
"detail": "An unexpected error occurred on the server."
}Authorizations
Session token for authentication.
Query Parameters
Limit the number of resources returned by the API
x >= 1Offset the resources returned by the API
x >= 0JSON:API pagination, as page[limit] and page[offset]. The same as the top-level limit and offset parameters; when both forms are sent, page[...] wins.
Show child attributes
Show child attributes
Filters the response data based on the value provided.
Available filters:
organisation_eq: Filter where the organisation ID equals the provided value.commentable_eq: Filter where the commentable resource ID equals the provided value.commentable_type_eq: Filter where the commentable resource type equals the provided value.
For more information on using named filters, see the docs
A comma separated list of related resources to include.
commentable Response
List of agent issue comments.
JSON API response object
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Related resources that can be included when a comment is returned
An agent issue
- Option 1
- Option 2
- Option 3
- Option 4
Show child attributes
Show child attributes