curl --request POST \
--url https://app.trelica.com/api/apps/v1 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"globalAppName": "Zoom",
"instanceName": "Sales",
"status": "Managed"
}
'import requests
url = "https://app.trelica.com/api/apps/v1"
payload = {
"globalAppName": "Zoom",
"instanceName": "Sales",
"status": "Managed"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({globalAppName: 'Zoom', instanceName: 'Sales', status: 'Managed'})
};
fetch('https://app.trelica.com/api/apps/v1', 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.trelica.com/api/apps/v1",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'globalAppName' => 'Zoom',
'instanceName' => 'Sales',
'status' => 'Managed'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.trelica.com/api/apps/v1"
payload := strings.NewReader("{\n \"globalAppName\": \"Zoom\",\n \"instanceName\": \"Sales\",\n \"status\": \"Managed\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.trelica.com/api/apps/v1")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"globalAppName\": \"Zoom\",\n \"instanceName\": \"Sales\",\n \"status\": \"Managed\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trelica.com/api/apps/v1")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"globalAppName\": \"Zoom\",\n \"instanceName\": \"Sales\",\n \"status\": \"Managed\"\n}"
response = http.request(request)
puts response.read_body{
"id": "9425963fcd38ed972d209b49",
"name": "Asana",
"status": "New",
"riskLevel": "High",
"vendor": {
"id": "f7f213984a1a225358c21c71",
"name": "Asana, Inc."
},
"licenses": [
{
"name": "Premium",
"licensePlanId": "PREMIUM",
"startDate": "2024-07-22T00:00:00Z",
"renewalDate": "2025-07-22T00:00:00Z",
"terminatedDate": "2025-10-22T00:00:00Z",
"lastModifiedDtm": "2024-11-27T16:00:20.895Z"
},
{
"name": "Business",
"licensePlanId": "BUSINESS",
"startDate": "2021-06-22T00:00:00Z",
"renewalDate": "2022-06-22T00:00:00Z",
"lastModifiedDtm": "2023-05-15T12:28:57.137Z"
}
],
"customFields": {
"user_area": "support",
"user_vcc": "corp_support"
},
"deleted": false,
"roles": [
{
"name": "IT admin",
"members": [
{
"userId": "20fcf665630fc6562182578cb7f19f1e",
"name": "Eduardo Wilson",
"email": "eduardo.wilson@example.com"
}
]
},
{
"name": "App owner",
"members": [
{
"userId": "0372c6f6fc51bc128389337de1146143",
"name": "Eduardo Jung",
"email": "eduardo.jung@example.com"
}
]
}
],
"isGlobal": false,
"mainCategory": {
"id": "03823a9d2e817efcce22f52e",
"name": "Project Management"
},
"otherCategories": [
{
"id": "cab66910ac7cc93acdcc0338",
"name": "Project Management & Tracking"
},
{
"id": "22d0532b27e33b61e53a6fc5",
"name": "Team Coordination & Comms"
},
{
"id": "74e38311e5ad68ef2ab9dbb2",
"name": "Task Management"
}
],
"logoUrl": "https://app-files.trelica.com/public/4ad42e9e68cf46e3bc59cb8eab35886c",
"links": {
"application": "https://app.asana.com/"
}
}{
"type": "about:blank",
"title": "One or more validation errors occurred.",
"status": 400,
"detail": "The request body failed validation. See errors for the offending fields.",
"errors": {
"email": [
"The email field is required."
]
},
"traceId": "00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01"
}{
"type": "about:blank",
"title": "Conflict.",
"status": 409,
"detail": "The request conflicts with the current state (for example, the resource already exists).",
"traceId": "00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01"
}Create an application
Adds a managed application to your organization. Identify the underlying app with either
globalAppId or globalAppName (exactly one is required). When supplying a name
that does not match an app in the global catalog, supply vendorName and a new local
vendor is created. Returns 409 if the application already exists.
Required scope: Apps.Write (Write access to applications)
curl --request POST \
--url https://app.trelica.com/api/apps/v1 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"globalAppName": "Zoom",
"instanceName": "Sales",
"status": "Managed"
}
'import requests
url = "https://app.trelica.com/api/apps/v1"
payload = {
"globalAppName": "Zoom",
"instanceName": "Sales",
"status": "Managed"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({globalAppName: 'Zoom', instanceName: 'Sales', status: 'Managed'})
};
fetch('https://app.trelica.com/api/apps/v1', 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.trelica.com/api/apps/v1",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'globalAppName' => 'Zoom',
'instanceName' => 'Sales',
'status' => 'Managed'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.trelica.com/api/apps/v1"
payload := strings.NewReader("{\n \"globalAppName\": \"Zoom\",\n \"instanceName\": \"Sales\",\n \"status\": \"Managed\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.trelica.com/api/apps/v1")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"globalAppName\": \"Zoom\",\n \"instanceName\": \"Sales\",\n \"status\": \"Managed\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trelica.com/api/apps/v1")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"globalAppName\": \"Zoom\",\n \"instanceName\": \"Sales\",\n \"status\": \"Managed\"\n}"
response = http.request(request)
puts response.read_body{
"id": "9425963fcd38ed972d209b49",
"name": "Asana",
"status": "New",
"riskLevel": "High",
"vendor": {
"id": "f7f213984a1a225358c21c71",
"name": "Asana, Inc."
},
"licenses": [
{
"name": "Premium",
"licensePlanId": "PREMIUM",
"startDate": "2024-07-22T00:00:00Z",
"renewalDate": "2025-07-22T00:00:00Z",
"terminatedDate": "2025-10-22T00:00:00Z",
"lastModifiedDtm": "2024-11-27T16:00:20.895Z"
},
{
"name": "Business",
"licensePlanId": "BUSINESS",
"startDate": "2021-06-22T00:00:00Z",
"renewalDate": "2022-06-22T00:00:00Z",
"lastModifiedDtm": "2023-05-15T12:28:57.137Z"
}
],
"customFields": {
"user_area": "support",
"user_vcc": "corp_support"
},
"deleted": false,
"roles": [
{
"name": "IT admin",
"members": [
{
"userId": "20fcf665630fc6562182578cb7f19f1e",
"name": "Eduardo Wilson",
"email": "eduardo.wilson@example.com"
}
]
},
{
"name": "App owner",
"members": [
{
"userId": "0372c6f6fc51bc128389337de1146143",
"name": "Eduardo Jung",
"email": "eduardo.jung@example.com"
}
]
}
],
"isGlobal": false,
"mainCategory": {
"id": "03823a9d2e817efcce22f52e",
"name": "Project Management"
},
"otherCategories": [
{
"id": "cab66910ac7cc93acdcc0338",
"name": "Project Management & Tracking"
},
{
"id": "22d0532b27e33b61e53a6fc5",
"name": "Team Coordination & Comms"
},
{
"id": "74e38311e5ad68ef2ab9dbb2",
"name": "Task Management"
}
],
"logoUrl": "https://app-files.trelica.com/public/4ad42e9e68cf46e3bc59cb8eab35886c",
"links": {
"application": "https://app.asana.com/"
}
}{
"type": "about:blank",
"title": "One or more validation errors occurred.",
"status": 400,
"detail": "The request body failed validation. See errors for the offending fields.",
"errors": {
"email": [
"The email field is required."
]
},
"traceId": "00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01"
}{
"type": "about:blank",
"title": "Conflict.",
"status": 409,
"detail": "The request conflicts with the current state (for example, the resource already exists).",
"traceId": "00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01"
}Authorizations
OAuth 2.0. Obtain an access token via the Client Credentials or Authorization Code flow, then send it as Authorization: Bearer <token>.
Body
The details used to create an application
The ID of the application in the global application catalog. Provide this or globalAppName (exactly one).
The name of the application in the global application catalog. Provide this or globalAppId (exactly one).
The vendor name. Required when globalAppName does not match a global application; a local vendor is created.
The instance name, used to distinguish multiple instances of the same application
The application's status. Defaults to New.
New, InReview, Managed, Accepted, Ignored, PlanToClose, Closed The application's owner roles and their members. Members are matched by ID, email or name.
Show child attributes
Show child attributes
Custom field values, keyed by the field's lookup key
Show child attributes
Show child attributes
Response
Created
An application
The application's unique ID
The application name
A description of the application
The instance name, used to distinguish multiple instances of the same application
The application's status in SaaS Manager.
New, InReview, Managed, Accepted, Ignored, PlanToClose, Closed Optional OAuth access risk level: Low, Medium or High
The application's vendor
Show child attributes
Show child attributes
The application's license plans
Show child attributes
Show child attributes
Custom field values, keyed by the field's lookup key. Each value is the field's value directly: a string (text/single-select), a number, an ISO-8601 date, or an array of strings (multi-select).
Show child attributes
Show child attributes
The user that created the application record
Show child attributes
Show child attributes
The timestamp for when the application record was created
Whether the application has been deleted
The timestamp for when the application record was last modified
The application's owner roles and their members
Show child attributes
Show child attributes
Whether the application is recognised in the global application catalog
The application's primary category
Show child attributes
Show child attributes
The application's additional categories
Show child attributes
Show child attributes
The application's domains
A URL for the application's logo
The application's single sign-on URL
Links to pages containing application details
Show child attributes
Show child attributes
Was this page helpful?