Start an asynchronous ingest
curl --request POST \
--url https://api.occtoo.com/datasources/{dataSource}/import \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"entities": [
{
"key": "sku-123",
"delete": false,
"properties": [
{
"id": "name",
"value": "Blue chair",
"language": "en"
},
{
"id": "inStock",
"value": "true",
"type": "Boolean"
},
{
"id": "tags",
"value": "summer|sale",
"delimiter": "|",
"type": "List"
}
]
},
{
"key": "sku-obsolete",
"delete": true,
"properties": []
}
]
}
'import requests
url = "https://api.occtoo.com/datasources/{dataSource}/import"
payload = { "entities": [
{
"key": "sku-123",
"delete": False,
"properties": [
{
"id": "name",
"value": "Blue chair",
"language": "en"
},
{
"id": "inStock",
"value": "true",
"type": "Boolean"
},
{
"id": "tags",
"value": "summer|sale",
"delimiter": "|",
"type": "List"
}
]
},
{
"key": "sku-obsolete",
"delete": True,
"properties": []
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
entities: [
{
key: 'sku-123',
delete: false,
properties: [
{id: 'name', value: 'Blue chair', language: 'en'},
{id: 'inStock', value: 'true', type: 'Boolean'},
{id: 'tags', value: 'summer|sale', delimiter: '|', type: 'List'}
]
},
{key: 'sku-obsolete', delete: true, properties: []}
]
})
};
fetch('https://api.occtoo.com/datasources/{dataSource}/import', 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.occtoo.com/datasources/{dataSource}/import",
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([
'entities' => [
[
'key' => 'sku-123',
'delete' => false,
'properties' => [
[
'id' => 'name',
'value' => 'Blue chair',
'language' => 'en'
],
[
'id' => 'inStock',
'value' => 'true',
'type' => 'Boolean'
],
[
'id' => 'tags',
'value' => 'summer|sale',
'delimiter' => '|',
'type' => 'List'
]
]
],
[
'key' => 'sku-obsolete',
'delete' => true,
'properties' => [
]
]
]
]),
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://api.occtoo.com/datasources/{dataSource}/import"
payload := strings.NewReader("{\n \"entities\": [\n {\n \"key\": \"sku-123\",\n \"delete\": false,\n \"properties\": [\n {\n \"id\": \"name\",\n \"value\": \"Blue chair\",\n \"language\": \"en\"\n },\n {\n \"id\": \"inStock\",\n \"value\": \"true\",\n \"type\": \"Boolean\"\n },\n {\n \"id\": \"tags\",\n \"value\": \"summer|sale\",\n \"delimiter\": \"|\",\n \"type\": \"List\"\n }\n ]\n },\n {\n \"key\": \"sku-obsolete\",\n \"delete\": true,\n \"properties\": []\n }\n ]\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.occtoo.com/datasources/{dataSource}/import")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"entities\": [\n {\n \"key\": \"sku-123\",\n \"delete\": false,\n \"properties\": [\n {\n \"id\": \"name\",\n \"value\": \"Blue chair\",\n \"language\": \"en\"\n },\n {\n \"id\": \"inStock\",\n \"value\": \"true\",\n \"type\": \"Boolean\"\n },\n {\n \"id\": \"tags\",\n \"value\": \"summer|sale\",\n \"delimiter\": \"|\",\n \"type\": \"List\"\n }\n ]\n },\n {\n \"key\": \"sku-obsolete\",\n \"delete\": true,\n \"properties\": []\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.occtoo.com/datasources/{dataSource}/import")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"entities\": [\n {\n \"key\": \"sku-123\",\n \"delete\": false,\n \"properties\": [\n {\n \"id\": \"name\",\n \"value\": \"Blue chair\",\n \"language\": \"en\"\n },\n {\n \"id\": \"inStock\",\n \"value\": \"true\",\n \"type\": \"Boolean\"\n },\n {\n \"id\": \"tags\",\n \"value\": \"summer|sale\",\n \"delimiter\": \"|\",\n \"type\": \"List\"\n }\n ]\n },\n {\n \"key\": \"sku-obsolete\",\n \"delete\": true,\n \"properties\": []\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"result": {
"id": "83b538a7-df7c-4cf4-b988-cd3b71c4cd90"
},
"errors": [],
"requestId": "01JZP4FQ2Y7JYV5Y2R8B4X9Q3W"
}{
"errors": [
{
"message": "<string>",
"details": {}
}
],
"requestId": "<string>"
}{
"errors": [
{
"message": "<string>",
"details": {}
}
],
"requestId": "<string>"
}{
"errors": [
{
"message": "<string>",
"details": {}
}
],
"requestId": "<string>"
}{
"errors": [
{
"message": "<string>",
"details": {}
}
],
"requestId": "<string>"
}{
"errors": [
{
"message": "<string>",
"details": {}
}
],
"requestId": "<string>"
}{
"errors": [
{
"message": "<string>",
"details": {}
}
],
"requestId": "<string>"
}{
"errors": [
{
"message": "<string>",
"details": {}
}
],
"requestId": "<string>"
}Ingest API
Start an asynchronous ingest
Validates and accepts source entries for asynchronous processing. A 202 response means the request was queued; it does not mean every entry has finished processing.
Persist result.id as the ingest correlation id for diagnostics. There is currently no public status endpoint for this id. Do not retry a successful 202 response merely because downstream data is not visible yet.
POST
/
datasources
/
{dataSource}
/
import
Start an asynchronous ingest
curl --request POST \
--url https://api.occtoo.com/datasources/{dataSource}/import \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"entities": [
{
"key": "sku-123",
"delete": false,
"properties": [
{
"id": "name",
"value": "Blue chair",
"language": "en"
},
{
"id": "inStock",
"value": "true",
"type": "Boolean"
},
{
"id": "tags",
"value": "summer|sale",
"delimiter": "|",
"type": "List"
}
]
},
{
"key": "sku-obsolete",
"delete": true,
"properties": []
}
]
}
'import requests
url = "https://api.occtoo.com/datasources/{dataSource}/import"
payload = { "entities": [
{
"key": "sku-123",
"delete": False,
"properties": [
{
"id": "name",
"value": "Blue chair",
"language": "en"
},
{
"id": "inStock",
"value": "true",
"type": "Boolean"
},
{
"id": "tags",
"value": "summer|sale",
"delimiter": "|",
"type": "List"
}
]
},
{
"key": "sku-obsolete",
"delete": True,
"properties": []
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
entities: [
{
key: 'sku-123',
delete: false,
properties: [
{id: 'name', value: 'Blue chair', language: 'en'},
{id: 'inStock', value: 'true', type: 'Boolean'},
{id: 'tags', value: 'summer|sale', delimiter: '|', type: 'List'}
]
},
{key: 'sku-obsolete', delete: true, properties: []}
]
})
};
fetch('https://api.occtoo.com/datasources/{dataSource}/import', 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.occtoo.com/datasources/{dataSource}/import",
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([
'entities' => [
[
'key' => 'sku-123',
'delete' => false,
'properties' => [
[
'id' => 'name',
'value' => 'Blue chair',
'language' => 'en'
],
[
'id' => 'inStock',
'value' => 'true',
'type' => 'Boolean'
],
[
'id' => 'tags',
'value' => 'summer|sale',
'delimiter' => '|',
'type' => 'List'
]
]
],
[
'key' => 'sku-obsolete',
'delete' => true,
'properties' => [
]
]
]
]),
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://api.occtoo.com/datasources/{dataSource}/import"
payload := strings.NewReader("{\n \"entities\": [\n {\n \"key\": \"sku-123\",\n \"delete\": false,\n \"properties\": [\n {\n \"id\": \"name\",\n \"value\": \"Blue chair\",\n \"language\": \"en\"\n },\n {\n \"id\": \"inStock\",\n \"value\": \"true\",\n \"type\": \"Boolean\"\n },\n {\n \"id\": \"tags\",\n \"value\": \"summer|sale\",\n \"delimiter\": \"|\",\n \"type\": \"List\"\n }\n ]\n },\n {\n \"key\": \"sku-obsolete\",\n \"delete\": true,\n \"properties\": []\n }\n ]\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.occtoo.com/datasources/{dataSource}/import")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"entities\": [\n {\n \"key\": \"sku-123\",\n \"delete\": false,\n \"properties\": [\n {\n \"id\": \"name\",\n \"value\": \"Blue chair\",\n \"language\": \"en\"\n },\n {\n \"id\": \"inStock\",\n \"value\": \"true\",\n \"type\": \"Boolean\"\n },\n {\n \"id\": \"tags\",\n \"value\": \"summer|sale\",\n \"delimiter\": \"|\",\n \"type\": \"List\"\n }\n ]\n },\n {\n \"key\": \"sku-obsolete\",\n \"delete\": true,\n \"properties\": []\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.occtoo.com/datasources/{dataSource}/import")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"entities\": [\n {\n \"key\": \"sku-123\",\n \"delete\": false,\n \"properties\": [\n {\n \"id\": \"name\",\n \"value\": \"Blue chair\",\n \"language\": \"en\"\n },\n {\n \"id\": \"inStock\",\n \"value\": \"true\",\n \"type\": \"Boolean\"\n },\n {\n \"id\": \"tags\",\n \"value\": \"summer|sale\",\n \"delimiter\": \"|\",\n \"type\": \"List\"\n }\n ]\n },\n {\n \"key\": \"sku-obsolete\",\n \"delete\": true,\n \"properties\": []\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"result": {
"id": "83b538a7-df7c-4cf4-b988-cd3b71c4cd90"
},
"errors": [],
"requestId": "01JZP4FQ2Y7JYV5Y2R8B4X9Q3W"
}{
"errors": [
{
"message": "<string>",
"details": {}
}
],
"requestId": "<string>"
}{
"errors": [
{
"message": "<string>",
"details": {}
}
],
"requestId": "<string>"
}{
"errors": [
{
"message": "<string>",
"details": {}
}
],
"requestId": "<string>"
}{
"errors": [
{
"message": "<string>",
"details": {}
}
],
"requestId": "<string>"
}{
"errors": [
{
"message": "<string>",
"details": {}
}
],
"requestId": "<string>"
}{
"errors": [
{
"message": "<string>",
"details": {}
}
],
"requestId": "<string>"
}{
"errors": [
{
"message": "<string>",
"details": {}
}
],
"requestId": "<string>"
}Authorizations
kindeOAuthbearerAuthapiKey
Sign in with the existing Occtoo Studio identity and selected organization.
Path Parameters
Stable customer-facing source id within the authenticated tenant.
Minimum string length:
1Example:
"products"
Body
application/json
Non-empty collection of source entries. Keys must be unique within the request, compared case-insensitively.
Minimum array length:
1Show child attributes
Show child attributes
Was this page helpful?