Good


Representa a un producto o un servicio.

Modelo Good

{
    "id": 102,
    "name": "Un producto de sucursal",
    "short_details": "n/a",
    "details": "20/04",
    "picture_urls": [
        "http://127.0.0.1:8000/storage/static/default/product_category_logo.png"
    ],
    "price_e2": 12345600,
    "type": 0,
    "rating_e2": 0,
    "rating_sum": 0,
    "rating_count": 0,
    "eta": null,
    "created_at": "2020-04-20 16:40:49",
    "updated_at": "2024-10-27 10:12:03",
    "deleted_at": null,
    "provider_fee_e2": 0,
    "provider_fee_prc": 0,
    "sku": null,
    "good_type_id": null,
    "notes_enabled": false,
    "branch_group_id": 42,
    "unit": "und",
    "max_quantity": null,
    "limit_type": null,
    "unit_config": null,
    "vertical_picture_urls": [
        "http://127.0.0.1:8000/storage/static/default/product_category_logo_portrait.jpg"
    ],
    "keywords": [],
    "eta_config_id": null,
    "weight": null,
    "is_type_service": false,
    "is_type_custom_pickup": false,
    "is_type_digital": false,
    "is_type_list": false,
    "is_combo": false,
    "is_digital_custom": false,
    "is_digital_balance": false,
    "barcodes": [],
    "label": null
}
Atributo Tipo Descripción
id int -
name string -
short_details string -
details string -
picture_urls array -
price_e2 int -
type int -
rating_e2 int -
rating_sum int -
rating_count int -
created_at datetime\|null -
updated_at datetime\|null -
provider_fee_e2 int -
provider_fee_prc float -
notes_enabled bool -
branch_group_id int\|null -
unit string -
vertical_picture_urls array -
keywords array -
barcodes array -
is_type_service bool BitMask (({@link self::type} & 0x1) !== 0)
is_type_custom_pickup bool BitMask (({@link self::type} & 0x2) !== 0)
is_type_digital bool BitMask (({@link self::type} & 0x4) !== 0)
is_type_list bool BitMask (({@link self::type} & 0x10) !== 0)
is_combo bool BitMask (({@link self::type} & 0x20) !== 0)
is_digital_custom bool BitMask (({@link self::type} & 0x100) !== 0)
is_digital_balance bool BitMask (({@link self::type} & 0x200) !== 0)
type_class int BitMask ({@link self::type} & 0x7)
digital_class int BitMask (({@link self::type} & 0xff00) >> 8)

Insertar Good

Método URI Cabeceras
POST /companies/{companyId}/goods Authorization
{
    "name": "required|string|max:80",
    "short_details": "required|string|max:64",
    "details": "required|string",
    "price_e2": "required|integer|min:0",
    "type": "required|numeric",
    "eta": "string|max:32",
    "sku": "string|max:16",
    "notes_enabled": "boolean",
    "unit": "string|max:16",
    "eta_config_id": "nullable|integer",
    "max_quantity": "integer",
    "keywords": [
        "string"
    ],
    "limit_type": {
        "string": true,
        "regex": "/^per_order|per_day|per_week|per_month|per_hours:[1-9][0-9]*$/"
    },
    "unit_config": {
        "enabled": "required_with:unit_config|boolean",
        "unit_name": "required_with:unit_config|string|min:1|max:16",
        "fraction": "required_with:unit_config|int|min:1|max:1000",
        "min_quantity": "required_with:unit_config|int|min:1",
        "step_quantity": "required_with:unit_config|int|min:1",
        "max_quantity": "required_with:unit_config|int|min:1|gte:min_quantity",
        "display_mode": "required_with:unit_config|string|in:decimal,fraction",
        "weight_per_unit": "nullable|int"
    },
    "weight": "nullable|string|max:16",
    "is_type_service": "nullable|boolean",
    "is_type_custom_pickup": "nullable|boolean",
    "is_type_digital": "nullable|boolean",
    "is_type_list": "nullable|boolean",
    "is_combo": "nullable|boolean",
    "is_digital_custom": "nullable|boolean",
    "is_digital_balance": "nullable|boolean"
}

