VMware vSphere Integrated Containers provider (#206)

* Add Virtual Kubelet provider for VIC

Initial virtual kubelet provider for VMware VIC.  This provider currently
handles creating and starting of a pod VM via the VIC portlayer and persona
server.  Image store handling via the VIC persona server.  This provider
currently requires the feature/wolfpack branch of VIC.

* Added pod stop and delete.  Also added node capacity.

Added the ability to stop and delete pod VMs via VIC.  Also retrieve
node capacity information from the VCH.

* Cleanup and readme file

Some file clean up and added a Readme.md markdown file for the VIC
provider.

* Cleaned up errors, added function comments, moved operation code

1. Cleaned up error handling.  Set standard for creating errors.
2. Added method prototype comments for all interface functions.
3. Moved PodCreator, PodStarter, PodStopper, and PodDeleter to a new folder.

* Add mocking code and unit tests for podcache, podcreator, and podstarter

Used the unit test framework used in VIC to handle assertions in the provider's
unit test.  Mocking code generated using OSS project mockery, which is compatible
with the testify assertion framework.

* Vendored packages for the VIC provider

Requires feature/wolfpack branch of VIC and a few specific commit sha of
projects used within VIC.

* Implementation of POD Stopper and Deleter unit tests (#4)

* Updated files for initial PR
This commit is contained in:
Loc Nguyen
2018-06-04 15:41:32 -07:00
committed by Ria Bhatia
parent 98a111e8b7
commit 513cebe7b7
6296 changed files with 1123685 additions and 8 deletions

View File

@@ -0,0 +1,17 @@
{
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"children": {
"type": "array",
"items": {
"$ref": "Person"
}
}
}
}

View File

@@ -0,0 +1,68 @@
{
"definitions": {
"Cat": {
"description": "A representation of a cat",
"allOf": [
{ "$ref": "#/models/Pet" },
{
"properties": {
"huntingSkill": {
"type": "string",
"description": "The measured skill for hunting",
"default": "lazy",
"enum": ["clueless", "lazy", "adventerous", "aggressive"]
}
},
"required": [ "huntingSkill" ]
}
]
},
"Dog": {
"description": "A representation of a dog",
"allOf": [
{ "$ref": "#/models/Pet" },
{
"properties": {
"packSize": {
"type": "integer",
"format": "int32",
"description": "the size of the pack the dog is from",
"default": 0,
"minimum": 0
}
},
"required": [ "name", "packSize" ]
}
]
},
"Fish": {
"description": "A representation of a fish",
"allOf": [
{ "$ref": "#/models/Pet" },
{
"properties": {
"fins": {
"type": "integer",
"format": "int32",
"description": "count of fins",
"minimum": 0
}
},
"required": [ "fins" ]
}
]
},
"Pet": {
"discriminator": "petType",
"properties": {
"name": {
"type": "string"
},
"petType": {
"type": "string"
}
},
"required": [ "name", "petType" ]
}
}
}

View File

@@ -0,0 +1,7 @@
{
"description": "true",
"additionalProperties": {
"type": "string",
"format": "date-time"
}
}

View File

@@ -0,0 +1,28 @@
{
"definitions": {
"Pet": {
"properties": {
"name": {
"type": "string"
}
},
"required": [
"name"
]
},
"Dog": {
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
}
},
"required": [
"name"
]
}
}
}

View File

@@ -0,0 +1,7 @@
{
"description": "This is a Map[String, Integer]",
"additionalProperties": {
"type": "integer",
"format": "int32"
}
}

View File

@@ -0,0 +1,7 @@
{
"description": "true",
"additionalProperties": {
"type": "integer",
"format": "int64"
}
}

View File

@@ -0,0 +1,67 @@
{
"description": "true",
"properties": {
"booleanValue": {
"type": "boolean"
},
"byteValue": {
"type": "string",
"format": "byte"
},
"dateTimeValue": {
"type": "string",
"format": "date-time"
},
"int32Value": {
"type": "integer",
"format": "int32"
},
"int64Value": {
"type": "integer",
"format": "int64"
},
"stringValue": {
"type": "string"
},
"booleanArrayValue": {
"type": "array",
"items": {
"type": "boolean"
}
},
"byteArrayValue": {
"type": "array",
"items": {
"type": "string",
"format": "byte"
}
},
"dateTimeArrayValue": {
"type": "array",
"items": {
"type": "string",
"format": "date-time"
}
},
"int32ArrayValue": {
"type": "array",
"items": {
"type": "integer",
"format": "int32"
}
},
"int64ArrayValue": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
}
},
"stringArrayValue": {
"type": "array",
"items": {
"type": "string"
}
}
}
}

