Un proveedor de servicios (típicamente una empresa de flotas) que pertenece a un owner (una
Company o una Branch). Agrupa las Fleet y, a través de ellas, las
FleetAssociation. Tiene identidad visible (public_name, logo_url, color) además
de un internal_name.
submit — marca submitted_at; requiere public_name.approve — marca approved_at; requiere estar enviado y con public_name.refuse — limpia submitted_at (vuelve a borrador).set-enabled / set-disabled — controlan is_enabled, de forma independiente al flujo de
aprobación.approved_at no nulo) queda disponible como "adjuntable" para
cualquier company o branch, no solo para su owner.ES009).owner_type / owner_id están en $hidden.| Atributo | Tipo | Descripción |
|---|---|---|
id |
int |
|
internal_name |
string |
Nombre interno (no visible al público) |
public_name |
string\|null |
Nombre público del proveedor |
is_enabled |
bool |
Si el proveedor está activo |
submitted_at |
datetime\|null |
Momento de envío a revisión (null si no enviado) |
approved_at |
datetime\|null |
Momento de aprobación (null si no aprobado) |
owner_type |
string |
Tipo del dueño polimórfico (Company o Branch); oculto |
owner_id |
int |
Id del dueño; oculto |
created_at |
datetime\|null |
|
updated_at |
datetime\|null |
|
logo_url |
string |
URL del logo del proveedor |
color |
string\|null |
Color de marca del proveedor |
allLogs |
ApiLog> |
|
fleetAssociations |
FleetAssociation> |
Asociaciones de flota del proveedor (a través de sus flotas) |
fleets |
Fleet> |
Flotas del proveedor |
logs |
ApiLog> |
|
owner |
Model\|Eloquent |
Dueño del proveedor (Company o Branch) |
resources |
UploadedResource> |
Archivos subidos del proveedor (logo) |
{
"id": 1,
"internal_name": "Delivery Global",
"public_name": "Simgulary",
"is_enabled": true,
"submitted_at": null,
"approved_at": null,
"created_at": "2023-07-07 13:36:34",
"updated_at": "2025-04-02 14:56:16",
"logo_url": "http://127.0.0.1:8000/storage/static/default/branch_logo.png",
"color": null
}
{info} Soporta: Paginación Filters Carga dinámica
Listar proveedores de servicio
Listado paginado global de ServiceSupplier (uso administrativo).
| Método | URI | Cabeceras |
|---|---|---|
| GET | /service-suppliers |
Authorization |
{info} Soporta: Carga dinámica
Mostrar proveedor de servicio
Devuelve el ServiceSupplier por su id.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /service-suppliers/{serviceSupplierId} |
N/A |
Actualizar proveedor de servicio
Modifica internal_name, public_name y color del ServiceSupplier. Si ya está
enviado a revisión, public_name no puede quedar vacío.
| Método | URI | Cabeceras |
|---|---|---|
| PATCH | /service-suppliers/{serviceSupplierId} |
Authorization |
{
"internal_name": "string|max:64",
"public_name": "string|max:32",
"color": "nullable|string|regex:/^#[0-9a-fA-F]{6}$/"
}
| Código | HTTP | Cuándo ocurre |
|---|---|---|
ES003 |
400 | Falta public_name (con el proveedor ya enviado a revisión). |
Eliminar proveedor de servicio
Borra el ServiceSupplier.
| Método | URI | Cabeceras |
|---|---|---|
| DELETE | /service-suppliers/{serviceSupplierId} |
Authorization |
| Código | HTTP | Cuándo ocurre |
|---|---|---|
ES009 |
400 | El proveedor tiene flotas asociadas. |
{info} Soporta: Paginación Filters Carga dinámica
ServiceSupplier que ya tienen al menos una FleetAssociation con la Company.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/service-suppliers |
N/A |
{info} Soporta: Paginación Filters Carga dinámica
Igual que el listado de asociados de la compañía, para la Branch.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /branches/{branchId}/service-suppliers |
N/A |
{info} Soporta: Paginación Filters Carga dinámica
ServiceSupplier que la Company puede adjuntar: los suyos propios más todos
los aprobados. Con owning se limita a los propios.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/service-suppliers/allowed |
Authorization |
{info} Soporta: Paginación Filters Carga dinámica
Igual que el listado adjuntable de la compañía, para la Branch (incluye los de su company).
| Método | URI | Cabeceras |
|---|---|---|
| GET | /branches/{branchId}/service-suppliers/allowed |
Authorization |
Crea un ServiceSupplier con la Company como owner. Nace deshabilitado y
sin enviar a revisión.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /companies/{companyId}/service-suppliers |
Authorization |
{
"internal_name": "required|string|max:64",
"public_name": "nullable|string|max:32",
"color": "nullable|string|regex:/^#[0-9a-fA-F]{6}$/"
}
Igual que la versión para compañía, pero con la Branch como owner.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /branches/{branchId}/service-suppliers |
Authorization |
{
"internal_name": "required|string|max:64",
"public_name": "nullable|string|max:32",
"color": "nullable|string|regex:/^#[0-9a-fA-F]{6}$/"
}
Sube el logo (image) del ServiceSupplier. Solo antes de enviarlo a revisión y con
public_name ya definido.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /service-suppliers/{serviceSupplierId}/upload-logo |
Authorization |
{
"image": "required|image|mimes:jpeg,png,bmp|max:8192|dimensions:min_width=512,ratio=1/1"
}
| Código | HTTP | Cuándo ocurre |
|---|---|---|
ES002 |
400 | El proveedor ya fue enviado a revisión. |
ES003 |
400 | Falta public_name. |
Marca submitted_at en el ServiceSupplier. Requiere public_name y no haber sido
enviado ya.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /service-suppliers/{serviceSupplierId}/submit |
Authorization |
| Código | HTTP | Cuándo ocurre |
|---|---|---|
ES002 |
400 | El proveedor ya fue enviado a revisión. |
ES003 |
400 | Falta public_name. |
Marca approved_at en el ServiceSupplier. Requiere estar enviado a revisión y tener
public_name. Un proveedor aprobado queda disponible como "adjuntable" para cualquier
company o branch.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /service-suppliers/{serviceSupplierId}/approve |
Authorization |
| Código | HTTP | Cuándo ocurre |
|---|---|---|
ES001 |
400 | El proveedor no ha sido enviado a revisión. |
ES006 |
400 | El proveedor ya está aprobado. |
ES003 |
400 | Falta public_name. |
Limpia submitted_at: el ServiceSupplier vuelve a borrador y su dueño puede
corregirlo y reenviarlo. Requiere estar enviado a revisión y no aprobado.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /service-suppliers/{serviceSupplierId}/refuse |
Authorization |
| Código | HTTP | Cuándo ocurre |
|---|---|---|
ES001 |
400 | El proveedor no ha sido enviado a revisión. |
ES006 |
400 | El proveedor ya está aprobado. |
Pone is_enabled = true en el ServiceSupplier.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /service-suppliers/{serviceSupplierId}/set-enabled |
Authorization |
| Código | HTTP | Cuándo ocurre |
|---|---|---|
ES008 |
400 | El proveedor ya está habilitado. |
Pone is_enabled = false en el ServiceSupplier.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /service-suppliers/{serviceSupplierId}/set-disabled |
Authorization |
| Código | HTTP | Cuándo ocurre |
|---|---|---|
ES007 |
400 | El proveedor no está habilitado. |
allLogs HasMany ApiLogfleetAssociations HasMany FleetAssociationfleets HasMany Fleetlogs HasMany ApiLogowner BelongsTo Company