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"
}
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 |
{info} Soporta:
Paginación
Filters
Carga dinámica
Método |
URI |
Cabeceras |
GET |
/companies/{companyId}/branch-groups/{branchGroupId}/goods |
Authorization |
{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 |
{info} Soporta:
Paginación
Filters
Carga dinámica
Método |
URI |
Cabeceras |
GET |
/companies/{companyId}/properties/{propertyId}/goods |
Authorization |
{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