View File

@@ -0,0 +1,15 @@
{
"description": "This is a Map[String, { id: Long, name: String}]",
"additionalProperties": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
}
}
}
}

View File

@@ -0,0 +1,18 @@
{
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"childrensAges": {
"type": "array",
"items": {
"type": "integer",
"format": "int32"
}
}
}
}

View File

@@ -0,0 +1,8 @@
{
"description": "true",
"properties": {
"name": {
"type": "string"
}
}
}

View File

@@ -0,0 +1,26 @@
{
"description": "this model serves xml and json structures",
"xml": {
"name": "XMLModel"
},
"properties": {
"id": {
"type": "integer",
"format": "int64",
"xml": {
"attribute": true,
"namespace": "ns1",
"prefix": "urn1"
}
},
"items": {
"type": "array",
"items": {
"type": "string"
},
"xml": {
"wrapped": true
}
}
}
}

View File

@@ -0,0 +1,14 @@
{
"definitions": {
"Pet": {
"properties": {
"name": {
"type": "string"
}
},
"required": [
"name"
]
}
}
}

View File

@@ -0,0 +1,28 @@
{
"definitions": {
"Pet": {
"properties": {
"name": {
"type": "string"
}
},
"required": [
"name"
]
},
"Dog": {
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
}
},
"required": [
"name"
]
}
}
}

View File

@@ -0,0 +1,6 @@
{
"type": "array",
"items": {
"type": "boolean"
}
}

View File

@@ -0,0 +1,7 @@
{
"type": "array",
"items": {
"type": "string",
"format": "byte"
}
}

View File

@@ -0,0 +1,6 @@
{
"type": "array",
"items": {
"$ref": "ComplexType"
}
}

View File

@@ -0,0 +1,7 @@
{
"type": "array",
"items": {
"type": "string",
"format": "date-time"
}
}

View File

@@ -0,0 +1,7 @@
{
"type": "array",
"items": {
"type": "integer",
"format": "int32"
}
}

View File

@@ -0,0 +1,7 @@
{
"type": "array",
"items": {
"type": "integer",
"format": "int64"
}
}

View File

@@ -0,0 +1,5 @@
{
"$ref": "Foo",
"description": "a boolean",
"readOnly": true
}

View File

@@ -0,0 +1,6 @@
{
"type": "array",
"items": {
"type": "string"
}
}

View File

@@ -0,0 +1,5 @@
{
"type": "boolean",
"description": "a boolean",
"readOnly": true
}

View File

@@ -0,0 +1,4 @@
{
"type": "string",
"format": "byte"
}

View File

@@ -0,0 +1,4 @@
{
"type": "string",
"format": "date-time"
}

View File

@@ -0,0 +1,4 @@
{
"type": "integer",
"format": "int32"
}

View File

@@ -0,0 +1,4 @@
{
"type": "integer",
"format": "int64"
}

View File

@@ -0,0 +1,3 @@
{
"type": "string"
}

View File

@@ -0,0 +1,98 @@
{
"swagger": "2.0",
"info": {
"version": "1.0.9-abcd",
"title": "Swagger Sample API",
"description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification",
"termsOfService": "http://helloreverb.com/terms/",
"contact": {
"name": "wordnik api team",
"url": "http://developer.wordnik.com"
},
"license": {
"name": "Creative Commons 4.0 International",
"url": "http://creativecommons.org/licenses/by/4.0/"
}
},
"host": "my.api.com",
"basePath": "/v1",
"schemes": [
"http",
"https"
],
"consumes": [
"application/json"
],
"produces": [
"application/json",
"application/xml"
],
"paths": {
"/pets/{petId}": {
"get": {
"description": "Returns a pet based on ID",
"summary": "Find pet by ID",
"operationId": "getPetsById",
"produces": [
"application/json",
"text/html"
],
"parameters": [
{
"name": "petId",
"in": "path",
"description": "ID of pet that needs to be fetched",
"required": true,
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "csv"
}
],
"responses": {
"200": {
"description": "pet response",
"schema": {
"$ref": "Pet"
}
},
"default": {
"description": "error payload",
"schema": {
"$ref": "ErrorModel"
}
}
},
"schemes": [ "https" ]
}
}
},
"definitions": {
"Pet": {
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"tag": {
"type": "string"
}
}
},
"ErrorModel": {
"required": [ "code", "message" ],
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
}
}
}
}
}

