src/Http/Controllers/Swagger/WebinarSwagger.php
<?php
namespace EscolaLms\Webinar\Http\Controllers\Swagger;
use EscolaLms\Webinar\Http\Requests\DeleteWebinarRequest;
use EscolaLms\Webinar\Http\Requests\ShowWebinarRequest;
use EscolaLms\Webinar\Http\Requests\StoreWebinarRequest;
use EscolaLms\Webinar\Http\Requests\UpdateWebinarRequest;
use EscolaLms\Webinar\Http\Requests\ListWebinarsRequest;
use EscolaLms\Webinar\Http\Requests\WebinarAssignableUserListRequest;
use Illuminate\Http\JsonResponse;
interface WebinarSwagger
{
/**
* @OA\Get(
* path="/api/admin/webinars",
* tags={"Admin 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\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\Post(
* path="/api/admin/webinars",
* summary="Store a newly created Webinar in storage",
* tags={"Admin Webinars"},
* description="Store Webinar",
* security={
* {"passport": {}},
* },
* @OA\RequestBody(
* required=true,
* @OA\MediaType(
* mediaType="application/json",
* @OA\Schema(ref="#/components/schemas/Webinar")
* ),
* ),
* @OA\Response(
* response=201,
* 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 store(StoreWebinarRequest $storeWebinarRequest): JsonResponse;
/**
* @OA\Get(
* path="/api/admin/webinars/{id}",
* summary="Display the specified Webinar",
* tags={"Admin Webinars"},
* description="Get Webinars",
* security={
* {"passport": {}},
* },
* @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, ShowWebinarRequest $request): JsonResponse;
/**
* @OA\Put(
* path="/api/admin/webinars/{id}",
* summary="Update the specified Webinar in storage",
* tags={"Admin Webinars"},
* description="Update Webinar",
* security={
* {"passport": {}},
* },
* @OA\Parameter(
* name="id",
* description="id of Webinar",
* @OA\Schema(
* type="integer",
* ),
* required=true,
* in="path"
* ),
* @OA\RequestBody(
* required=true,
* @OA\MediaType(
* mediaType="application/json",
* @OA\Schema(ref="#/components/schemas/Webinar")
* )
* ),
* @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 update(int $id, UpdateWebinarRequest $updateWebinarRequest): JsonResponse;
/**
* @OA\Delete(
* path="/api/admin/webinars/{id}",
* summary="Remove the specified Webinar from storage",
* tags={"Admin Webinars"},
* description="Delete Webinar",
* security={
* {"passport": {}},
* },
* @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",
* type="string"
* ),
* @OA\Property(
* property="message",
* type="string"
* )
* )
* )
* )
*/
public function destroy(int $id, DeleteWebinarRequest $request): JsonResponse;
/**
* @OA\Get(
* tags={"Admin Webinars"},
* path="/api/admin/webinars/users/assignable",
* description="Get users assignable to webinars",
* security={
* {"passport": {}},
* },
* @OA\Parameter(
* name="search",
* required=false,
* in="query",
* @OA\Schema(
* type="string",
* ),
* ),
* @OA\Response(
* response=200,
* description="successful operation",
* @OA\MediaType(
* mediaType="application/json",
* ),
* ),
* @OA\Response(
* response=422,
* description="Bad request",
* @OA\MediaType(
* mediaType="application/json"
* )
* )
* )
*/
public function assignableUsers(WebinarAssignableUserListRequest $request): JsonResponse;
}