Insertar Good de Branch

Método URI Cabeceras
POST /companies/{companyId}/branches/{branchId}/goods Authorization
{
    "name": "required|string|max:80",
    "short_details": "required|string|max:64",
    "details": "required|string",
    "price_e2": "required|integer|min:0",
    "type": "required|numeric",
    "eta": "string|max:32",
    "sku": "string|max:16",
    "notes_enabled": "boolean",
    "unit": "string|max:16",
    "eta_config_id": "nullable|integer",
    "max_quantity": "integer",
    "keywords": [
        "string"
    ],
    "limit_type": {
        "string": true,
        "regex": "/^per_order|per_day|per_week|per_month|per_hours:[1-9][0-9]*$/"
    },
    "unit_config": {
        "enabled": "required_with:unit_config|boolean",
        "unit_name": "required_with:unit_config|string|min:1|max:16",
        "fraction": "required_with:unit_config|int|min:1|max:1000",
        "min_quantity": "required_with:unit_config|int|min:1",
        "step_quantity": "required_with:unit_config|int|min:1",
        "max_quantity": "required_with:unit_config|int|min:1|gte:min_quantity",
        "display_mode": "required_with:unit_config|string|in:decimal,fraction",
        "weight_per_unit": "nullable|int"
    },
    "weight": "nullable|string|max:16",
    "is_type_service": "nullable|boolean",
    "is_type_custom_pickup": "nullable|boolean",
    "is_type_digital": "nullable|boolean",
    "is_type_list": "nullable|boolean",
    "is_combo": "nullable|boolean",
    "is_digital_custom": "nullable|boolean",
    "is_digital_balance": "nullable|boolean"
}

Insertar Good de BranchGroup

Método URI Cabeceras
POST /companies/{companyId}/branch-groups/{branchGroupId}/goods Authorization
{
    "name": "required|string|max:80",
    "short_details": "required|string|max:64",
    "details": "required|string",
    "price_e2": "required|integer|min:0",
    "type": "required|numeric",
    "eta": "string|max:32",
    "sku": "string|max:16",
    "notes_enabled": "boolean",
    "unit": "string|max:16",
    "eta_config_id": "nullable|integer",
    "max_quantity": "integer",
    "keywords": [
        "string"
    ],
    "limit_type": {
        "string": true,
        "regex": "/^per_order|per_day|per_week|per_month|per_hours:[1-9][0-9]*$/"
    },
    "unit_config": {
        "enabled": "required_with:unit_config|boolean",
        "unit_name": "required_with:unit_config|string|min:1|max:16",
        "fraction": "required_with:unit_config|int|min:1|max:1000",
        "min_quantity": "required_with:unit_config|int|min:1",
        "step_quantity": "required_with:unit_config|int|min:1",
        "max_quantity": "required_with:unit_config|int|min:1|gte:min_quantity",
        "display_mode": "required_with:unit_config|string|in:decimal,fraction",
        "weight_per_unit": "nullable|int"
    },
    "weight": "nullable|string|max:16",
    "is_type_service": "nullable|boolean",
    "is_type_custom_pickup": "nullable|boolean",
    "is_type_digital": "nullable|boolean",
    "is_type_list": "nullable|boolean",
    "is_combo": "nullable|boolean",
    "is_digital_custom": "nullable|boolean",
    "is_digital_balance": "nullable|boolean"
}

Listar Good

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

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

Listar AllowedProvider

Método URI Cabeceras
GET /companies/{companyId}/goods/{goodId}/allowed-providers Authorization

Listar Good de Branch

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

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

Listar Good de BranchGroup

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

Método URI Cabeceras
GET /companies/{companyId}/branch-groups/{branchGroupId}/goods Authorization

Listar Good de Category

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

