openapi: 3.0.0
info:
  description: "This is a sample interface"
  version: v1
  title: "OpenAPI Spec example"
paths:
  /persons:
    get:
      summary: List all persons
      operationId: listPersons
      tags:
        - persons
      parameters:
        - name: limit
          in: query
          description: How many items to return at one time (max 100)
          required: false
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: A paged array of pets
          headers:
            x-next:
              description: A link to the next page of responses
              schema:
                type: string
          content:
            application/xml:    
              schema:
                $ref: "#/components/schemas/Persons"
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      summary: Create a person
      operationId: createPerson
      tags:
        - person
      requestBody:
        content:
          application/xml:    
            schema:
              $ref: "#/components/schemas/Person"
      responses:
        '201':
          description: Null response
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
components:
  schemas:
    Person:
      type: object
      xml:
        namespace: http://example.com/schema/sample
      properties:
        id:
          type: integer
          format: int32
          xml:
            attribute: true
        name:
          type: string
          xml:
            namespace: http://example.com/schema/sample
      required:
        - name
        - id
    Persons:
      type: array
      items:
        $ref: "#/components/schemas/Person"
    Error:
      required:
        - code
        - message
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string