curl --request PATCH \
--url https://app.withforerunner.com/api/v1/records/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"recordType": "Log",
"data": {
"type": "phone",
"date": "2024-03-20",
"contactName": "Jane Doe",
"contactEmail": "jane.doe@example.com",
"contactPhone": "(555) 987-6543",
"contactType": "homeowner",
"firmPanel": "17167C0033E",
"floodZone": "AE",
"bfe": "12.5",
"baseFloodDepth": "2",
"insuranceInfoGiven": "verbally",
"siteVisit": true,
"propertyProtectionAdvice": true,
"financialAdvice": true,
"coastalOrCBRS": true,
"pastFlood": true,
"erosion": true,
"requestedHelpWith": "Flood zone status inquiry",
"internalNotes": "<string>"
},
"externalSystemId": "LOG-2024-0320",
"propertyId": "a1b2c3d4-e5f6-4890-abcd-ef0123456789",
"coordinates": [
39.7817,
-89.6501
]
}
'import requests
url = "https://app.withforerunner.com/api/v1/records/{id}"
payload = {
"recordType": "Log",
"data": {
"type": "phone",
"date": "2024-03-20",
"contactName": "Jane Doe",
"contactEmail": "jane.doe@example.com",
"contactPhone": "(555) 987-6543",
"contactType": "homeowner",
"firmPanel": "17167C0033E",
"floodZone": "AE",
"bfe": "12.5",
"baseFloodDepth": "2",
"insuranceInfoGiven": "verbally",
"siteVisit": True,
"propertyProtectionAdvice": True,
"financialAdvice": True,
"coastalOrCBRS": True,
"pastFlood": True,
"erosion": True,
"requestedHelpWith": "Flood zone status inquiry",
"internalNotes": "<string>"
},
"externalSystemId": "LOG-2024-0320",
"propertyId": "a1b2c3d4-e5f6-4890-abcd-ef0123456789",
"coordinates": [39.7817, -89.6501]
}
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({
recordType: 'Log',
data: {
type: 'phone',
date: '2024-03-20',
contactName: 'Jane Doe',
contactEmail: 'jane.doe@example.com',
contactPhone: '(555) 987-6543',
contactType: 'homeowner',
firmPanel: '17167C0033E',
floodZone: 'AE',
bfe: '12.5',
baseFloodDepth: '2',
insuranceInfoGiven: 'verbally',
siteVisit: true,
propertyProtectionAdvice: true,
financialAdvice: true,
coastalOrCBRS: true,
pastFlood: true,
erosion: true,
requestedHelpWith: 'Flood zone status inquiry',
internalNotes: '<string>'
},
externalSystemId: 'LOG-2024-0320',
propertyId: 'a1b2c3d4-e5f6-4890-abcd-ef0123456789',
coordinates: [39.7817, -89.6501]
})
};
fetch('https://app.withforerunner.com/api/v1/records/{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://app.withforerunner.com/api/v1/records/{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([
'recordType' => 'Log',
'data' => [
'type' => 'phone',
'date' => '2024-03-20',
'contactName' => 'Jane Doe',
'contactEmail' => 'jane.doe@example.com',
'contactPhone' => '(555) 987-6543',
'contactType' => 'homeowner',
'firmPanel' => '17167C0033E',
'floodZone' => 'AE',
'bfe' => '12.5',
'baseFloodDepth' => '2',
'insuranceInfoGiven' => 'verbally',
'siteVisit' => true,
'propertyProtectionAdvice' => true,
'financialAdvice' => true,
'coastalOrCBRS' => true,
'pastFlood' => true,
'erosion' => true,
'requestedHelpWith' => 'Flood zone status inquiry',
'internalNotes' => '<string>'
],
'externalSystemId' => 'LOG-2024-0320',
'propertyId' => 'a1b2c3d4-e5f6-4890-abcd-ef0123456789',
'coordinates' => [
39.7817,
-89.6501
]
]),
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.withforerunner.com/api/v1/records/{id}"
payload := strings.NewReader("{\n \"recordType\": \"Log\",\n \"data\": {\n \"type\": \"phone\",\n \"date\": \"2024-03-20\",\n \"contactName\": \"Jane Doe\",\n \"contactEmail\": \"jane.doe@example.com\",\n \"contactPhone\": \"(555) 987-6543\",\n \"contactType\": \"homeowner\",\n \"firmPanel\": \"17167C0033E\",\n \"floodZone\": \"AE\",\n \"bfe\": \"12.5\",\n \"baseFloodDepth\": \"2\",\n \"insuranceInfoGiven\": \"verbally\",\n \"siteVisit\": true,\n \"propertyProtectionAdvice\": true,\n \"financialAdvice\": true,\n \"coastalOrCBRS\": true,\n \"pastFlood\": true,\n \"erosion\": true,\n \"requestedHelpWith\": \"Flood zone status inquiry\",\n \"internalNotes\": \"<string>\"\n },\n \"externalSystemId\": \"LOG-2024-0320\",\n \"propertyId\": \"a1b2c3d4-e5f6-4890-abcd-ef0123456789\",\n \"coordinates\": [\n 39.7817,\n -89.6501\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://app.withforerunner.com/api/v1/records/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"recordType\": \"Log\",\n \"data\": {\n \"type\": \"phone\",\n \"date\": \"2024-03-20\",\n \"contactName\": \"Jane Doe\",\n \"contactEmail\": \"jane.doe@example.com\",\n \"contactPhone\": \"(555) 987-6543\",\n \"contactType\": \"homeowner\",\n \"firmPanel\": \"17167C0033E\",\n \"floodZone\": \"AE\",\n \"bfe\": \"12.5\",\n \"baseFloodDepth\": \"2\",\n \"insuranceInfoGiven\": \"verbally\",\n \"siteVisit\": true,\n \"propertyProtectionAdvice\": true,\n \"financialAdvice\": true,\n \"coastalOrCBRS\": true,\n \"pastFlood\": true,\n \"erosion\": true,\n \"requestedHelpWith\": \"Flood zone status inquiry\",\n \"internalNotes\": \"<string>\"\n },\n \"externalSystemId\": \"LOG-2024-0320\",\n \"propertyId\": \"a1b2c3d4-e5f6-4890-abcd-ef0123456789\",\n \"coordinates\": [\n 39.7817,\n -89.6501\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.withforerunner.com/api/v1/records/{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 \"recordType\": \"Log\",\n \"data\": {\n \"type\": \"phone\",\n \"date\": \"2024-03-20\",\n \"contactName\": \"Jane Doe\",\n \"contactEmail\": \"jane.doe@example.com\",\n \"contactPhone\": \"(555) 987-6543\",\n \"contactType\": \"homeowner\",\n \"firmPanel\": \"17167C0033E\",\n \"floodZone\": \"AE\",\n \"bfe\": \"12.5\",\n \"baseFloodDepth\": \"2\",\n \"insuranceInfoGiven\": \"verbally\",\n \"siteVisit\": true,\n \"propertyProtectionAdvice\": true,\n \"financialAdvice\": true,\n \"coastalOrCBRS\": true,\n \"pastFlood\": true,\n \"erosion\": true,\n \"requestedHelpWith\": \"Flood zone status inquiry\",\n \"internalNotes\": \"<string>\"\n },\n \"externalSystemId\": \"LOG-2024-0320\",\n \"propertyId\": \"a1b2c3d4-e5f6-4890-abcd-ef0123456789\",\n \"coordinates\": [\n 39.7817,\n -89.6501\n ]\n}"
response = http.request(request)
puts response.read_body{
"errors": [],
"record": {
"id": "c7d8e9f0-1a2b-4c4d-8e6f-7a8b9c0d1e2f",
"externalSystemId": "PDA-2024-0417",
"data": {},
"property": {
"id": "a1b2c3d4-e5f6-4890-abcd-ef0123456789",
"address": "123 Main St, Springfield, IL 62701",
"url": "https://demoville.app.withforerunner.com/map?propertyId=a1b2c3d4-e5f6-4890-abcd-ef0123456789&tab=overview",
"publicURL": "https://demoville.withforerunner.com/properties/a1b2c3d4-e5f6-4890-abcd-ef0123456789",
"coordinates": [
39.7817,
-89.6501
]
}
}
}{
"errors": [
{
"message": "Invalid UUID format for id parameter",
"field": "id"
}
],
"record": null
}{
"errors": [
{
"message": "Log not found for this account",
"field": "id"
}
],
"record": null
}Update Record
Updates a Log record. Only the fields you send are changed; the rest are left as they are.
Send at least one field inside data. An empty update is rejected with a 400 and At least one field must be provided to update, and the body is validated before the record is looked up, so an empty update against an id that does not exist returns that 400 rather than a 404.
curl --request PATCH \
--url https://app.withforerunner.com/api/v1/records/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"recordType": "Log",
"data": {
"type": "phone",
"date": "2024-03-20",
"contactName": "Jane Doe",
"contactEmail": "jane.doe@example.com",
"contactPhone": "(555) 987-6543",
"contactType": "homeowner",
"firmPanel": "17167C0033E",
"floodZone": "AE",
"bfe": "12.5",
"baseFloodDepth": "2",
"insuranceInfoGiven": "verbally",
"siteVisit": true,
"propertyProtectionAdvice": true,
"financialAdvice": true,
"coastalOrCBRS": true,
"pastFlood": true,
"erosion": true,
"requestedHelpWith": "Flood zone status inquiry",
"internalNotes": "<string>"
},
"externalSystemId": "LOG-2024-0320",
"propertyId": "a1b2c3d4-e5f6-4890-abcd-ef0123456789",
"coordinates": [
39.7817,
-89.6501
]
}
'import requests
url = "https://app.withforerunner.com/api/v1/records/{id}"
payload = {
"recordType": "Log",
"data": {
"type": "phone",
"date": "2024-03-20",
"contactName": "Jane Doe",
"contactEmail": "jane.doe@example.com",
"contactPhone": "(555) 987-6543",
"contactType": "homeowner",
"firmPanel": "17167C0033E",
"floodZone": "AE",
"bfe": "12.5",
"baseFloodDepth": "2",
"insuranceInfoGiven": "verbally",
"siteVisit": True,
"propertyProtectionAdvice": True,
"financialAdvice": True,
"coastalOrCBRS": True,
"pastFlood": True,
"erosion": True,
"requestedHelpWith": "Flood zone status inquiry",
"internalNotes": "<string>"
},
"externalSystemId": "LOG-2024-0320",
"propertyId": "a1b2c3d4-e5f6-4890-abcd-ef0123456789",
"coordinates": [39.7817, -89.6501]
}
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({
recordType: 'Log',
data: {
type: 'phone',
date: '2024-03-20',
contactName: 'Jane Doe',
contactEmail: 'jane.doe@example.com',
contactPhone: '(555) 987-6543',
contactType: 'homeowner',
firmPanel: '17167C0033E',
floodZone: 'AE',
bfe: '12.5',
baseFloodDepth: '2',
insuranceInfoGiven: 'verbally',
siteVisit: true,
propertyProtectionAdvice: true,
financialAdvice: true,
coastalOrCBRS: true,
pastFlood: true,
erosion: true,
requestedHelpWith: 'Flood zone status inquiry',
internalNotes: '<string>'
},
externalSystemId: 'LOG-2024-0320',
propertyId: 'a1b2c3d4-e5f6-4890-abcd-ef0123456789',
coordinates: [39.7817, -89.6501]
})
};
fetch('https://app.withforerunner.com/api/v1/records/{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://app.withforerunner.com/api/v1/records/{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([
'recordType' => 'Log',
'data' => [
'type' => 'phone',
'date' => '2024-03-20',
'contactName' => 'Jane Doe',
'contactEmail' => 'jane.doe@example.com',
'contactPhone' => '(555) 987-6543',
'contactType' => 'homeowner',
'firmPanel' => '17167C0033E',
'floodZone' => 'AE',
'bfe' => '12.5',
'baseFloodDepth' => '2',
'insuranceInfoGiven' => 'verbally',
'siteVisit' => true,
'propertyProtectionAdvice' => true,
'financialAdvice' => true,
'coastalOrCBRS' => true,
'pastFlood' => true,
'erosion' => true,
'requestedHelpWith' => 'Flood zone status inquiry',
'internalNotes' => '<string>'
],
'externalSystemId' => 'LOG-2024-0320',
'propertyId' => 'a1b2c3d4-e5f6-4890-abcd-ef0123456789',
'coordinates' => [
39.7817,
-89.6501
]
]),
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.withforerunner.com/api/v1/records/{id}"
payload := strings.NewReader("{\n \"recordType\": \"Log\",\n \"data\": {\n \"type\": \"phone\",\n \"date\": \"2024-03-20\",\n \"contactName\": \"Jane Doe\",\n \"contactEmail\": \"jane.doe@example.com\",\n \"contactPhone\": \"(555) 987-6543\",\n \"contactType\": \"homeowner\",\n \"firmPanel\": \"17167C0033E\",\n \"floodZone\": \"AE\",\n \"bfe\": \"12.5\",\n \"baseFloodDepth\": \"2\",\n \"insuranceInfoGiven\": \"verbally\",\n \"siteVisit\": true,\n \"propertyProtectionAdvice\": true,\n \"financialAdvice\": true,\n \"coastalOrCBRS\": true,\n \"pastFlood\": true,\n \"erosion\": true,\n \"requestedHelpWith\": \"Flood zone status inquiry\",\n \"internalNotes\": \"<string>\"\n },\n \"externalSystemId\": \"LOG-2024-0320\",\n \"propertyId\": \"a1b2c3d4-e5f6-4890-abcd-ef0123456789\",\n \"coordinates\": [\n 39.7817,\n -89.6501\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://app.withforerunner.com/api/v1/records/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"recordType\": \"Log\",\n \"data\": {\n \"type\": \"phone\",\n \"date\": \"2024-03-20\",\n \"contactName\": \"Jane Doe\",\n \"contactEmail\": \"jane.doe@example.com\",\n \"contactPhone\": \"(555) 987-6543\",\n \"contactType\": \"homeowner\",\n \"firmPanel\": \"17167C0033E\",\n \"floodZone\": \"AE\",\n \"bfe\": \"12.5\",\n \"baseFloodDepth\": \"2\",\n \"insuranceInfoGiven\": \"verbally\",\n \"siteVisit\": true,\n \"propertyProtectionAdvice\": true,\n \"financialAdvice\": true,\n \"coastalOrCBRS\": true,\n \"pastFlood\": true,\n \"erosion\": true,\n \"requestedHelpWith\": \"Flood zone status inquiry\",\n \"internalNotes\": \"<string>\"\n },\n \"externalSystemId\": \"LOG-2024-0320\",\n \"propertyId\": \"a1b2c3d4-e5f6-4890-abcd-ef0123456789\",\n \"coordinates\": [\n 39.7817,\n -89.6501\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.withforerunner.com/api/v1/records/{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 \"recordType\": \"Log\",\n \"data\": {\n \"type\": \"phone\",\n \"date\": \"2024-03-20\",\n \"contactName\": \"Jane Doe\",\n \"contactEmail\": \"jane.doe@example.com\",\n \"contactPhone\": \"(555) 987-6543\",\n \"contactType\": \"homeowner\",\n \"firmPanel\": \"17167C0033E\",\n \"floodZone\": \"AE\",\n \"bfe\": \"12.5\",\n \"baseFloodDepth\": \"2\",\n \"insuranceInfoGiven\": \"verbally\",\n \"siteVisit\": true,\n \"propertyProtectionAdvice\": true,\n \"financialAdvice\": true,\n \"coastalOrCBRS\": true,\n \"pastFlood\": true,\n \"erosion\": true,\n \"requestedHelpWith\": \"Flood zone status inquiry\",\n \"internalNotes\": \"<string>\"\n },\n \"externalSystemId\": \"LOG-2024-0320\",\n \"propertyId\": \"a1b2c3d4-e5f6-4890-abcd-ef0123456789\",\n \"coordinates\": [\n 39.7817,\n -89.6501\n ]\n}"
response = http.request(request)
puts response.read_body{
"errors": [],
"record": {
"id": "c7d8e9f0-1a2b-4c4d-8e6f-7a8b9c0d1e2f",
"externalSystemId": "PDA-2024-0417",
"data": {},
"property": {
"id": "a1b2c3d4-e5f6-4890-abcd-ef0123456789",
"address": "123 Main St, Springfield, IL 62701",
"url": "https://demoville.app.withforerunner.com/map?propertyId=a1b2c3d4-e5f6-4890-abcd-ef0123456789&tab=overview",
"publicURL": "https://demoville.withforerunner.com/properties/a1b2c3d4-e5f6-4890-abcd-ef0123456789",
"coordinates": [
39.7817,
-89.6501
]
}
}
}{
"errors": [
{
"message": "Invalid UUID format for id parameter",
"field": "id"
}
],
"record": null
}{
"errors": [
{
"message": "Log not found for this account",
"field": "id"
}
],
"record": null
}Authorizations
Your account's API key, sent as Authorization: Bearer <your API key>. Keys are issued per environment, so a staging key will not work against production.
Path Parameters
UUID of the resource in Forerunner.
Body
The record type being updated. Must be Log on v1.
"Log"The log fields to change. Omitted fields are left as they are.
Show child attributes
Show child attributes
Your system's identifier for this log.
"LOG-2024-0320"
UUID of the Forerunner property to attach the log to.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$"a1b2c3d4-e5f6-4890-abcd-ef0123456789"
Location as a [latitude, longitude] pair in EPSG:4326 (WGS 84).
Show child attributes
Show child attributes
[39.7817, -89.6501]
Response
Success. errors is empty.
Empty when the request succeeded. Otherwise one entry per failure, and the resource fields on the response are empty: null for single resources, [] for lists, with pageInfo omitted.
Show child attributes
Show child attributes
[]
The updated record. Null when the update failed.
Show child attributes
Show child attributes
Was this page helpful?