{ "openapi": "3.0.0", "info": { "title": "Link Example", "version": "1.0.0" }, "paths": { "/2.0/users/{username}": { "get": { "operationId": "getUserByName", "parameters": [ { "name": "username", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "The User", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/user" } } }, "links": { "userRepositories": { "$ref": "#/components/links/UserRepositories" } } } } } }, "/2.0/repositories/{username}": { "get": { "operationId": "getRepositoriesByOwner", "parameters": [ { "name": "username", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "repositories owned by the supplied user", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/repository" } } } }, "links": { "userRepository": { "$ref": "#/components/links/UserRepository" } } } } } }, "/2.0/repositories/{username}/{slug}": { "get": { "operationId": "getRepository", "parameters": [ { "name": "username", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "slug", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "The repository", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/repository" } } }, "links": { "repositoryPullRequests": { "$ref": "#/components/links/RepositoryPullRequests" } } } } } }, "/2.0/repositories/{username}/{slug}/pullrequests": { "get": { "operationId": "getPullRequestsByRepository", "parameters": [ { "name": "username", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "slug", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "state", "in": "query", "schema": { "type": "string", "enum": [ "open", "merged", "declined" ] } } ], "responses": { "200": { "description": "an array of pull request objects", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/pullrequest" } } } } } } } }, "/2.0/repositories/{username}/{slug}/pullrequests/{pid}": { "get": { "operationId": "getPullRequestsById", "parameters": [ { "name": "username", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "slug", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "pid", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "a pull request object", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pullrequest" } } }, "links": { "pullRequestMerge": { "$ref": "#/components/links/PullRequestMerge" } } } } } }, "/2.0/repositories/{username}/{slug}/pullrequests/{pid}/merge": { "post": { "operationId": "mergePullRequest", "parameters": [ { "name": "username", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "slug", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "pid", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "the PR was successfully merged" } } } } }, "components": { "links": { "UserRepositories": { "operationId": "getRepositoriesByOwner", "parameters": { "username": "$response.body#/username" } }, "UserRepository": { "operationId": "getRepository", "parameters": { "username": "$response.body#/owner/username", "slug": "$response.body#/slug" } }, "RepositoryPullRequests": { "operationId": "getPullRequestsByRepository", "parameters": { "username": "$response.body#/owner/username", "slug": "$response.body#/slug" } }, "PullRequestMerge": { "operationId": "mergePullRequest", "parameters": { "username": "$response.body#/author/username", "slug": "$response.body#/repository/slug", "pid": "$response.body#/id" } } }, "schemas": { "user": { "type": "object", "properties": { "username": { "type": "string" }, "uuid": { "type": "string" } } }, "repository": { "type": "object", "properties": { "slug": { "type": "string" }, "owner": { "$ref": "#/components/schemas/user" } } }, "pullrequest": { "type": "object", "properties": { "id": { "type": "integer" }, "title": { "type": "string" }, "repository": { "$ref": "#/components/schemas/repository" }, "author": { "$ref": "#/components/schemas/user" } } } } } }