Método URI Cabeceras
GET /companies/{companyId}/branches/{branchId}/categories/{categoryId}/goods Authorization

Listar Good de GoodTag

Método URI Cabeceras
GET /companies/{companyId}/good-tags/{tagId}/goods Authorization

Listar Client Favorite

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

Método URI Cabeceras
GET /companies/{companyId}/clients/{clientId}/favorites Authorization

Listar Good de Property

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

Método URI Cabeceras
GET /companies/{companyId}/properties/{propertyId}/goods Authorization

Listar Good de GoodType

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

Método URI Cabeceras
GET /companies/{companyId}/good-types/{goodTypeId}/goods N/A

Mostrar Good

{info} Soporta: Carga dinámica

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

Actualizar Good

Método URI Cabeceras
PATCH /companies/{companyId}/goods/{goodId} Authorization
{
    "name": "string|max:80",
    "short_details": "string|max:64",
    "details": "string",
    "price_e2": "integer|min:0",
    "type": "numeric",
    "eta": "string|max:32",
    "sku": "string|max:16",
    "notes_enabled": "boolean",
    "provider_fee_e2": "integer",
    "provider_fee_prc": "numeric|between:0.0000,1.0000",
    "unit": "string|max:16",
    "max_quantity": "integer",
    "eta_config_id": "nullable|integer",
    "keywords": [
        "string"
    ],
    "limit_type": {
        "string": true,
        "regex": "/^per_order|per_day|per_week|per_month|per_hours:[1-9][0-9]*$/"
    },
    "unit_config": {
        "enabled": "required_with:unit_config|boolean",
        "unit_name": "required_with:unit_config|string|min:1|max:16",
        "fraction": "required_with:unit_config|int|min:1|max:1000",
        "min_quantity": "required_with:unit_config|int|min:1",
        "step_quantity": "required_with:unit_config|int|min:1",
        "max_quantity": "required_with:unit_config|int|min:1|gte:min_quantity",
        "display_mode": "required_with:unit_config|string|in:decimal,fraction",
        "weight_per_unit": "nullable|int"
    },
    "weight": "nullable|string|max:16",
    "is_type_service": "nullable|boolean",
    "is_type_custom_pickup": "nullable|boolean",
    "is_type_digital": "nullable|boolean",
    "is_type_list": "nullable|boolean",
    "is_combo": "nullable|boolean",
    "is_digital_custom": "nullable|boolean",
    "is_digital_balance": "nullable|boolean"
}

Vincular Good

Vincular Client Favorite

Método URI Cabeceras
PUT /companies/{companyId}/clients/{clientId}/goods/{goodId}/favorites Authorization
{
    "in_order": "integer|min:1"
}

Vincular GoodType

Método URI Cabeceras
PUT /companies/{companyId}/goods/{goodId}/good-types/{goodTypeId} Authorization

Vincular Material

Método URI Cabeceras
PUT /companies/{companyId}/goods/{goodId}/materials/{materialId} Authorization
{
    "quantity_real": "required|integer|min:1",
    "extras": "array"
}

Desvincular Good

Desvincular Client Favorite

Método URI Cabeceras
DELETE /companies/{companyId}/clients/{clientId}/goods/{goodId}/favorites Authorization

Desvincular GoodType

Método URI Cabeceras
DELETE /companies/{companyId}/goods/{goodId}/good-types/{goodTypeId} Authorization

Desvincular Material

Método URI Cabeceras
DELETE /companies/{companyId}/goods/{goodId}/materials/{materialId} Authorization

Sincronizar Good

Sincronizar Good de GoodTag

Método URI Cabeceras
PUT /companies/{companyId}/good-tags/{tagId}/goods Authorization
[
    "integer"
]

Sincronizar Client Favorite

Método URI Cabeceras
POST /companies/{companyId}/clients/{clientId}/favorites Authorization
[
    "integer"
]

Sincronizar Good de Category

