src/Http/Swagger/ProductSwagger.php
<?php
namespace EscolaLms\Cart\Http\Swagger;
use EscolaLms\Cart\Http\Requests\ProductReadRequest;
use EscolaLms\Cart\Http\Requests\ProductRecursiveCancelRequest;
use EscolaLms\Cart\Http\Requests\ProductSearchMyRequest;
use EscolaLms\Cart\Http\Requests\ProductSearchRequest;
use Illuminate\Http\JsonResponse;
interface ProductSwagger
{
/**
* @OA\Get(
* path="/api/products",
* description="Search products",
* tags={"Products"},
* security={
* {"passport": {}},
* },
* @OA\Parameter(
* name="order_by",
* required=false,
* in="query",
* @OA\Schema(
* type="string",
* enum={"created_at","updated_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="integer",
* default=1,
* ),
* ),
* @OA\Parameter(
* name="per_page",
* description="Pagination Per Page",
* required=false,
* in="query",
* @OA\Schema(
* type="integer",
* default=15,
* ),
* ),
* @OA\Parameter(
* name="productable_id",
* description="Productable ID (for example Course Id)",
* required=false,
* in="query",
* @OA\Schema(
* type="integer",
* ),
* ),
* @OA\Parameter(
* name="productable_type",
* description="Productable type (class) - required if productable_id is sent",
* required=false,
* in="query",
* @OA\Schema(
* type="string",
* ),
* ),
* @OA\Parameter(
* name="free",
* description="Find free (price = 0)",
* required=false,
* in="query",
* @OA\Schema(
* type="boolean",
* ),
* ),
* @OA\Parameter(
* name="name",
* description="Partial name filter",
* required=false,
* in="query",
* @OA\Schema(
* type="string",
* ),
* ),
* @OA\Parameter(
* name="type",
* description="Type (`single` or `bundle`)",
* required=false,
* in="query",
* @OA\Schema(
* type="string",
* ),
* ),
* @OA\Parameter(
* name="tags",
* description="Tags",
* required=false,
* in="query",
* @OA\Schema(
* type="array",
* @OA\Items(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/Product")
* ),
* @OA\Property(
* property="message",
* type="string"
* )
* )
* ),
* @OA\Response(
* response=422,
* description="Bad request",
* @OA\MediaType(
* mediaType="application/json"
* )
* )
* )
*/
public function index(ProductSearchRequest $request): JsonResponse;
/**
* @OA\Get(
* path="/api/products/my",
* description="Search my products",
* tags={"Products"},
* security={
* {"passport": {}},
* },
* @OA\Parameter(
* name="order_by",
* required=false,
* in="query",
* @OA\Schema(
* type="string",
* enum={"created_at","updated_at","id"}
* ),
* ),
* @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="integer",
* default=1,
* ),
* ),
* @OA\Parameter(
* name="per_page",
* description="Pagination Per Page",
* required=false,
* in="query",
* @OA\Schema(
* type="integer",
* default=15,
* ),
* ),
* @OA\Parameter(
* name="type",
* description="Type (`single`, `bundle`, `subscription`, `subscription-all-in`)",
* 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/MyProductResource")
* ),
* @OA\Property(
* property="message",
* type="string"
* )
* )
* ),
* ),
* @OA\Response(
* response=422,
* description="Bad request",
* @OA\MediaType(
* mediaType="application/json"
* )
* )
* )
*/
public function indexMy(ProductSearchMyRequest $request): JsonResponse;
/**
* @OA\Get(
* path="/api/products/{id}",
* description="Read product",
* tags={"Products"},
* security={
* {"passport": {}},
* },
* @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\Items(ref="#/components/schemas/Product")
* ),
* @OA\Property(
* property="message",
* type="string"
* )
* )
* ),
* @OA\Response(
* response=422,
* description="Bad request",
* @OA\MediaType(
* mediaType="application/json"
* )
* )
* )
*/
public function read(ProductReadRequest $request): JsonResponse;
/**
* @OA\Post(
* path="/api/products/cancel/{id}",
* description="Cancel recursive product",
* tags={"Products"},
* security={
* {"passport": {}},
* },
* @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="message",
* type="string"
* )
* )
* ),
* @OA\Response(
* response=422,
* description="Bad request",
* @OA\MediaType(
* mediaType="application/json"
* )
* )
* )
*/
public function cancel(ProductRecursiveCancelRequest $request): JsonResponse;
}