# Zapini API — Grupos

**Versión:** 1.2.0
**Base URL:** `https://zapini.app/api/v1`

---

## Autenticación

Todos los endpoints requieren un Bearer Token:

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

Genera tokens de API en el panel admin en **API Docs → Gestionar Tokens**.

---

## Grupos

Gestiona grupos de WhatsApp a través de tus instancias. Todos los endpoints de grupo usan la URL del subdominio de la instancia.

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

---

## GET /instances/{uuid}/groups

Listar todos los grupos de WhatsApp de una instancia.

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

**Respuesta:**

```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

Crear un nuevo grupo de WhatsApp.

**Cuerpo de la Solicitud:**

| Campo | Tipo | Requerido | Descripción |
|-------|------|-----------|-------------|
| subject | string | Sí | Nombre del grupo |
| participants | array | Sí | Array de números de teléfono |

```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"]
  }'
```

**Respuesta:**

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

---

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

Obtener metadatos del grupo y lista de participantes.

**Respuesta:**

```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}

Actualizar nombre o descripción del grupo.

**Cuerpo de la Solicitud:**

| Campo | Tipo | Descripción |
|-------|------|-------------|
| subject | string | Nuevo nombre del grupo |
| description | string | Nueva descripción del 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

Agregar participantes a un 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

Eliminar participantes de un 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 del 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

Degradar administradores a miembros 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

Salir de un grupo de 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

Obtener el enlace de invitación del grupo.

**Respuesta:**

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

---

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

Revocar el enlace de invitación del grupo y generar uno nuevo.

**Respuesta:**

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

---

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