castopod/modules/Api/Rest/V1/podcast.json

329 lines
7.8 KiB
JSON

{
"openapi": "3.0.0",
"info": {
"version": "1.0.0",
"title": "Castopod podcasts"
},
"paths": {
"/api/rest/v1/podcasts": {
"get": {
"summary": "List all podcasts",
"responses": {
"200": {
"description": "Object of podcasts",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Podcasts"
}
}
}
},
"default": {
"description": "unexpected error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/rest/v1/podcasts/{id}": {
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"description": "The id of the podcast to retrieve",
"schema": {
"type": "integer",
"format": "int64",
"minimum": 1,
"maxLength": 10
}
}
],
"get": {
"summary": "Info for a specific podcast",
"responses": {
"200": {
"description": "Expected response to a valid request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Podcast"
}
}
}
},
"default": {
"description": "unexpected error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"Podcast": {
"type": "object",
"required": [
"id",
"guid",
"actor_id",
"handle",
"title",
"description_markdown",
"description_html",
"cover_id",
"language_code",
"category_id",
"owner_name",
"owner_email",
"type",
"is_blocked",
"is_completed",
"is_locked",
"is_published_on_hubs",
"created_by",
"updated_by",
"created_at",
"updated_at",
"feed_url"
],
"properties": {
"id": {
"type": "integer",
"format": "int64",
"minimum": 1,
"maxLength": 10
},
"guid": {
"type": "string",
"maxLength": 36
},
"actor_id": {
"type": "integer",
"format": "int64",
"minimum": 1,
"maxLength": 10
},
"handle": {
"type": "string",
"maxLength": 32
},
"title": {
"type": "string",
"maxLength": 128
},
"description_markdown": {
"type": "string"
},
"description_html": {
"type": "string"
},
"cover_id": {
"type": "integer",
"format": "int64",
"minimum": 1,
"maxLength": 10
},
"banner_id": {
"type": "integer",
"format": "int64",
"minimum": 1,
"maxLength": 10
},
"language_code": {
"type": "string",
"maxLength": 2
},
"category_id": {
"type": "integer",
"format": "int64",
"minimum": 1
},
"parental_advisory": {
"type": "string",
"enum": ["clean", "explicit"]
},
"owner_name": {
"type": "string",
"maxLength": 128
},
"owner_email": {
"type": "string",
"maxLength": 255
},
"publisher": {
"type": "string",
"maxLength": 128
},
"type": {
"type": "string",
"enum": ["episodic", "serial"]
},
"copyright": {
"type": "string",
"maxLength": 128
},
"episode_description_footer_markdown": {
"type": "string"
},
"episode_description_footer_html": {
"type": "string"
},
"is_blocked": {
"type": "integer",
"format": "int32",
"enum": [0, 1],
"minLength": 1
},
"is_completed": {
"type": "integer",
"format": "int32",
"enum": [0, 1],
"minLength": 1
},
"is_locked": {
"type": "integer",
"format": "int32",
"enum": [0, 1],
"minLength": 1
},
"imported_feed_url": {
"type": "string",
"maxLength": 512
},
"new_feed_url": {
"type": "string",
"maxLength": 512
},
"payment_pointer": {
"type": "string",
"maxLength": 128
},
"location_name": {
"type": "string",
"maxLength": 128
},
"location_geo": {
"type": "string",
"maxLength": 32
},
"location_osm": {
"type": "string",
"maxLength": 12
},
"custom_rss": {
"type": "string"
},
"is_published_on_hubs": {
"type": "integer",
"format": "int32",
"enum": [0, 1],
"minLength": 1
},
"partner_id": {
"type": "string",
"maxLength": 32
},
"partner_link_url": {
"type": "string",
"maxLength": 512
},
"partner_image_url": {
"type": "string",
"maxLength": 512
},
"created_by": {
"type": "integer",
"format": "int64",
"minimum": 1,
"maxLength": 10
},
"updated_by": {
"type": "integer",
"format": "int64",
"minimum": 1,
"maxLength": 10
},
"created_at": {
"type": "object",
"properties": {
"date": {
"type": "string",
"format": "date-time"
},
"timezone_type": {
"type": "integer",
"format": "int32"
},
"timezone": {
"type": "string"
}
}
},
"updated_at": {
"type": "object",
"properties": {
"date": {
"type": "string",
"format": "date-time"
},
"timezone_type": {
"type": "integer",
"format": "int32"
},
"timezone": {
"type": "string"
}
}
},
"feed_url": {
"type": "string"
}
}
},
"Podcasts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Podcast"
}
},
"Error": {
"type": "object",
"properties": {
"status": {
"type": "integer",
"format": "int32"
},
"error": {
"type": "integer",
"format": "int32"
},
"messages": {
"type": "object",
"properties": {
"error": {
"type": "string"
}
}
}
}
}
}
}
}