curl --request PATCH \
--url https://public-api.stora.co/2025-09/deals/{deal_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Acme Corp Storage (Renamed)",
"line_items": [
{
"type": "unit_type",
"item": {
"id": "utype_f18fc91387cdf710"
}
}
]
}
'import requests
url = "https://public-api.stora.co/2025-09/deals/{deal_id}"
payload = {
"name": "Acme Corp Storage (Renamed)",
"line_items": [
{
"type": "unit_type",
"item": { "id": "utype_f18fc91387cdf710" }
}
]
}
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: 'Acme Corp Storage (Renamed)',
line_items: [{type: 'unit_type', item: {id: 'utype_f18fc91387cdf710'}}]
})
};
fetch('https://public-api.stora.co/2025-09/deals/{deal_id}', 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://public-api.stora.co/2025-09/deals/{deal_id}",
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' => 'Acme Corp Storage (Renamed)',
'line_items' => [
[
'type' => 'unit_type',
'item' => [
'id' => 'utype_f18fc91387cdf710'
]
]
]
]),
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://public-api.stora.co/2025-09/deals/{deal_id}"
payload := strings.NewReader("{\n \"name\": \"Acme Corp Storage (Renamed)\",\n \"line_items\": [\n {\n \"type\": \"unit_type\",\n \"item\": {\n \"id\": \"utype_f18fc91387cdf710\"\n }\n }\n ]\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://public-api.stora.co/2025-09/deals/{deal_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Acme Corp Storage (Renamed)\",\n \"line_items\": [\n {\n \"type\": \"unit_type\",\n \"item\": {\n \"id\": \"utype_f18fc91387cdf710\"\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.stora.co/2025-09/deals/{deal_id}")
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\": \"Acme Corp Storage (Renamed)\",\n \"line_items\": [\n {\n \"type\": \"unit_type\",\n \"item\": {\n \"id\": \"utype_f18fc91387cdf710\"\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"deal": {
"id": "deal_127b3057d5df338e",
"assignee": {
"id": "staff_947b3057d5df338e"
},
"contact": {
"id": "con_1234567890abcdef"
},
"created_at": "2025-02-22T14:41:00Z",
"creator": {
"id": "staff_947b3057d5df338e"
},
"line_items": [
{
"item": {
"id": "utype_f18fc91387cdf710"
},
"quantity": 1,
"type": "unit_type"
}
],
"lost_reason": null,
"metadata": {},
"name": "Acme Corp Storage (Renamed)",
"note": "£50 per month",
"site": {
"id": "site_14b419f1096013f1"
},
"stage": {
"id": "dstg_127b3057d5df338e"
},
"starts_at": null,
"status": "open",
"updated_at": "2025-02-22T14:41:00Z",
"value_estimate": "£50 per month"
},
"meta": {
"request_id": "01563646-58c1-4607-8fe0-cae3e92c4477",
"curies": [
{
"name": "bo",
"href": "https://app.stora.test{rel}",
"templated": true,
"title": "Backoffice"
},
{
"name": "sf",
"href": "https://acme.stora.test{rel}",
"templated": true,
"title": "Storefront"
}
]
}
}{
"error": {
"code": "resource_not_found",
"details": [],
"links": [
{
"kind": "open_api",
"name": "OpenAPI specification",
"url": "https://docs.stora.test/2025-09/openapi.json"
},
{
"kind": "documentation",
"name": "Errors",
"url": "https://docs.stora.test/2025-09/guides/errors"
}
],
"message": "The Site was not found.",
"request_id": "01563646-58c1-4607-8fe0-cae3e92c4477",
"type": "invalid_request_error"
}
}{
"error": {
"code": "invalid_content",
"details": [
{
"message": "Name can't be blank",
"pointer": "/name"
}
],
"links": [
{
"kind": "open_api",
"name": "OpenAPI specification",
"url": "https://docs.stora.test/2025-09/openapi.json"
},
{
"kind": "documentation",
"name": "Errors",
"url": "https://docs.stora.test/2025-09/guides/errors"
}
],
"message": "The request body content is not valid.",
"request_id": "01563646-58c1-4607-8fe0-cae3e92c4477",
"type": "invalid_request_error"
}
}Update a Deal
Update an existing deal.
Required authorization scope: public.deal:write
curl --request PATCH \
--url https://public-api.stora.co/2025-09/deals/{deal_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Acme Corp Storage (Renamed)",
"line_items": [
{
"type": "unit_type",
"item": {
"id": "utype_f18fc91387cdf710"
}
}
]
}
'import requests
url = "https://public-api.stora.co/2025-09/deals/{deal_id}"
payload = {
"name": "Acme Corp Storage (Renamed)",
"line_items": [
{
"type": "unit_type",
"item": { "id": "utype_f18fc91387cdf710" }
}
]
}
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: 'Acme Corp Storage (Renamed)',
line_items: [{type: 'unit_type', item: {id: 'utype_f18fc91387cdf710'}}]
})
};
fetch('https://public-api.stora.co/2025-09/deals/{deal_id}', 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://public-api.stora.co/2025-09/deals/{deal_id}",
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' => 'Acme Corp Storage (Renamed)',
'line_items' => [
[
'type' => 'unit_type',
'item' => [
'id' => 'utype_f18fc91387cdf710'
]
]
]
]),
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://public-api.stora.co/2025-09/deals/{deal_id}"
payload := strings.NewReader("{\n \"name\": \"Acme Corp Storage (Renamed)\",\n \"line_items\": [\n {\n \"type\": \"unit_type\",\n \"item\": {\n \"id\": \"utype_f18fc91387cdf710\"\n }\n }\n ]\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://public-api.stora.co/2025-09/deals/{deal_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Acme Corp Storage (Renamed)\",\n \"line_items\": [\n {\n \"type\": \"unit_type\",\n \"item\": {\n \"id\": \"utype_f18fc91387cdf710\"\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.stora.co/2025-09/deals/{deal_id}")
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\": \"Acme Corp Storage (Renamed)\",\n \"line_items\": [\n {\n \"type\": \"unit_type\",\n \"item\": {\n \"id\": \"utype_f18fc91387cdf710\"\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"deal": {
"id": "deal_127b3057d5df338e",
"assignee": {
"id": "staff_947b3057d5df338e"
},
"contact": {
"id": "con_1234567890abcdef"
},
"created_at": "2025-02-22T14:41:00Z",
"creator": {
"id": "staff_947b3057d5df338e"
},
"line_items": [
{
"item": {
"id": "utype_f18fc91387cdf710"
},
"quantity": 1,
"type": "unit_type"
}
],
"lost_reason": null,
"metadata": {},
"name": "Acme Corp Storage (Renamed)",
"note": "£50 per month",
"site": {
"id": "site_14b419f1096013f1"
},
"stage": {
"id": "dstg_127b3057d5df338e"
},
"starts_at": null,
"status": "open",
"updated_at": "2025-02-22T14:41:00Z",
"value_estimate": "£50 per month"
},
"meta": {
"request_id": "01563646-58c1-4607-8fe0-cae3e92c4477",
"curies": [
{
"name": "bo",
"href": "https://app.stora.test{rel}",
"templated": true,
"title": "Backoffice"
},
{
"name": "sf",
"href": "https://acme.stora.test{rel}",
"templated": true,
"title": "Storefront"
}
]
}
}{
"error": {
"code": "resource_not_found",
"details": [],
"links": [
{
"kind": "open_api",
"name": "OpenAPI specification",
"url": "https://docs.stora.test/2025-09/openapi.json"
},
{
"kind": "documentation",
"name": "Errors",
"url": "https://docs.stora.test/2025-09/guides/errors"
}
],
"message": "The Site was not found.",
"request_id": "01563646-58c1-4607-8fe0-cae3e92c4477",
"type": "invalid_request_error"
}
}{
"error": {
"code": "invalid_content",
"details": [
{
"message": "Name can't be blank",
"pointer": "/name"
}
],
"links": [
{
"kind": "open_api",
"name": "OpenAPI specification",
"url": "https://docs.stora.test/2025-09/openapi.json"
},
{
"kind": "documentation",
"name": "Errors",
"url": "https://docs.stora.test/2025-09/guides/errors"
}
],
"message": "The request body content is not valid.",
"request_id": "01563646-58c1-4607-8fe0-cae3e92c4477",
"type": "invalid_request_error"
}
}Authorizations
Bearer Token necessary to use API
Path Parameters
The ID of the deal to retrieve
Query Parameters
This endpoint supports expandable responses. For more, see the documentation page.
Body
Update Deal Request
The name of the deal
Show child attributes
Show child attributes
Show child attributes
Show child attributes
To remove the association, set assignee to null.
Show child attributes
Show child attributes
To remove the association, set site to null.
Show child attributes
Show child attributes
Free-text note for the deal. Displayed under 'Deal value estimate' in Backoffice. To remove the existing value, set to null.
The intended move-in date. To remove the existing move-in date, set to null.
Set of key-value pairs for storing additional information on the deal. Learn more about metadata.
Show child attributes
Show child attributes
Skip this property (do not include it inside the request) if you don't want to update the line items. Existing line items not included here in the update request will be removed. To remove all line items, provide an empty array. At most one item per type is allowed.
2Deal Unit Type Line Item
- Option 1
- Option 2
Show child attributes
Show child attributes
Was this page helpful?