openapi: "3.0.1"
info:
  version: 1.0.0
  contact: 
    email: andy@zrmt.com
  title: AWS APi Gateway Petstore
  license:
    name: MIT
  description: An example API Gateway for AWS API Gateway
servers:
  - url: https://petstoreapi.example.com
    variables:
      basePath:
        default: /
    description: Main
tags:
  - name: Example
    description: An example tag
  - name: pets
    description: Endpoints related to pets

x-amazon-apigateway-request-validators:
  all:
    validateRequestBody: true
    validateRequestParameters: true
x-amazon-apigateway-request-validator: all

paths:
  /pets:
    get:
      description: List all pets
      operationId: "listPets"
      tags:
        - pets
      parameters:
      - name: "limit"
        in: "query"
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Pets"
      x-amazon-apigateway-integration:
        responses:
          default:
            statusCode: "200"
        requestTemplates:
          application/json: "{\"statusCode\": 200}"
        passthroughBehavior: "when_no_match"
        type: "mock"
    post:
      description: Updated Pet
      tags:
        - pets
      operationId: "createPets"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Pet"
        required: true
      responses:
        "404":
          description: "404 response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Pet"
        "201":
          description: "201 response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ArrayOfError"
        "400":
          description: "400 response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: "401 response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: "403 response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-amazon-apigateway-integration:
        responses:
          default:
            statusCode: "200"
        requestTemplates:
          application/json: "{\"statusCode\": 200}"
        passthroughBehavior: "never"
        type: "mock"
  /pets/{petId}:
    get:
      description: Upload pet
      tags:
        - pets
      operationId: "showPetById"
      parameters:
      - name: "petId"
        in: "path"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "200 response"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Pet"
      x-amazon-apigateway-integration:
        responses:
          default:
            statusCode: "200"
            responseTemplates:
              application/json: "{\"statusCode\": 200}"
        passthroughBehavior: "when_no_match"
        type: "mock"
components:
  schemas:
    Pet:
      type: "object"
      required:
        - id
        - name
      properties:
        id:
          type: integer
        name:
          type: string
        tag:
          type: string
      additionalProperties: true
    Pets:
      type: array
      items:
        $ref: '#/components/schemas/Pet'
      maxItems: 10
    Error:
      type: "object"
      required:
        - code
        - message
      properties:
        code:
          type: integer
        message:
          type: string
      additionalProperties: false
    ArrayOfError:
      type: "array"
      items: 
        $ref: "#/components/schemas/Error"
      maxItems: 10
  responses:
    BadRequest:
      description: The request was badly formed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The item was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorised:
      description: Unauthorised. The client lacks authentication credentials for this request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: Forbidden. The authenticated client is not allowed to perform the request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    encryptedScheme:
      type: oauth2

security:
  - oauth2: []
  