curl --request POST \
--url https://api.getoneprofile.ai/table-sources/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"integration_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"record_type": "<string>",
"table_name": "<string>",
"folder_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"identity_field": "<string>",
"promote_paths": [
"<string>"
],
"row_limit": 1073741823
}
'import requests
url = "https://api.getoneprofile.ai/table-sources/"
payload = {
"integration_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"record_type": "<string>",
"table_name": "<string>",
"folder_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"identity_field": "<string>",
"promote_paths": ["<string>"],
"row_limit": 1073741823
}
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({
integration_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
record_type: '<string>',
table_name: '<string>',
folder_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
identity_field: '<string>',
promote_paths: ['<string>'],
row_limit: 1073741823
})
};
fetch('https://api.getoneprofile.ai/table-sources/', 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/table-sources/",
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([
'integration_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'record_type' => '<string>',
'table_name' => '<string>',
'folder_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'identity_field' => '<string>',
'promote_paths' => [
'<string>'
],
'row_limit' => 1073741823
]),
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/table-sources/"
payload := strings.NewReader("{\n \"integration_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"record_type\": \"<string>\",\n \"table_name\": \"<string>\",\n \"folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"identity_field\": \"<string>\",\n \"promote_paths\": [\n \"<string>\"\n ],\n \"row_limit\": 1073741823\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/table-sources/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"integration_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"record_type\": \"<string>\",\n \"table_name\": \"<string>\",\n \"folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"identity_field\": \"<string>\",\n \"promote_paths\": [\n \"<string>\"\n ],\n \"row_limit\": 1073741823\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/table-sources/")
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 \"integration_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"record_type\": \"<string>\",\n \"table_name\": \"<string>\",\n \"folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"identity_field\": \"<string>\",\n \"promote_paths\": [\n \"<string>\"\n ],\n \"row_limit\": 1073741823\n}"
response = http.request(request)
puts response.read_body{
"run": {
"error": "<string>",
"finished_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"identity_field": "<string>",
"is_full_relist": true,
"rows_created": 123,
"rows_deleted": 123,
"rows_skipped": 123,
"rows_skipped_duplicate": 123,
"rows_skipped_no_identity": 123,
"rows_updated": 123,
"source_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"started_at": "2023-11-07T05:31:56Z",
"status": "running",
"stopped_at_row_limit": 123,
"sweep_deletions": true,
"table_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"trigger": "initial",
"error_code": "<string>",
"needs_reconnect": false
},
"source": {
"created_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"identity_field": "<string>",
"integration_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"integration_type": "<string>",
"last_synced_at": "2023-11-07T05:31:56Z",
"object_column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"record_type": "<string>",
"record_type_label": "<string>",
"row_limit": 123,
"supports_incremental": true,
"table_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"updated_at": "2023-11-07T05:31:56Z"
},
"table_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Create a table fed by an integration
Create the table, its imported-record column and a few extracted columns, then start loading rows in the background.
The table exists as soon as this returns, so the client can navigate to it immediately and watch rows arrive. Poll the run to follow progress.
Every record lands whole in one Object column. The extracted columns are formulas reading paths out of it, so a refresh updates them for free, and any field the import brought back can be given its own column later without re-fetching anything.
identity_field picks which of the preview’s identity_field_choices rows are matched on across refreshes; left out, the preview’s recommended one is used. A key some records lack or records share is refused with a 422.
curl --request POST \
--url https://api.getoneprofile.ai/table-sources/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"integration_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"record_type": "<string>",
"table_name": "<string>",
"folder_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"identity_field": "<string>",
"promote_paths": [
"<string>"
],
"row_limit": 1073741823
}
'import requests
url = "https://api.getoneprofile.ai/table-sources/"
payload = {
"integration_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"record_type": "<string>",
"table_name": "<string>",
"folder_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"identity_field": "<string>",
"promote_paths": ["<string>"],
"row_limit": 1073741823
}
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({
integration_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
record_type: '<string>',
table_name: '<string>',
folder_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
identity_field: '<string>',
promote_paths: ['<string>'],
row_limit: 1073741823
})
};
fetch('https://api.getoneprofile.ai/table-sources/', 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/table-sources/",
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([
'integration_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'record_type' => '<string>',
'table_name' => '<string>',
'folder_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'identity_field' => '<string>',
'promote_paths' => [
'<string>'
],
'row_limit' => 1073741823
]),
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/table-sources/"
payload := strings.NewReader("{\n \"integration_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"record_type\": \"<string>\",\n \"table_name\": \"<string>\",\n \"folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"identity_field\": \"<string>\",\n \"promote_paths\": [\n \"<string>\"\n ],\n \"row_limit\": 1073741823\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/table-sources/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"integration_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"record_type\": \"<string>\",\n \"table_name\": \"<string>\",\n \"folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"identity_field\": \"<string>\",\n \"promote_paths\": [\n \"<string>\"\n ],\n \"row_limit\": 1073741823\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/table-sources/")
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 \"integration_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"record_type\": \"<string>\",\n \"table_name\": \"<string>\",\n \"folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"identity_field\": \"<string>\",\n \"promote_paths\": [\n \"<string>\"\n ],\n \"row_limit\": 1073741823\n}"
response = http.request(request)
puts response.read_body{
"run": {
"error": "<string>",
"finished_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"identity_field": "<string>",
"is_full_relist": true,
"rows_created": 123,
"rows_deleted": 123,
"rows_skipped": 123,
"rows_skipped_duplicate": 123,
"rows_skipped_no_identity": 123,
"rows_updated": 123,
"source_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"started_at": "2023-11-07T05:31:56Z",
"status": "running",
"stopped_at_row_limit": 123,
"sweep_deletions": true,
"table_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"trigger": "initial",
"error_code": "<string>",
"needs_reconnect": false
},
"source": {
"created_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"identity_field": "<string>",
"integration_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"integration_type": "<string>",
"last_synced_at": "2023-11-07T05:31:56Z",
"object_column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"record_type": "<string>",
"record_type_label": "<string>",
"row_limit": 123,
"supports_incremental": true,
"table_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"updated_at": "2023-11-07T05:31:56Z"
},
"table_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Authorizations
Body
What to import, and into a table called what.
The connected integration to import from.
Which object to import.
1 - 255Name for the new table.
1 - 255The folder to make the table in, as when the import starts from inside one on the Tables list. Leave it out for the top level.
Which id key to match rows on, one of the preview's identity_field_choices. Null takes the preview's recommended identity_field. A key some records lack, or one records share, is refused.
255Fields to give their own column, in this order. Null uses the preview's suggestions; an empty list promotes nothing. Unknown paths are skipped; the table's column limit is the only ceiling.
Most rows one run may pull; null for everything. A limited source can never sweep deletions: it cannot tell a record it chose not to fetch from one that is gone.
0 < x <= 2147483647Response
Successful Response
The table that now exists, and the run filling it.
Was this page helpful?