Endpoint
POST /api/webhook_video.php
Content-Type: multipart/form-data ou application/json
Autenticação
Atualmente o webhook está aberto (sem autenticação). CORS está habilitado para todas as origens para facilitar a integração.
Métodos de Envio
1. Upload Direto
Envio do arquivo via multipart/form-data.
2. URL do Vídeo
O sistema realiza o download via link informado.
Parâmetros
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| arena | string | Sim | Ex: "Arena Central" |
| court | string | Sim | Ex: "Quadra 1" |
| type | string | Não | Padrão: "general" |
| datetime | string | Não | Padrão: hora atual |
| video | file | Sim* | Arquivo MP4 |
| video_url | string | Sim* | URL para download |
* Obrigatório enviar video OU video_url.
Limites e Restrições
Tamanho Máximo
500 MB
Formato
MP4
Timeout URL
300 seg
Exemplos de Uso
Upload de Arquivo (cURL)
curl -X POST "https://seu-dominio.com/api/webhook_video.php" \
-F "arena=Arena Central" \
-F "court=Quadra 1" \
-F "type=partida" \
-F "datetime=2024-01-15 14:30:00" \
-F "video=@/caminho/para/video.mp4"
Upload de Arquivo (JavaScript/Fetch)
const formData = new FormData();
formData.append('arena', 'Arena Central');
formData.append('court', 'Quadra 1');
formData.append('video', arquivoVideo); // File object
const response = await fetch('/api/webhook_video.php', {
method: 'POST',
body: formData
});
const result = await response.json();
Python (requests) - Via URL
import requests
response = requests.post(
'https://seu-dominio.com/api/webhook_video.php',
json={
'arena': 'Arena Central',
'court': 'Quadra 1',
'video_url': 'https://exemplo.com/videos/partida123.mp4'
}
)
print(response.json())
Respostas da API
Sucesso (HTTP 201)
{
"status": "success",
"message": "Video uploaded successfully",
"data": {
"video_id": 123,
"arena": { "id": 1, "name": "Arena Central", "created": false },
"court": { "id": 5, "name": "Quadra 1", "created": true },
"filename": "2024-01-15_14-30-00_abc12345.mp4"
}
}
Erro de Validação (HTTP 400)
{
"status": "error",
"message": "Validation failed",
"errors": {
"arena": "Arena name is required"
}
}
Códigos de Erro de Upload
| Erro | Descrição |
|---|---|
| File exceeds PHP ini max size | Arquivo maior que o limite do PHP |
| No file was uploaded | Nenhum arquivo enviado |
| Failed to write file to disk | Erro ao gravar arquivo |
Comportamento Automático
Criação de Arenas e Quadras
Se enviar nomes de arena ou quadra que não existam, o sistema os criará instantaneamente. A resposta JSON trará o campo created: true nestes casos.
Estrutura de Armazenamento
storage/└── videos/
└── {arena_id}/
└── {court_id}/
├── YYYY-MM-DD_HH-ii-ss_hash.mp4
Suporte e Dicas
- Sempre valide o campo status
- Use YYYY-MM-DD HH:ii:ss
- Limite de 500MB p/ arquivo
- Verifique logs do servidor