View File

@@ -0,0 +1,100 @@
{
"swagger": "2.0",
"info": {
"version": "1.0.9-abcd",
"title": "Swagger Sample API",
"description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification",
"termsOfService": "http://helloreverb.com/terms/",
"contact": {
"name": "wordnik api team",
"url": "http://developer.wordnik.com"
},
"license": {
"name": "Creative Commons 4.0 International",
"url": "http://creativecommons.org/licenses/by/4.0/"
}
},
"host": "my.api.com",
"basePath": "/v1",
"schemes": [
"http",
"https"
],
"consumes": [
"application/json"
],
"produces": [
"application/json",
"application/xml"
],
"paths": {
"/pets/{id}": {
"parameters": [
{
"name": "id",
"in": "path",
"description": "ID of pet to use",
"required": true,
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "csv"
}
],
"get": {
"description": "Returns pets based on ID",
"summary": "Find pets by ID",
"operationId": "getPetsById",
"produces": [
"application/json",
"text/html"
],
"responses": {
"200": {
"description": "pet response",
"schema": {
"type": "array",
"items": {
"$ref": "Pet"
}
}
},
"default": {
"description": "error payload",
"schema": {
"$ref": "ErrorModel"
}
}
}
}
}
},
"definitions": {
"Pet": {
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"tag": {
"type": "string"
}
}
},
"ErrorModel": {
"required": [ "code", "message" ],
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
}
}
}
}
}

View File

@@ -0,0 +1,109 @@
{
"swagger": "2.0",
"info": {
"version": "1.0.9-abcd",
"title": "Swagger Sample API",
"description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification",
"termsOfService": "http://helloreverb.com/terms/",
"contact": {
"name": "wordnik api team",
"url": "http://developer.wordnik.com"
},
"license": {
"name": "Creative Commons 4.0 International",
"url": "http://creativecommons.org/licenses/by/4.0/"
}
},
"host": "my.api.com",
"basePath": "/v1",
"schemes": [
"http",
"https"
],
"consumes": [
"text/plain; charset=utf-8",
"application/json",
"application/vnd.github+json",
"application/vnd.github.v3+json",
"application/vnd.github.v3.raw+json",
"application/vnd.github.v3.text+json",
"application/vnd.github.v3.html+json",
"application/vnd.github.v3.full+json",
"application/vnd.github.v3.diff",
"application/vnd.github.v3.patch"
],
"produces": [
"application/json",
"application/xml"
],
"paths": {
"/pets/{id}": {
"parameters": [
{
"name": "id",
"in": "path",
"description": "ID of pet to use",
"required": true,
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "csv"
}
],
"get": {
"description": "Returns pets based on ID",
"summary": "Find pets by ID",
"operationId": "getPetsById",
"produces": [
"application/json",
"text/html"
],
"responses": {
"200": {
"description": "pet response",
"schema": {
"type": "array",
"items": {
"$ref": "Pet"
}
}
},
"default": {
"description": "error payload",
"schema": {
"$ref": "ErrorModel"
}
}
}
}
}
},
"definitions": {
"Pet": {
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"tag": {
"type": "string"
}
}
},
"ErrorModel": {
"required": [ "code", "message" ],
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
}
}
}
}
}

View File

@@ -0,0 +1,30 @@
{
"description": "Returns a pet based on ID",
"summary": "Find pet by ID",
"operationId": "getPetsById",
"tags": [ "foo", "bar"],
"produces": [
"application/json",
"text/html"
],
"parameters": [
{
"name": "petId",
"in": "path",
"description": "ID of pet that needs to be fetched",
"required": true,
"type": "integer",
"format": "int64"
}
],
"responses": {
"200": {
"description": "a pet to be returned",
"schema": {"$ref": "Pet"}
},
"default": {
"description": "Unexpected error",
"schema": {"$ref": "ErrorModel"}
}
}
}

View File

