@haxtheweb/haxcms-nodejs
Version:
HAXcms single and multisite nodejs server, api, and administration
584 lines (582 loc) • 14.4 kB
YAML
openapi: 3.0.0
info:
title: 'HAXcms API'
description: 'API for interfacing with HAXcms end points'
termsOfService: 'https://haxtheweb.org'
contact:
email: hax@psu.edu
license:
name: 'Apache 2.0'
url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
version:
servers:
paths:
/options:
post:
tags:
- api
operationId: 'Operations::options'
responses:
'200':
description: 'API bandaid till we get all the APIs documented. This is an array of callbacks'
/:
post:
tags:
- api
summary: 'Generate the swagger API documentation for this site'
operationId: 'Operations::api'
responses:
'200':
description: 'API documentation in YAML'
/openapi/json:
post:
tags:
- api
summary: 'Generate the swagger API documentation for this site'
operationId: 'Operations::openapi'
responses:
'200':
description: 'API documentation in JSON'
/rebuildManagedFiles:
post:
tags:
- cms
- authenticated
operationId: 'Operations::rebuildManagedFiles'
parameters:
-
name: jwt
in: query
description: 'JSON Web token, obtain by using /login'
required: true
schema:
type: string
-
name: name
in: query
description: 'machine name of the site to rebuild managed files for'
required: true
schema:
type: string
responses:
'200':
description: 'Rebuild managed files for the site'
/saveManifest:
post:
tags:
- cms
- authenticated
operationId: 'Operations::saveManifest'
parameters:
-
name: jwt
in: query
description: 'JSON Web token, obtain by using /login'
required: true
schema:
type: string
responses:
'200':
description: 'Save the manifest of the site'
/saveOutline:
post:
tags:
- cms
- authenticated
- site
operationId: 'Operations::saveOutline'
parameters:
-
name: jwt
in: query
description: 'JSON Web token, obtain by using /login'
required: true
schema:
type: string
responses:
'200':
description: 'Save an entire site outline'
/saveNode:
post:
tags:
- cms
- authenticated
- node
operationId: 'Operations::saveNode'
parameters:
-
name: jwt
in: query
description: 'JSON Web token, obtain by using /login'
required: true
schema:
type: string
responses:
'200':
description: 'Save a node'
/deleteNode:
post:
tags:
- cms
- authenticated
- node
operationId: 'Operations::deleteNode'
parameters:
-
name: jwt
in: query
description: 'JSON Web token, obtain by using /login'
required: true
schema:
type: string
responses:
'200':
description: 'Delete a node'
/siteUpdateAlternateFormats:
post:
tags:
- cms
- authenticated
- meta
operationId: 'Operations::siteUpdateAlternateFormats'
parameters:
-
name: jwt
in: query
description: 'JSON Web token, obtain by using /login'
required: true
schema:
type: string
responses:
'200':
description: 'Update the alternative formats surrounding a site'
/connectionSettings:
get:
tags:
- cms
operationId: 'Operations::connectionSettings'
responses:
'200':
description: 'Generate the connection settings dynamically for implying we have a PHP backend'
/generateAppStore:
get:
tags:
- hax
- api
operationId: 'Operations::generateAppStore'
parameters:
-
name: appstore_token
in: query
description: 'security token for appstore'
required: true
schema:
type: string
responses:
'200':
description: 'Generate the AppStore spec for HAX editor directions'
/getUserData:
post:
tags:
- cms
- authenticated
- user
- settings
operationId: 'Operations::getUserData'
parameters:
-
name: jwt
in: query
description: 'JSON Web token, obtain by using /login'
required: true
schema:
type: string
responses:
'200':
description: 'Load data about the logged in user'
/formLoad:
post:
tags:
- cms
- authenticated
- form
operationId: 'Operations::formLoad'
parameters:
-
name: jwt
in: query
description: 'JSON Web token, obtain by using /login'
required: true
schema:
type: string
responses:
'200':
description: 'Load a form based on ID'
/formProcess:
post:
tags:
- cms
- authenticated
- form
operationId: 'Operations::formProcess'
parameters:
-
name: jwt
in: query
description: 'JSON Web token, obtain by using /login'
required: true
schema:
type: string
responses:
'200':
description: 'Process a form based on ID and input data'
/listFiles:
post:
tags:
- hax
- authenticated
- file
operationId: 'Operations::listFiles'
parameters:
-
name: jwt
in: query
description: 'JSON Web token, obtain by using /login'
required: true
schema:
type: string
responses:
'200':
description: 'Load existing files for presentation in HAX find area'
/login:
post:
tags:
- cms
- user
description: 'Attempt a user login'
operationId: 'Operations::login'
parameters:
-
name: u
in: query
description: 'User name'
required: true
schema:
type: string
example: admin
-
name: p
in: query
description: Password
required: true
schema:
type: string
example: admin
responses:
'200':
description: 'JWT token as response'
'403':
description: 'Invalid token / Login is required'
/logout:
post:
tags:
- cms
- user
operationId: 'Operations::logout'
responses:
'200':
description: 'User logout, front end will kill token'
/refreshAccessToken:
post:
tags:
- cms
- user
operationId: 'Operations::refreshAccessToken'
responses:
'200':
description: 'User access token for refreshing JWT when it goes stale'
/saveFile:
post:
tags:
- hax
- authenticated
- file
operationId: 'Operations::saveFile'
parameters:
-
name: jwt
in: query
description: 'JSON Web token, obtain by using /login'
required: true
schema:
type: string
-
name: file-upload
in: header
description: 'File to upload'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
required:
- site
properties:
site:
type: object
node:
type: object
type: object
example:
site:
name: mynewsite
node:
id: ''
responses:
'200':
description: 'User is uploading a file to present in a site'
/listSites:
get:
tags:
- cms
operationId: 'Operations::listSites'
responses:
'200':
description: 'Load a list of all sites the user has created'
/getConfig:
post:
tags:
- cms
- authenticated
- settings
operationId: 'Operations::getConfig'
parameters:
-
name: jwt
in: query
description: 'JSON Web token, obtain by using /login'
required: true
schema:
type: string
responses:
'200':
description: 'Get configuration for HAXcms itself'
/haxConfigurationSelectionData:
get:
tags:
- editor
- authenticated
- settings
operationId: 'Operations::haxConfigurationSelectionData'
parameters:
-
name: jwt
in: query
description: 'JSON Web token, obtain by using /login'
required: true
schema:
type: string
responses:
'200':
description: 'Get configuration for HAX in how appstore is constructed'
/setConfig:
post:
tags:
- cms
- authenticated
- form
- settings
operationId: 'Operations::setConfig'
parameters:
-
name: jwt
in: query
description: 'JSON Web token, obtain by using /login'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
required:
- site
properties:
values:
type: object
type: object
example:
values: []
responses:
'200':
description: 'Set configuration for HAXcms'
/cloneSite:
post:
tags:
- cms
- authenticated
- site
operationId: 'Operations::cloneSite'
parameters:
-
name: jwt
in: query
description: 'JSON Web token, obtain by using /login'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
required:
- site
properties:
site:
type: object
type: object
example:
site:
name: mynewsite
responses:
'200':
description: 'Clone a site by copying and renaming the folder on file system'
/deleteSite:
post:
tags:
- cms
- authenticated
- site
operationId: 'Operations::deleteSite'
parameters:
-
name: jwt
in: query
description: 'JSON Web token, obtain by using /login'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
required:
- site
properties:
site:
type: object
type: object
example:
site:
name: mynewsite
responses:
'200':
description: 'Delete a site from the file system'
/downloadSite:
post:
tags:
- cms
- authenticated
- site
- meta
operationId: 'Operations::downloadSite'
parameters:
-
name: jwt
in: query
description: 'JSON Web token, obtain by using /login'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
required:
- site
properties:
site:
type: object
type: object
example:
site:
name: mynewsite
responses:
'200':
description: 'Download the site folder as a zip file'
/archiveSite:
post:
tags:
- cms
- authenticated
- site
operationId: 'Operations::archiveSite'
parameters:
-
name: jwt
in: query
description: 'JSON Web token, obtain by using /login'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
required:
- site
properties:
site:
type: object
type: object
example:
site:
name: mynewsite
responses:
'200':
description: 'Archive a site by moving it on the file system'
tags:
-
name: hax
description: 'Operations required for HAX editor to work'
externalDocs:
description: 'Find out more about hax editor integrations'
url: 'https://haxtheweb.org/integrations/create-new-ones'
-
name: cms
description: 'Operations for the CMS side'
-
name: site
description: 'Operations for sites'
-
name: node
description: 'Operations for individual nodes in a site'
-
name: file
description: 'Operations for files related to CMS or HAX'
-
name: form
description: 'Operations related to form submission or generation'
-
name: meta
description: 'Operations related to metadata management or processes'
-
name: git
description: 'Operations related to git / version control of the site'
-
name: user
description: 'Operations for the user account / object'
-
name: api
description: 'endpoint to generate the API or surrounding API callbacks'
-
name: settings
description: 'Internal settings related to configuration of this HAXcms deployment'
-
name: authenticated
description: 'Operations requiring authentication'
externalDocs:
description: 'HAXcms and all things HAX documentations'
url: 'https://haxtheweb.org/'