Refreshing live data layers
It's common to have data update on a regular basis, such as every week or every month. Instead of having to re-upload and style the new data, it can be very convenient to simply refresh a layer using a new data source.
A layer must have finished uploading successfully before it can be refreshed
Refreshing a layer with a file
Just like regular file uploads, refreshing a layer with a new file is a two-step process:
1. Request a refresh via the Felt API
Perform a POST
request to receive an S3 presigned URL which you can later upload your files to:
import requests
# Your API token should look like this:
# api_token = "felt_pat_ABCDEFUDQPAGGNBmX40YNhkCRvvLI3f8/BCwD/g8"
api_token = "<YOUR_API_TOKEN>"
map_id = "<YOUR_MAP_ID>"
layer_id = "<YOUR_LAYER_ID>"
r = requests.post(
f"http://felt.com/api/v2/maps/{map_id}/layers/{layer_id}/refresh",
headers={"Authorization": f"Bearer {api_token}"}
)
assert r.ok
presigned_upload = r.json()
2. Upload your file(s) to Amazon s3
# This code is a continuation of the previous Python code block
# and assumes you already have a "presigned_upload" variable
url = presigned_upload["url"]
presigned_attributes = presigned_upload["presigned_attributes"]
# A 204 response indicates that the upload was successful
with open(YOUR_FILE_WITH_EXTENSION, "rb") as file_obj:
output = requests.post(
url,
# Order is important, file should come at the end
files={**presigned_attributes, "file": file_obj},
)
Refreshing a layer with a URL
Similar to a URL upload, refreshing an existing URL layer is just a matter of making a single POST
request:
# Your API token and map ID should look like this:
# FELT_API_TOKEN="felt_pat_ABCDEFUDQPAGGNBmX40YNhkCRvvLI3f8/BCwD/g8"
FELT_API_TOKEN="<YOUR_API_TOKEN>"
MAP_ID="<YOUR_MAP_ID>"
LAYER_ID="<YOUR_LAYER_ID>"
curl -L \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${FELT_API_TOKEN}" \
"https://felt.com/api/v2/maps/${MAP_ID}/layers/${LAYER_ID}/refresh"
Last updated
Was this helpful?