@@ -0,0 +1,36 @@
{
"description": "Returns a pet based on ID",
"summary": "Find pet by ID",
"operationId": "getPetsById",
"produces": [
"application/json",
"text/html"
],
"parameters": [
{
"name": "petId",
"in": "path",
"description": "ID of pet that needs to be fetched",
"required": true,
"type": "integer",
"format": "int64"
},
{
"name": "includeDetails",
"in": "query",
"description": "include details in response",
"required": true,
"type": "boolean"
}
],
"responses": {
"200": {
"description": "a pet to be returned",
"schema": {"$ref": "Pet"}
},
"default": {
"description": "Unexpected error",
"schema": {"$ref": "ErrorModel"}
}
}
}

View File

@@ -0,0 +1,33 @@
{
"description": "Returns a pet based on ID",
"summary": "Find pet by ID",
"operationId": "getPetsById",
"produces": [
"application/json",
"text/html"
],
"parameters": [
{
"name": "petId",
"in": "path",
"description": "ID of pet that needs to be fetched",
"required": true,
"type": "integer",
"format": "int64"
}
],
"responses": {
"200": {
"description": "fun",
"schema": {"$ref": "Pet"}
},
"400": {
"description": "Invalid ID supplied <= this is purely for documentation",
"schema": {"$ref": "ErrorModel"}
},
"default": {
"description": "Unexpected error",
"schema": {"$ref": "ErrorModel"}
}
}
}

View File

@@ -0,0 +1,13 @@
{
"name": "user",
"in": "body",
"description": "user to add to the system",
"required": true,
"schema": {
"type": "array",
"items": {
"type": "string"
},
"format": "csv"
}
}

View File

@@ -0,0 +1,9 @@
{
"name": "user",
"in": "body",
"description": "user to add to the system",
"required": true,
"schema": {
"$ref": "User"
}
}

View File

@@ -0,0 +1,10 @@
{
"name": "id",
"in": "body",
"description": "id to add",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}

View File

@@ -0,0 +1,12 @@
{
"name": "user",
"in": "body",
"description": "user to add to the system",
"required": true,
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
}

View File

@@ -0,0 +1,9 @@
{
"name": "user",
"in": "body",
"description": "user to add to the system",
"required": true,
"schema": {
"type": "string"
}
}

View File

@@ -0,0 +1,7 @@
{
"name": "firstName",
"in": "formData",
"description": "users first name",
"required": true,
"$ref": "Nothing"
}

View File

@@ -0,0 +1,8 @@
{
"name": "id",
"in": "formData",
"description": "username to fetch",
"required": true,
"type": "integer",
"format": "int64"
}

View File

@@ -0,0 +1,10 @@
{
"name": "user",
"in": "formData",
"description": "user to add to the system",
"required": true,
"type": "array",
"items": {
"type": "string"
}
}

View File

@@ -0,0 +1,7 @@
{
"name": "firstName",
"in": "formData",
"description": "users first name",
"required": true,
"type": "string"
}

View File

@@ -0,0 +1,12 @@
{
"name": "token",
"in": "header",
"description": "token to be passed as a header",
"required": true,
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"collectionFormat": "csv"
}

View File

@@ -0,0 +1,11 @@
{
"name": "token",
"in": "header",
"description": "token to be passed as a header",
"required": true,
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "csv"
}

View File

@@ -0,0 +1,7 @@
{
"name": "token",
"in": "header",
"description": "token to be passed as a header",
"required": true,
"type": "string"
}

View File

@@ -0,0 +1,8 @@
{
"name": "id",
"in": "path",
"description": "username to fetch",
"required": true,
"type": "integer",
"format": "int64"
}

View File

@@ -0,0 +1,11 @@
{
"name": "usernames",
"in": "path",
"description": "usernames to pass",
"required": true,
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "csv"
}

View File

@@ -0,0 +1,7 @@
{
"name": "username",
"in": "path",
"description": "username to fetch",
"required": true,
"type": "string"
}

View File

@@ -0,0 +1,12 @@
{
"name": "id",
"in": "query",
"description": "ID of the object to fetch",
"required": true,
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"collectionFormat": "csv"
}

View File

@@ -0,0 +1,8 @@
{
"name": "id",
"in": "query",
"description": "ID of the object to fetch",
"required": true,
"type": "integer",
"format": "int64"
}

View File

@@ -0,0 +1,9 @@
{
"name": "id",
"in": "query",
"description": "a complex object which should not validate",
"required": true,
"schema": {
"$ref": "Pet"
}
}

View File

