# API REST para Series - Dooplex

Esta API REST permite obtener información de series, temporadas, episodios y registrar videos.

## Estructura del Proyecto

```
dooplex/
├── api.php          # Archivo principal de la API
├── README.md        # Este archivo
└── db/
    ├── config.php   # Configuración de la base de datos
    └── Database.php # Clase de conexión a la base de datos
```

## Configuración de Base de Datos

- **Host:** localhost
- **Puerto:** 3306
- **Base de datos:** docinesx_st
- **Usuario:** docinesx_anibal
- **Contraseña:** anibal5083038xS

## Endpoints Disponibles

### 1. Obtener Serie por TMDB ID

**URL:** `https://api.docines.xyz/dooplex/api.php?action=get_series&tmdb_id=VALOR`

**Método:** GET

**Parámetros:**
- `tmdb_id` (requerido): ID de TMDB de la serie

**Ejemplo:**
```
https://api.docines.xyz/dooplex/api.php?action=get_series&tmdb_id=12345
```

**Respuesta exitosa:**
```json
{
  "success": true,
  "data": {
    "id": "1"
  }
}
```

**Respuesta sin resultados:**
```json
{
  "success": false,
  "message": "Serie no encontrada"
}
```

### 2. Obtener Temporadas por Serie ID

**URL:** `https://api.docines.xyz/dooplex/api.php?action=get_seasons&serie_id=VALOR`

**Método:** GET

**Parámetros:**
- `serie_id` (requerido): ID de la serie

**Ejemplo:**
```
https://api.docines.xyz/dooplex/api.php?action=get_seasons&serie_id=1
```

**Respuesta:**
```json
{
  "success": true,
  "data": [
    {
      "season_number": "1",
      "name": "Temporada 1",
      "id": "1"
    },
    {
      "season_number": "2",
      "name": "Temporada 2",
      "id": "2"
    }
  ]
}
```

### 3. Obtener Episodios por Temporada ID

**URL:** `https://api.docines.xyz/dooplex/api.php?action=get_episodes&season_id=VALOR`

**Método:** GET

**Parámetros:**
- `season_id` (requerido): ID de la temporada

**Ejemplo:**
```
https://api.docines.xyz/dooplex/api.php?action=get_episodes&season_id=1
```

**Respuesta:**
```json
{
  "success": true,
  "data": [
    {
      "episode_number": "1",
      "name": "Episodio 1",
      "id": "1"
    },
    {
      "episode_number": "2",
      "name": "Episodio 2",
      "id": "2"
    }
  ]
}
```

### 4. Registrar Video

**URL:** `https://api.docines.xyz/dooplex/api.php?action=add_video`

**Método:** POST

**Content-Type:** application/json

**Parámetros del cuerpo (JSON):**
- `episode_id` (requerido): ID del episodio
- `server` (requerido): Nombre del servidor
- `link` (requerido): URL del video
- `embed` (opcional): 1 o 0 (por defecto 0)
- `hls` (opcional): 1 o 0 (por defecto 0)

**Valores automáticos:**
- `lang`: "Spanish" (predeterminado)
- `status`: 1 (predeterminado)
- `created_at`: timestamp actual
- `updated_at`: timestamp actual

**Ejemplo de petición:**
```json
{
  "episode_id": "1",
  "server": "StreamTape",
  "link": "https://streamtape.com/v/abc123",
  "embed": 1,
  "hls": 0
}
```

**Respuesta exitosa:**
```json
{
  "success": true,
  "message": "Video agregado correctamente",
  "id": "123"
}
```

**Respuesta de error:**
```json
{
  "success": false,
  "message": "Error al agregar el video"
}
```

## Códigos de Estado HTTP

- `200`: Éxito
- `400`: Solicitud incorrecta (parámetros faltantes)
- `404`: Endpoint no encontrado
- `405`: Método no permitido
- `500`: Error interno del servidor

## Cómo probar desde el navegador

### Para endpoints GET:
Simplemente copia y pega las URLs en tu navegador reemplazando "VALOR" con los datos reales.

### Para endpoint POST (add_video):
Necesitarás usar una herramienta como Postman, curl, o un formulario HTML con JavaScript para enviar datos JSON.

**Ejemplo con curl:**
```bash
curl -X POST https://api.docines.xyz/dooplex/api.php?action=add_video \
  -H "Content-Type: application/json" \
  -d '{
    "episode_id": "1",
    "server": "StreamTape",
    "link": "https://streamtape.com/v/abc123",
    "embed": 1,
    "hls": 0
  }'
```

## Estructura de Base de Datos Esperada

### Tabla `series`
- `id` (PRIMARY KEY)
- `tmdb_id`

### Tabla `seasons`
- `id` (PRIMARY KEY)
- `serie_id` (FOREIGN KEY)
- `season_number`
- `name`

### Tabla `episodes`
- `id` (PRIMARY KEY)
- `season_id` (FOREIGN KEY)
- `episode_number`
- `name`

### Tabla `serie_videos`
- `id` (PRIMARY KEY)
- `episode_id` (FOREIGN KEY)
- `server`
- `link`
- `lang`
- `embed`
- `hls`
- `status`
- `created_at`
- `updated_at`