Bulk Import Container Profiles
Bulk Import Container Profiles
POST
https://api.ocamba.com/v1/hood/containers/{id}/profiles/bulk-update
Applies the same custom-properties patch to every subscribed profile bound to the container. Equivalent to POST /profiles/bulk-update with filters=container_id={id}.
Note
Requires the
profiles.import permission. The container must exist, belong to the authenticated company, not be deleted, and have status=active. Unknown or inactive containers return 400.
custom_properties uses the same rules as POST /profiles/import: 1–100 keys, each key non-empty and at most 255 characters. type must be omitted or string. A non-empty value writes the property; JSON null deletes that key; empty string is rejected. Keys omitted from the patch are left unchanged.
Only subscribed (status=1), non-deleted profiles in the container are updated. A 202 Accepted response means the bulk update was queued. It does not mean that matching profiles have been updated. Zero matching profiles still returns 202. There is no public job-status API.
Overlapping requests enqueue. One unfinished bulk-update job runs per company, oldest first (FIFO).
Tip
Use POST /profiles/bulk-update when you need filters beyond a single container, such as lists or
user_data fields.Rate limits:
- Burst: 10/s
- Steady: 150/m
Path parameters
parametersRequest schema
bodyResponse schemas
›
202
application/json
›
400
application/json
›
500
application/json
curl -X POST \
"https://api.ocamba.com/v1/hood/containers/{id}/profiles/bulk-update" \
-H "Authorization: Bearer {TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"custom_properties": {
"is_push_delivery_active": {
"value": "true"
},
"old_flag": {
"type": "string",
"value": null
}
}
}'const url = 'https://api.ocamba.com/v1/hood/containers/{id}/profiles/bulk-update';
const options = {
method: 'POST',
headers: {
Authorization: "Bearer {TOKEN}",
'Content-Type': "application/json"
},
body: JSON.stringify(
{
"custom_properties": {
"is_push_delivery_active": {
"value": "true"
},
"old_flag": {
"type": "string",
"value": null
}
}
}
)
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}$ch = curl_init("https://api.ocamba.com/v1/hood/containers/{id}/profiles/bulk-update");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer {TOKEN}",
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(
[
"custom_properties" => [
"is_push_delivery_active" => [
"value" => "true"
],
"old_flag" => [
"type" => "string",
"value" => null
]
]
]
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);Responses
202 Accepted
{
"message": "Profile bulk update has been queued for processing.",
"publish_time": "2026-04-28 12:00:00",
"request_id": "0193c1a2-7b4e-7d21-8f3a-2c9e4b6d8a10",
"status": "accepted"
}
400 Bad Request
{
"code": 400,
"title": "Bad request.",
"message": "The request is not valid.",
"trace_id": "99a84211-f73d-4ff8-acdf-eb3e06bb9d62"
}
500 Internal Server Error
{
"code": 500,
"title": "Internal server error.",
"trace_id": "99a84211-f73d-4ff8-acdf-eb3e06bb9d62"
}
Responses