@@ -0,0 +1,114 @@
{
"swagger": "2.0",
"info": {
"version": "1.0.9-abcd",
"title": "Swagger Sample API",
"description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification",
"termsOfService": "http://helloreverb.com/terms/",
"contact": {
"name": "wordnik api team",
"url": "http://developer.wordnik.com"
},
"license": {
"name": "Creative Commons 4.0 International",
"url": "http://creativecommons.org/licenses/by/4.0/"
}
},
"host": "my.api.com",
"basePath": "/v1",
"schemes": [
"http",
"https"
],
"consumes": [
"application/json"
],
"produces": [
"application/json",
"application/xml"
],
"paths": {
"/pets/{petId}": {
"get": {
"description": "Returns a pet based on ID",
"summary": "Find pet by ID",
"operationId": "getPetsById",
"produces": [
"application/json",
"text/html"
],
"parameters": [
{
"name": "petId",
"in": "path",
"description": "ID of pet that needs to be fetched",
"required": true,
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "csv"
}
],
"responses": {
"200": {
"description": "pet response",
"schema": {
"$ref": "Pet"
},
"examples": {
"application/json": {
"id": 9,
"category": {
"name": "domestic"
},
"name": "monster",
"tags": [
{
"name": "for sale"
}
],
"status": "alive"
}
}
},
"default": {
"description": "error payload",
"schema": {
"$ref": "ErrorModel"
}
}
}
}
}
},
"definitions": {
"Pet": {
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"example": "cat"
},
"tag": {
"type": "string",
"example": "for sale"
}
}
},
"ErrorModel": {
"required": [ "code", "message" ],
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
}
}
}
}
}

View File

@@ -0,0 +1,62 @@
{
"swagger": "2.0",
"info": {
"version": "1.0.9-abcd",
"title": "Swagger Sample API",
"description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification",
"termsOfService": "http://helloreverb.com/terms/",
"contact": {
"name": "wordnik api team",
"url": "http://developer.wordnik.com"
},
"license": {
"name": "Creative Commons 4.0 International",
"url": "http://creativecommons.org/licenses/by/4.0/"
}
},
"host": "my.api.com",
"basePath": "/v1",
"schemes": [
"http",
"https"
],
"consumes": [
"application/json"
],
"produces": [
"application/json",
"application/xml"
],
"paths": {
"/pets/{petId}": {
"$ref": "https://raw.githubusercontent.com/reverb/swagger-spec/master/fixtures/v2.0/json/resources/resourceWithLinkedDefinitions_part1.json"
}
},
"definitions": {
"Pet": {
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"tag": {
"type": "string"
}
}
},
"ErrorModel": {
"required": [ "code", "message" ],
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
}
}
}
}
}

View File

@@ -0,0 +1,38 @@
{
"get": {
"description": "Returns a pet based on ID",
"summary": "Find pet by ID",
"operationId": "getPetsById",
"produces": [
"application/json",
"text/html"
],
"parameters": [
{
"name": "petId",
"in": "path",
"description": "ID of pet that needs to be fetched",
"required": true,
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "csv"
}
],
"responses": {
"200": {
"description": "pet response",
"schema": {
"$ref": "Pet"
}
},
"default": {
"description": "error payload",
"schema": {
"$ref": "ErrorModel"
}
}
}
}
}

View File

@@ -0,0 +1,99 @@
{
"swagger": "2.0",
"info": {
"version": "1.0.9-abcd",
"title": "Swagger Sample API",
"description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification",
"termsOfService": "http://helloreverb.com/terms/",
"contact": {
"name": "wordnik api team",
"url": "http://developer.wordnik.com"
},
"license": {
"name": "Creative Commons 4.0 International",
"url": "http://creativecommons.org/licenses/by/4.0/"
}
},
"basePath": "/v1",
"schemes": [
"http",
"https"
],
"consumes": [
"application/json"
],
"produces": [
"application/json",
"application/xml"
],
"paths": {
"/pets/{id}": {
"parameters": [
{
"name": "id",
"in": "path",
"description": "ID of pet to use",
"required": true,
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "csv"
}
],
"get": {
"description": "Returns pets based on ID",
"summary": "Find pets by ID",
"operationId": "getPetsById",
"produces": [
"application/json",
"text/html"
],
"responses": {
"200": {
"description": "pet response",
"schema": {
"type": "array",
"items": {
"$ref": "Pet"
}
}
},
"default": {
"description": "error payload",
"schema": {
"$ref": "ErrorModel"
}
}
}
}
}
},
"definitions": {
"Pet": {
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"tag": {
"type": "string"
}
}
},
"ErrorModel": {
"required": [ "code", "message" ],
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
}
}
}
}
}

