curl --request POST \
--url https://api.getoneprofile.ai/tables/{table_id}/schedule/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"delete_missing_rows": false,
"hour": 9,
"interval_value": 182,
"minute": 0,
"time_zone": "<string>"
}
'import requests
url = "https://api.getoneprofile.ai/tables/{table_id}/schedule/"
payload = {
"delete_missing_rows": False,
"hour": 9,
"interval_value": 182,
"minute": 0,
"time_zone": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
delete_missing_rows: false,
hour: 9,
interval_value: 182,
minute: 0,
time_zone: '<string>'
})
};
fetch('https://api.getoneprofile.ai/tables/{table_id}/schedule/', 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.getoneprofile.ai/tables/{table_id}/schedule/",
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([
'delete_missing_rows' => false,
'hour' => 9,
'interval_value' => 182,
'minute' => 0,
'time_zone' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.getoneprofile.ai/tables/{table_id}/schedule/"
payload := strings.NewReader("{\n \"delete_missing_rows\": false,\n \"hour\": 9,\n \"interval_value\": 182,\n \"minute\": 0,\n \"time_zone\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.getoneprofile.ai/tables/{table_id}/schedule/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"delete_missing_rows\": false,\n \"hour\": 9,\n \"interval_value\": 182,\n \"minute\": 0,\n \"time_zone\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/tables/{table_id}/schedule/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"delete_missing_rows\": false,\n \"hour\": 9,\n \"interval_value\": 182,\n \"minute\": 0,\n \"time_zone\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"created_at": "2023-11-07T05:31:56Z",
"delete_missing_rows": true,
"frequency": "hourly",
"hour": 123,
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"interval_unit": "hours",
"interval_value": 123,
"last_skip_reason": "source_detached",
"last_skipped_at": "2023-11-07T05:31:56Z",
"minute": 123,
"next_run_at": "2023-11-07T05:31:56Z",
"next_runs": [
"2023-11-07T05:31:56Z"
],
"paused": true,
"table_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"time_zone": "<string>",
"updated_at": "2023-11-07T05:31:56Z"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Set a table's refresh cadence
Re-import on a cadence. The presets are calendar statements (monthly on the same date, quarterly in the same month) while custom is an interval counted from when you set it up.
The response carries the next few fire times, so a cadence can be checked before it is left to run unattended.
Turning on delete_missing_rows makes every scheduled run re-list the whole source: a changes-only fetch cannot tell a deleted record from an unchanged one, and treating the difference as deletion would empty the table.
curl --request POST \
--url https://api.getoneprofile.ai/tables/{table_id}/schedule/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"delete_missing_rows": false,
"hour": 9,
"interval_value": 182,
"minute": 0,
"time_zone": "<string>"
}
'import requests
url = "https://api.getoneprofile.ai/tables/{table_id}/schedule/"
payload = {
"delete_missing_rows": False,
"hour": 9,
"interval_value": 182,
"minute": 0,
"time_zone": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
delete_missing_rows: false,
hour: 9,
interval_value: 182,
minute: 0,
time_zone: '<string>'
})
};
fetch('https://api.getoneprofile.ai/tables/{table_id}/schedule/', 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.getoneprofile.ai/tables/{table_id}/schedule/",
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([
'delete_missing_rows' => false,
'hour' => 9,
'interval_value' => 182,
'minute' => 0,
'time_zone' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.getoneprofile.ai/tables/{table_id}/schedule/"
payload := strings.NewReader("{\n \"delete_missing_rows\": false,\n \"hour\": 9,\n \"interval_value\": 182,\n \"minute\": 0,\n \"time_zone\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.getoneprofile.ai/tables/{table_id}/schedule/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"delete_missing_rows\": false,\n \"hour\": 9,\n \"interval_value\": 182,\n \"minute\": 0,\n \"time_zone\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/tables/{table_id}/schedule/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"delete_missing_rows\": false,\n \"hour\": 9,\n \"interval_value\": 182,\n \"minute\": 0,\n \"time_zone\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"created_at": "2023-11-07T05:31:56Z",
"delete_missing_rows": true,
"frequency": "hourly",
"hour": 123,
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"interval_unit": "hours",
"interval_value": 123,
"last_skip_reason": "source_detached",
"last_skipped_at": "2023-11-07T05:31:56Z",
"minute": 123,
"next_run_at": "2023-11-07T05:31:56Z",
"next_runs": [
"2023-11-07T05:31:56Z"
],
"paused": true,
"table_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"time_zone": "<string>",
"updated_at": "2023-11-07T05:31:56Z"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Authorizations
Path Parameters
Body
Set up a table's refresh cadence.
A preset, or 'custom' for an interval.
hourly, daily, weekly, monthly, quarterly, custom Delete rows whose records have gone from the source. Forces every scheduled run to re-list everything, and is capped per run so a provider outage cannot empty the table.
Local hour to run at.
0 <= x <= 23Required for a custom cadence.
hours, days, weeks, months Required for a custom cadence.
0 < x <= 365Local minute to run at.
0 <= x <= 59IANA zone the time is in; defaults to UTC. An unknown zone falls back to UTC.
64Response
Successful Response
A table's refresh cadence.
Whether a scheduled run deletes rows whose records are gone from the source. Forces every scheduled run to re-list everything, since a changes-only fetch cannot tell a deleted record from an unchanged one.
How often a table re-imports, in the vocabulary the settings panel offers.
The presets are stored as cron because "the 8th of every month at 09:00" is a calendar statement that an interval cannot make: an interval of 30 days drifts off the date within a year. CUSTOM is the escape hatch for "every N days/weeks/months", which is an interval and drifts on purpose, anchored to when the user set it up.
HOURLY is cron too, and it is the one preset that ignores the hour the user picked: "every hour at 09:00" is not a thing anyone means. The minute is kept, so an hourly refresh set at 09:20 runs at twenty past every hour, and a source that rate-limits is not hit by every table on the hour.
hourly, daily, weekly, monthly, quarterly, custom Local hour the cadence runs at.
The unit a CUSTOM cadence counts in.
HOURS is the only one with no time of day to honour: "every 6 hours at 09:00" is two statements that cannot both be true. It anchors to the next occurrence of the chosen MINUTE instead, the same way the HOURLY preset keeps the minute and drops the hour.
hours, days, weeks, months How many units apart, for a custom cadence.
Why the last firing skipped, alongside last_skipped_at.
source_detached, run_in_progress When a firing last skipped without starting a run; null if it never has.
Local minute the cadence runs at.
The next few fire times, so a cadence can be checked before it is trusted.
IANA zone the run time is expressed in.
Was this page helpful?