---
# System prepended metadata

title: Requerimiento de endpoints

---

# Requerimiento de endpoints

Para poder mantener/actualizar el UI del e-commerce superfuds se requieren los siguientes endpoints:

*Notas:* 
* *Los parametros no necesariamente deben estar en la url del request, podrian ser parte del json en el body, estos solo son usados como referencia para indicar que datos se disponen para hacer el request.*
* *El formato del json de repuesta no es estricto, lo importante es que contengan los datos especificados y que haya cierta consistencia a travez de estas.*

## Brand

**url params:** .../:slug

**formato de respuesta:**
```
data: {
    id: number,
    name: string,
    slug: string,
    previewImage: string,
    bannerInfo: {
      url: string,
    },
}
```

## Home banners

**url params:** .../

**formato de respuesta:**
```
data: [
    {
        product: Product,
        url: string,
    },
    {
        product: Product,
        url: string,
    },
    ...
]
```

## Brands

**url params:** .../

**formato de respuesta:**

```
{
    "current_page": number,
    "data": []<Brand>,
    "first_page_url": string,
    "from": number,
    "last_page": number,
    "per_page": number,
    "total": number
}
```

## Search


### Categorias que contengan los productos asociados a un query
**url params:** .../:searchQuery

**formato de respuesta:**
```
    data: {
        categories: []<Category>,
        totalProducts: number,
    }
```

### Productos por slug de categoria y asociados a un query
**url params:** .../:categorySlug/:searchQuery

**formato de respuesta:**
```
    "current_page": number,
    "data": []<Product>,
    "first_page_url": string,
    "from": number,
    "last_page": number,
    "per_page": number,
    "total": number
```

## BrandSingle

### Categorias que contengan los productos asociados a un slug de brand
**url params:** .../:brandSlug

**formato de respuesta:**
```
    data: {
        categories: []<Category>,
        totalProducts: number,
    }
```

### Productos por slug de categoria y asociados a un slug de brand
**url params:** .../:categorySlug/:brandSlug

**formato de respuesta:**
```
    "current_page": number,
    "data": []<Product>,
    "first_page_url": string,
    "from": number,
    "last_page": number,
    "per_page": number,
    "total": number
```

## CategorySingle

### productos asociados a un slug de categoria/subcategoria opcionalmente filtrados

**url params:** .../:categorySlug

**body request:**

```
{
    filters: {
        "price": {
            min: number,
            max: number,
        },
        "brands": []<Brand>,
        "freeOf": [
            {
                slug: string,
                name: string,
            },
            ...
        ],
        "originAndComposition": [
            {
                slug: string,
                name: string,
            },
            ...
        ],
        "typeOfDiet": [
            {
                slug: string,
                name: string,
            },
            ...
        ]   
    }
}
```

**formato de respuesta:**
```
    "current_page": number,
    "data": []<Product>,
    "first_page_url": string,
    "from": number,
    "last_page": number,
    "per_page": number,
    "total": number
```

### filtros para productos asociados a un slug de categoria

**url params:** .../:categorySlug

**formato de respuesta:**
```
    "price": {
        min: number,
        max: number,
    },
    "brands": []<Brand>,
    "freeOf": [
        {
            slug: string,
            name: string,
        },
        ...
    ],
    "originAndComposition": [
        {
            slug: string,
            name: string,
        },
        ...
    ],
    "typeOfDiet": [
        {
            slug: string,
            name: string,
        },
        ...
    ]   
```


## Tarjetas de credito

### Guardar 

**url params:** .../

**body request:**

```
{
    number: string,
    type: string,
    name: string,
    token: string,
}
```

**formato de respuesta:**
```
{
    status: success
}
```

### consultar 

**url params:** .../

**formato de respuesta:**

```
{
    data: []<TDC>
}
```

### eliminar 

**url params:** .../tdcToken

**formato de respuesta:**
```
{
    status: success
}
```

## User

Se necesita que los datos de usuario tengan la siguiente estructura, asi como poder actualizar los campos de la misma:

```
{
    "business_name": string,
    "business": string,
    "document": string,
    "name": string,
    "last_name": string,
    "email": string,
    "phone": string,
    "address_send": string,
    "department_send": string,
    "city_send": string,
    "address_invoice": string,
    "department_invoice": string,
    "city_invoice": string,
    "avatar": string,
} 
```

# Tipos de datos

## Product

```
{
    "quantity": number,
    "slug": slug,
    "units_sf": string,
    "slug_supplier": string,
    "title": string,
    "title_ec": string,
    "price_sf_with_tax": string,
    "category_id": number,
    "thumbnail": string,
    "image": string,
    "product_id": number,
    "short_description": string,
    "price_sf": string,
    "tax": string,
    "supplier": string,
    "discount": number,
    "total": number,
    "subcategory": string"
    images_products": [
        {
            "path": string,
            "thumbnail": string,
        },
        {
            "path": string,
            "thumbnail": string,
        },
    ]
}
```

## Category
```
{
    "id": number,
    "description": string,
    "image": string,
    "short_description": string,
    "banner": string,
    "slug": string,
    "subcategories": [
        {
            "id": number,
            "description": string,
            "short_description": string,
            "slug": string,
        },
        {
            "id": number,
            "description": string,
            "short_description": string,
            "slug": string,
        }
    ]
}
```

## Brand
```
{
    id: number,
    name: string,
    slug: string,
    previewImage: string,
    bannerInfo: {
      url: string,
    },
}
```

## TDC
```
{
    number: string,
    type: string,
    name: string,
    token: string,
}
```