View File

@@ -0,0 +1,105 @@
{
"swagger": "2.0",
"info": {
"version": "1.0.9-abcd",
"title": "Swagger Sample API",
"description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification",
"termsOfService": "http://helloreverb.com/terms/",
"contact": {
"name": "wordnik api team",
"url": "http://developer.wordnik.com"
},
"license": {
"name": "Creative Commons 4.0 International",
"url": "http://creativecommons.org/licenses/by/4.0/"
}
},
"host": "my.api.com",
"basePath": "/v1",
"schemes": [
"http",
"https"
],
"consumes": [
"application/json"
],
"produces": [
"application/json",
"application/xml"
],
"paths": {
"/pets/{id}": {
"get": {
"description": "Returns pets based on ID",
"summary": "Find pets by ID",
"operationId": "getPetsById",
"parameters": [
{ "$ref": "#/parameters/skipParam" },
{ "$ref": "#/parameters/limitParam" }
],
"responses": {
"200": {
"description": "pet response",
"schema": {
"type": "array",
"items": {
"$ref": "Pet"
}
}
},
"default": {
"description": "error payload",
"schema": {
"$ref": "ErrorModel"
}
}
}
}
}
},
"parameters": {
"skipParam": {
"name": "skip",
"in": "query",
"description": "number of items to skip",
"required": true,
"type": "integer",
"format": "int32"
},
"limitParam": {
"name": "limit",
"in": "query",
"description": "max records to return",
"required": true,
"type": "integer",
"format": "int32"
}
},
"definitions": {
"Pet": {
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"tag": {
"type": "string"
}
}
},
"ErrorModel": {
"required": [ "code", "message" ],
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
}
}
}
}
}

View File

@@ -0,0 +1,181 @@
{
"swagger": "2.0",
"info": {
"version": "1.0.9-abcd",
"title": "Swagger Sample API",
"description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification",
"termsOfService": "http://helloreverb.com/terms/",
"contact": {
"name": "wordnik api team",
"url": "http://developer.wordnik.com"
},
"license": {
"name": "Creative Commons 4.0 International",
"url": "http://creativecommons.org/licenses/by/4.0/"
}
},
"basePath": "/v1",
"schemes": [
"http",
"https"
],
"consumes": [
"application/json"
],
"produces": [
"application/json",
"application/xml"
],
"security": [
{
"githubAccessCode": [ "user", "gist" ]
},
{
"internalApiKey": []
}
],
"paths": {
"/pets/{id}": {
"parameters": [
{
"name": "id",
"in": "path",
"description": "ID of pet to use",
"required": true,
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "csv"
}
],
"get": {
"description": "Returns pets based on ID",
"summary": "Find pets by ID",
"operationId": "getPetsById",
"security": [
{
"githubAuth":[
"user:read",
"user:write"
]
},
{
"internalApiKey": []
}
],
"produces": [
"application/json",
"text/html"
],
"responses": {
"200": {
"description": "pet response",
"schema": {
"type": "array",
"items": {
"$ref": "Pet"
}
}
},
"default": {
"description": "error payload",
"schema": {
"$ref": "ErrorModel"
}
}
}
}
}
},
"securityDefinitions": {
"githubAccessCode": {
"type": "oauth2",
"scopes": {
"user": "Grants read/write access to profile info only. Note that this scope includes user:email and user:follow.",
"user:email": "Grants read access to a users email addresses.",
"user:follow": "Grants access to follow or unfollow other users.",
"public_repo": "Grants read/write access to code, commit statuses, and deployment statuses for public repositories and organizations.",
"repo": "Grants read/write access to code, commit statuses, and deployment statuses for public and private repositories and organizations.",
"repo_deployment": "Grants access to deployment statuses for public and private repositories. This scope is only necessary to grant other users or services access to deployment statuses, without granting access to the code.",
"repo:status": "Grants read/write access to public and private repository commit statuses. This scope is only necessary to grant other users or services access to private repository commit statuses without granting access to the code.",
"delete_repo": "Grants access to delete adminable repositories.",
"notifications": "Grants read access to a users notifications. repo also provides this access.",
"gist": "Grants write access to gists.",
"read:repo_hook": "Grants read and ping access to hooks in public or private repositories.",
"write:repo_hook": "Grants read, write, and ping access to hooks in public or private repositories.",
"admin:repo_hook": "Grants read, write, ping, and delete access to hooks in public or private repositories.",
"read:org": "Read-only access to organization, teams, and membership.",
"write:org": "Publicize and unpublicize organization membership.",
"admin:org": "Fully manage organization, teams, and memberships.",
"read:public_key": "List and view details for public keys.",
"write:public_key": "Create, list, and view details for public keys.",
"admin:public_key": "Fully manage public keys."
},
"flow": "accessCode",
"authorizationUrl": "https://github.com/login/oauth/authorize",
"tokenUrl": "https://github.com/login/oauth/access_token"
},
"petstoreImplicit": {
"type": "oauth2",
"scopes": {
"user": "Grants read/write access to profile info only. Note that this scope includes user:email and user:follow.",
"user:email": "Grants read access to a users email addresses.",
"user:follow": "Grants access to follow or unfollow other users.",
"public_repo": "Grants read/write access to code, commit statuses, and deployment statuses for public repositories and organizations.",
"repo": "Grants read/write access to code, commit statuses, and deployment statuses for public and private repositories and organizations.",
"repo_deployment": "Grants access to deployment statuses for public and private repositories. This scope is only necessary to grant other users or services access to deployment statuses, without granting access to the code.",
"repo:status": "Grants read/write access to public and private repository commit statuses. This scope is only necessary to grant other users or services access to private repository commit statuses without granting access to the code.",
"delete_repo": "Grants access to delete adminable repositories.",
"notifications": "Grants read access to a users notifications. repo also provides this access.",
"gist": "Grants write access to gists.",
"read:repo_hook": "Grants read and ping access to hooks in public or private repositories.",
"write:repo_hook": "Grants read, write, and ping access to hooks in public or private repositories.",
"admin:repo_hook": "Grants read, write, ping, and delete access to hooks in public or private repositories.",
"read:org": "Read-only access to organization, teams, and membership.",
"write:org": "Publicize and unpublicize organization membership.",
"admin:org": "Fully manage organization, teams, and memberships.",
"read:public_key": "List and view details for public keys.",
"write:public_key": "Create, list, and view details for public keys.",
"admin:public_key": "Fully manage public keys."
},
"flow": "implicit",
"authorizationUrl": "http://petstore.swagger.wordnik.com/oauth/dialog"
},
"internalApiKey": {
"type": "apiKey",
"in": "header",
"name": "api_key"
}
},
"definitions": {
"Pet": {
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"tag": {
"type": "string"
}
}
},
"ErrorModel": {
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
}
}
}
}
}

