@OA\Response @OA\Items @OA\MediaType Пример аннотации - массив объектов JSON в качестве ответа, переиспользование схемы модели

Например для zircote/swagger-php:

    /**
     * @OA\Get(path="/campaign-type",
     *   tags={"CampaignType"},
     *   operationId="getCampaignTypes",
     *   summary="Список всех (созданных к данном моменту) типов кампаний",
     *   @OA\Response(response="200",
     *      description="OK",
     *         @OA\MediaType(
     *             mediaType="application/json",
     *             @OA\Schema(
     *                 type="array",
     *             @OA\Items(
     *                type="object",
     *                 @OA\Property(
     *                     property="id",
     *                     type="integer"
     *                 ),
     *                 @OA\Property(
     *                     property="name",
     *                     type="string"
     *                 ),
     *            ),
     *           
     *             )
     *         ),
     *   )
     * ) 
     */
    public function getCampaignTypes() {
        $types = $this->campaignTypeRepository->findAll();
        return $this->reply($types, 200, ['groups' => 'group1']);
    }

Или тоже самое но со ссылкой на схему модели (переиспользование описания модели):

/**
     * 
     * @OA\Get(path="/campaign-type",
     *   tags={"CampaignType"},
     *   operationId="getCampaignTypes",
     *   summary="Список всех (созданных к данном моменту) типов кампаний",
     *   @OA\Response(response="200",
     *      description="OK",
     *         @OA\MediaType(
     *             mediaType="application/json",
     *             @OA\Schema(
     *                 type="array",
     *                 @OA\Items(
     *                   ref="#/components/schemas/CampaignType"
     *                 ),
     *             )
     *         ),
     *   )
     * ) 
     */
    public function getCampaignTypes() {
        $types = $this->campaignTypeRepository->findAll();
        return $this->reply($types, 200, ['groups' => 'group1']);
    }