vtt/src/ttfrog/pwic/static/api/swagger.txt
evilchili 7aa6f03d5d Import pwic as source, add overrides
This commit imports the latest source of the pwic module directly
and modifies it just enough for it to be an importable module.

Source: https://github.com/gitbra/pwic
2025-09-21 14:56:05 -07:00

1134 lines
31 KiB
Plaintext

swagger: "2.0"
info:
title: Pwic.wiki API reference
version: "1.0"
description:
The page lists all the available interfaces to interact with Pwic.wiki.
The authentication is managed through a cookie.
The default method is POST.
tags:
- name: connection
description: Connection to the API
- name: document
description: Management of the documents
- name: page
description: Management of the pages
- name: project
description: Management of the project
- name: server
description: Management of the server
- name: user
description: Management of the user
paths:
/api/login:
post:
summary: Connect to the server
tags:
- connection
consumes:
- application/x-www-form-urlencoded
produces:
- text/html
parameters:
- in: query
name: redirect
type: string
description: Redirect to the next screen
required: false
- in: formData
name: user
type: string
description: Name of the user
required: true
- in: formData
name: password
type: string
description: Password of the user
required: false
- in: formData
name: pin
type: integer
description: PIN code if your account uses 2FA TOTP
required: false
- in: formData
name: language
type: string
description: Language
required: false
default: en
responses:
200:
description: Successful operation if no body, else redirected page from 302
302:
description: Redirection with the parameter ?failed if the credentials were rejected
401:
description: Unsufficient authorizations
408:
description: Expired PIN code for 2FA TOTP
/api/oauth:
get:
summary: Connect through a third-party identity provider
description: This path is used for the technical implementation of the OAuth protocol. You should not call it voluntarily.
tags:
- connection
consumes:
- application/json
responses:
200:
description: Successful login
302:
description: Successful login
307:
description: Redirection with the parameter ?failed if the credentials were rejected
401:
description: Unsufficient authorizations
501:
description: Invalid OAuth provider
503:
description: Connection temporarily unavailable
/api/document/create:
post:
summary: Attach a document to a page
tags:
- document
consumes:
# https://swagger.io/docs/specification/describing-request-body/multipart-requests/
- multipart/form-data
parameters:
# https://swagger.io/docs/specification/2-0/file-upload/
- in: formData
name: project
type: string
required: true
- in: formData
name: page
type: string
required: true
- in: formData
name: mime
type: string
required: false
- in: formData
name: content
type: file
required: true
responses:
200:
description: Successful operation
400:
description: Invalid parameters
401:
description: Unsufficient authorizations
403:
description: Forbidden content
409:
description: Duplicate file name in the project
413:
description: File size limit or number of pixels exceeded
415:
description: Failed MIME verification
500:
description: File incorrectly managed on the server
503:
description: Update temporarily unavailable or ongoing server maintenance
/api/document/convert:
post:
summary: Convert a loaded document to Markdown
tags:
- document
consumes:
- application/x-www-form-urlencoded
produces:
- text/markdown
parameters:
- in: formData
name: id
type: integer
description: Identifier of the document
required: true
responses:
200:
description: Successful operation
400:
description: Invalid parameters
401:
description: Unsufficient authorizations
403:
description: Disabled feature
422:
description: File cannot be converted
/api/document/remote/convert:
post:
summary: Convert a remote URL to Markdown
tags:
- document
consumes:
- application/x-www-form-urlencoded
produces:
- text/markdown
parameters:
- in: formData
name: project
type: string
description: Name of the project (declarative)
required: true
- in: formData
name: url
type: string
description: Remote URL if allowed by the configuation
required: true
responses:
200:
description: Successful operation
400:
description: Invalid parameters
401:
description: Unsufficient authorizations
403:
description: Disabled feature
422:
description: File cannot be converted
/api/document/delete:
post:
summary: Delete a document of a project
tags:
- document
consumes:
- application/x-www-form-urlencoded
parameters:
- in: formData
name: id
type: integer
description: Identifier of the document
required: true
- in: formData
name: project
type: string
description: Name of the project
required: true
responses:
200:
description: Successful operation
400:
description: Invalid parameters
401:
description: Unsufficient authorizations, or not found
500:
description: File incorrectly managed on the server
503:
description: Update temporarily unavailable or ongoing server maintenance
/api/document/get:
post:
summary: Get one of several documents depending on the parameters
tags:
- document
consumes:
- application/x-www-form-urlencoded
parameters:
- in: formData
name: project
type: string
description: Name of the project
required: false
- in: formData
name: page
type: string
description: Name of the page
required: false
- in: formData
name: id
type: integer
description: Internal identifier of the file
required: false
- in: formData
name: attachment
type: boolean
description: Return as attachment
required: false
responses:
200:
description: Successful operation
302:
description: Successful redirection to another location
400:
description: Invalid parameters
404:
description: Unsufficient authorizations, or not found
/api/document/list:
post:
summary: List the files attached to a page
tags:
- document
consumes:
- application/x-www-form-urlencoded
produces:
- application/json
parameters:
- in: formData
name: project
type: string
description: Name of the project
required: true
- in: formData
name: page
type: string
description: Name of the page
required: true
responses:
200:
description: Successful operation
schema:
type: array
items:
type: object
properties:
id:
type: integer
filename:
type: string
mime:
type: string
mime_icon:
type: string
size:
type: integer
size_str:
type: string
hash:
type: string
author:
type: string
date:
type: string
time:
type: string
exturl:
type: string
description: External storage link
used:
type: boolean
description: According to a static detection
url:
type: string
400:
description: Invalid parameters
401:
description: Unsufficient authorizations
404:
description: Unknown project or page
/api/document/rename:
post:
summary: Rename a local document
tags:
- document
consumes:
- application/x-www-form-urlencoded
parameters:
- in: formData
name: id
type: integer
description: Identifier of the document
required: true
- in: formData
name: project
type: string
description: Name of the project
required: true
- in: formData
name: filename
type: string
description: New file name
required: true
responses:
200:
description: Successful operation
400:
description: Invalid parameters
401:
description: Unsufficient authorizations, or not found
500:
description: File incorrectly managed on the server
503:
description: Update temporarily unavailable or ongoing server maintenance
/api/markdown/convert:
post:
summary: Convert Markdown to HTML
tags:
- page
consumes:
- application/x-www-form-urlencoded
produces:
- text/plain
parameters:
- in: formData
name: project
type: string
description: Name of the project
required: true
- in: formData
name: markdown
type: string
description: Content written in Markdown
required: true
responses:
200:
description: Successful operation
400:
description: Invalid parameters
401:
description: Unsufficient authorizations
/api/page/create:
post:
summary: Create a new page
tags:
- page
consumes:
- application/x-www-form-urlencoded
produces:
- application/json
parameters:
- in: formData
name: project
type: string
description: Name of the project
required: true
- in: formData
name: kb
type: boolean
description: Generate a knowledge base article
required: false
- in: formData
name: page
type: string
description: Name of the page
required: true
- in: formData
name: milestone
type: string
description: Planned milestone for the new page
required: false
- in: formData
name: tags
type: string
description: Tags separated by a space and with no hash
required: false
- in: formData
name: ref_project
type: string
description: Reference project
required: false
- in: formData
name: ref_page
type: string
description: Reference page
required: false
- in: formData
name: ref_tags
type: boolean
description: Copy the tags of the reference page
required: false
responses:
200:
description: Successful operation
schema:
type: object
properties:
project:
type: string
page:
type: string
revision:
type: integer
url:
type: string
400:
description: Invalid parameters
401:
description: Unsufficient authorizations
403:
description: Exceeded limitations
404:
description: Reference page not found
411:
description: Exhausted automatic identifier
503:
description: Update temporarily unavailable
/api/page/delete:
post:
summary: Delete the revision of a page
tags:
- page
consumes:
- application/x-www-form-urlencoded
parameters:
- in: formData
name: project
type: string
description: Name of the project
required: true
- in: formData
name: page
type: string
description: Name of the page
required: true
- in: formData
name: revision
type: integer
description: Revision of the page
required: true
responses:
200:
description: Successful operation
400:
description: Invalid parameters
401:
description: Unsufficient authorizations, or not found
500:
description: Dependent files not fully removed from the system
503:
description: Update temporarily unavailable
/api/page/edit:
post:
summary: Create a new revision of a page
tags:
- page
consumes:
- application/x-www-form-urlencoded
parameters:
- in: formData
name: project
type: string
description: Name of the project
required: true
- in: formData
name: page
type: string
description: Name of the page
required: true
- in: formData
name: title
type: string
description: Title of the page
required: true
- in: formData
name: tags
type: string
description: Tags separated by a space and with no hash
required: false
- in: formData
name: markdown
type: string
description: Content of the page
required: false
- in: formData
name: comment
type: string
description: Explanation of the modification
required: true
- in: formData
name: milestone
type: string
description: Planned milestone
required: false
- in: formData
name: draft
type: boolean
description: Save as draft
required: false
- in: formData
name: final
type: boolean
description: Save as final
required: false
- in: formData
name: header
type: boolean
description: Attach the page to the headers
required: false
- in: formData
name: protection
type: boolean
description: Protect the page
required: false
- in: formData
name: no_quick_fix
type: boolean
description: Ignore the option quick_fix
required: false
responses:
200:
description: Successful operation
400:
description: Invalid parameters
401:
description: Unsufficient authorizations
503:
description: Update temporarily unavailable
/api/page/export:
post:
summary: Export a page
tags:
- page
consumes:
- application/x-www-form-urlencoded
parameters:
- in: formData
name: project
type: string
description: Name of the project
required: true
- in: formData
name: page
type: string
description: Name of the page
required: true
- in: formData
name: revision
type: integer
description: Revision of the page
required: false
- in: formData
name: format
type: string
enum: [html, md, odt]
description: Format of the export
required: true
responses:
200:
description: Successful operation
400:
description: Invalid parameters
401:
description: Unsufficient authorizations, or not found
403:
description: Disabled feature
404:
description: Rejected by a custom rule
415:
description: Invalid file format
/api/page/move:
post:
summary: Rename and/or move a page
tags:
- page
consumes:
- application/x-www-form-urlencoded
parameters:
- in: formData
name: ref_project
type: string
description: Source project
required: true
- in: formData
name: ref_page
type: string
description: Source page
required: true
- in: formData
name: project
type: string
description: Target project
required: true
- in: formData
name: page
type: string
description: Target page
- in: formData
name: ignore_file_errors
type: boolean
description: Ignore the failed operations on the files
default: true
responses:
302:
description: Successful operation
400:
description: Invalid parameters
401:
description: Unsufficient authorizations, or project not found
403:
description: Target page already exists
404:
description: Unkown source page
409:
description: Attachments in conflict with the target project
500:
description: Corrupted documents to be repaired
503:
description: Update temporarily unavailable
/api/page/validate:
post:
summary: Validate the revision of a page
tags:
- page
consumes:
- application/x-www-form-urlencoded
parameters:
- in: formData
name: project
type: string
description: Name of the project
required: true
- in: formData
name: page
type: string
description: Name of the page
required: true
- in: formData
name: revision
type: integer
description: Revision of the page
required: true
responses:
200:
description: Successful operation
400:
description: Invalid parameters
401:
description: Unsufficient authorizations, or not found
503:
description: Update temporarily unavailable
/api/project/env/set:
post:
summary: Change a project-dependent setting
tags:
- project
consumes:
- application/x-www-form-urlencoded
parameters:
- in: formData
name: project
type: string
description: Name of the project
required: true
- in: formData
name: key
type: string
description: Name of the option (refer to /help)
required: true
- in: formData
name: value
type: string
description: Value of the option
required: false
responses:
200:
description: Successful operation
400:
description: Invalid parameters
401:
description: Unsufficient authorizations
/api/project/get:
post:
summary: Get the details about the project or a page
tags:
- project
consumes:
- application/x-www-form-urlencoded
produces:
- application/json
parameters:
- in: formData
name: project
type: string
description: Name of the project
required: true
- in: formData
name: page
type: string
description: Name of the page
required: false
- in: formData
name: all
type: boolean
description: Include the all the revisions of the pages
required: false
- in: formData
name: no_markdown
type: boolean
description: Don't provide the content of the page to reduce the size of the transferred data
required: false
- in: formData
name: no_document
type: boolean
description: Don't list the attached documents
required: false
responses:
200:
description: Successful operation
400:
description: Invalid parameters
401:
description: Unsufficient authorizations
501:
description: Unsupported combination of options
/api/project/graph/get:
post:
summary: Generate the graph of a project
tags:
- project
consumes:
- application/x-www-form-urlencoded
produces:
- text/vnd.graphviz
parameters:
- in: formData
name: project
type: string
description: Name of the project
required: true
responses:
200:
description: Successful operation
400:
description: Invalid parameters
401:
description: Unsufficient authorizations
403:
description: Disabled feature
/api/project/list:
post:
summary: List the projects accessible to the user
tags:
- project
consumes:
- application/x-www-form-urlencoded
produces:
- application/json
parameters:
- in: formData
name: user
type: string
description: Name of the user
required: false
responses:
200:
description: Successful operation
schema:
type: array
items:
type: object
properties:
project:
type: string
description:
type: string
admin:
type: boolean
manager:
type: boolean
editor:
type: boolean
validator:
type: boolean
reader:
type: boolean
401:
description: Unsufficient authorizations
/api/project/progress/get:
post:
summary: Show the current progress of the project by tag
tags:
- project
consumes:
- application/x-www-form-urlencoded
produces:
- application/json
parameters:
- in: formData
name: project
type: string
description: Name of the project
required: true
- in: formData
name: tags
type: string
description: List of the tags separated with a space
required: true
- in: formData
name: combined
type: boolean
description: Should match all the tags (true) or at least one tag (false)
required: false
default: false
responses:
200:
description: Successful operation
400:
description: Invalid parameters
401:
description: Unsufficient authorizations
/api/project/users/get:
post:
summary: Fetch the users of a project by roles
tags:
- project
consumes:
- application/x-www-form-urlencoded
produces:
- application/json
parameters:
- in: formData
name: project
type: string
description: Name of the project
required: true
- in: formData
name: admin
type: boolean
description: Administrator
required: false
- in: formData
name: manager
type: boolean
description: Manager
required: false
- in: formData
name: editor
type: boolean
description: Editor
required: false
- in: formData
name: validator
type: boolean
description: Validator
required: false
- in: formData
name: reader
type: boolean
description: Reader
required: false
- in: formData
name: operator
type: string
enum: [or, and, exact]
description: Logical operation
required: true
responses:
200:
description: Successful operation
schema:
type: array
items:
type: string
400:
description: Invalid parameters
401:
description: Unsufficient authorizations, or not found
/api/server/env/get:
post:
summary: Get details about the environment variables
tags:
- server
consumes:
- application/x-www-form-urlencoded
produces:
- application/json
parameters:
- in: formData
name: project
type: string
description: Name of the project
required: false
responses:
200:
description: Successful operation
schema:
type: object
properties:
variable:
type: object
properties:
value:
type: string
global:
type: boolean
project_independent:
type: boolean
project_dependent:
type: boolean
changeable:
type: boolean
401:
description: Unsufficient authorizations, or not found
/api/server/headers/get:
get:
summary: Display the received HTTP headers
tags:
- server
produces:
- application/json
responses:
200:
description: Successful operation
schema:
type: object
properties:
ip:
type: string
description: Remote IP address
data:
type: object
properties:
name:
type: array
description: Values of the header
items:
type: string
401:
description: Session not active
/api/server/ping:
post:
summary: Ping the server to verify that it is up and not restarted
tags:
- server
consumes:
- application/x-www-form-urlencoded
produces:
- text/plain
responses:
200:
description: Session still alive
401:
description: Session not active
/api/server/shutdown:
post:
summary: Shut down the server
tags:
- server
responses:
403:
description: Connect from localhost only
503:
description: Shutdown temporarily unavailable
/api/server/unlock:
post:
summary: Unlock the database after an internal Python error
tags:
- server
responses:
200:
description: Successful operation
400:
description: Database not locked
403:
description: Connect from localhost only
/api/user/create:
post:
summary: Create or assign a user to a project
tags:
- user
consumes:
- application/x-www-form-urlencoded
parameters:
- in: formData
name: project
type: string
description: Name of the project
required: true
- in: formData
name: user
type: string
description: Name of the user
required: true
responses:
200:
description: Successful operation
400:
description: Invalid parameters
401:
description: Unsufficient authorizations
403:
description: Forbidden operation
503:
description: Update temporarily unavailable
/api/user/language/set:
post:
summary: Change the language of the current session
tags:
- user
consumes:
- application/x-www-form-urlencoded
parameters:
- in: formData
name: language
type: string
description: Language ISO code on 2 characters
required: true
responses:
200:
description: Successful operation
400:
description: Invalid parameters
/api/user/password/change:
post:
summary: Change the password of the logged user
tags:
- user
consumes:
- application/x-www-form-urlencoded
parameters:
- in: formData
name: password_current
type: string
description: Current password
required: true
- in: formData
name: password_new1
type: string
description: New password
required: true
- in: formData
name: password_new2
type: string
description: New password (confirmation)
required: true
responses:
200:
description: Successful operation
400:
description: Invalid parameters
401:
description: Unsufficient authorizations
500:
description: Invalid configuration of the server
503:
description: Update temporarily unavailable
/api/user/roles/set:
post:
summary: Toggle or drop the role of a user for a project
tags:
- user
consumes:
- application/x-www-form-urlencoded
produces:
- text/plain
parameters:
- in: formData
name: project
type: string
description: Name of the project
required: true
- in: formData
name: name
type: string
description: Name of the user
required: true
- in: formData
name: role
type: string
enum: [admin, manager, editor, validator, reader, disabled, delete]
description: Role to toggle
required: true
responses:
200:
description: Successful operation, followed by the new value
schema:
type: string
enum: ["", "X", "OK"]
400:
description: Invalid parameters
401:
description: Unsufficient authorizations
503:
description: Update temporarily unavailable