docs(api): fix and expand PATCH /api/customer/profile documentation
Corrected method (was POST /api/customer/:id, now PATCH /api/customer/profile). Added profilePicture field: base64 data URL, max 2 MB, jpeg/png/webp. Added field table, format examples, profilePictureUrl response, error table.
This commit is contained in:
@@ -127,45 +127,66 @@ Used when interacting with a specific store (Catalog, Checkout).
|
||||
**Campos internos não retornados para o app:** `keyHash`, `strongHash`, `source`, `isShadow`, `profile_metrics`, `behavioral_stats`, `otpHash`, `otpHashParams`, `otpExpiresAt`.
|
||||
|
||||
### 4. Update Profile
|
||||
**POST** `/api/customer/:id`
|
||||
**PATCH** `/api/customer/profile`
|
||||
|
||||
**Headers:**
|
||||
|
||||
- `Authorization: Bearer <JWT_Token>`
|
||||
- `Atomenta-Token: 550e8400-e29b-41d4-a716-44665544000a`
|
||||
- `Content-Type: application/json`
|
||||
|
||||
**Notes:**
|
||||
|
||||
- Todos os campos são opcionais — envie apenas o que mudou.
|
||||
- `profilePicture` aceita base64 data URL (máx 2 MB decodificado).
|
||||
- A resposta inclui `profilePictureUrl` apenas quando imagem foi enviada.
|
||||
|
||||
**Body:**
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "Daniel A. Loverde", // Fields to update
|
||||
"phoneNumber": "+5511988888888",
|
||||
"biometricsEnabled": true,
|
||||
"address_book": [
|
||||
{
|
||||
"label": "Casa",
|
||||
"type": "residential",
|
||||
"address": "Avenida das Andorinhas",
|
||||
"number": "477",
|
||||
"neighborhood": "Jardim Andorinhas",
|
||||
"city": "Campinas",
|
||||
"state": "SP",
|
||||
"zipCode": "13101-400",
|
||||
"country": "Brasil",
|
||||
"complement": "Apto 78",
|
||||
"lat_long": [-22.9064, -47.0616]
|
||||
}
|
||||
]
|
||||
"name": "Daniel A. Loverde",
|
||||
"cpf": "12345678901",
|
||||
"phoneNumber": "5511988888888",
|
||||
"profilePicture": "data:image/jpeg;base64,/9j/4AAQSkZJRgAB..."
|
||||
}
|
||||
```
|
||||
|
||||
**Regra de coordenadas (`address_book.lat_long`):**
|
||||
| Campo | Tipo | Obrigatório | Descrição |
|
||||
|---|---|---|---|
|
||||
| `name` | string | não | Nome de exibição |
|
||||
| `cpf` | string | não | 11 dígitos, formatado ou raw |
|
||||
| `phoneNumber` | string | não | Com DDI, sem `+`: `"5519991670000"` |
|
||||
| `profilePicture` | string | não | base64 data URL — jpeg, png ou webp — máx 2 MB decoded |
|
||||
|
||||
- Se existir `zipCode` válido e houver cache do CEP no Atomenta (`/api/public/cep/:cep`) para o mesmo usuário, a API valida o ponto enviado.
|
||||
- Se não houver cache local, o Atomenta consulta a AwesomeAPI e atualiza o cache antes de validar.
|
||||
- Se `lat_long` estiver ausente/inválido, a API preenche com as coordenadas do CEP cacheado.
|
||||
- Se a distância entre `lat_long` enviado e o ponto do CEP for maior que `1.5 km`, a API substitui `lat_long` pelo ponto do CEP cacheado.
|
||||
- Objetivo: evitar discrepâncias grandes entre endereço e coordenada salva no perfil.
|
||||
**Formato `profilePicture`:**
|
||||
|
||||
```
|
||||
data:image/jpeg;base64,<base64data>
|
||||
data:image/png;base64,<base64data>
|
||||
data:image/webp;base64,<base64data>
|
||||
```
|
||||
|
||||
**Response (sucesso):**
|
||||
|
||||
```json
|
||||
{
|
||||
"error": false,
|
||||
"code": "PROFILE_UPDATED",
|
||||
"profilePictureUrl": "/uploads/profiles/e30188cf_1780615191653.jpg"
|
||||
}
|
||||
```
|
||||
|
||||
> `profilePictureUrl` é URL relativa. Prefixar com `https://atomenta.com.br` para exibir a imagem.
|
||||
|
||||
**Erros possíveis:**
|
||||
|
||||
| Código | HTTP | Descrição |
|
||||
|---|---|---|
|
||||
| `INVALID_CPF` | 400 | CPF não tem 11 dígitos |
|
||||
| `INVALID_PROFILE_IMAGE` | 400 | Não é data URL válido ou excede 2 MB |
|
||||
| `NO_FIELDS` | 400 | Nenhum campo reconhecido no body |
|
||||
| `CUSTOMER_NOT_FOUND` | 404 | — |
|
||||
|
||||
### 5. List Favorite Stores
|
||||
**GET** `/api/customer/favorites`
|
||||
|
||||
Reference in New Issue
Block a user