List ticket approvals
curl --request GET \
--url https://app.msportal.ai/api/public/v1/tickets/approvals \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.msportal.ai/api/public/v1/tickets/approvals"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.msportal.ai/api/public/v1/tickets/approvals', 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://app.msportal.ai/api/public/v1/tickets/approvals",
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://app.msportal.ai/api/public/v1/tickets/approvals"
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://app.msportal.ai/api/public/v1/tickets/approvals")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.msportal.ai/api/public/v1/tickets/approvals")
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{
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"status": "pending",
"companyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"companyName": "<string>",
"siteName": "<string>",
"chain": "<string>",
"currentStep": 123,
"stepCount": 123,
"requestedBy": "<string>",
"requestedAt": "<string>",
"decidedAt": "<string>",
"decidedBy": "<string>",
"decisionNote": "<string>",
"overridden": true,
"ticket": {},
"ticketStatus": "none",
"canDecide": true,
"details": [
{
"label": "<string>",
"value": "<string>"
}
],
"steps": [
{
"position": 123,
"name": "<string>",
"status": "waiting",
"requiredApprovals": 123,
"dueAt": "<string>",
"approvers": [
{
"name": "<string>",
"status": "pending",
"decidedAt": "<string>",
"note": "<string>"
}
]
}
],
"history": [
{
"type": "submitted",
"step": 123,
"actor": "<string>",
"note": "<string>",
"at": "<string>"
}
]
}
],
"pagination": {
"page": 2,
"limit": 50,
"totalCount": 123,
"totalPages": 123,
"hasNextPage": true,
"hasPrevPage": true
}
}{
"error": "<string>",
"requestId": "<string>",
"details": "<unknown>",
"code": "<string>"
}{
"error": "<string>",
"requestId": "<string>",
"details": "<unknown>",
"code": "<string>"
}{
"error": "<string>",
"requestId": "<string>",
"details": "<unknown>",
"code": "<string>"
}Tickets
List ticket approvals
Ticket requests held for approval by an approval chain. view=action (default) lists requests waiting on the caller’s decision, mine the caller’s own requests, all every request the caller may see (MSP staff). Company users only reach their own company’s requests. Requires tickets.read, read_tickets and the ticket_approval_chains feature.
GET
/
api
/
public
/
v1
/
tickets
/
approvals
List ticket approvals
curl --request GET \
--url https://app.msportal.ai/api/public/v1/tickets/approvals \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.msportal.ai/api/public/v1/tickets/approvals"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.msportal.ai/api/public/v1/tickets/approvals', 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://app.msportal.ai/api/public/v1/tickets/approvals",
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://app.msportal.ai/api/public/v1/tickets/approvals"
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://app.msportal.ai/api/public/v1/tickets/approvals")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.msportal.ai/api/public/v1/tickets/approvals")
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{
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"status": "pending",
"companyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"companyName": "<string>",
"siteName": "<string>",
"chain": "<string>",
"currentStep": 123,
"stepCount": 123,
"requestedBy": "<string>",
"requestedAt": "<string>",
"decidedAt": "<string>",
"decidedBy": "<string>",
"decisionNote": "<string>",
"overridden": true,
"ticket": {},
"ticketStatus": "none",
"canDecide": true,
"details": [
{
"label": "<string>",
"value": "<string>"
}
],
"steps": [
{
"position": 123,
"name": "<string>",
"status": "waiting",
"requiredApprovals": 123,
"dueAt": "<string>",
"approvers": [
{
"name": "<string>",
"status": "pending",
"decidedAt": "<string>",
"note": "<string>"
}
]
}
],
"history": [
{
"type": "submitted",
"step": 123,
"actor": "<string>",
"note": "<string>",
"at": "<string>"
}
]
}
],
"pagination": {
"page": 2,
"limit": 50,
"totalCount": 123,
"totalPages": 123,
"hasNextPage": true,
"hasPrevPage": true
}
}{
"error": "<string>",
"requestId": "<string>",
"details": "<unknown>",
"code": "<string>"
}{
"error": "<string>",
"requestId": "<string>",
"details": "<unknown>",
"code": "<string>"
}{
"error": "<string>",
"requestId": "<string>",
"details": "<unknown>",
"code": "<string>"
}Authorizations
Use your API key as a Bearer token. API keys can be generated in Settings → Integrations → API Access.
Query Parameters
Page number
Required range:
x >= 1Items per page
Required range:
1 <= x <= 100Available options:
action, mine, all Filter by status (repeat the key or comma-separate, at most 5)
Maximum array length:
5Available options:
pending, approved, rejected, cancelled, expired Restrict to one company
Was this page helpful?