View File

@@ -0,0 +1,97 @@
{
"swagger": "2.0",
"info": {
"version": "1.0.9-abcd",
"title": "Swagger Sample API",
"description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification",
"termsOfService": "http://helloreverb.com/terms/",
"contact": {
"name": "wordnik api team",
"url": "http://developer.wordnik.com"
},
"license": {
"name": "Creative Commons 4.0 International",
"url": "http://creativecommons.org/licenses/by/4.0/"
}
},
"host": "my.api.com",
"basePath": "/v1",
"schemes": [
"http",
"https"
],
"consumes": [
"application/json"
],
"produces": [
"application/json",
"application/xml"
],
"paths": {
"/pets/{petId}": {
"get": {
"description": "Returns a pet based on ID",
"summary": "Find pet by ID",
"operationId": "getPetsById",
"produces": [
"application/json",
"text/html"
],
"parameters": [
{
"name": "petId",
"in": "path",
"description": "ID of pet that needs to be fetched",
"required": true,
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "csv"
}
],
"responses": {
"200": {
"description": "pet response",
"schema": {
"$ref": "Pet"
}
},
"default": {
"description": "error payload",
"schema": {
"$ref": "ErrorModel"
}
}
}
}
}
},
"definitions": {
"Pet": {
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"tag": {
"type": "string"
}
}
},
"ErrorModel": {
"required": [ "code", "message" ],
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
}
}
}
}
}

View File

