# Zapini API — Grupos

**Versão:** 1.2.0
**Base URL:** `https://zapini.app/api/v1`

---

## Autenticação

Todos os endpoints requerem um Bearer Token:

```
Authorization: Bearer {your_token}
Accept: application/json
Content-Type: application/json
```

Gere tokens de API no painel admin em **API Docs → Gerenciar Tokens**.

---

## Grupos

Gerencie grupos do WhatsApp através das suas instâncias. Todos os endpoints de grupo usam a URL do subdomínio da instância.

**Base URL:** `https://instance-{id}.zapini.app`

---

## GET /instances/{uuid}/groups

Listar todos os grupos do WhatsApp de uma instância.

```bash
curl -X GET "https://zapini.app/api/v1/instances/{uuid}/groups" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
```

**Resposta:**

```json
{
  "success": true,
  "data": {
    "groups": [
      {
        "jid": "120363001234567890@g.us",
        "subject": "Marketing Team",
        "owner": "5511987654321@s.whatsapp.net",
        "size": 25,
        "description": "Team discussions"
      }
    ],
    "total": 5
  }
}
```

---

## POST /instances/{uuid}/groups

Criar um novo grupo do WhatsApp.

**Corpo da Requisição:**

| Campo | Tipo | Obrigatório | Descrição |
|-------|------|-------------|-----------|
| subject | string | Sim | Nome do grupo |
| participants | array | Sim | Array de números de telefone |

```bash
curl -X POST "https://zapini.app/api/v1/instances/{uuid}/groups" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": "My New Group",
    "participants": ["5511987654321", "5511976543210"]
  }'
```

**Resposta:**

```json
{
  "success": true,
  "data": {
    "group": {
      "jid": "120363001234567890@g.us",
      "subject": "My New Group"
    },
    "message": "Group created successfully"
  }
}
```

---

## GET /instances/{uuid}/groups/{jid}

Obter metadados e lista de participantes do grupo.

**Resposta:**

```json
{
  "success": true,
  "data": {
    "jid": "120363001234567890@g.us",
    "subject": "Marketing Team",
    "description": "Team discussions",
    "owner": "5511987654321@s.whatsapp.net",
    "participants": [
      {"jid": "5511987654321@s.whatsapp.net", "admin": "superadmin"},
      {"jid": "5511976543210@s.whatsapp.net", "admin": null}
    ],
    "size": 25
  }
}
```

---

## PATCH /instances/{uuid}/groups/{jid}

Atualizar nome ou descrição do grupo.

**Corpo da Requisição:**

| Campo | Tipo | Descrição |
|-------|------|-----------|
| subject | string | Novo nome do grupo |
| description | string | Nova descrição do grupo |

```bash
curl -X PATCH "https://zapini.app/api/v1/instances/{uuid}/groups/{jid}" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": "New Group Name",
    "description": "Updated description"
  }'
```

---

## POST /instances/{uuid}/groups/{jid}/participants

Adicionar participantes ao grupo.

```bash
curl -X POST "https://zapini.app/api/v1/instances/{uuid}/groups/{jid}/participants" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "participants": ["5511987654321", "5511976543210"]
  }'
```

---

## DELETE /instances/{uuid}/groups/{jid}/participants

Remover participantes do grupo.

```bash
curl -X DELETE "https://zapini.app/api/v1/instances/{uuid}/groups/{jid}/participants" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "participants": ["5511987654321"]
  }'
```

---

## POST /instances/{uuid}/groups/{jid}/admins

Promover participantes a administrador do grupo.

```bash
curl -X POST "https://zapini.app/api/v1/instances/{uuid}/groups/{jid}/admins" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "participants": ["5511987654321"]
  }'
```

---

## DELETE /instances/{uuid}/groups/{jid}/admins

Rebaixar administradores para membros regulares.

```bash
curl -X DELETE "https://zapini.app/api/v1/instances/{uuid}/groups/{jid}/admins" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "participants": ["5511987654321"]
  }'
```

---

## POST /instances/{uuid}/groups/{jid}/leave

Sair de um grupo do WhatsApp.

```bash
curl -X POST "https://zapini.app/api/v1/instances/{uuid}/groups/{jid}/leave" \
  -H "Authorization: Bearer {token}"
```

---

## GET /instances/{uuid}/groups/{jid}/invite

Obter o link de convite do grupo.

**Resposta:**

```json
{
  "success": true,
  "data": {
    "code": "AbCdEfGhIjKl",
    "invite_link": "https://chat.whatsapp.com/AbCdEfGhIjKl"
  }
}
```

---

## DELETE /instances/{uuid}/groups/{jid}/invite

Revogar o link de convite do grupo e gerar um novo.

**Resposta:**

```json
{
  "success": true,
  "data": {
    "new_code": "MnOpQrStUvWx",
    "new_invite_link": "https://chat.whatsapp.com/MnOpQrStUvWx"
  },
  "message": "Invite link revoked"
}
```

---

*Gerado por Zapini — https://zapini.app*
