67 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			67 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @OA\Info(
							 | 
						||
| 
								 | 
							
								 *   version="1.0.0",
							 | 
						||
| 
								 | 
							
								 *   title="Example of using references in swagger-php",
							 | 
						||
| 
								 | 
							
								 * )
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								?>
							 | 
						||
| 
								 | 
							
								You can define top-level parameters which can be references with $ref="#/components/parameters/$parameter"
							 | 
						||
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @OA\Parameter(
							 | 
						||
| 
								 | 
							
								 *   parameter="product_id_in_path_required",
							 | 
						||
| 
								 | 
							
								 *   name="product_id",
							 | 
						||
| 
								 | 
							
								 *   description="The ID of the product",
							 | 
						||
| 
								 | 
							
								 *   @OA\Schema(
							 | 
						||
| 
								 | 
							
								 *     type="integer",
							 | 
						||
| 
								 | 
							
								 *     format="int64",
							 | 
						||
| 
								 | 
							
								 *   ),
							 | 
						||
| 
								 | 
							
								 *   in="path",
							 | 
						||
| 
								 | 
							
								 *   required=true
							 | 
						||
| 
								 | 
							
								 * )
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @OA\RequestBody(
							 | 
						||
| 
								 | 
							
								 *   request="product_in_body",
							 | 
						||
| 
								 | 
							
								 *   required=true,
							 | 
						||
| 
								 | 
							
								 *   description="product_request",
							 | 
						||
| 
								 | 
							
								 *   @OA\JsonContent(ref="#/components/schemas/Product")
							 | 
						||
| 
								 | 
							
								 * )
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								?>
							 | 
						||
| 
								 | 
							
								You can define top-level responses which can be references with $ref="#/components/responses/$response"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								I find it usefull to add @OA\Response(ref="#/components/responses/todo") to the operations when i'm starting out with writting the swagger documentation.
							 | 
						||
| 
								 | 
							
								As it bypasses the "@OA\Get() requires at least one @OA\Response()" error and you'll get a nice list of the available api calls in swagger-ui.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Then later, a search for '#/components/responses/todo' will reveal the operations I haven't documented yet.
							 | 
						||
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @OA\Response(
							 | 
						||
| 
								 | 
							
								 *   response="product",
							 | 
						||
| 
								 | 
							
								 *   description="All information about a product",
							 | 
						||
| 
								 | 
							
								 *   @OA\JsonContent(ref="#/components/schemas/Product")
							 | 
						||
| 
								 | 
							
								 * )
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @OA\Response(
							 | 
						||
| 
								 | 
							
								 *   response="todo",
							 | 
						||
| 
								 | 
							
								 *   description="This API call has no documentated response (yet)",
							 | 
						||
| 
								 | 
							
								 * )
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								?>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								And although definitions are generally used for model-level schema's' they can be used for smaller things as well.
							 | 
						||
| 
								 | 
							
								Like a @OA\Schema, @OA\Property or @OA\Items that is uses multiple times.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @OA\Schema(
							 | 
						||
| 
								 | 
							
								 *   schema="product_status",
							 | 
						||
| 
								 | 
							
								 *   type="string",
							 | 
						||
| 
								 | 
							
								 *   description="The status of a product",
							 | 
						||
| 
								 | 
							
								 *   enum={"available", "discontinued"},
							 | 
						||
| 
								 | 
							
								 *   default="available"
							 | 
						||
| 
								 | 
							
								 * )
							 | 
						||
| 
								 | 
							
								 */
							 |