mirror of https://gitlab.com/tildes/tildes.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
434 lines
12 KiB
434 lines
12 KiB
openapi: 3.0.0
|
|
info:
|
|
title: Tildes Beta API Schema
|
|
version: Beta
|
|
description: |
|
|
This is the OpenAPI schema for the Tildes Beta API.
|
|
The beta API is subject to change and may not be fully stable.
|
|
Future updates WILL include breaking changes.
|
|
Use at your own risk.
|
|
servers:
|
|
- url: /api/beta
|
|
paths:
|
|
/topics:
|
|
get:
|
|
summary: Get a list of topics
|
|
parameters:
|
|
- $ref: '#/components/parameters/paginationLimit'
|
|
- $ref: '#/components/parameters/paginationBefore'
|
|
- $ref: '#/components/parameters/paginationAfter'
|
|
- in: query
|
|
name: period
|
|
schema:
|
|
type: string
|
|
default: "all"
|
|
required: false
|
|
description: The time period for which to retrieve topics. For example "4h" or "2d".
|
|
- in: query
|
|
name: tag
|
|
schema:
|
|
type: string
|
|
required: false
|
|
description: The tag to filter topics by. If not specified, topics are not filtered on their tags.
|
|
- in: query
|
|
name: order
|
|
schema:
|
|
type: string
|
|
default: "activity"
|
|
enum: ["activity", "votes", "comments", "new", "all_activity"]
|
|
required: false
|
|
description: The sort order for the topics. Defaults to "activity".
|
|
responses:
|
|
"200":
|
|
description: A list of topics
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- topics
|
|
- pagination
|
|
properties:
|
|
topics:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Topic'
|
|
pagination:
|
|
$ref: '#/components/schemas/Pagination'
|
|
"400":
|
|
$ref: "#/components/responses/ValidationError"
|
|
|
|
/topic/{topic_id36}:
|
|
get:
|
|
summary: Get a single topic and its comments
|
|
parameters:
|
|
- in: path
|
|
name: topic_id36
|
|
schema:
|
|
type: string
|
|
required: true
|
|
description: The ID36 of the topic to retrieve.
|
|
- in: query
|
|
name: order
|
|
schema:
|
|
type: string
|
|
default: "relevance"
|
|
enum: ["votes", "newest", "posted", "relevance"]
|
|
required: false
|
|
description: The sort order for the comment tree. Defaults to "relevance".
|
|
responses:
|
|
"200":
|
|
description: A single topic and its comments
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- topic
|
|
- comments
|
|
properties:
|
|
topic:
|
|
$ref: '#/components/schemas/Topic'
|
|
comments:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Comment'
|
|
"400":
|
|
$ref: "#/components/responses/ValidationError"
|
|
|
|
/user/{username}:
|
|
get:
|
|
summary: Get a user along with their history
|
|
parameters:
|
|
- in: path
|
|
name: username
|
|
schema:
|
|
type: string
|
|
required: true
|
|
description: The username of the user to retrieve.
|
|
- $ref: '#/components/parameters/paginationLimit'
|
|
- $ref: '#/components/parameters/paginationBefore'
|
|
- $ref: '#/components/parameters/paginationAfter'
|
|
responses:
|
|
"200":
|
|
description: Basic user information and their post/comment history
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- user
|
|
- history
|
|
- pagination
|
|
properties:
|
|
user:
|
|
$ref: '#/components/schemas/User'
|
|
history:
|
|
type: array
|
|
items:
|
|
anyOf:
|
|
- $ref: '#/components/schemas/Topic'
|
|
- $ref: '#/components/schemas/Comment'
|
|
pagination:
|
|
$ref: '#/components/schemas/Pagination'
|
|
"400":
|
|
$ref: "#/components/responses/ValidationError"
|
|
"403":
|
|
$ref: "#/components/responses/AuthorizationError"
|
|
|
|
/user/{username}/comments:
|
|
get:
|
|
summary: Get comments made by a user
|
|
parameters:
|
|
- in: path
|
|
name: username
|
|
schema:
|
|
type: string
|
|
required: true
|
|
description: The username of the user for whom to retrieve comments.
|
|
- $ref: '#/components/parameters/paginationLimit'
|
|
- $ref: '#/components/parameters/paginationBefore'
|
|
- $ref: '#/components/parameters/paginationAfter'
|
|
responses:
|
|
"200":
|
|
description: A list of comments made by the user
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- comments
|
|
- pagination
|
|
properties:
|
|
comments:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Comment'
|
|
pagination:
|
|
$ref: '#/components/schemas/Pagination'
|
|
"400":
|
|
$ref: "#/components/responses/ValidationError"
|
|
"403":
|
|
$ref: "#/components/responses/AuthorizationError"
|
|
|
|
/user/{username}/topics:
|
|
get:
|
|
summary: Get topics made by a user
|
|
parameters:
|
|
- in: path
|
|
name: username
|
|
schema:
|
|
type: string
|
|
required: true
|
|
description: The username of the user for whom to retrieve topics.
|
|
- $ref: '#/components/parameters/paginationLimit'
|
|
- $ref: '#/components/parameters/paginationBefore'
|
|
- $ref: '#/components/parameters/paginationAfter'
|
|
responses:
|
|
"200":
|
|
description: A list of topics made by the user
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- topics
|
|
- pagination
|
|
properties:
|
|
topics:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Topic'
|
|
pagination:
|
|
$ref: '#/components/schemas/Pagination'
|
|
"400":
|
|
$ref: "#/components/responses/ValidationError"
|
|
"403":
|
|
$ref: "#/components/responses/AuthorizationError"
|
|
|
|
components:
|
|
parameters:
|
|
paginationBefore:
|
|
in: query
|
|
name: before
|
|
schema:
|
|
type: string
|
|
required: false
|
|
description: The ID36 of the first item from the current page, to get items before it. You can only specify either `before` or `after`, not both. In mixed feeds like user profiles, this parameter needs a "t-" or "c-" prefix to indicate topics and comments respectively.
|
|
|
|
paginationAfter:
|
|
in: query
|
|
name: after
|
|
schema:
|
|
type: string
|
|
required: false
|
|
description: The ID36 of the last item from the previous page, to get items after it. You can only specify either `before` or `after`, not both. In mixed feeds like user profiles, this parameter needs a "t-" or "c-" prefix to indicate topics and comments respectively.
|
|
|
|
paginationLimit:
|
|
in: query
|
|
name: limit
|
|
schema:
|
|
type: integer
|
|
minimum: 1
|
|
maximum: 100
|
|
required: false
|
|
description: The maximum number of items to return. The `limit` is itself limited to prevent abuse.
|
|
|
|
responses:
|
|
ValidationError:
|
|
description: OpenAPI request/response validation failed
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/Error"
|
|
AuthorizationError:
|
|
description: You are not authorized to perform this action
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/Error"
|
|
|
|
schemas:
|
|
Topic:
|
|
type: object
|
|
required:
|
|
- id
|
|
- title
|
|
- text_html
|
|
- url
|
|
- comments_url
|
|
- group
|
|
- content_metadata
|
|
- created_at
|
|
- edited_at
|
|
- posted_by_user
|
|
- vote_count
|
|
- comment_count
|
|
- new_comment_count
|
|
- voted
|
|
- bookmarked
|
|
- ignored
|
|
- official
|
|
- tags
|
|
- last_visit_time
|
|
properties:
|
|
id:
|
|
type: string
|
|
title:
|
|
type: string
|
|
text_html:
|
|
type: string
|
|
nullable: true
|
|
url:
|
|
type: string
|
|
nullable: true
|
|
comments_url:
|
|
type: string
|
|
source_site_name:
|
|
type: string
|
|
nullable: true
|
|
source_site_icon:
|
|
type: string
|
|
nullable: true
|
|
group:
|
|
type: string
|
|
content_metadata:
|
|
type: array
|
|
items:
|
|
type: string
|
|
created_at:
|
|
type: string
|
|
edited_at:
|
|
type: string
|
|
nullable: true
|
|
posted_by_user:
|
|
type: string
|
|
vote_count:
|
|
type: integer
|
|
comment_count:
|
|
type: integer
|
|
new_comment_count:
|
|
type: integer
|
|
nullable: true
|
|
voted:
|
|
type: boolean
|
|
bookmarked:
|
|
type: boolean
|
|
ignored:
|
|
type: boolean
|
|
official:
|
|
type: boolean
|
|
tags:
|
|
type: array
|
|
items:
|
|
type: string
|
|
last_visit_time:
|
|
type: string
|
|
nullable: true
|
|
|
|
Comment:
|
|
type: object
|
|
required:
|
|
- id
|
|
- topic_id
|
|
- author
|
|
- rendered_html
|
|
- created_at
|
|
- edited_at
|
|
- votes
|
|
- removed
|
|
- deleted
|
|
- exemplary
|
|
- voted
|
|
- bookmarked
|
|
properties:
|
|
id:
|
|
type: string
|
|
topic_id:
|
|
type: string
|
|
author:
|
|
type: string
|
|
nullable: true
|
|
rendered_html:
|
|
type: string
|
|
nullable: true
|
|
created_at:
|
|
type: string
|
|
edited_at:
|
|
type: string
|
|
nullable: true
|
|
votes:
|
|
type: integer
|
|
removed:
|
|
type: boolean
|
|
deleted:
|
|
type: boolean
|
|
exemplary:
|
|
type: boolean
|
|
nullable: true
|
|
collapsed:
|
|
type: boolean
|
|
nullable: true
|
|
collapsed_individual:
|
|
type: boolean
|
|
nullable: true
|
|
by_op:
|
|
type: boolean
|
|
nullable: true
|
|
by_me:
|
|
type: boolean
|
|
nullable: true
|
|
new_comment:
|
|
type: boolean
|
|
nullable: true
|
|
voted:
|
|
type: boolean
|
|
bookmarked:
|
|
type: boolean
|
|
depth:
|
|
type: integer
|
|
children:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Comment'
|
|
|
|
User:
|
|
type: object
|
|
required:
|
|
- username
|
|
properties:
|
|
username:
|
|
type: string
|
|
|
|
Pagination:
|
|
type: object
|
|
required:
|
|
- num_items
|
|
- next_link
|
|
- prev_link
|
|
properties:
|
|
num_items:
|
|
type: integer
|
|
description: The number of items returned in this response.
|
|
next_link:
|
|
type: string
|
|
nullable: true
|
|
prev_link:
|
|
type: string
|
|
nullable: true
|
|
|
|
Error:
|
|
type: object
|
|
required:
|
|
- message
|
|
properties:
|
|
field:
|
|
type: string
|
|
message:
|
|
type: string
|
|
exception:
|
|
type: string
|