Branch


Representa a una sucursal de una Company. Un Branch es un comercio que puede vender productos o servicios y posee sus propias configuraciones.

  • enabled: Indica si el comercio está habilitado
  • in_service: Indica el estado actual de servicio. Si es false entonces el comercio está cerrado.
  • has_custom_settings: Indica si las configuraciones son personalizadas. Si es false, se heredan del company.
  • branch_group_id: Id del grupo de comercio al cual pertenece.
  • is_visible: Indica si se debe mostrar en las apps.
  • eta: Tiempo estimado de entrega (en minutos).
  • promo_id: Promoción actual (si aplica).
  • promo_info: Etiqueta de Promoción.
    • Si empieza con ! se debe mostrar el resto del texto tal cual: promoInfo.substring(1).
    • Si empieza con % indica un monto en porcentaje de descuento: ${promoInfo.substring(1)}$% Off.
    • Si empieza con < Se debe agregar el prefijo Hasta, por ejemplo: Hasta ${promoInfo.substring(1)$ de descuento}.
    • De lo contrario, se trata de un monto fijo, ejemplo: 10.00 se debe mostrar como -10.00$
  • rating_e2: Rating actual del comercio. Se debe dividir entre 100 para obtener el valor real.
  • rating_count: Calificaciones totales obtenidas.
  • settings.uid: Identificador Fiscal del comercio.
  • settings.max_scheduling_days: Días máximos permitidos para programar una orden.
  • settings.pay_in_store: Indica si el comercio permite pagos en tienda (órdenes pickup).
  • settings.enable_work_schedules: Indica si tiene horarios de trabajo configurados para restringir pedidos.
  • settings.auto_sync_work_schedules: El comercio será abierto/cerrado por el sistema según los horarios.
  • settings.order_expiration_minutes: Tiempo de expiración de una orden no pagada (en minutos).
  • settings.service_fee_flat_e2: Tarifa de servicio (tarifa fija), ejemplo: +1$ por orden.
  • settings.service_fee_prc: Tarifa de servicio (tarifa porcentual), ejemplo: +10% por orden.
  • settings.min_checkout_price_e2: Monto mínimo de compra.
  • settings.pool_mode: Pool por defecto para realizar entregas. company indica que la compañía hace la entrega, branch indica que el comercio hace sus propios envíos.
  • settings.checkout_disclaimer: Disclaimer para mostrar en el checkout.
  • settings.allow_offline_orders: El comercio permite recibir órdenes aún cuando está cerrado.
  • eta_info: Información por IA donde se muestra el tiempo probable de entrega según los artículos y hora del pedido.
  • is_market: Indica que el comercio se debe tratar como un mercado (gran cantidad de sku).
  • is_featured: El comercio está destacado.
  • is_branch_closing_soon: El comercio debe mostrar un mensaje indicando que está a punto de cerrar.
  • in_service_until: Indica la hora de cierre cuando un comercio está a punto de cerrar.
  • branch_group.name: Nombre general del comercio.
  • branch_group.enable_shoppers: El comercio tiene un shopper para hacer los mercados.
  • branch_group.is_digital: Los productos de este comercio son digitales (no son productos físicos).
  • branch_group.settings.is_venture: Se trata de un emprendimiento.
  • branch_group.settings.is_food_vendor: Vende comida preparada al momento.
  • branch_group.settings.special_instructions_placeholder: Placeholder para instrucciones especiales.

Modelo Branch

Ver Json

Atributo Tipo Descripción
id int -
name string -
enabled bool -
in_service bool -
latitude_e6 int -
longitude_e6 int -
banner_url string -
phone string\|null -
time_zone_offset string -
options int -
has_custom_settings bool -
code int -
created_at datetime\|null -
updated_at datetime\|null -
branch_group_id int -
is_visible bool -
rating_e2 int -
rating_sum int -
rating_count int -
domain string\|null -
extensions array -
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)
description string\|null -
eta_info array -
group_rating_count int\|null -
group_rating_e2 int\|null -
group_rating_sum int\|null -
in_order int\|null -
is_branch_closing_soon bool -
is_featured bool\|null -
is_market bool\|null -
is_too_busy bool -
local_currency Currency\|null -
logo_alt_url string\|null -
logo_url string\|null -
options_info array -
settings array -

Insertar Branch

Insertar Branch de BranchGroup

Método URI Cabeceras
POST /companies/{companyId}/branch-groups/{branchGroupId}/branches Authorization
{
    "name": "required|max:112|string",
    "city_id": "nullable|integer|exists:cities,id",
    "location_google_maps_link": "max:255|url",
    "address": "required_without:location_google_maps_link|string|max:255",
    "latitude_e6": "required_without:location_google_maps_link|integer|between:-90000000,90000000",
    "longitude_e6": "required_without:location_google_maps_link|integer|between:-180000000,180000000",
    "phone": "required|string",
    "eta": "string",
    "internal_code": "string|max:16",
    "domain": "required|max:32|domain",
    "time_zone_offset": {
        "required": true,
        "string": true,
        "regex": "/^[\+\-]([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
    }
}

Listar Branch

