# Pluralo — variáveis disponíveis vs. em uso

Referência: inventário em `API_VARIAVEIS_INVENTARIO.md` e uso em experiences + 11_experiences.

**Inspecção de 1 supplier:** o script `scripts/pluralo_inspect_one_supplier.php` lista todas as variáveis em `summary`, `detail` e no primeiro `product`. Uso: `php scripts/pluralo_inspect_one_supplier.php [supplierId]`. Confirma que o mapeamento API→BD está correto (companyEmail→company_email, companyPhone→company_phone, website→website, etc.). Quando os dados aparecem em falta na lista, é porque a **API Pluralo não os devolve** para esse supplier, não por usarmos variável errada. Para esses casos existe a opção **Obter do site oficial (scraping)** no modal de alertas.

---

## summary (supplier)

| Variável | Usamos? | Onde |
|----------|---------|------|
| id | ✅ | suppliers_list, listas, calendário |
| brand | ✅ | Nome do supplier |
| companyName | ✅ | Nome (fallback) |
| imageLogo | ✅ | Logo / cartão |
| location | ✅ | Localização |
| connectedFromAgent | ✅ | Badge "Conectado" |
| **companyEmail** | ❌ | — |
| **companyPhone** | ❌ | — |
| **country.id, code2, name, dial, code, default** | ❌ | — |
| **timezone** | ❌ | — |
| **currency** | ❌ | — |
| **companyAddress** | ❌ | — |
| **postalCode** | ❌ | — |
| **reservationEmail** | ❌ | — |
| **reservationPhone** | ❌ | — |
| **website** | ❌ | — |
| **biography** | ❌ | — |
| **invitationStatus** | ❌ (em 11_experiences sim) | — |
| **commissionAverage** | ❌ | — |

**Em 11_experiences** (render_suppliers_list) usam-se ainda: invitationStatus, reservationEmail, companyEmail, reservationPhone, companyPhone, website, companyURL, protocolStatusDescription, detail.categoryList.

---

## detail (supplier)

Estrutura igual ao summary (sem connectedFromAgent). O mesmo quadro: **website, reservationEmail, reservationPhone, companyAddress, postalCode, country, timezone, biography, invitationStatus, protocolStatusDescription, categoryList** estão disponíveis e em 11_experiences parte deles é usada; em **experiences** (suppliers_list / lista) **não** estamos a usar.

---

## product (experiência)

| Variável | Usamos? | Onde |
|----------|---------|------|
| id | ✅ | Listas, calendário, detalhe |
| name | ✅ | Título |
| location | ✅ | Localização |
| locationCompleted.name | ✅ | Fallback localização |
| descriptionBrief | ✅ | Resumo |
| description | ✅ | Fallback texto (11_experiences) |
| imageLogo, gallery | ✅ | Imagem |
| categoryList | ✅ | Temas/categorias |
| price / productGenderPrices / groups | ✅ | Preço |
| currency | ✅ | Moeda |
| coordinates (latitude, longitude) | ✅ | Mapa |
| capacity | ✅ | Calendário (availability) |
| **code** | ❌ | — |
| **descriptionMore** | ❌ | — |
| **internalNote** | ❌ | — |
| **bookingQuestion** | ❌ | — |
| **bookingQuestionIsActive / IsMandatory** | ❌ | — |
| **imageLogoBase64** | ❌ | — |
| **isPrivate** | ❌ | — |
| **hasManualConfirmation** | ❌ | — |
| **hideOnCalendar** | ❌ | — |
| **showOnCalendarWhenHadBookings** | ❌ | — |
| **availabilityType** | ❌ | — |
| **productShareType** | ❌ | — |
| **extras** (lista completa) | ❌ | — |
| **payment, deposit, depositDescription, paymentValue** | ❌ | — |
| **externalBookingSystemCode** | ❌ | — |
| **isWidgetToShowDuration** | ❌ | — |
| **isWidgetToShowTotalAvailability** | ❌ | — |
| **isWidgetToShowActivityName** | ❌ | — |
| **isWidgetToShowResourceName** | ❌ | — |
| **isWidgetToShowGroupScheduleTitle** | ❌ | — |
| **isWidgetToShowPriceRange** | ❌ | — |
| **widgetGroupScheduleTitle** | ❌ | — |
| **updateFlags.*** | ❌ | — |
| **categoryList[].** (id, description, status, settings) | ❌ | Só usamos .name |
| **groups** (calendário) | ✅ | calendar_extract / get_calendar |

---

## Resumo: variáveis Pluralo que ainda não usamos

### Supplier (summary/detail) — úteis para contacto e estado

- **website** — link para site do supplier
- **companyEmail, companyPhone** — email e telefone
- **reservationEmail, reservationPhone** — contactos de reserva
- **companyAddress, postalCode** — morada completa
- **country.name, country.code2** — país (ex.: "Portugal", "PT")
- **timezone** — fuso horário
- **invitationStatus** — estado do convite (ex.: 15 = ativo)
- **protocolStatusDescription** — descrição do protocolo (em 11_experiences)
- **biography** — biografia do supplier
- **categoryList** (em detail) — categorias do supplier
- **commissionAverage** — comissão média (quando preenchido)

### Produto (product) — úteis para detalhe e reserva

- **descriptionMore** — descrição longa / condições
- **internalNote** — nota interna (só admin)
- **bookingQuestion** — pergunta na reserva (ex.: nível de natação)
- **bookingQuestionIsActive, bookingQuestionIsMandatory**
- **hasManualConfirmation** — reserva com confirmação manual
- **hideOnCalendar** — ocultar no calendário
- **availabilityType** — tipo de disponibilidade
- **extras** — extras (nome, preço, obrigatório) para checkout
- **deposit, depositDescription** — sinal e descrição
- **paymentValue** — valor de pagamento (quando não há productGenderPrices)
- **externalBookingSystemCode** — código externo (ex.: "291#2288")
- **duration** — duração (em routes ou direto) para listar nas experiências
- **groups** (com schedules) — já usamos no calendário; podemos expor “duração típica” ou “horários” no detalhe

---

## Próximos passos sugeridos

1. **Grupo 2 em experiences** — Incluir na API/página de suppliers: website, companyEmail, companyPhone, reservationEmail, reservationPhone, country.name, invitationStatus (e opcionalmente address, postalCode, timezone).
2. **Página de detalhe da experiência** — Usar descriptionMore, capacity, bookingQuestion, hasManualConfirmation, hideOnCalendar, availabilityType, extras (resumo), deposit/depositDescription.
3. **Filtros ou badges** — Usar availabilityType, hasManualConfirmation, hideOnCalendar na lista ou no detalhe.

Se quiseres, no próximo passo podemos implementar o Grupo 2 (contactos/estado) na API e na lista de suppliers em experiences.
