diff --git a/api.oa3 b/api.oa3 new file mode 100644 index 00000000..d5c5ed0b --- /dev/null +++ b/api.oa3 @@ -0,0 +1,459 @@ +openapi: 3.0.0 +info: + description: | + DataBag provides storage for decentralized identity based self-hosting apps. + It is intended to support sharing of personal data and hosting group + conversations. + version: "0.0.1" + title: DataBag + termsOfService: 'http://swagger.io/terms/' + contact: + email: roland.osborne@gmail.com + license: + name: Apache 2.0 + url: 'http://www.apache.org/licenses/LICENSE-2.0.html' +tags: + - name: revision + description: websocket endpoint for receiving module revision events + - name: portal + description: portal creation and configuration for portal backend + - name: profile + description: getting and setting of the public profile + - name: content + description: posting and listing of personal subjects, group and tag managment + - name: contact + description: connection to other identities, hook receiver + - name: sharing + description: sharing personal subjects, associates content and contacts + - name: converstaion + description: group sharing of subjects + +paths: + + /revision: + get: + tags: + - revision + summary: Websocket endpoint for receiving revision updates + operationId: websocket + responses: + '200': + description: Awaiting announce + + /portal/configurable: + get: + tags: + - portal + summary: Check if portal params have been set + operationId: get-config + responses: + '200': + description: success + '405': + description: admin already configured + '500': + description: internal server error + + /portal/config: + post: + tags: + - portal + summary: Set admin password and node domain + operationId: set-config + security: + - basicAuth: [] + parameters: + - name: domain + in: query + description: domain of node + required: true + schema: + type: string + responses: + '200': + description: success + '405': + description: admin already configured + '500': + description: internal server error + put: + tags: + - portal + summary: Set portal domain + operationId: set-domain + security: + - basicAuth: [] + parameters: + - name: domain + in: query + description: domain of node + required: true + schema: + type: string + responses: + '200': + description: success + '401': + description: authentication error + '500': + description: internal server error + + /portal/claimable: + get: + tags: + - portal + description: Check if username is available + operationId: check-username + security: + - bearerAuth: [] + parameters: + - name: username + in: query + description: username to check + required: true + schema: + type: string + responses: + '200': + description: success + '401': + description: authentication error + '405': + description: username already taken + '500': + description: internal server error + + /portal/profile: + get: + tags: + - portal + description: Get public profile object + operationId: get-profile + security: + - basicAuth: [] + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Profile' + '401': + description: authentication error + '500': + description: internal server error + post: + tags: + - portal + description: Add a new portal + operationId: set-profile + security: + - bearerAuth: [] + - basicAuth: [] + responses: + '201': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Profile' + '400': + description: invalid handle or password + '401': + description: invalid bearer token + '500': + description: internal server error + + /portal/profile/authenication: + put: + tags: + - portal + summary: Update authentication with extra auth header + operationId: set-handle + security: + - basicAuth: [] + - basicAuth: [] + responses: + '200': + description: authentication set + content: + application/json: + schema: + $ref: '#/components/schemas/Profile' + '400': + description: invalid new handle or password + '401': + description: invalid handle or password + '500': + description: internal server error + + /portal/profile/passcode: + put: + tags: + - portal + summary: Generate pass code + operationId: set-passcode + security: + - basicAuth: [] + responses: + '201': + description: generated + content: + application/json: + schema: + type: string + '401': + description: invalid password + '500': + description: internal server error + + /portal/token: + get: + tags: + - portal + summary: Check if bearer token is valid + operationId: check-token + security: + - bearerAuth: [] + responses: + '200': + description: success + '401': + description: invalid token + '500': + description: internal server error + put: + tags: + - portal + summary: Create password reset token + operationId: set-account + security: + - basicAuth: [] + parameters: + - name: guid + in: query + description: id of profile to access + required: true + schema: + type: string + responses: + '201': + description: generated + content: + application/json: + schema: + type: string + '401': + description: invalid password + '404': + description: unknown portal + '500': + description: internal server error + post: + tags: + - portal + summary: Create new portal token + operationId: add-account + security: + - basicAuth: [] + responses: + '201': + description: generated + content: + application/json: + schema: + type: string + '401': + description: invalid password + '500': + description: internal server error + + /portal/accounts: + get: + tags: + - portal + description: Get list of portals + operationId: get-accounts + security: + - basicAuth: [] + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: array + items: + type: string + '401': + description: invalid password + '404': + description: handle not found + '500': + description: internal server error + + /portal/accounts/{guid}: + get: + tags: + - portal + description: Get profile of account + operationId: get-account + security: + - basicAuth: [] + parameters: + - name: guid + in: path + description: id of account to access + required: true + schema: + type: string + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Profile' + '401': + description: invalid password + '404': + description: account not found + '500': + description: internal server error + delete: + tags: + - portal + description: Remove account from node + operationId: remove-account + security: + - basicAuth: [] + parameters: + - name: guid + in: path + description: id of account to delete + required: true + schema: + type: string + responses: + '200': + description: successful operation + '401': + description: invalid authentication + '404': + description: account not found + '500': + description: internal server error + + /sample: + put: + tags: + - sample + summary: sample + operationId: sample + responses: + '400': + description: sample + requestBody: + $ref: '#/components/requestBodies/Sample' + +externalDocs: + description: Find out more about Swagger + url: 'http://swagger.io' + +components: + schemas: + + Announce: + type: object + required: + - appToken + properties: + appToken: + type: string + + Passcode: + type: object + required: + - value + properties: + value: + type: string + + Revsion: + type: object + required: + - profile + - content + - labels + - sharing + - contact + - dialogue + - insight + properties: + profile: + type: integer + format: int64 + content: + type: integer + format: int64 + labels: + type: integer + format: int64 + sharing: + type: integer + format: int64 + contact: + type: integer + format: int64 + dialogue: + type: integer + format: int64 + insight: + type: integer + format: int64 + + Profile: + type: object + required: + - guid + - handle + - name + - description + - location + - revision + - node + properties: + id: + type: string + name: + type: string + description: + type: string + location: + type: string + revision: + type: integer + format: int64 + node: + type: string + + requestBodies: + + Sample: + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + description: Sample + required: true + + securitySchemes: + + basicAuth: + type: http + scheme: basic + + bearerAuth: + type: http + scheme: bearer +