Saltar al contenido principal

Registro Completo de Organización

Registra una nueva organización junto con su sucursal principal y opcionalmente su CSD en una sola operación. Este es el endpoint recomendado para el onboarding completo.

Endpoint

POST https://api.lummy.io/v1/organizations/register
EntornoURL
Producciónhttps://api.lummy.io/v1/organizations/register
Sandboxhttps://sandbox.lummy.io/v1/organizations/register

Este endpoint realiza el onboarding completo en una sola operación:

  1. Crea la organización
  2. Crea la sucursal principal (matriz)
  3. Opcionalmente, sube y valida el CSD si se proporcionan los archivos

Headers

Headers
{
"Authorization": string,requerido
Token de autenticación en formato Bearer (JWT) que valida la identidad del usuario. Este token debe ser enviado en cada petición para acceder a los recursos protegidos de la API.
Ejemplo: "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
"x-idempotency": string,requerido
Identificador único en formato UUID utilizado para garantizar la idempotencia de toda la operación de registro. Si se envía el mismo UUID en una petición posterior, el sistema devolverá el resultado de la primera operación sin crear registros duplicados.
Formato: uuid
Ejemplo: "01936ff8-9c6a-7b2e-8000-123456789abc"
"Content-Type": stringrequerido
Tipo de contenido de la petición. Este endpoint requiere multipart/form-data para soportar la carga de archivos del CSD.
Valores permitidos: "multipart/form-data"
Ejemplo: "multipart/form-data"
}

Body Parameters (Multipart)

Request Body
{
"name": string,requerido
Nombre comercial de la organización con el cual será identificada en el sistema. Este campo es obligatorio y debe contener al menos un carácter.
Longitud: 1-255 caracteres
Ejemplo: "Mi Empresa S.A. de C.V."
"legalName": string,opcional
Razón social completa de la organización según conste en el Registro Federal de Contribuyentes del SAT. Este campo es opcional y se utiliza cuando la razón social difiere del nombre comercial.
Longitud máxima: 255 caracteres
Ejemplo: "Mi Empresa Sociedad Anónima de Capital Variable"
"rfc": string,requerido
Registro Federal de Contribuyentes asignado por el SAT. Debe ser un RFC válido con formato de 12 caracteres para personas morales o 13 caracteres para personas físicas. El RFC será validado contra el certificado CSD si se proporciona.
Longitud: 12-13 caracteres · Patrón: ^[A-ZÑ&]{3,4}\d{6}[A-Z0-9]{3}$
Ejemplo: "XAXX010101000"
"taxRegime": string,requerido
Clave del régimen fiscal al que está sujeta la organización según el catálogo c_RegimenFiscal del SAT. Este valor debe corresponder a un régimen fiscal válido y vigente.
Catálogo SAT: c_RegimenFiscal
Ejemplo: "601"
"zipCode": string,requerido
Código postal del domicilio fiscal de la organización registrado ante el SAT. Debe ser un código postal válido de México compuesto por exactamente 5 dígitos numéricos.
Longitud exacta: 5 caracteres · Patrón: ^\d{5}$
Ejemplo: "64000"
"branchName": string,requerido
Nombre identificador de la sucursal principal (matriz) que se creará automáticamente junto con la organización. Este campo es obligatorio y típicamente se usa "Matriz" o "Casa Matriz".
Longitud: 1-255 caracteres
Ejemplo: "Matriz"
"branchZipCode": string,opcional
Código postal de la ubicación física de la sucursal principal. Este campo es opcional; si se omite, se utilizará el código postal del domicilio fiscal de la organización. Debe ser un código postal válido de México de 5 dígitos.
Longitud exacta: 5 caracteres · Patrón: ^\d{5}$
Ejemplo: "64000"
"csdPassword": string,opcional
Contraseña del archivo .key del Certificado de Sello Digital (CSD). Este campo es obligatorio únicamente si se proporcionan los archivos cerFile y keyFile. La contraseña será utilizada para validar y descifrar la llave privada del certificado.
Ejemplo: "contraseña_secreta_123"
"cerFile": file,opcional
Archivo del certificado público del CSD en formato .cer (DER). Este archivo es obligatorio si se desea configurar el CSD durante el registro. El certificado debe estar vigente y el RFC debe coincidir con el RFC de la organización. Tamaño máximo: 5MB.
Formato: binary
Ejemplo: "certificado.cer"
"keyFile": fileopcional
Archivo de la llave privada del CSD en formato .key (DER encriptado). Este archivo es obligatorio si se desea configurar el CSD durante el registro. La llave será validada usando la contraseña proporcionada en csdPassword. Tamaño máximo: 5MB.
Formato: binary
Ejemplo: "llave_privada.key"
}
Nota sobre archivos CSD

Si decides proporcionar los archivos del CSD, los tres campos csdPassword, cerFile y keyFile son obligatorios. Si no proporcionas ninguno, la organización y sucursal se crearán sin CSD, y podrás subirlo posteriormente usando el endpoint dedicado.

Ejemplos de Código

Sin CSD:

curl -X POST https://sandbox.lummy.io/organizations/register \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "x-idempotency: $(uuidgen)" \
-F "name=Mi Empresa S.A. de C.V." \
-F "legalName=Mi Empresa S.A. de C.V." \
-F "rfc=XAXX010101000" \
-F "taxRegime=601" \
-F "zipCode=64000" \
-F "branchName=Matriz"

Con CSD:

curl -X POST https://sandbox.lummy.io/organizations/register \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "x-idempotency: $(uuidgen)" \
-F "name=Mi Empresa S.A. de C.V." \
-F "legalName=Mi Empresa S.A. de C.V." \
-F "rfc=XAXX010101000" \
-F "taxRegime=601" \
-F "zipCode=64000" \
-F "branchName=Matriz" \
-F "csdPassword=contraseña_csd" \
-F "cerFile=@/path/to/certificado.cer" \
-F "keyFile=@/path/to/llave.key"

Respuestas

Todas las respuestas siguen el formato estándar StandardResponse.

201 Created

Organización registrada exitosamente.

{
"requestId": "abc123-def456",
"data": {
"organizationId": "550e8400-e29b-41d4-a716-446655440000",
"branchId": "550e8400-e29b-41d4-a716-446655440001",
"csdId": "550e8400-e29b-41d4-a716-446655440002",
"message": "Organización registrada exitosamente"
},
"timestamp": "2025-01-15T10:30:00.000Z",
"path": "/organizations/register",
"method": "POST"
}
tip

Si no se proporcionaron archivos CSD, el campo csdId será null.

400 Bad Request

Datos inválidos o archivos CSD incorrectos.

{
"requestId": "abc123-def456",
"error": {
"message": "El RFC del certificado no coincide con el RFC de la organización",
"code": "ValidationError",
"status": 400
},
"timestamp": "2025-01-15T10:30:00.000Z",
"path": "/organizations/register",
"method": "POST"
}

409 Conflict

Ya existe una organización con el mismo RFC.

{
"requestId": "abc123-def456",
"error": {
"message": "Ya existe una organización con el RFC: XAXX010101000",
"code": "ConflictException",
"status": 409
},
"timestamp": "2025-01-15T10:30:00.000Z",
"path": "/organizations/register",
"method": "POST"
}

Ventajas

Este endpoint combina tres operaciones en una:

  1. POST /organizations - Crear organización
  2. POST /branches - Crear sucursal principal
  3. POST /branches/:id/csd - Subir CSD (opcional)

Beneficios:

  • Menos llamadas a la API
  • Operación atómica (todo o nada)
  • Idempotencia garantizada con un solo UUID
  • Onboarding más rápido

Próximos Pasos