{info} Soporta: Paginación Filters

Método URI Cabeceras
GET /companies/{companyId}/branches N/A

Muestra un Listado de Branches cercanos al punto especificado.

Método URI Cabeceras
GET /companies/{companyId}/branches/by-sections N/A
{
    "latitude_e6": "required|integer|between:-90000000,90000000",
    "longitude_e6": "required|integer|between:-180000000,180000000",
    "distance_in_meters": "integer"
}

Listar Branch de BranchGroup

{info} Soporta: Paginación Filters Carga dinámica

Método URI Cabeceras
GET /companies/{companyId}/branch-groups/{branchGroupId}/branches N/A

Listar Setting

Método URI Cabeceras
GET /companies/{companyId}/branches/{branchId}/settings Authorization

Listar Branch de BranchCategory

{info} Soporta: Paginación Filters

Método URI Cabeceras
GET /companies/{companyId}/branch-categories/{branchCategoryId}/branches N/A

Mostrar Branch

{info} Soporta: Carga dinámica

Método URI Cabeceras
GET /companies/{companyId}/branches/{branchId} N/A
{
    "latitude_e6": "integer|between:-90000000,90000000",
    "longitude_e6": "integer|between:-180000000,180000000"
}

Actualizar Branch

Método URI Cabeceras
PATCH /companies/{companyId}/branches/{branchId} Authorization
{
    "name": "max:112|string",
    "location_google_maps_link": "max:255|url",
    "latitude_e6": "integer|between:-90000000,90000000",
    "longitude_e6": "integer|between:-180000000,180000000",
    "address": "string|max:255",
    "phone": "string",
    "eta": "string",
    "internal_code": "string|max:16",
    "time_zone_offset": {
        "string": true,
        "regex": "/^[\+\-]([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
    },
    "options": "integer",
    "has_custom_settings": "boolean",
    "domain": "max:32|domain",
    "city_id": "nullable|integer|exists:cities,id"
}

Actualizar Setting

Método URI Cabeceras
PATCH /companies/{companyId}/branches/{branchId}/settings Authorization
{
    "uid": "string|max:64",
    "slogan": "string|max:80",
    "max_scheduling_days": "integer|min:0|max:365",
    "scheduling_delay_minutes": "integer|min:0",
    "enable_work_schedules": "boolean",
    "auto_sync_work_schedules": "boolean",
    "pay_in_store": "nullable|boolean",
    "order_expiration_minutes": "integer|min:5",
    "service_fee_name": "nullable|string|max:40",
    "service_fee_flat_e2": "integer|min:0",
    "human_service_fee_flat_e2": "numeric|min:0.0",
    "service_fee_prc": "numeric|between:0.0000,1.0000",
    "human_service_fee_prc": "numeric|between:0.00,100.00",
    "order_tax_flat_e2": "integer|min:0",
    "human_order_tax_flat_e2": "numeric|min:0.0",
    "order_tax_prc": "numeric|between:0.0000,1.0000",
    "human_order_tax_prc": "numeric|between:0.00,100.00",
    "shopper_fee_e2": "integer|min:0",
    "shopper_assign_distance": "integer|min:100",
    "human_shopper_fee_e2": "numeric|min:0.0",
    "shopper_fee_prc": "numeric|between:0.0000,1.0000",
    "human_shopper_fee_prc": "numeric|between:0.00,100.00",
    "add_rating_sum": "integer|min:0",
    "add_rating_count": "integer|min:0",
    "min_checkout_price_e2": "integer|min:0",
    "human_min_checkout_price_e2": "numeric|min:0.0",
    "import_config": "array",
    "terms_of_service": "string",
    "max_simultaneous_deliveries": "integer|min:0|max:20",
    "auto_eta_calc": "boolean",
    "checkout_disclaimer": "string",
    "allow_offline_orders": "boolean",
    "allow_timetable_skipping": "boolean",
    "inventory_reminder_delay": "integer|min:0|max:720",
    "service_reminder_delay": "integer|min:0|max:60",
    "use_company_service_fees": "boolean",
    "force_branch_service_fees": "boolean",
    "system_expiration_hours": "nullable|integer|min:0",
    "orders_driver_assigning_in_mins": "integer|min:0",
    "is_pool_automatic": "boolean",
    "is_special_contributor": "boolean",
    "islr_prc": "numeric|between:0.00,100.00",
    "human_islr_prc": "numeric|between:0.00,100.00",
    "iva_retention_prc": "numeric|between:0.00,100.00",
    "human_iva_retention_prc": "numeric|between:0.00,100.00",
    "is_payment_deduction_disabled": "boolean",
    "is_digital_invoice_enabled": "boolean",
    "is_global_tax_included": "boolean",
    "payout_accounts": [
        {
            "type": "required|string|in:national_bank_account,mobile_payment",
            "document": "required_if:type,national_bank_account|required_if:type,mobile_payment|string|regex:/^[VEJGP].{7,15}$/",
            "name": "required_if:type,national_bank_account|string",
            "account": "required_if:type,national_bank_account|string|min:20",
            "bank_name": "required_if:type,national_bank_account|string|min:3|max:64",
            "bank_code": "required_if:type,mobile_payment|string|size:4",
            "phone": "required_if:type,mobile_payment|string|max:32",
            "email": "nullable|email:rfc,filter"
        }
    ],
    "auto_assign_driver_upon_payment": "boolean",
    "address_for_fiscal_docs": "nullable|string|max:160",
    "email_for_fiscal_docs": "nullable|string|email:rfc,filter",
    "legal_name_for_fiscal_docs": "nullable|string|max:255",
    "emails_for_payments": [
        {
            "email": "rfc,filter"
        }
    ],
    "mark_too_busy_until": "nullable|date",
    "auto_busy_quantity": "nullable|integer",
    "payments_mode": "string|in:company,branch,both",
    "pool_mode": "string|in:company,branch",
    "weight_rounding_mode": "string|in:ceil,floor,half_up,half_down,truncate",
    "tax_rounding_mode": "string|in:ceil,floor,half_up,half_down,truncate",
    "orders_shopper_eta_config": {
        "time_base_in_minutes": {
            "required_with": "orders_shopper_eta_config",
            "integer": true,
            "min": " 1"
        },
        "weight_base_in_kg": {
            "required_with": "orders_shopper_eta_config",
            "integer": true,
            "min": " 1"
        },
        "extra_minutes_per_10kg": {
            "required_with": "orders_shopper_eta_config",
            "integer": true,
            "min": " 1"
        }
    },
    "service_app_modifiers": [
        {
            "is_enabled": "boolean",
            "name": "required|string|max:32",
            "label": "string|max:32",
            "description": "string",
            "layer": "integer|min:0|max:255",
            "price_min_e2": "integer|min:0",
            "human_price_min_e2": "numeric|min:0.0",
            "price_max_e2": "integer",
            "human_price_max_e2": "numeric",
            "hour_beg": {
                "string": true,
                "regex": "/^([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
            },
            "hour_end": {
                "string": true,
                "regex": "/^([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
            },
            "conditions": "array",
            "payment_methods": [
                "required|string"
            ],
            "payment_currencies": [
                "required|string"
            ]
        }
    ],
    "taxes": [
        {
            "is_enabled": "boolean",
            "name": "required|string|max:32",
            "label": "string|max:32",
            "description": "string",
            "layer": "integer|min:0|max:255",
            "price_min_e2": "integer|min:0",
            "human_price_min_e2": "numeric|min:0.0",
            "price_max_e2": "integer",
            "human_price_max_e2": "numeric",
            "hour_beg": {
                "string": true,
                "regex": "/^([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
            },
            "hour_end": {
                "string": true,
                "regex": "/^([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
            },
            "conditions": "array",
            "payment_methods": [
                "required|string"
            ],
            "payment_currencies": [
                "required|string"
            ]
        }
    ]
}

