3

I'm trying to specify the following requestBody in swagger (OAS3):

{
  "first_name": "John",
  "last_name": "Doe",
  "email": "user@example.com",
  "interest_ids": [
     1,2
  ]
}

I currently have specified the requestBody as follows:

 *     @OA\RequestBody(
 *          required=true,
 *          @OA\JsonContent(
 *              required={"email"},
 *              @OA\Property(property="first_name", type="string", format="string", example="John"),
 *              @OA\Property(property="last_name", type="string", format="string", example="Doe"),
 *              @OA\Property(property="email", type="string", format="email", example="user@example.com"),
 *              @OA\Property(property="interest_ids", type="array", @OA\Items(
 *                      type="integer",
 *                      example=3
 *                  ),
 *              ),
 *          ),
 *     ),

This gives me a correct requestBody, however this obviously gives me only one key with value 3 as example value for the interest_ids array. How can I specify multiple ids without setting the type to string? I have tried multiple solutions, for example setting examples as example={1,2}, this unfortunately gives me another array within the interest_ids array:

{
  "first_name": "John",
  "last_name": "Doe",
  "email": "user@example.com",
  "interest_ids": [
    [
      1,
      2
    ]
  ]
}

I've also tried setting collectionFormat on the property type to different values, but that didn't help either.

Helen
  • 87,344
  • 17
  • 243
  • 314
user2191227
  • 392
  • 3
  • 15

1 Answers1

5

Have you tried moving the example from @OA\Items up into the property?

Right now the example is the example of a single value of the array.

I suppose what you want is an example of interest_ids itself.

 *       @OA\Property(property="interest_ids", type="array",
 *         example={3, 4},
 *         @OA\Items(
 *           type="integer"
 *         )
 *       )
DerManoMann
  • 409
  • 2
  • 3