El tenant raíz de la plataforma: una compañía o negocio con su catálogo, sus clientes, sus
repartidores, sus comercios (Branch) y su configuración independiente. Casi todas las
rutas del API van prefijadas por companies/{companyId}.
enabled — si la company opera. Al deshabilitarla se corta el acceso.expires_at / extension_days — vencimiento del plan; set-expiration lo ajusta.plan — Plan contratado.domain — subdominio en la plataforma; custom_domain — dominio propio del cliente.strings_json — textos personalizados de las apps; styles_json — tema visual (colores,
logos); custom_json — configuración adicional (oculto; se expone por otro endpoint).
styles_json se edita con POST companies/{id}/styles.default_iso_lang — idioma por defecto; country_iso / time_zone_offset — país y zona horaria.options)options es el mismo bitmask que Branch (App\Models\Companies\CommerceBitMasks): los
flags can_* / enable_* / disable_* definen el modo de asignación de repartidores y
servicios, retiros en tienda, bots de asignación y la prueba de entrega (POD). Las sucursales
heredan estas opciones al crearse. Ver la doc de Branch para el detalle de cada grupo.
settings)settings es un objeto con la configuración de la company. editable_settings devuelve solo
las claves modificables (PATCH settings); allowed_settings (solo super-admin) devuelve las
filas CompanySetting en crudo. Los setting_* del modelo son el acceso tipado. Incluye,
entre otras: identidad fiscal (uid), features (enable_invoices, enable_coupons,
enable_multi_providers, enable_phone_login, is_marketplace), distancias de operación
(nearby_branches_distance, provider_collecting_distance, provider_arriving_distance),
auto-asignación (auto_assign_*), SMS (sms_*), verificación de cuentas
(is_verification_required, is_full_verification_required), facturación automática
(auto_provider_invoice_config, auto_branch_invoice_config) e integraciones (Telegram,
WhatsApp, Facebook/Apple login, Bancamiga/SyPago, Braze, Unidigital, Google, servicio de rutas).
| Atributo | Tipo | Descripción |
|---|---|---|
id |
int |
|
name |
string |
Nombre de la company |
email |
string |
Email de contacto principal |
domain |
string |
Subdominio de la company en la plataforma |
custom_domain |
string\|null |
Dominio propio del cliente |
expires_at |
datetime |
Vencimiento del plan |
extension_days |
int |
Días de extensión otorgados sobre el vencimiento |
options |
int |
Bitmask de opciones de operación (ver "Opciones de operación") |
plan |
int |
{@link Plan} contratado |
enabled |
bool |
Si la company opera |
strings_json |
object |
Textos personalizados de las apps (marca blanca) |
styles_json |
object |
Tema visual: colores, logos, tipografías (marca blanca) |
custom_json |
array |
Configuración adicional de la company (oculto) |
default_iso_lang |
string |
Idioma por defecto (ISO) |
folder_name |
string |
Carpeta de almacenamiento de archivos de la company (oculto) |
created_at |
datetime\|null |
|
updated_at |
datetime\|null |
|
deleted_at |
datetime\|null |
|
country_iso |
string |
País de la company (ISO) |
time_zone_offset |
string |
Offset de zona horaria (ej. -04:00) |
direct_order_prefix |
int\|null |
Prefijo para el uid de órdenes de envío directo |
can_providers_pick_deliveries_from_pool |
bool |
BitMask (({@link self::options} & 0x1) !== 0) |
can_providers_confirm_deliveries_from_clients |
bool |
BitMask (({@link self::options} & 0x2) !== 0) |
can_clients_pick_providers_for_deliveries |
bool |
BitMask (({@link self::options} & 0x4) !== 0) |
can_clients_choose_deliveries_after_provider_confirmation |
bool |
BitMask (({@link self::options} & 0x8) !== 0) |
can_providers_confirm_deliveries_from_admins |
bool |
BitMask (({@link self::options} & 0x10) !== 0) |
can_admins_choose_deliveries_after_provider_confirmation |
bool |
BitMask (({@link self::options} & 0x20) !== 0) |
enable_delivery_orders_confirmation_by_admins_before_payment |
bool |
BitMask (({@link self::options} & 0x40) !== 0) |
can_providers_forfeit_from_assigned_deliveries |
bool |
BitMask (({@link self::options} & 0x80) !== 0) |
enable_pickups |
bool |
BitMask (({@link self::options} & 0x100) !== 0) |
disable_deliveries |
bool |
BitMask (({@link self::options} & 0x200) !== 0) |
disable_deliveries_scheduling |
bool |
BitMask (({@link self::options} & 0x400) !== 0) |
enable_bot_for_deliveries |
bool |
BitMask (({@link self::options} & 0x800) !== 0) |
can_providers_pick_services_from_pool |
bool |
BitMask (({@link self::options} & 0x1000) !== 0) |
can_providers_confirm_services_from_clients |
bool |
BitMask (({@link self::options} & 0x2000) !== 0) |
can_clients_pick_providers_for_services |
bool |
BitMask (({@link self::options} & 0x4000) !== 0) |
can_clients_choose_services_after_provider_confirmation |
bool |
BitMask (({@link self::options} & 0x8000) !== 0) |
can_providers_confirm_services_from_admins |
bool |
BitMask (({@link self::options} & 0x10000) !== 0) |
can_admins_choose_services_after_provider_confirmation |
bool |
BitMask (({@link self::options} & 0x20000) !== 0) |
enable_service_orders_confirmation_by_admins_before_payment |
bool |
BitMask (({@link self::options} & 0x40000) !== 0) |
can_providers_forfeit_from_assigned_services |
bool |
BitMask (({@link self::options} & 0x80000) !== 0) |
enable_services_on_branch_location |
bool |
BitMask (({@link self::options} & 0x100000) !== 0) |
disable_services_on_client_location |
bool |
BitMask (({@link self::options} & 0x200000) !== 0) |
disable_services_scheduling |
bool |
BitMask (({@link self::options} & 0x400000) !== 0) |
enable_bot_for_services |
bool |
BitMask (({@link self::options} & 0x800000) !== 0) |
enable_pod_code |
bool |
BitMask (({@link self::options} & 0x1000000) !== 0) |
enable_pod_pictures |
bool |
BitMask (({@link self::options} & 0x2000000) !== 0) |
enable_pod_forms |
bool |
BitMask (({@link self::options} & 0x4000000) !== 0) |
enable_pod_signature |
bool |
BitMask (({@link self::options} & 0x8000000) !== 0) |
enabled_pods |
int |
BitMask (({@link self::options} & 0xf000000) >> 24) |
enable_bot_for_shoppers |
bool |
BitMask (({@link self::options} & 0x40000000) !== 0) |
setting_uid |
string |
Identificador fiscal de la company (clave editable uid) |
setting_slogan |
string |
Eslogan (clave editable slogan) |
setting_mail_footer |
string |
Pie de página de los correos (clave editable mail_footer) |
setting_mail_from |
string\|null |
Remitente de los correos (clave editable mail_from) |
setting_mail_customizations |
array |
Personalizaciones de plantillas de correo |
setting_pay_in_store |
bool |
Permite pago en tienda por defecto (clave editable pay_in_store) |
setting_enable_invoices |
bool |
Facturación habilitada (clave editable enable_invoices) |
setting_enable_multi_providers |
bool |
Varios repartidores por orden (clave editable enable_multi_providers) |
setting_enable_phone_login |
bool |
Login por teléfono habilitado (clave editable enable_phone_login) |
setting_enable_coupons |
bool |
Cupones habilitados (clave editable enable_coupons) |
setting_invoice_format |
array |
Formato de la factura impresa (head, body, item, paper, orientation…) |
setting_contact_phone |
string\|null |
Teléfono de contacto (clave editable contact_phone) |
setting_contact_phone_whatsapp |
string\|null |
WhatsApp de contacto (clave editable contact_phone_whatsapp) |
setting_disable_balance |
bool |
Deshabilita el uso de saldo (clave editable disable_balance) |
setting_telegram_token |
string\|null |
Token del bot de Telegram |
setting_whatsapp_phone_id |
string\|null |
Id de teléfono de WhatsApp Business |
setting_whatsapp_messaging_token |
string\|null |
Token de mensajería de WhatsApp |
setting_is_marketplace |
bool |
La company es un marketplace (clave visible is_marketplace) |
setting_work_schedule |
array |
Horario de trabajo por defecto |
setting_sync_schedule |
array |
Horario de apertura/cierre automático por defecto |
setting_facebook_app_id |
string |
App id de Facebook Login |
setting_facebook_secret_token |
string |
Secret de Facebook Login |
setting_apple_id |
string |
Apple id para Sign in with Apple |
setting_apple_private_key |
string |
Clave privada de Sign in with Apple |
setting_apple_secret |
string |
Secret de Sign in with Apple |
setting_apple_team_id |
string |
Team id de Apple |
setting_apple_client_id |
string |
Client id de Apple |
setting_apple_redirect |
string |
URL de redirección de Sign in with Apple |
setting_sockette_keys |
array |
Claves del servicio de sockets (tiempo real) |
setting_tip_threshold |
int |
Monto a partir del cual se sugiere propina (clave editable tip_threshold) |
setting_nearby_branches_distance |
int |
Radio (m) para considerar comercios cercanos |
setting_provider_collecting_distance |
int |
Radio (m) permitido para marcar recolección |
setting_provider_arriving_distance |
int |
Radio (m) permitido para marcar llegada |
setting_min_nearby_branches_count |
int |
Mínimo de comercios para armar una sección de cercanos |
setting_max_nearby_branches_count |
int |
Máximo de comercios a mostrar como cercanos |
setting_nearby_providers_distance |
int |
Radio (m) para considerar repartidores cercanos (deprecado por Fleets) |
setting_assignable_orders_mask |
int |
Máscara de estados de orden asignables (deprecado por Fleets) |
setting_auto_assign_delay_minutes |
int |
Minutos de espera antes de auto-asignar |
setting_auto_assign_prepared_mode |
bool |
Auto-asignar solo cuando la orden está preparada |
setting_auto_assign_bid_count |
int |
Cantidad de repartidores a los que se ofrece cada orden |
setting_auto_assign_bid_attempts |
int |
Rondas de oferta antes de escalar |
setting_subcategories_count |
int |
Subcategorías a mostrar en el home |
setting_branch_closing_soon_message_delay |
int\|null |
Minutos antes del cierre para avisar "cierra pronto" |
setting_two_step_verification_endpoints |
array |
Endpoints que exigen verificación en dos pasos |
setting_service_app_modifiers |
array |
Modificadores del cargo por servicio de la app |
setting_branch_invoice_tax_name |
string\|null |
Nombre del impuesto en la factura al comercio |
setting_branch_invoice_tax_prc |
float\|null |
Porcentaje del impuesto en la factura al comercio (fracción 0–1) |
setting_payout_accounts |
array\|null |
Cuentas de payout de la company |
setting_taxes |
array |
Impuestos configurados a nivel company |
setting_delivery_discount_prc |
float |
Descuento porcentual por defecto sobre el envío (fracción 0–1) |
setting_service_app_name |
string\|null |
Nombre del cargo por servicio de la app |
setting_order_min_number |
int |
Número inicial para la numeración de órdenes |
setting_last_order_dashboard |
string\|null |
Último dashboard de órdenes usado (interno) |
setting_terms_of_service |
string\|null |
Términos de servicio de la company |
setting_checkout_disclaimer |
string\|null |
Aviso a mostrar en el checkout |
setting_qr_logo |
string\|null |
Logo (base64) para los códigos QR |
setting_use_providers_balance_payouts |
bool\|null |
Pagar a repartidores usando su saldo en vez de payout |
setting_auto_provider_invoice_config |
AutoInvoiceConfig |
Configuración de facturación automática a repartidores |
setting_auto_branch_invoice_config |
AutoInvoiceConfig |
Configuración de facturación automática a comercios |
setting_google_account_json |
array\|null |
Credenciales de la cuenta de servicio de Google |
setting_bancamiga_settings |
array\|null |
Configuración de la integración Bancamiga |
setting_bancamiga_tokens |
array\|null |
Tokens de la integración Bancamiga |
setting_optimal_route_settings |
OptimalRouteSettings\|null |
Configuración de optimización de rutas |
setting_linked_servers |
array\|null |
Servidores vinculados (integraciones entre instancias) |
setting_hidden_status_mask |
int |
Máscara de estados de orden ocultos en los listados |
setting_is_full_verification_required |
bool |
Exige verificación completa de la cuenta antes de operar |
setting_is_verification_required |
bool |
Exige verificación de la cuenta antes de operar |
setting_cancel_on_payment_failure |
bool |
Cancela la orden automáticamente si falla el pago |
setting_default_promoted_banner |
string\|null |
Banner promocionado por defecto |
setting_disable_reports |
bool |
Deshabilita los reportes |
setting_sms_enabled |
bool |
Envío de SMS habilitado |
setting_sms_default_provider |
string\|null |
Proveedor de SMS por defecto |
setting_sms_login_provider |
string\|null |
Proveedor de SMS para el login |
setting_sms_providers |
array |
Configuración de los proveedores de SMS |
setting_sms_notifications_enabled |
bool |
Notificaciones por SMS habilitadas |
setting_sms_expiration_in_minutes |
int |
Vigencia del código SMS (min) |
setting_sms_cooldown_in_seconds |
int |
Espera entre envíos de SMS (s) |
setting_sms_enabled_for_clients_tracking |
bool |
SMS de seguimiento al cliente habilitados |
setting_first_purchase_bonus_e2 |
int |
Bono de saldo por la primera compra (× 100) |
setting_system_expiration_hours |
int |
Horas tras las que el sistema expira una orden |
setting_disable_payment_emails |
bool |
Deshabilita los correos de pago |
setting_directions_api |
string\|null |
Proveedor del servicio de rutas |
setting_directions_key |
string\|null |
API key del servicio de rutas |
setting_directions_url |
string\|null |
URL del servicio de rutas |
setting_email_templates_dir |
string\|null |
Directorio de plantillas de correo (interno) |
setting_unidigital_settings |
UnidigitalSettings |
Configuración de la integración Unidigital |
setting_unidigital_config |
UnidigitalConfig |
Config de la integración Unidigital |
setting_braze_settings |
BrazeSettings |
Configuración de la integración Braze |
setting_sypago_settings |
SyPagoSettings\|null |
Configuración de la integración SyPago |
setting_delivery_actions |
DeliveryActions |
Acciones de entrega habilitadas / su orden |
setting_syspago_token |
string\|null |
Token de SyPago |
setting_hot_tag_days |
int\|null |
Ventana de días para calcular el tag $Hot (más vendidos) |
setting_hot_tag_sales |
int\|null |
Ventas mínimas para el tag $Hot |
setting_template |
string |
Plantilla de comportamiento de la company (clave visible/editable template) |
setting_linked_company_id |
int\|null |
Company vinculada (para integraciones entre companies) |
setting_legal_info |
array\|null |
Datos legales de la company |
accounts |
Account> |
Cuentas de la company |
activeBalanceModifiers |
BalanceModifier> |
|
allCurrencies |
Currency> |
|
allLogs |
ApiLog> |
|
allSettings |
CompanySetting> |
|
allowed_settings |
array |
Configuración en crudo (solo super-admin) |
available_balance_e2 |
int |
Saldo disponible de la company (× 100) |
available_for_withdrawal_balance_e2 |
int |
Saldo disponible para retiro (× 100) |
balance_e2 |
int |
Saldo total de la company (× 100) |
balanceModifiers |
BalanceModifier> |
|
balanceMovements |
BalanceMovement> |
|
branches |
Branch> |
Sucursales de la company |
cancellationReasons |
CancellationReason> |
|
categories |
Category> |
|
countries |
Country> |
|
currencies |
Currency> |
Monedas soportadas por la company |
deliveryFees |
DeliveryFee> |
|
editable_settings |
array |
Configuración que un administrador puede modificar |
email_for_mails |
string |
Email desde el que se envían los correos de la company |
forms |
Form> |
Formularios de pago manual de la company |
geofences |
BranchGeofence> |
Geocercas de cobertura de la company |
goods |
Good> |
|
invoices |
Invoice> |
|
lastBalanceMovement |
BalanceMovement\|null |
|
locked_for_withdrawal_balance_e2 |
int |
Saldo bloqueado para retiro (× 100) |
logs |
ApiLog> |
|
orderedGoods |
OrderedGood> |
|
orders |
Order> |
|
paymentMethods |
PaymentMethod> |
Pasarelas de pago configuradas |
payments |
Payment> |
|
pendingActions |
PendingAction> |
Acciones pendientes de configuración |
properties |
Property> |
|
providersWithAccess |
Provider> |
|
settings |
array |
Configuración y features de la company (ver "Configuración") |
template |
CompanyTemplate |
Plantilla de comportamiento de la company (según settings.template) |
tokens |
Collection<int, AccessToken> |
|
workSchedules |
WorkSchedule> |
{
"id": 116,
"name": "Zupper by Ridery",
"email": "noreply@dondemand.io",
"domain": "panel-dev",
"custom_domain": "dondemand.io",
"expires_at": "2056-05-02 12:37:54",
"extension_days": 0,
"options": 1265637777,
"plan": 2147483647,
"enabled": true,
"strings_json": {
"strings": [],
"version": 1
},
"styles_json": {
"styles": {
"color_primary": "/docs/3/company#070000",
"color_accent": "/docs/3/company#070000",
"company_logo": "https://dondemand-dev.sfo3.cdn.digitaloceanspaces.com/companies/69/logo/logo_116_1759503332.png",
"company_logo_inv": "https://dondemand-dev.sfo3.cdn.digitaloceanspaces.com/companies/69/logo/logo_inv_116_1759634617.png"
},
"version": 52
},
"default_iso_lang": "es",
"created_at": "2020-04-20 15:24:38",
"updated_at": "2026-05-04 16:00:40",
"deleted_at": null,
"country_iso": "ve",
"time_zone_offset": "-04:00",
"direct_order_prefix": null,
"can_providers_pick_deliveries_from_pool": true,
"can_providers_confirm_deliveries_from_clients": false,
"can_clients_pick_providers_for_deliveries": false,
"can_clients_choose_deliveries_after_provider_confirmation": false,
"can_providers_confirm_deliveries_from_admins": true,
"can_admins_choose_deliveries_after_provider_confirmation": false,
"enable_delivery_orders_confirmation_by_admins_before_payment": false,
"can_providers_forfeit_from_assigned_deliveries": true,
"enable_pickups": true,
"disable_deliveries": false,
"disable_deliveries_scheduling": false,
"enable_bot_for_deliveries": true,
"can_providers_pick_services_from_pool": true,
"can_providers_confirm_services_from_clients": false,
"can_clients_pick_providers_for_services": false,
"can_clients_choose_services_after_provider_confirmation": false,
"can_providers_confirm_services_from_admins": false,
"can_admins_choose_services_after_provider_confirmation": false,
"enable_service_orders_confirmation_by_admins_before_payment": false,
"can_providers_forfeit_from_assigned_services": false,
"enable_services_on_branch_location": true,
"disable_services_on_client_location": true,
"disable_services_scheduling": true,
"enable_bot_for_services": false,
"enable_pod_code": true,
"enable_pod_pictures": true,
"enable_pod_forms": false,
"enable_pod_signature": true,
"enabled_pods": 11,
"enable_bot_for_shoppers": true,
"settings": {
"uid": "J505728482",
"slogan": "Powered by DonDemand",
"pay_in_store": true,
"enable_invoices": true,
"enable_multi_providers": false,
"enable_phone_login": true,
"enable_coupons": true,
"contact_phone": "+584148440652",
"contact_phone_whatsapp": "+584141942279",
"disable_balance": false,
"is_marketplace": true,
"template": "marketplace",
"linked_company_id": null
}
}
Crear compañía
Da de alta un tenant nuevo: crea la Company (con su domain, opciones y settings
iniciales), la cuenta Account y el Admin propietario, y dispara la creación
del registro DNS. Devuelve la company con owner y un token de onboarding (TTL corto).
Si se envía company_id, la nueva company queda vinculada a esa company padre (plantilla
hija, linked_company_id, vencimiento a 100 años); solo se permite si el usuario
autenticado tiene acceso a esa company.
En entornos que no son de producción se agrega el sufijo -dev al domain.
{info} La autenticación es opcional: se puede llamar sin sesión para el auto-registro.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /companies |
N/A |
| Código | HTTP | Cuándo ocurre |
|---|---|---|
ER400 |
400 | Se envió company_id de una company a la que el usuario no tiene acceso. |
{info} Soporta: Filters Carga dinámica Paginación
Listar compañías
Devuelve el listado paginado de Company. Con el parámetro company_id filtra a las
companies vinculadas a esa company padre (por el setting linked_company_id). Endpoint de
administración; el llamador solo ve las companies a las que tiene acceso.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies |
Authorization |
Devuelve el resumen de métricas de la Company para el panel: totales de órdenes,
ingresos, clientes y demás indicadores calculados por CompanyDashboardStats. Requiere que
el usuario autenticado tenga acceso a la company.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/dashboard-stats |
Authorization |
Devuelve editable_settings de la Company: el objeto con las claves de
CompanySetting que un administrador puede modificar (PATCH settings), ya tipadas y
en formato legible.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/settings |
Authorization |
{info} Soporta: Carga dinámica
Devuelve la Company identificada por su id o por su domain, incluyendo sus
monedas. Es el endpoint que las apps usan al arrancar para cargar la configuración pública
del tenant.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/domain/{domain} |
N/A |
{
"updated_at": "date"
}
{info} Soporta: Carga dinámica
Devuelve la Company identificada por su id o por su domain, incluyendo sus
monedas. Es el endpoint que las apps usan al arrancar para cargar la configuración pública
del tenant.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/domain/{domain} |
N/A |
{
"updated_at": "date"
}
Devuelve { terms_of_service } con el texto de los términos de servicio configurados para
la Company (setting terms_of_service). Endpoint público.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/terms-of-service |
N/A |
Devuelve la hora actual en la zona horaria de la Company (o de la Branch si
se pasa branchId): company_time es el inicio del día local expresado en UTC,
local_time la hora local y server_time la hora del servidor. Lo usan las apps para
alinear horarios de apertura y programación.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/branches/{branchId}/day-time |
N/A |
{
"updated_at": "date"
}
Devuelve la hora actual en la zona horaria de la Company (o de la Branch si
se pasa branchId): company_time es el inicio del día local expresado en UTC,
local_time la hora local y server_time la hora del servidor. Lo usan las apps para
alinear horarios de apertura y programación.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/branches/{branchId}/day-time |
N/A |
{
"updated_at": "date"
}
Fija expires_at de la Company y, opcionalmente, extension_days. Recalcula
enabled: la company queda habilitada solo si expires_at + extension_days está en el
futuro. Pensado para administración de planes y renovaciones.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /companies/{companyId}/set-expiration |
Authorization |
{
"expires_at": "required|date",
"extension_days": "nullable|integer|min:0"
}
Modifica los datos de la Company: name, email, custom_domain, options,
country_iso, default_iso_lang, strings_json, custom_json, time_zone_offset y el
prefijo de órdenes directas. Las settings (setting_*) no se editan aquí, sino por
PATCH settings; los estilos, por POST styles.
{info} Solo un super-admin puede tocar campos protegidos.
folder_namenunca es editable.
| Método | URI | Cabeceras |
|---|---|---|
| PATCH | /companies/{companyId} |
Authorization |
Modifica las settings de la Company. Solo se aplican las claves incluidas en
CompanySetting::editableKeys(); el resto se ignora. Acepta el cuerpo en formato legible
(se normaliza internamente) y algunos campos como archivo (default_promoted_banner).
service_app_modifiers y sms_providers se validan y ordenan como objetos. Devuelve
editable_settings ya actualizado. Disponible por PATCH y por POST.
| Método | URI | Cabeceras |
|---|---|---|
| PATCH | /companies/{companyId}/settings |
Authorization |
Modifica las settings de la Company. Solo se aplican las claves incluidas en
CompanySetting::editableKeys(); el resto se ignora. Acepta el cuerpo en formato legible
(se normaliza internamente) y algunos campos como archivo (default_promoted_banner).
service_app_modifiers y sms_providers se validan y ordenan como objetos. Devuelve
editable_settings ya actualizado. Disponible por PATCH y por POST.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /companies/{companyId}/settings |
Authorization |
Eliminar compañía
Hace un soft delete de la Company (marca deleted_at). La company deja de operar,
pero sus datos se conservan y puede restaurarse con el endpoint de restauración.
| Método | URI | Cabeceras |
|---|---|---|
| DELETE | /companies/{companyId} |
Authorization |
Restaurar compañía
Revierte el soft delete de una Company (limpia deleted_at). Solo aplica a
companies que están en la papelera.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /companies/{companyId}/restore |
Authorization |
| Código | HTTP | Cuándo ocurre |
|---|---|---|
ER015 |
400 | No se pudo restaurar la company. |
{info} Soporta: Carga dinámica
Dado un host (dominio propio, subdominio de la plataforma o dominio legacy), determina a qué
entidad corresponde y devuelve { type, object }, donde type es company, branch_group
o branch. Resuelve también hosts de panel (panel., dashboard., admin.) y registros
DNS personalizados. Lo usan las apps y el panel para saber en qué tenant están.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /domains/{domainToResolve} |
N/A |
| Código | HTTP | Cuándo ocurre |
|---|---|---|
EA110 |
400 | Ningún tenant coincide con el host indicado. |
EA111 |
400 | El host resolvió una company pero no la sucursal esperada por el prefijo. |
EA112 |
400 | El prefijo (sucursal o grupo) no pertenece al dominio personalizado indicado. |
{info} Soporta: Carga dinámica
| Método | URI | Cabeceras |
|---|---|---|
| GET | /branches/domain/{domainName} |
N/A |
{info} Soporta: Carga dinámica
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/branch-groups/domain/{domainName} |
N/A |
Actualiza el tema visual de la Company dentro de styles_json: colores
(color_primary, color_accent) y logos (company_logo, company_logo_inv, subidos como
archivos). Los logos anteriores se borran del almacenamiento al reemplazarlos.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /companies/{companyId}/styles |
Authorization |
{
"color_primary": {
"string": true,
"regex": "/^#(?:[0-9a-fA-F]{3}){1,2}$/"
},
"color_accent": {
"string": true,
"regex": "/^#(?:[0-9a-fA-F]{3}){1,2}$/"
},
"company_logo": "image|mimes:jpeg,png|max:1024",
"company_logo_inv": "image|mimes:jpeg,png|max:1024"
}
Devuelve los bancos activos para el país de la Company (country_iso), con su
code, name e imágenes. filter acota por tipo de operación soportada
(mobile_payment, transfer, ci); image_mode controla qué imágenes se devuelven.
Se usa al configurar métodos de pago manuales / pago móvil.
{info} Si el país de la company no tiene configuración bancaria cargada, responde 404.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/banks |
N/A |
{
"image_mode": "string|in:list,square,all",
"filter": "string|in:mobile_payment,transfer,ci"
}
Devuelve allSettings: todas las filas CompanySetting de la Company tal
como están en base de datos (clave y valor sin procesar), incluidas las internas.
{warning} Solo super-admin.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/allowed-settings |
Authorization |
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/branches/{branchId}/calculate-fees |
Authorization |
{
"latitude_e6": "required|integer|between:-90000000,90000000",
"longitude_e6": "required|integer|between:-180000000,180000000",
"subtotal_e2": "integer|min:0",
"subtotal_full_e2": "integer|min:0",
"base_price_e2": "integer|min:0",
"balance_e2": "integer",
"selected_delivery_id": "nullable|integer",
"payment_method_type": "string|in:gateway,form,post-payment,balance",
"payment_method_id": "nullable",
"payment_method_currency_iso": "string|min:3|max:8",
"coupon_id": "nullable|integer",
"is_gift": "nullable|boolean",
"client_id": "integer",
"items": [
{
"good_id": "required|integer|exists:goods,id",
"quantity": "required|integer|min:1",
"provider_id": "integer",
"properties": [
{
"property_id": "required|integer",
"value": "required|string"
}
]
}
],
"goods": [
"integer"
],
"good_ids": {
"string": true,
"regex": "/^[0-9]+(,[0-9]+)*$/"
},
"time": {
"string": true,
"regex": "/^([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
},
"datetime": "date|after:now",
"use_local_tz": "boolean"
}
| Método | URI | Cabeceras |
|---|---|---|
| POST | /companies/{companyId}/branches/{branchId}/calculate-fees |
Authorization |
{
"latitude_e6": "required|integer|between:-90000000,90000000",
"longitude_e6": "required|integer|between:-180000000,180000000",
"subtotal_e2": "integer|min:0",
"subtotal_full_e2": "integer|min:0",
"base_price_e2": "integer|min:0",
"balance_e2": "integer",
"selected_delivery_id": "nullable|integer",
"payment_method_type": "string|in:gateway,form,post-payment,balance",
"payment_method_id": "nullable",
"payment_method_currency_iso": "string|min:3|max:8",
"coupon_id": "nullable|integer",
"is_gift": "nullable|boolean",
"client_id": "integer",
"items": [
{
"good_id": "required|integer|exists:goods,id",
"quantity": "required|integer|min:1",
"provider_id": "integer",
"properties": [
{
"property_id": "required|integer",
"value": "required|string"
}
]
}
],
"goods": [
"integer"
],
"good_ids": {
"string": true,
"regex": "/^[0-9]+(,[0-9]+)*$/"
},
"time": {
"string": true,
"regex": "/^([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
},
"datetime": "date|after:now",
"use_local_tz": "boolean"
}
| Método | URI | Cabeceras |
|---|---|---|
| POST | /companies/{companyId}/branches/{branch}/calculate-fees-for-all |
Authorization |
{
"latitude_e6": "required|integer|between:-90000000,90000000",
"longitude_e6": "required|integer|between:-180000000,180000000",
"subtotal_e2": "integer|min:0",
"subtotal_full_e2": "integer|min:0",
"base_price_e2": "integer|min:0",
"balance_e2": "integer",
"selected_delivery_id": "nullable|integer",
"payment_method_type": "string|in:gateway,form,post-payment,balance",
"payment_method_id": "nullable",
"payment_method_currency_iso": "string|min:3|max:8",
"coupon_id": "nullable|integer",
"is_gift": "nullable|boolean",
"client_id": "integer",
"items": [
{
"good_id": "required|integer|exists:goods,id",
"quantity": "required|integer|min:1",
"provider_id": "integer",
"properties": [
{
"property_id": "required|integer",
"value": "required|string"
}
]
}
],
"goods": [
"integer"
],
"good_ids": {
"string": true,
"regex": "/^[0-9]+(,[0-9]+)*$/"
},
"time": {
"string": true,
"regex": "/^([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
},
"datetime": "date|after:now",
"use_local_tz": "boolean"
}
{info} Soporta: Paginación Filters Carga dinámica
Recorre las Order completadas de la Company y devuelve, por orden y en
totales, el desglose de ganancias: cargo por servicio de la app, impuestos al comercio,
envío, comisión de repartidores, descuentos y la asunción de descuento por parte de la
company. Todos los montos en centavos (*_e2). Admite los filtros estándar (completed_at,
rangos, etc.).
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/earnings-report |
N/A |
{info} Soporta: Paginación Filters Carga dinámica
Devuelve los Payment confirmados de la Company agregados por tipo de pago y
por estado de la orden (completed / not_completed): cantidad de pagos, total cobrado y
comisión (payment_tax_e2), con los montos también formateados en la moneda local.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/payments-report |
N/A |
Recibe un archivo Excel con movimientos de Bancamiga, lo guarda y encola una
ScheduledTask (TYPE_BANCAMIGA_REPORT) que concilia esos movimientos contra los
pagos de la Company. Responde con la tarea creada (201); el resultado se consulta
luego por el endpoint de tareas.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /companies/{companyId}/bancamiga-report |
N/A |
{
"file": "required|file|mimes:xlsx,xlsm,xltx,xltm,xls,xlt,ods,ots,slk,xml,gnumeric,htm,html,csv,tsv,txt",
"csv_settings": {
"delimiter": "string",
"enclosure": "string",
"line_ending": "string",
"use_bom": "boolean",
"include_separator_line": "boolean",
"excel_compatibility": "boolean",
"escape_character": "string",
"contiguous": "boolean",
"input_encoding": "string",
"output_encoding": "string"
}
}
Recibe un archivo Excel con movimientos de punto de venta BNC, lo guarda y encola una
ScheduledTask (TYPE_BNC_POS_REPORT) que los concilia contra los pagos de la
Company. Responde con la tarea creada (201); el resultado se consulta luego por el
endpoint de tareas.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /companies/{companyId}/bnc-pos-report |
N/A |
{
"file": "required|file|mimes:xlsx,xlsm,xltx,xltm,xls,xlt,ods,ots,slk,xml,gnumeric,htm,html,csv,tsv,txt",
"csv_settings": {
"delimiter": "string",
"enclosure": "string",
"line_ending": "string",
"use_bom": "boolean",
"include_separator_line": "boolean",
"excel_compatibility": "boolean",
"escape_character": "string",
"contiguous": "boolean",
"input_encoding": "string",
"output_encoding": "string"
}
}
accounts HasMany AccountactiveBalanceModifiers HasMany BalanceModifierallCurrencies HasMany CurrencyallLogs HasMany ApiLogbalanceModifiers HasMany BalanceModifierbalanceMovements HasMany BalanceMovementbranches HasMany BranchcancellationReasons HasMany CancellationReasoncategories HasMany Categorycountries HasMany Countrycurrencies HasMany CurrencydeliveryFees HasMany DeliveryFeeforms HasMany Formgeofences HasMany BranchGeofencegoods HasMany Goodinvoices HasMany InvoicelastBalanceMovement HasOne BalanceMovementlogs HasMany ApiLogorderedGoods HasMany OrderedGoodorders HasMany OrderpaymentMethods HasMany PaymentMethodpayments HasMany PaymentpendingActions HasMany PendingActionproperties HasMany PropertyprovidersWithAccess HasMany Providertokens HasMany AccessTokenworkSchedules HasMany WorkSchedule