{
 "swagger": "2.0",
 "info": {
  "version": "0.0.0",
  "title": "XMS Error Response Extensions",
  "description": "XMS Error Response Extensions"
 },
 "host": "localhost",
 "schemes": [
  "http"
 ],
 "produces": [
   "application/json"
],
"consumes": [
   "application/json"
],
 "paths": {
  "/errorStatusCodes/Pets/{petId}/GetPet": {
   "get": {
    "operationId": "Pet_GetPetById",
    "description": "Gets pets by id.",
    "parameters": [
     {
      "name": "petId",
      "in": "path",
      "required": true,
      "type": "string",
      "description": "pet id"
     }
    ],
    "responses": {
     "200": {
      "description": "",
      "schema": {
       "$ref": "#/definitions/Pet"
      }
     },
     "202": {
      "description": "something something dark side"
     },
     "404": {
      "description": "Not found",
      "schema": {
       "$ref": "#/definitions/NotFoundErrorBase"
      },
      "x-ms-error-response": true
     },
     "400": {
      "description": "Bad request",
      "schema": {
       "type": "string"
      },
      "x-ms-error-response": true
     },
     "501": {
      "description": "Some unexpected error",
      "schema": {
       "type": "integer"
      },
      "x-ms-error-response": true
     },
     "default": {
      "description": "default stuff"
     }
    }
   }
  },
  "/errorStatusCodes/Pets/doSomething/{whatAction}": {
   "post": {
    "operationId": "Pet_DoSomething",
    "description": "Asks pet to do something",
    "parameters": [
     {
      "name": "whatAction",
      "in": "path",
      "required": true,
      "type": "string",
      "description": "what action the pet should do"
     }
    ],
    "responses": {
     "200": {
      "description": "action performed",
      "schema": {
       "$ref": "#/definitions/PetAction"
      }
     },
     "500": {
      "description": "something bad happened",
      "schema": {
       "$ref": "#/definitions/PetActionError"
      },
      "x-ms-error-response": true
     },
     "default": {
      "description": "default stuff",
      "schema": {
       "$ref": "#/definitions/PetActionError"
      }
     }
    }
   }
  },
  "/errorStatusCodes/Pets/hasModelsParam": {
   "post": {
      "operationId": "Pet_HasModelsParam",
      "description": "Ensure you can correctly deserialize the returned PetActionError and deserialization doesn't conflict with the input param name 'models'",
      "parameters": [
       {
        "name": "models",
        "in": "query",
        "type": "string",
        "x-ms-client-default": "value1",
        "description": "Make sure model deserialization doesn't conflict with this param name, which has input name 'models'. Use client default value in call"
       }
      ],
      "responses": {
       "200": {
        "description": "OK. We will be returning an error though"
       },
       "500": {
         "description": "Will return error. Make sure the error can be correctly deserialized",
         "schema": {
          "$ref": "#/definitions/PetActionError"
         },
         "x-ms-error-response": true
        },
       "default": {
        "description": "Default",
        "schema": {
         "$ref": "#/definitions/PetActionError"
        }
       }
      }
     }
  }
 },
 "definitions": {
  "Pet": {
   "allOf": [
    {
     "$ref": "#/definitions/Animal"
    }
   ],
   "properties": {
    "name": {
     "type": "string",
     "readOnly": true,
     "description": "Gets the Pet by id."
    }
   }
  },
  "NotFoundErrorBase": {
   "properties": {
    "reason": {
     "type": "string"
    },
    "whatNotFound": {
     "type": "string"
    }
   },
   "allOf": [
    {
     "$ref": "#/definitions/BaseError"
    }
   ],
   "required": [
    "whatNotFound"
   ],
   "discriminator": "whatNotFound"
  },
  "BaseError": {
   "properties": {
    "someBaseProp": {
     "type": "string"
    }
   }
  },
  "LinkNotFound": {
   "properties": {
    "whatSubAddress": {
     "type": "string"
    }
   },
   "allOf": [
    {
     "$ref": "#/definitions/NotFoundErrorBase"
    }
   ],
   "x-ms-discriminator-value": "InvalidResourceLink"
  },
  "AnimalNotFound": {
   "properties": {
    "name": {
     "type": "string"
    }
   },
   "allOf": [
    {
     "$ref": "#/definitions/NotFoundErrorBase"
    }
   ]
  },
  "Animal": {
   "properties": {
    "aniType": {
     "type": "string"
    }
   }
  },
  "PetAction": {
   "properties": {
    "actionResponse": {
     "type": "string",
     "description": "action feedback"
    }
   }
  },
  "PetActionError": {
    "allOf": [
     {
        "$ref": "#/definitions/PetAction"
     }
    ],
   "properties": {
    "errorType": {
     "type": "string"
    },
    "errorMessage": {
     "type": "string",
     "description": "the error message"
    }
   },
   "required": [
    "errorType"
   ],
   "discriminator": "errorType"
  },
  "PetSadError": {
   "allOf": [
    {
     "$ref": "#/definitions/PetActionError"
    }
   ],
   "properties": {
    "reason": {
     "type": "string",
     "description": "why is the pet sad"
    }
   }
  },
  "PetHungryOrThirstyError": {
   "allOf": [
    {
     "$ref": "#/definitions/PetSadError"
    }
   ],
   "properties": {
    "hungryOrThirsty": {
     "type": "string",
     "description": "is the pet hungry or thirsty or both"
    }
   }
  }
 }
}