openapi: "3.0.0" info: version: "1.0.0" title: "Plume REST API" servers: - url: http://localhost:7878/api/v1 description: Your local instance - url: https://baptiste.gelez.xyz/api/v1 description: Demo instance paths: /apps: post: description: Registers an application. /posts/{id}: get: description: Retrieves a post by its ID. responses: '200': The post was found '403': The post exists, but you don't have the rights to fetch it (it is probably a private draft) '404': The post was not found delete: Deletes the post corresponding to this ID. /posts/: get: description: List posts. parameters: - name: title in: query description: Only list article with this specific title required: false schema: type: string - name: subtitle in: query description: Only list article with this specific subtitle required: false schema: type: string - name: content in: query description: Only list article with this specific content (in HTML) required: false schema: type: string post: description: Creates a new post. requestBody: content: 'application/json': schema: properties: title: description: The title of the new article. type: string subtitle: description: The subtitle of the new article. type: string source: description: The markdown source of the new article. type: string blog_id: description: The ID of the blog in which to publish the new article. type: integer published: description: false if this article is a draft, true if it is published. type: bool creation_date: description: The publication of this article. Past dates will work, but not futures ones. Defaults to the current date. The expected format is %Y-%m-%d. type: string license: description: The license of the article. Omit this field to use the default one for this instance. Leave it empty to reserve all rights. type: string tags: description: The tags for the new article. type: array cover_id: description: The ID of the cover image. type: integer required: - title - description - author definitions: App: type: object properties: name: description: The name of the app. type: string example: "My app" website: description: The website of the app. type: string example: "https://my.app" client_id: description: A unique identifier for the app. type: string example: "abcdef0123456789" client_secret: description: The secret token associated to this app. It will be used to get individual authentication tokens for each user of the app. type: string example: "abcdef0123456789" Post: type: object properties: id: description: The internal ID of the post. type: integer example: 3 title: description: The title of the post. type: string example: "Hello, world!" subtitle: description: The subtitle of the post. type: string example: "My first post." content: description: The content of the post, rendered as HTML. type: string format: "

This is my first post. Thanks for reading.

" source: description: The markdown source of the post. type: string example: "This is my first **post**. Thanks for reading." authors: description: The FQNs of the authors of this post. type: array example: - "alice" - "bob@plume01.localhost" blog_id: description: The ID of the blog in which this article was published. type: integer example: 12 published: description: true if the article is published, false if it is still a draft. type: bool example: true creation_date: description: The publication date. type: string example: "2019-12-16" license: description: The license of this post. type: string example: "CC-BY-SA" tags: description: The tags of this post. type: array example: - Plume - REST - API - JSON cover_id: description: The ID of the media used as cover for this article. type: integer example: 42