Skip to content

Instantly share code, notes, and snippets.

@TharmiganK
Created June 14, 2024 05:30
Show Gist options
  • Save TharmiganK/a8ec962a6168d11b6496a1c84a0a5558 to your computer and use it in GitHub Desktop.
Save TharmiganK/a8ec962a6168d11b6496a1c84a0a5558 to your computer and use it in GitHub Desktop.
Album API OpenAPI specification
openapi: 3.0.1
info:
title: Api
version: 0.1.0
servers:
- url: "{server}:{port}/api"
variables:
server:
default: http://localhost
port:
default: "9999"
paths:
/albums/{id}:
get:
operationId: getAlbumsId
description: Get album by ID
parameters:
- name: id
in: path
required: true
description: Album ID
schema:
type: string
- name: API-VERSION
in: header
description: API Version
schema:
$ref: '#/components/schemas/VERSION'
default: V1
responses:
"200":
description: Album found
headers:
req-id:
required: true
description: Request ID
schema:
type: integer
format: int64
api-version:
required: true
description: API Version
schema:
type: string
session-id:
required: true
description: Session ID
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/Album'
"404":
description: Album not found
headers:
req-id:
required: true
description: Request ID
schema:
type: integer
format: int64
api-version:
required: true
description: API Version
schema:
type: string
session-id:
required: true
description: Session ID
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
/albums:
get:
operationId: getAlbums
description: Get albums by genre
parameters:
- name: genre
in: query
required: true
description: Album genre
schema:
type: string
- name: API-VERSION
in: header
description: API Version
schema:
$ref: '#/components/schemas/VERSION'
default: V1
responses:
"200":
description: Albums found
headers:
req-id:
required: true
description: Request ID
schema:
type: integer
format: int64
api-version:
required: true
description: API Version
schema:
type: string
session-id:
required: true
description: Session ID
schema:
type: string
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Album'
"404":
description: No albums found with genre
headers:
req-id:
required: true
description: Request ID
schema:
type: integer
format: int64
api-version:
required: true
description: API Version
schema:
type: string
session-id:
required: true
description: Session ID
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
post:
operationId: postAlbums
description: Create a new album
parameters:
- name: API-VERSION
in: header
description: API Version
schema:
$ref: '#/components/schemas/VERSION'
default: V1
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Album'
required: true
responses:
"201":
description: Album created
headers:
req-id:
required: true
description: Request ID
schema:
type: integer
format: int64
api-version:
required: true
description: API Version
schema:
type: string
session-id:
required: true
description: Session ID
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/Album'
"409":
description: Album already exists
headers:
req-id:
required: true
description: Request ID
schema:
type: integer
format: int64
api-version:
required: true
description: API Version
schema:
type: string
session-id:
required: true
description: Session ID
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
/albums-all:
get:
operationId: getAlbumsAll
description: Get all albums
parameters:
- name: API-VERSION
in: header
required: true
description: API Version
schema:
$ref: '#/components/schemas/VERSION'
responses:
"200":
description: Albums found
headers:
req-id:
required: true
description: Request ID
schema:
type: integer
format: int64
api-version:
required: true
description: API Version
schema:
type: string
session-id:
required: true
description: Session ID
schema:
type: string
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Album'
"404":
description: No albums found
headers:
req-id:
required: true
description: Request ID
schema:
type: integer
format: int64
api-version:
required: true
description: API Version
schema:
type: string
session-id:
required: true
description: Session ID
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
post:
operationId: postAlbumsAll
description: Create new albums
parameters:
- name: private
in: query
description: Private albums
schema:
type: string
nullable: true
- name: API-VERSION
in: header
description: API Version
schema:
$ref: '#/components/schemas/VERSION'
default: V1
requestBody:
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Album'
required: true
responses:
"201":
description: Albums created
headers:
req-id:
required: true
description: Request ID
schema:
type: integer
format: int64
api-version:
required: true
description: API Version
schema:
type: string
session-id:
required: true
description: Session ID
schema:
type: string
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Album'
"409":
description: Albums already exist
headers:
req-id:
required: true
description: Request ID
schema:
type: integer
format: int64
api-version:
required: true
description: API Version
schema:
type: string
session-id:
required: true
description: Session ID
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
components:
schemas:
Album:
required:
- artist
- genre
- id
- name
type: object
properties:
id:
type: string
description: Album ID
name:
type: string
description: Album name
artist:
type: string
description: Album artist
genre:
type: string
description: Album genre
additionalProperties: false
ErrorMessage:
required:
- message
type: object
properties:
message:
type: string
description: Error message
additionalProperties:
type: string
VERSION:
type: string
description: API Version
enum:
- V1
- V2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment