Objetos personalizados API
Un espacio de trabajo puede definir sus propios objetos comerciales estructurados (trabajos de reparación, citas, quejas) con campos, registros, interfaz de usuario de lista/formulario y segmentación, todo sin código. Este API permite que sus integraciones lean los esquemas de esos objetos y lean o escriban sus registros. El objeto se define primero en la aplicación; el API va en contra de lo que ya existe.
Enumere los tipos de objetos y luego lea su esquema.
Autentíquese con una clave Bearer fl_live_ que contenga objects:read. GET /api/v2/objects devuelve los tipos object que expone este espacio de trabajo; solo se devuelven los objetos publicados, API-visibles; los borradores y los objetos API-ocultos nunca se filtran. GET /api/v2/objects/{type} devuelve el esquema de campo autodescriptivo de un object (clave, tipo, opciones, requerido) para que pueda renderizar un formulario o asignar registros sin codificar nada de forma fija. Un tipo desconocido, borrador, oculto o entre espacios de trabajo devuelve 404.
# what object types exist here?
curl https://flash.socialhub.ai/api/v2/objects \
-H "Authorization: Bearer fl_live_..."
# { "data": [ { "type": "repair_jobs", "label": "Repair Jobs", ... } ] }
# what does one look like?
curl https://flash.socialhub.ai/api/v2/objects/repair_jobs \
-H "Authorization: Bearer fl_live_..."
# { "data": {
# "type": "repair_jobs", "label": "Repair Jobs",
# "fields": [
# { "key": "cf_status", "type": "enum", "required": true,
# "options": ["Received","In Progress","Completed"] },
# { "key": "cf_item", "type": "text" },
# { "key": "member_ref", "type": "member_ref" }
# ]
# } }Listar, filtrar, ordenar y paginar
GET /api/v2/objects/{type}/records devuelve registros para un object (ámbito objects:read). Página con limit (máximo 200) y offset; Ordenar con sortBy (created_desc, created_asc, updated_desc, title_asc); texto libre search; filtrar por miembro con memberId; y filtrar cualquier campo con f_<fieldKey>=<value>. Un único registro es GET /api/v2/objects/{type}/records/{recordId}.
curl "https://flash.socialhub.ai/api/v2/objects/repair_jobs/records\
?f_cf_status=In%20Progress&sortBy=updated_desc&limit=50" \
-H "Authorization: Bearer fl_live_..."
# { "data": [ { "id": "rec_...", "data": { "cf_status": "In Progress",
# "cf_item": "Sole replacement", "member_ref": "mbr_..." } } ],
# "total": 12 }Crear, actualizar y eliminar
Las escrituras necesitan el alcance objects:write. El objeto data se valida con el esquema de campos del objeto: se verifican los campos obligatorios, los tipos, las opciones de enumeración y las referencias de miembros, y las claves desconocidas se rechazan. Un protector de velocidad de escritura por clave cerrado contra fallas se ubica frente a cada escritura, por lo que una clave filtrada no puede inundar la tabla.
# create
curl -X POST https://flash.socialhub.ai/api/v2/objects/repair_jobs/records \
-H "Authorization: Bearer fl_live_..." \
-H "Content-Type: application/json" \
-d '{ "data": {
"cf_status": "Received",
"cf_item": "Sole replacement",
"member_ref": "mbr_..."
} }'
# 201 { "data": { "id": "rec_...", "data": { ... } } }PATCH …/records/{recordId} es una actualización parcial por defecto (se fusionan campo por campo, por lo que las actualizaciones simultáneas nunca se sobrescriben). Envíe un campo como null para eliminarlo o como { "replace": true } para sobrescribir todo el registro. DELETE …/records/{recordId} elimina de forma lógica.
# partial update — only touch cf_status
curl -X PATCH https://flash.socialhub.ai/api/v2/objects/repair_jobs/records/rec_... \
-H "Authorization: Bearer fl_live_..." \
-H "Content-Type: application/json" \
-d '{ "data": { "cf_status": "Completed" } }'
# delete
curl -X DELETE https://flash.socialhub.ai/api/v2/objects/repair_jobs/records/rec_... \
-H "Authorization: Bearer fl_live_..."