SocialHub.AI
Centro para desarrolladores · Extensibilidad abierta

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.

Paso 1: descubre

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" }
#     ]
# } }
Paso 2: leer los registros

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 }
Paso 3: registrar información

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_..."