Método URI Cabeceras
POST /companies/{companyId}/categories/{categoryId}/goods Authorization
[
    "integer"
]

Eliminar Good

Método URI Cabeceras
DELETE /companies/{companyId}/goods/{goodId} Authorization

Restaurar Good

Método URI Cabeceras
POST /companies/{companyId}/goods/{goodId}/restore Authorization
{
    "name": "string|max:64"
}

Acciones de Good

Search

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

Método URI Cabeceras
GET /companies/{companyId}/goods/search N/A
{
    "q": "required|string",
    "paginate": "nullable|boolean",
    "results_mode": "string|in:goods,branch",
    "limit": "nullable|integer",
    "latitude_e6": "nullable|integer|between:-90000000,90000000",
    "longitude_e6": "nullable|integer|between:-180000000,180000000",
    "client_id": "nullable|integer",
    "category_id": "nullable|integer"
}

Query

{info} Soporta: Carga dinámica

Método URI Cabeceras
GET /companies/{companyId}/goods/{goodId}/query-images N/A

Upload Picture

Método URI Cabeceras
POST /companies/{companyId}/goods/{goodId}/upload-picture Authorization
{
    "image": "required_without:url|image|mimes:jpeg,png|max:8192|dimensions:min_width=2160,min_height=1304",
    "url": "required_without:image|url|max:1024"
}

Remove Picture

Método URI Cabeceras
POST /companies/{companyId}/goods/{goodId}/remove-picture Authorization
{
    "picture_url": "required|url"
}

Upload Vertical Picture

Método URI Cabeceras
POST /companies/{companyId}/goods/{goodId}/upload-vertical-picture Authorization
{
    "image": "required_without:url|image|mimes:jpeg,png|max:8192|dimensions:min_width=1120,min_height=1400",
    "url": "required_without:image|url|max:1024"
}

Remove Vertical Picture

Método URI Cabeceras
POST /companies/{companyId}/goods/{goodId}/remove-vertical-picture Authorization
{
    "picture_url": "required|url"
}

Fix Images

Método URI Cabeceras
POST /companies/{companyId}/goods/{goodId}/fix-images Authorization

Import

Método URI Cabeceras
POST /companies/{companyId}/branches/{branchId}/goods/import Authorization
{
    "file": "required|file|mimes:xlsx,xlsm,xltx,xltm,xls,xlt,ods,ots,slk,xml,gnumeric,htm,html,csv,tsv,txt",
    "host_image_url": "string",
    "host_image_var": "string",
    "send_at": "date|after:now",
    "mapping": [
        "string"
    ],
    "config": [
        "string"
    ],
    "category_mapping": [
        "string"
    ],
    "send_at_timezone": {
        "string": true,
        "regex": "/^[\+\-]([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
    },
    "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"
    }
}

Import

Método URI Cabeceras
POST /companies/{companyId}/branch-groups/{branchGroupId}/goods/import Authorization
{
    "file": "required|file|mimes:xlsx,xlsm,xltx,xltm,xls,xlt,ods,ots,slk,xml,gnumeric,htm,html,csv,tsv,txt",
    "host_image_url": "string",
    "host_image_var": "string",
    "send_at": "date|after:now",
    "mapping": [
        "string"
    ],
    "config": [
        "string"
    ],
    "category_mapping": [
        "string"
    ],
    "send_at_timezone": {
        "string": true,
        "regex": "/^[\+\-]([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
    },
    "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"
    }
}

Search

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

Método URI Cabeceras
GET /companies/{companyId}/branch-groups/{branchGroupId}/goods/search Authorization
{
    "q": "required|string",
    "paginate": "nullable|boolean",
    "results_mode": "string|in:goods,branch",
    "limit": "nullable|integer",
    "latitude_e6": "nullable|integer|between:-90000000,90000000",
    "longitude_e6": "nullable|integer|between:-180000000,180000000",
    "client_id": "nullable|integer",
    "category_id": "nullable|integer"
}

Enlaces de Good