src/Http/Controllers/Swagger/WebinarAPISwagger.php
<?php
namespace EscolaLms\Webinar\Http\Controllers\Swagger;
use EscolaLms\Webinar\Http\Requests\ListWebinarsRequest;
use Illuminate\Http\JsonResponse;
interface WebinarAPISwagger
{
/**
* @OA\Get(
* tags={"Webinars"},
* security={
* {"passport": {}},
* },
* path="/api/webinars/generate-jitsi/{id}",
* description="Generate jitsi object for approved webinar",
* @OA\Parameter(
* name="id",
* required=true,
* in="path",
* @OA\Schema(
* type="integer",
* ),
* ),
* @OA\Response(
* response=200,
* description="successful operation",
* @OA\MediaType(
* mediaType="application/json",
* ),
* @OA\Schema(
* type="object",
* @OA\Property(
* property="success",
* type="boolean"
* ),
* @OA\Property(
* property="data",
* type="array",
* ),
* @OA\Property(
* property="message",
* type="string"
* )
* )
* ),
* @OA\Response(
* response=404,
* description="Bad request",
* @OA\MediaType(
* mediaType="application/json"
* ),
* @OA\Property(
* property="data",
* type="array",
* @OA\Items(ref="#/components/schemas/Jitsi")
* ),
* @OA\Schema(
* type="object",
* @OA\Property(
* property="message",
* type="string"
* )
* )
* )
* )
*/
public function generateJitsi(int $consultationTermId): JsonResponse;
/**
* @OA\Get(
* path="/api/webinars",
* summary="Get a listing of the Webinars.",
* tags={"Webinars"},
* description="Get all Webinars",
* @OA\Parameter(
* name="order_by",
* required=false,
* in="query",
* @OA\Schema(
* type="string",
* enum={"finished_at", "started_at", "created_at", "name"}
* ),
* ),
* @OA\Parameter(
* name="order",
* required=false,
* in="query",
* @OA\Schema(
* type="string",
* enum={"ASC", "DESC"}
* ),
* ),
* @OA\Parameter(
* name="page",
* description="Pagination Page Number",
* required=false,
* in="query",
* @OA\Schema(
* type="number",
* default=1,
* ),
* ),
* @OA\Parameter(
* name="per_page",
* description="Pagination Per Page",
* required=false,
* in="query",
* @OA\Schema(
* type="number",
* default=15,
* ),
* ),
* @OA\Parameter(
* name="name",
* description="Webinar name %LIKE%",
* required=false,
* in="query",
* @OA\Schema(
* type="string",
* ),
* ),
* @OA\Parameter(
* name="status",
* description="Webinar status == ",
* required=false,
* in="query",
* @OA\Schema(
* type="string",
* ),
* ),
* @OA\Parameter(
* name="only_incoming",
* description="Get only incoming webinars",
* required=false,
* in="query",
* @OA\Schema(
* type="boolean",
* ),
* ),
* @OA\Response(
* response=200,
* description="successful operation",
* @OA\MediaType(
* mediaType="application/json"
* ),
* @OA\Schema(
* type="object",
* @OA\Property(
* property="success",
* type="boolean"
* ),
* @OA\Property(
* property="data",
* type="array",
* @OA\Items(ref="#/components/schemas/Webinar")
* ),
* @OA\Property(
* property="message",
* type="string"
* )
* )
* )
* )
*/
public function index(ListWebinarsRequest $listWebinarsRequest): JsonResponse;
/**
* @OA\Get(
* path="/api/webinars/{id}",
* summary="Display the specified Webinar",
* tags={"Webinars"},
* description="Get Webinar",
* @OA\Parameter(
* name="id",
* description="id of Webinar",
* @OA\Schema(
* type="integer",
* ),
* required=true,
* in="path"
* ),
* @OA\Response(
* response=200,
* description="successful operation",
* @OA\MediaType(
* mediaType="application/json"
* ),
* @OA\Schema(
* type="object",
* @OA\Property(
* property="success",
* type="boolean"
* ),
* @OA\Property(
* property="data",
* ref="#/components/schemas/Webinar"
* ),
* @OA\Property(
* property="message",
* type="string"
* )
* )
* )
* )
*/
public function show(int $id): JsonResponse;
/**
* @OA\Get(
* path="/api/webinars/me",
* security={
* {"passport": {}},
* },
* summary="Get a listing of the Webinars bought by user.",
* tags={"Webinars"},
* description="Get a listing of the Webinars bought by user",
* @OA\Parameter(
* name="order_by",
* required=false,
* in="query",
* @OA\Schema(
* type="string",
* enum={"finished_at", "started_at", "created_at", "name"}
* ),
* ),
* @OA\Parameter(
* name="order",
* required=false,
* in="query",
* @OA\Schema(
* type="string",
* enum={"ASC", "DESC"}
* ),
* ),
* @OA\Parameter(
* name="paginate",
* description="If true, list convert to paginate",
* required=false,
* in="query",
* @OA\Schema(
* type="boolean",
* default=false,
* ),
* ),
* @OA\Parameter(
* name="page",
* description="Pagination Page Number",
* required=false,
* in="query",
* @OA\Schema(
* type="number",
* default=1,
* ),
* ),
* @OA\Parameter(
* name="per_page",
* description="Pagination Per Page",
* required=false,
* in="query",
* @OA\Schema(
* type="number",
* default=15,
* ),
* ),
* @OA\Parameter(
* name="name",
* description="Webinar name %LIKE%",
* required=false,
* in="query",
* @OA\Schema(
* type="string",
* ),
* ),
* @OA\Parameter(
* name="status",
* description="Webinar status == ",
* required=false,
* in="query",
* @OA\Schema(
* type="string",
* ),
* ),
* @OA\Response(
* response=200,
* description="successful operation",
* @OA\MediaType(
* mediaType="application/json"
* ),
* @OA\Schema(
* type="object",
* @OA\Property(
* property="success",
* type="boolean"
* ),
* @OA\Property(
* property="data",
* type="array",
* @OA\Items(ref="#/components/schemas/Webinar")
* ),
* @OA\Property(
* property="message",
* type="string"
* )
* )
* )
* )
*/
public function forCurrentUser(ListWebinarsRequest $listWebinarsRequest): JsonResponse;
/**
* @OA\Get(
* path="/api/webinars/start-live-stream/{id}",
* security={
* {"passport": {}},
* },
* summary="Start live stream in yt.",
* tags={"Webinars"},
* description="Start live stream in yt. Endpoint void",
* @OA\Parameter(
* name="id",
* required=true,
* in="path",
* @OA\Schema(
* type="integer",
* ),
* ),
* @OA\Response(
* response=200,
* description="successful operation",
* @OA\MediaType(
* mediaType="application/json"
* ),
* )
* )
*/
public function startLiveStream(int $id): void;
}