Eliminar Branch

Método URI Cabeceras
DELETE /companies/{companyId}/branches/{branchId} Authorization

Restaurar Branch

Método URI Cabeceras
POST /companies/{companyId}/branches/{branchId}/restore Authorization
{
    "name": "string|max:112"
}

Acciones de Branch

Index For Map

{info} Soporta: Paginación Filters

Método URI Cabeceras
GET /companies/{companyId}/branches/all N/A

Batch

Método URI Cabeceras
POST /companies/{companyId}/branches/batch-action/{action} Authorization
{
    "ids": [
        "integer|min:1"
    ],
    "payload": ""
}

Upload Logo

Método URI Cabeceras
POST /companies/{companyId}/branches/{branchId}/upload-logo Authorization
{
    "image": "required|image|mimes:jpeg,png,bmp|max:8192|dimensions:min_width=600,ratio=1/1"
}

Upload Banner

Método URI Cabeceras
POST /companies/{companyId}/branches/{branchId}/upload-banner Authorization
{
    "image": "required|image|mimes:jpeg,png,bmp|max:8192|dimensions:min_width=868,min_height=868"
}

Set Enabled

Método URI Cabeceras
POST /companies/{companyId}/branches/{branchId}/set-enabled Authorization

Set Disabled

Método URI Cabeceras
POST /companies/{companyId}/branches/{branchId}/set-disabled Authorization

Set In Service Enabled

Método URI Cabeceras
POST /companies/{companyId}/branches/{branchId}/set-in-service-enabled Authorization

Set In Service Disabled

Método URI Cabeceras
POST /companies/{companyId}/branches/{branchId}/set-in-service-disabled Authorization

Set Featured Enabled

Método URI Cabeceras
POST /companies/{companyId}/branches/{branchId}/set-featured-enabled Authorization

Set Featured Disabled

Método URI Cabeceras
POST /companies/{companyId}/branches/{branchId}/set-featured-disabled Authorization

Set Visible

Método URI Cabeceras
POST /companies/{companyId}/branches/{branchId}/set-visible Authorization

Set Hidden

Método URI Cabeceras
POST /companies/{companyId}/branches/{branchId}/set-hidden Authorization

Index Allowed

Método URI Cabeceras
GET /companies/{companyId}/branches/{branchId}/allowed-settings Authorization

Enlaces de Branch