🏢 API de Organizaciones
📋 Descripción
API para gestionar organizaciones a las que tiene acceso el usuario autenticado. Incluye consulta de organizaciones asignadas, información detallada por RUC y registro de facturación electrónica.
🌐 Base URL
/api/v1/organizations
Autenticación requerida: Bearer Token (Sanctum)
📋 Endpoints
🏢 1. Obtener Organizaciones del Usuario
GET /api/v1/organizations
Obtiene todas las organizaciones asignadas al usuario autenticado, incluyendo información del token actual.
📤 Headers
Authorization: Bearer {token}
Accept: application/json
📥 Respuesta Exitosa (200)
{
"data": [
{
"id": 1,
"name": "Empresa Demo S.A.",
"ruc": "1234567-8-123456"
},
{
"id": 2,
"name": "Comercial XYZ",
"ruc": "9876543-1-654321"
}
],
"token_organization": {
"organization_id": 1,
"point_sale": "001-001",
"name": "Token Principal"
}
}
📋 2. Obtener Información de Organización por RUC
GET /api/v1/organizations/{ruc}
Obtiene información detallada de una organización específica usando su RUC.
📝 Parámetros de Ruta
ruc
(string, requerido): RUC de la organización (ej: "1234567-8-123456")
📤 Headers
Authorization: Bearer {token}
Accept: application/json
📥 Respuesta Exitosa (200)
{
"id": 1,
"codigo_provincia_distrito": "8-1",
"coordenadas_geograficas": "8.9824,-79.5199",
"provincia_id": 8,
"distrito_id": 1,
"corregimiento_id": 1,
"province_name": "PANAMA",
"district_name": "PANAMA",
"corregimiento_name": "SAN FELIPE",
"nombre": "Empresa Demo S.A.",
"ruc": "1234567-8-123456",
"dv": "8",
"tipo_contribuyente_id": 1,
"telefono": "507-1234-5678",
"direccion_sucursal": "Calle 50, Edificio Torre del Sol",
"email_empresa": "contacto@empresademo.com",
"id_empresa": "EMP001",
"province": {
"id": 8,
"nombre": "PANAMA",
"codigo": "8"
},
"district": {
"id": 1,
"nombre": "PANAMA",
"codigo": "8"
},
"corregimiento": {
"id": 1,
"nombre": "SAN FELIPE",
"codigo": "1"
},
"contributor_type": {
"id": 1,
"nombre": "Natural"
},
"company": {
"id": 1,
"nombre": "Matriz Principal"
},
"type_contribution_name": "Natural",
"token_organization": {
"organization_id": 1,
"point_sale": "001-001",
"name": "Token Principal"
}
}
❌ Respuesta de Error (404)
{
"token_organization": {
"organization_id": 1,
"point_sale": "001-001",
"name": "Token Principal"
}
}
📄 3. Registrar Emisión de Facturación Electrónica
POST /api/v1/organizations/emission_fe
Registra una factura para verificación de emisión desde ACI-CLOUD.
📤 Headers
Authorization: Bearer {token}
Accept: application/json
Content-Type: application/json
📝 Cuerpo de la Petición
{
"aci_organizacion_id": "ORG123456",
"zoho_invoice_id": "INV789012",
"date": "2025-01-15",
"status": "pending",
"type": "invoice",
"message": "Factura pendiente de procesamiento"
}
📥 Respuesta Exitosa (200)
{
"id": 1,
"aci_organizacion_id": "ORG123456",
"zoho_invoice_id": "INV789012",
"date": "2025-01-15T00:00:00.000000Z",
"status": "pending",
"type": "invoice",
"message": "Factura pendiente de procesamiento",
"created_at": "2025-01-15T10:30:00.000000Z",
"updated_at": "2025-01-15T10:30:00.000000Z"
}
👤 4. Obtener Información del Usuario Autenticado
GET /api/user
Obtiene la información completa del usuario autenticado, incluyendo sus organizaciones asociadas.
📤 Headers
Authorization: Bearer {token}
Accept: application/json
📥 Respuesta Exitosa (200)
{
"id": 1,
"name": "Juan Pérez",
"email": "juan.perez@empresa.com",
"organization_id": 1,
"organization": {
"id": 1,
"name": "Empresa Principal",
"ruc": "155757563-2-2024"
},
"organizations": [
{
"id": 1,
"name": "Empresa Principal"
},
{
"id": 2,
"name": "Sucursal Norte"
}
],
"import_configuration": {
"auto_import": true,
"default_format": "xml"
},
"token_organization": {
"organization_id": 1,
"point_sale": "001",
"name": "Token Activo"
}
}
📊 Estructura de Datos
🏢 Organización (Lista)
Campo | Tipo | Descripción |
---|---|---|
id |
integer | ID único de la organización |
name |
string | Nombre comercial de la organización (pretty_name) |
ruc |
string | RUC de la organización |
🏢 Organización (Detallada)
Campo | Tipo | Descripción |
---|---|---|
id |
integer | ID único de la organización |
codigo_provincia_distrito |
string | Código de provincia-distrito |
coordenadas_geograficas |
string | Coordenadas GPS (latitud,longitud) |
provincia_id |
integer | ID de la provincia |
distrito_id |
integer | ID del distrito |
corregimiento_id |
integer | ID del corregimiento |
province_name |
string | Nombre de la provincia |
district_name |
string | Nombre del distrito |
corregimiento_name |
string | Nombre del corregimiento |
nombre |
string | Razón social completa |
ruc |
string | RUC completo |
dv |
string | Dígito verificador |
tipo_contribuyente_id |
integer | ID del tipo de contribuyente |
telefono |
string | Teléfono de contacto |
direccion_sucursal |
string | Dirección física |
email_empresa |
string | Email corporativo |
id_empresa |
string | Identificador interno |
🏷️ Token Organization
Campo | Tipo | Descripción |
---|---|---|
organization_id |
integer | ID de la organización del token |
point_sale |
string | Punto de venta asignado |
name |
string | Nombre del token |
📄 Emisión FE
Campo | Tipo | Descripción |
---|---|---|
aci_organizacion_id |
string | ID de organización en ACI |
zoho_invoice_id |
string | ID de factura en Zoho |
date |
date | Fecha de la emisión |
status |
string | Estado de la factura |
type |
string | Tipo de documento |
message |
string | Mensaje descriptivo (opcional) |
✅ Validaciones
EmissionFERequest
Campo | Tipo | Validación |
---|---|---|
aci_organizacion_id |
string | Requerido, máximo 20 caracteres |
zoho_invoice_id |
string | Requerido, máximo 20 caracteres |
date |
date | Requerido, formato fecha válido |
status |
string | Requerido, máximo 15 caracteres |
type |
string | Requerido, máximo 15 caracteres |
message |
string | Opcional |
💡 Casos de Uso
1. Listar Organizaciones del Usuario
curl -X GET "http://localhost:8000/api/v1/organizations" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
2. Consultar Organización por RUC
curl -X GET "http://localhost:8000/api/v1/organizations/155757563-2-2024" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
3. Registrar Emisión FE
curl -X POST "http://localhost:8000/api/v1/organizations/emission_fe" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"aci_organizacion_id": "ORG123456",
"zoho_invoice_id": "INV789012",
"date": "2024-01-20",
"status": "pending",
"type": "invoice"
}'
4. Obtener Información del Usuario
curl -X GET "http://localhost:8000/api/user" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
📊 Códigos de Estado HTTP
Código | Descripción |
---|---|
200 | Operación exitosa |
401 | No autorizado |
404 | Recurso no encontrado |
422 | Error de validación |
500 | Error interno del servidor |
⚠️ Notas Adicionales
- Organizaciones del usuario: Se obtienen según las asignadas al usuario autenticado
- Formato RUC: Debe seguir el formato panameño válido
- Token organization: Incluye datos del token actual en todas las respuestas
- Emisiones FE: Se registran para tracking desde ACI-CLOUD
- Fechas ISO 8601: Todas las fechas se manejan en formato estándar
- Endpoint /api/user: No requiere middleware de organización activa
📞 Soporte
Para soporte con organizaciones:
- Email: desarrollo@apconpanama.me
- GitHub: Reportar Issues
- Documentación: Índice de APIs