curl --request PATCH \
--url https://origami.chat/api/v2/projects/{projectId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"monthlyCredits": 50000000
}
'import requests
url = "https://origami.chat/api/v2/projects/{projectId}"
payload = {
"name": "<string>",
"monthlyCredits": 50000000
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', monthlyCredits: 50000000})
};
fetch('https://origami.chat/api/v2/projects/{projectId}', 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://origami.chat/api/v2/projects/{projectId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'monthlyCredits' => 50000000
]),
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://origami.chat/api/v2/projects/{projectId}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"monthlyCredits\": 50000000\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://origami.chat/api/v2/projects/{projectId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"monthlyCredits\": 50000000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://origami.chat/api/v2/projects/{projectId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"monthlyCredits\": 50000000\n}"
response = http.request(request)
puts response.read_body{
"object": "project",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"monthlyCredits": 50000000.5,
"enforcement": "hard",
"usage": {
"spent": 123,
"reserved": 123
},
"createdAt": "2023-11-07T05:31:56Z"
}{
"error": "Project not found",
"code": "PROJECT_NOT_FOUND"
}Update a project's name, budget cap, or enforcement mode
Partial update. For monthlyCredits, a number sets the cap,
an explicit null clears it, and omitting the field leaves
it alone. enforcement controls whether that cap hard-blocks spend
(hard) or only tracks it (soft); omitting it leaves it alone.
curl --request PATCH \
--url https://origami.chat/api/v2/projects/{projectId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"monthlyCredits": 50000000
}
'import requests
url = "https://origami.chat/api/v2/projects/{projectId}"
payload = {
"name": "<string>",
"monthlyCredits": 50000000
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', monthlyCredits: 50000000})
};
fetch('https://origami.chat/api/v2/projects/{projectId}', 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://origami.chat/api/v2/projects/{projectId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'monthlyCredits' => 50000000
]),
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://origami.chat/api/v2/projects/{projectId}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"monthlyCredits\": 50000000\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://origami.chat/api/v2/projects/{projectId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"monthlyCredits\": 50000000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://origami.chat/api/v2/projects/{projectId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"monthlyCredits\": 50000000\n}"
response = http.request(request)
puts response.read_body{
"object": "project",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"monthlyCredits": 50000000.5,
"enforcement": "hard",
"usage": {
"spent": 123,
"reserved": 123
},
"createdAt": "2023-11-07T05:31:56Z"
}{
"error": "Project not found",
"code": "PROJECT_NOT_FOUND"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The project (child org) id.
Body
1 - 80Number sets the cap, explicit null clears it, omitted leaves it alone.
1 <= x <= 100000000hard blocks new spend once the monthlyCredits cap is reached; soft tracks spend against the cap without blocking. Omitting the field leaves the current value unchanged.
hard, soft Response
The updated project.
A project is a child org under the parent (agency) org: a
customer's own isolated set of workspaces/tables while credits
and the concurrency pool stay shared at the parent. Select it on
any non-/projects request via the x-origami-project header.
"project"Monthly budget cap in credits, or null when uncapped.
1 <= x <= 100000000How the monthlyCredits cap is enforced - hard blocks new spend once the cap is reached, soft only tracks. null when the project is uncapped (nothing to enforce).
hard, soft This billing period's settled spend plus live in-flight reservations attributed to the project, in credits; the same numbers the in-app Teams page shows.
Show child attributes
Show child attributes