plugin/metrics: Switch to using promhttp instead of deprecated Handler (#1312)

prometheus.Handler is deprecated according to the godoc for the package so
instead we're using promhttp.

Additionally, we are exposing the Registry that metrics is using so other
plugins that are not inside of coredns can read the registry. Otherwise, if
we kept using the Default one, there's no way to access that from outside
of the coredns repo since it is vendored.
This commit is contained in:
James Hartig 2017-12-14 13:19:03 -05:00 committed by Miek Gieben
parent 1919913c98
commit 671d170619
6728 changed files with 1994787 additions and 16 deletions

View file

@ -0,0 +1,117 @@
## Contribution Guidelines
### Pull requests are always welcome
We are always thrilled to receive pull requests, and do our best to
process them as fast as possible. Not sure if that typo is worth a pull
request? Do it! We will appreciate it.
If your pull request is not accepted on the first try, don't be
discouraged! If there's a problem with the implementation, hopefully you
received feedback on what to improve.
We're trying very hard to keep go-swagger lean and focused. We don't want it
to do everything for everybody. This means that we might decide against
incorporating a new feature. However, there might be a way to implement
that feature *on top of* go-swagger.
### Conventions
Fork the repo and make changes on your fork in a feature branch:
- If it's a bugfix branch, name it XXX-something where XXX is the number of the
issue
- If it's a feature branch, create an enhancement issue to announce your
intentions, and name it XXX-something where XXX is the number of the issue.
Submit unit tests for your changes. Go has a great test framework built in; use
it! Take a look at existing tests for inspiration. Run the full test suite on
your branch before submitting a pull request.
Update the documentation when creating or modifying features. Test
your documentation changes for clarity, concision, and correctness, as
well as a clean documentation build. See ``docs/README.md`` for more
information on building the docs and how docs get released.
Write clean code. Universally formatted code promotes ease of writing, reading,
and maintenance. Always run `gofmt -s -w file.go` on each changed file before
committing your changes. Most editors have plugins that do this automatically.
Pull requests descriptions should be as clear as possible and include a
reference to all the issues that they address.
Pull requests must not contain commits from other users or branches.
Commit messages must start with a capitalized and short summary (max. 50
chars) written in the imperative, followed by an optional, more detailed
explanatory text which is separated from the summary by an empty line.
Code review comments may be added to your pull request. Discuss, then make the
suggested modifications and push additional commits to your feature branch. Be
sure to post a comment after pushing. The new commits will show up in the pull
request automatically, but the reviewers will not be notified unless you
comment.
Before the pull request is merged, make sure that you squash your commits into
logical units of work using `git rebase -i` and `git push -f`. After every
commit the test suite should be passing. Include documentation changes in the
same commit so that a revert would remove all traces of the feature or fix.
Commits that fix or close an issue should include a reference like `Closes #XXX`
or `Fixes #XXX`, which will automatically close the issue when merged.
### Sign your work
The sign-off is a simple line at the end of the explanation for the
patch, which certifies that you wrote it or otherwise have the right to
pass it on as an open-source patch. The rules are pretty simple: if you
can certify the below (from
[developercertificate.org](http://developercertificate.org/)):
```
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
660 York Street, Suite 102,
San Francisco, CA 94110 USA
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
```
then you just add a line to every git commit message:
Signed-off-by: Joe Smith <joe@gmail.com>
using your real name (sorry, no pseudonyms or anonymous contributions.)
You can add the sign off when creating the git commit via `git commit -s`.

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"
}

View file

View file

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

View file

@ -0,0 +1,5 @@
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}}, required: [name, packSize]}]}
Fish: {description: 'A representation of a fish', allOf: [{$ref: '#/models/Pet'}, {properties: {fins: {type: integer, format: int32, description: 'count of fins'}}, required: [fins]}]}
Pet: {discriminator: petType, properties: {name: {type: string}, petType: {type: string}}, required: [name, petType]}

View file

@ -0,0 +1,4 @@
description: 'true'
additionalProperties:
type: string
format: date-time

View file

@ -0,0 +1,3 @@
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,4 @@
description: 'This is a Map[String, Integer]'
additionalProperties:
type: integer
format: int32

View file

@ -0,0 +1,4 @@
description: 'true'
additionalProperties:
type: integer
format: int64

View file

@ -0,0 +1,14 @@
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,9 @@
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,5 @@
required:
- id
properties:
id: {type: integer, format: int64}
childrensAges: {type: array, items: {type: integer, format: int32}}

View file

@ -0,0 +1,3 @@
description: 'true'
properties:
name: {type: string}

View file

@ -0,0 +1,6 @@
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,2 @@
definitions:
Pet: {properties: {name: {type: string}}, required: [name]}

View file

@ -0,0 +1,3 @@
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,3 @@
type: array
items:
type: boolean

View file

@ -0,0 +1,4 @@
type: array
items:
type: string
format: byte

View file

@ -0,0 +1,3 @@
type: array
items:
$ref: ComplexType

View file

@ -0,0 +1,4 @@
type: array
items:
type: string
format: date-time

View file

@ -0,0 +1,4 @@
type: array
items:
type: integer
format: int32

View file

@ -0,0 +1,4 @@
type: array
items:
type: integer
format: int64

View file

@ -0,0 +1,3 @@
$ref: Foo
description: 'a boolean'
readOnly: true

View file

@ -0,0 +1,3 @@
type: array
items:
type: string

View file

@ -0,0 +1,3 @@
type: boolean
description: 'a boolean'
readOnly: true

View file

@ -0,0 +1,2 @@
type: string
format: byte

View file

@ -0,0 +1,2 @@
type: string
format: date-time

View file

@ -0,0 +1,2 @@
type: integer
format: int32

View file

@ -0,0 +1,2 @@
type: integer
format: int64

View file

@ -0,0 +1 @@
type: string

View file

@ -0,0 +1,23 @@
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,23 @@
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}}}

Some files were not shown because too many files have changed in this diff Show more