curl --request POST \
--url https://api-dev.narrative.io/installations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"app_id": 67,
"tier_id": "basic"
}
'import requests
url = "https://api-dev.narrative.io/installations"
payload = {
"app_id": 67,
"tier_id": "basic"
}
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({app_id: 67, tier_id: 'basic'})
};
fetch('https://api-dev.narrative.io/installations', 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-dev.narrative.io/installations",
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([
'app_id' => 67,
'tier_id' => 'basic'
]),
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://api-dev.narrative.io/installations"
payload := strings.NewReader("{\n \"app_id\": 67,\n \"tier_id\": \"basic\"\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://api-dev.narrative.io/installations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"app_id\": 67,\n \"tier_id\": \"basic\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-dev.narrative.io/installations")
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 \"app_id\": 67,\n \"tier_id\": \"basic\"\n}"
response = http.request(request)
puts response.read_body{
"id": 12345,
"app_id": 67,
"company_id": 345,
"tier_id": "basic",
"permissions": [
{
"access": "read",
"resource": "datasets"
},
{
"access": "write",
"resource": "destinations"
}
],
"installation_time": "2024-01-15T10:30:00"
}{
"error": "Unauthorized",
"error_description": "You are not authorized to use this endpoint."
}{
"error": "Unauthorized",
"error_description": "You are not authorized to use this endpoint."
}Create an installation
Creates a new installation for an app.
The installation associates an app with the authenticated company using a specific tier from the app’s manifest. The tier determines which permissions are granted to the installation.
curl --request POST \
--url https://api-dev.narrative.io/installations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"app_id": 67,
"tier_id": "basic"
}
'import requests
url = "https://api-dev.narrative.io/installations"
payload = {
"app_id": 67,
"tier_id": "basic"
}
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({app_id: 67, tier_id: 'basic'})
};
fetch('https://api-dev.narrative.io/installations', 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-dev.narrative.io/installations",
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([
'app_id' => 67,
'tier_id' => 'basic'
]),
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://api-dev.narrative.io/installations"
payload := strings.NewReader("{\n \"app_id\": 67,\n \"tier_id\": \"basic\"\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://api-dev.narrative.io/installations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"app_id\": 67,\n \"tier_id\": \"basic\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-dev.narrative.io/installations")
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 \"app_id\": 67,\n \"tier_id\": \"basic\"\n}"
response = http.request(request)
puts response.read_body{
"id": 12345,
"app_id": 67,
"company_id": 345,
"tier_id": "basic",
"permissions": [
{
"access": "read",
"resource": "datasets"
},
{
"access": "write",
"resource": "destinations"
}
],
"installation_time": "2024-01-15T10:30:00"
}{
"error": "Unauthorized",
"error_description": "You are not authorized to use this endpoint."
}{
"error": "Unauthorized",
"error_description": "You are not authorized to use this endpoint."
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Response
Successfully created the installation.
An installation represents an app that has been installed for a company.
Unique identifier for the installation.
12345
The ID of the installed app.
67
The ID of the company that installed the app.
345
The tier selected during installation.
"basic"
The permissions granted to this installation.
Show child attributes
Show child attributes
When the installation happened, as an ISO 8601 local date-time with no offset or zone —
2024-01-15T10:30:00. Read it as UTC. This is deliberately not format: date-time, which
means RFC 3339 and would require an offset the server does not send.
^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?$"2024-01-15T10:30:00"
Was this page helpful?