@@ -0,0 +1,112 @@
{
"swagger": "2.0",
"x-reverb": {
"addAnythingYouWant": true
},
"info": {
"x-reverb-info": "this is an example",
"version": "1.0.9-abcd",
"title": "Swagger Sample API",
"description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification",
"termsOfService": "http://helloreverb.com/terms/",
"contact": {
"name": "wordnik api team",
"url": "http://developer.wordnik.com"
},
"license": {
"name": "Creative Commons 4.0 International",
"url": "http://creativecommons.org/licenses/by/4.0/"
}
},
"host": "my.api.com",
"basePath": "/v1",
"schemes": [
"http",
"https"
],
"consumes": [
"application/json"
],
"produces": [
"application/json",
"application/xml"
],
"tags": [
{
"name": "pets"
}
],
"paths": {
"x-reverb-path-info": "vendor info",
"/pets": {
"x-vendor-method": {},
"get": {
"x-vendor-operation-property": {},
"description": "Returns a pet based on ID",
"summary": "Find pet by ID",
"operationId": "getPetsById",
"produces": [
"application/json",
"text/html"
],
"parameters": [
{
"x-vendor-parameter-property": {},
"name": "petId",
"in": "path",
"description": "ID of pet that needs to be fetched",
"required": true,
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "csv"
}
],
"responses": {
"x-vendor-operation-response-property": {},
"200": {
"description": "pet response",
"schema": {
"$ref": "Pet"
}
},
"default": {
"description": "error payload",
"schema": {
"$ref": "ErrorModel"
}
}
}
}
}
},
"definitions": {
"Pet": {
"x-vendor-model-property": {},
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"tag": {
"type": "string"
}
}
},
"ErrorModel": {
"required": [ "code", "message" ],
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
}
}
}
}
}

View File

@@ -0,0 +1,107 @@
{
"swagger": "2.0",
"x-reverb": {
"addAnythingYouWant": true
},
"info": {
"x-reverb-info": "this is an example",
"version": "1.0.9-abcd",
"title": "Swagger Sample API",
"description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification",
"termsOfService": "http://helloreverb.com/terms/",
"contact": {
"name": "wordnik api team",
"url": "http://developer.wordnik.com"
},
"license": {
"name": "Creative Commons 4.0 International",
"url": "http://creativecommons.org/licenses/by/4.0/"
}
},
"host": "my.api.com",
"basePath": "/v1",
"schemes": [
"http",
"https"
],
"consumes": [
"application/json"
],
"produces": [
"application/json",
"application/xml"
],
"paths": {
"x-reverb-path-info": "vendor info",
"/pets": {
"x-vendor-method": {},
"get": {
"x-vendor-operation-property": {},
"description": "Returns a pet based on ID",
"summary": "Find pet by ID",
"operationId": "getPetsById",
"produces": [
"application/json",
"text/html"
],
"parameters": [
{
"x-vendor-parameter-property": {},
"name": "petId",
"in": "path",
"description": "ID of pet that needs to be fetched",
"required": true,
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "csv"
}
],
"responses": {
"x-vendor-operation-response-property": {},
"200": {
"description": "pet response",
"schema": {
"$ref": "Pet"
}
},
"default": {
"description": "error payload",
"schema": {
"$ref": "ErrorModel"
}
}
}
}
}
},
"definitions": {
"Pet": {
"x-vendor-model-property": {},
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"tag": {
"type": "string"
}
}
},
"ErrorModel": {
"required": [ "code", "message" ],
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
}
}
}
}
}

View File

@@ -0,0 +1,9 @@
{
"description": "A complex object array response",
"schema": {
"type": "array",
"items": {
"$ref": "VeryComplexType"
}
}
}

View File

@@ -0,0 +1,7 @@
{
"description": "A date-time response",
"schema": {
"type": "string",
"format": "date-time"
}
}

View File

@@ -0,0 +1,7 @@
{
"description": "A simple string response",
"schema": {
"type": "integer",
"format": "int32"
}
}

View File

@@ -0,0 +1,7 @@
{
"description": "A simple string response",
"schema": {
"type": "integer",
"format": "int64"
}
}

View File

@@ -0,0 +1,18 @@
{
"200": {
"description": "simple string response",
"schema": {
"type": "string"
}
},
"201": {
"description": "object created"
},
"default": {
"description": "oops",
"schema": {
"type": "integer",
"format": "int32"
}
}
}

View File

@@ -0,0 +1,9 @@
{
"description": "A string array response",
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
}

View File

@@ -0,0 +1,6 @@
{
"description": "A simple string response",
"schema": {
"type": "string"
}
}

View File

@@ -0,0 +1,10 @@
{
"description": "A simple string response",
"schema": {
"type": "string"
},
"headers": {
"is-dog": {"type": "boolean"},
"is-cat": {"type": "boolean"}
}
}

View File

@@ -0,0 +1,3 @@
{
"description": "object created"
}