Files
openapi-types/tests/3.0/link-example.ts

322 lines
7.4 KiB
TypeScript

import type { Specification } from "../../3.0";
export const linkExample: Specification = {
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",
},
},
},
},
},
};