File: /var/www/api_matriculas/app/Http/Controllers/Signapis/SignapisWebhookController.php
<?php
namespace App\Http\Controllers\Signapis;
use App\Http\Controllers\Controller;
use App\Services\Signapis\SignapisService;
use Illuminate\Http\Request;
use Exception;
class SignapisWebhookController extends Controller
{
protected SignapisService $signapis;
public function __construct(SignapisService $signapis)
{
$this->signapis = $signapis;
}
// ======================================
// 🔹 WEBHOOKS
// ======================================
/**
* @OA\Get(
* path="/signapis/webhook",
* summary="Obtener configuración de Webhook",
* tags={"SignApis/Webhooks"},
* @OA\Response(response=200, description="Configuración obtenida")
* )
*/
public function getWebhook()
{
try {
$data = $this->signapis->getWebhook();
return response()->json(['data' => $data, 'message' => 'ok', 'code' => 200]);
} catch (Exception $e) {
return response()->json(['error' => $e->getMessage()], $e->getCode() ?: 500);
}
}
/**
* @OA\Post(
* path="/signapis/webhook",
* summary="Configurar Webhook",
* tags={"SignApis/Webhooks"},
* @OA\RequestBody(
* required=true,
* @OA\JsonContent(
* @OA\Property(property="webhook", type="string", example="https://api-planb.bradford.cl/signapis-webhook"),
* @OA\Property(property="authType", type="string", enum={"WEBHOOK_NO_AUTH","WEBHOOK_BASIC_AUTH","WEBHOOK_OAUTH_TOKEN","WEBHOOK_API_KEY"}),
* @OA\Property(property="authValue", type="object", example={})
* )
* ),
* @OA\Response(response=200, description="Webhook configurado")
* )
*/
public function configureWebhook(Request $request)
{
try {
$data = $this->signapis->configureWebhook($request->all());
return response()->json(['data' => $data, 'message' => 'ok', 'code' => 200]);
} catch (Exception $e) {
return response()->json(['error' => $e->getMessage()], $e->getCode() ?: 500);
}
}
/**
* @OA\Delete(
* path="/signapis/webhook",
* summary="Eliminar Webhook",
* tags={"SignApis/Webhooks"},
* @OA\Response(response=200, description="Webhook eliminado")
* )
*/
public function deleteWebhook()
{
try {
$data = $this->signapis->deleteWebhook();
return response()->json(['data' => $data, 'message' => 'ok', 'code' => 200]);
} catch (Exception $e) {
return response()->json(['error' => $e->getMessage()], $e->getCode() ?: 500);
}
}
/**
* @OA\Post(
* path="/signapis/webhook/test",
* summary="Probar Webhook",
* tags={"SignApis/Webhooks"},
* @OA\RequestBody(
* required=false,
* @OA\JsonContent(
* @OA\Property(property="event", type="string", example="document.created"),
* @OA\Property(property="payload", type="object", example={"id": "123", "name": "doc.pdf"})
* )
* ),
* @OA\Response(response=200, description="Evento de prueba enviado al webhook")
* )
*/
public function testWebhook(Request $request)
{
try {
$data = $this->signapis->testWebhook($request->all());
return response()->json(['data' => $data, 'message' => 'ok', 'code' => 200]);
} catch (Exception $e) {
return response()->json(['error' => $e->getMessage()], $e->getCode() ?: 500);
}
}
}