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: admin description: account creation for portal backend. - name: account description: account configuration for portal backend. supports app attachment - name: authenticate description: authenticate holder of identity for external service - name: profile description: getting and setting of the public profile - name: share description: access control for personal subjects, associates content and contacts - name: content description: posting and listing of personal subjects, group and tag managment - name: index description: connection to other identities, hook receiver - name: converstaion description: group sharing of subjects paths: # prefix for bearer tokens types # app: app_ # contact: cnt_ # pass code: pas_ # account reset: res_ # account create: act_ /revision: get: tags: - revision description: Websocket placeholder endpoint for receiving revision updates operationId: websocket responses: '200': description: Awaiting announce /admin/claimable: get: tags: - admin description: Check if portal params have been set operationId: node-configurable responses: '200': description: success '405': description: admin already configured '500': description: internal server error /admin/config: post: tags: - admin description: Set admin password and node domain operationId: add-node-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 /admin/config/domain: put: tags: - admin description: Set portal domain operationId: set-node-config-domain security: - basicAuth: [] responses: '200': description: success '401': description: authentication error '500': description: internal server error requestBody: content: application/json: schema: type: string /admin/token: put: tags: - admin description: Create password reset token url operationId: set-node-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: - admin description: Create new account token url operationId: add-node-account security: - basicAuth: [] responses: '201': description: generated content: application/json: schema: type: string '401': description: invalid password '500': description: internal server error /admin/accounts: get: tags: - admin description: Get list of portals operationId: get-node-accounts security: - basicAuth: [] responses: '200': description: successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/Profile' '401': description: invalid password '404': description: handle not found '500': description: internal server error /admin/accounts/{guid}: delete: tags: - admin description: Remove account from node operationId: remove-node-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 /admin/accounts/{guid}/image: get: tags: - admin description: Get profile of specified account operationId: get-node-account-image security: - basicAuth: [] parameters: - name: guid in: path description: id of specified account required: true schema: type: string responses: '200': description: successful operation content: application/octet-stream: schema: type: string format: binary '401': description: invalid password '404': description: account not found '500': description: internal server error /account/claimable: get: tags: - account 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 /account/token: get: tags: - account description: Check if bearer token is valid operationId: check-token security: - bearerAuth: [] responses: '200': description: success '401': description: invalid token '500': description: internal server error /account/profile: get: tags: - account description: Get public profile object operationId: get-account-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: - account description: Add a new account operationId: add-account 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 /account/authentication: post: tags: - account description: Generate token to reset authentication operationId: add-account-authentication security: - basicAuth: [] responses: '201': description: generated content: application/json: schema: type: string '401': description: invalid password '500': description: internal server error put: tags: - account description: Apply account reset token to set handle and password operationId: set-account-authentication security: - bearerAuth: [] - basicAuth: [] responses: '201': description: successful operation '401': description: invalid token '406': description: invalid handle or password '500': description: internal server error /account/attachment: post: tags: - account description: Generate token to attach an app to the account operationId: add-account-app security: - basicAuth: [] responses: '201': description: generated content: application/json: schema: type: string '401': description: invalid password '500': description: internal server error put: tags: - account description: Apply the app token and attach an app to the account operationId: set-account-app security: - bearerAuth: [] responses: '201': description: generated content: application/json: schema: type: string '401': description: invalid token '406': description: app limit reached '500': description: internal server error requestBody: content: application/json: schema: $ref: '#/components/schemas/AppData' /account/apps: get: tags: - account description: Get list of attached apps operationId: get-account-apps security: - basicAuth: [] responses: '200': description: successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/App' '401': description: invalid password '500': description: internal server error /account/apps/{appId}: delete: tags: - account description: Get list of attached apps operationId: remove-account-app security: - basicAuth: [] parameters: - name: appId in: path description: specified app id required: true schema: type: string responses: '200': description: successful operation '401': description: invalid password '404': description: app not found '500': description: internal server error /authenticate: put: tags: - authenticate description: Sign payload containing external token for authentication operationId: authenticate security: - bearerAuth: [] parameters: - name: token in: query description: token to sign in message response required: true schema: type: string responses: '201': description: generated content: application/json: schema: $ref: '#/components/schemas/DataMessage' '401': description: invalid token '500': description: internal server error /profile: get: tags: - profile description: Get profile view object operationId: get-profile security: - bearerAuth: [] responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/Profile' '401': description: invalid token '500': description: internal server error put: tags: - profile description: Set profile data operationId: set-profile security: - bearerAuth: [] responses: '200': description: successful operation '401': description: invalid token '500': description: internal server error requestBody: content: application/json: schema: $ref: '#/components/schemas/ProfileData' /profile/image: get: tags: - profile description: Get profile image operationId: get-profile-image security: - bearerAuth: [] responses: '200': description: successful operation content: application/octet-stream: schema: type: string format: binary '401': description: invalid token '500': description: internal server error /profile/message: get: tags: - profile description: Get profile message operationId: get-profile-message responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/DataMessage' '401': description: invalid token '500': description: internal server error /share/groups: get: tags: - share description: Get groups for sharing operationId: get-share-groups security: - bearerAuth: [] responses: '200': description: successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/Group' '401': description: invalid token '500': description: internal server error post: tags: - share description: Add a group for sharing operationId: add-share-group security: - bearerAuth: [] responses: '201': description: entry created '401': description: invalid token '500': description: internal server error requestBody: content: application/json: schema: type: string /share/groups/{groupId}: put: tags: - share description: Update group for sharing operationId: update-share-group security: - bearerAuth: [] parameters: - name: groupId in: path description: specified group id required: true schema: type: string responses: '200': description: successful operation '401': description: invalid token '500': description: internal server error requestBody: content: application/json: schema: type: string delete: tags: - share description: Get groups for sharing operationId: remove-share-group security: - bearerAuth: [] parameters: - name: groupId in: path description: specified group id required: true schema: type: string responses: '200': description: successful operation '401': description: invalid token '500': description: internal server error /content/articleBlocks/view: get: tags: - content description: Get view of content blocks operationId: get-article-block-view security: - bearerAuth: [] responses: '200': description: successful operation content: application/json: schema: type: array items: type: object properties: id: type: string revision: type: integer format: int64 '401': description: invalid password '500': description: internal server error /content/articleBlocks/{blockId}: get: tags: - content description: Get articles from specified block operationId: get-article-block security: - bearerAuth: [] parameters: - name: blockId in: path description: specified group id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/Article' '401': description: invalid password '500': description: internal server error /content/articleBlocks/{blockId}/view: get: tags: - content description: Get view articles in content block operationId: get-article-view security: - bearerAuth: [] parameters: - name: blockId in: path description: specified group id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: type: array items: type: object properties: id: type: string revision: type: integer format: int64 '401': description: invalid password '500': description: internal server error /content/articles: post: tags: - content description: Add an content article operationId: add-article security: - bearerAuth: [] responses: '201': description: entry created content: application/json: schema: type: object properties: blockId: type: string blockRevision: type: integer format: int64 article: $ref: '#/components/schemas/Article' '401': description: invalid token '500': description: internal server error /content/articles/{articleId}: get: tags: - content description: Get specified article operationId: get-article security: - bearerAuth: [] parameters: - name: articleId in: path description: specified article id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/Article' '401': description: invalid password '500': description: internal server error delete: tags: - content description: Remove specified article operationId: remove-article security: - bearerAuth: [] parameters: - name: articleId in: path description: specified article id required: true schema: type: string responses: '200': description: successful operation '401': description: invalid password '500': description: internal server error /content/articles/{articleId}/subject: put: tags: - content description: Add an content article operationId: update-content-article security: - bearerAuth: [] parameters: - name: articleId in: path description: specified article id required: true schema: type: string responses: '201': description: entry created '401': description: invalid token '500': description: internal server error requestBody: content: application/json: schema: type: object required: - type - data properties: type: type: string data: type: string /content/articles/{articleId}/groups/{groupId}: post: tags: - content description: set sharing group for article operationId: set-article-group security: - bearerAuth: [] parameters: - name: articleId in: path description: specified article id required: true schema: type: string - name: groupId in: path description: specified share group id required: true schema: type: string responses: '200': description: entry set '401': description: invalid token '500': description: internal server error delete: tags: - content description: clear sharing group for article operationId: clear-article-group security: - bearerAuth: [] parameters: - name: articleId in: path description: specified article id required: true schema: type: string - name: groupId in: path description: specified share id required: true schema: type: string responses: '200': description: entry removed '401': description: invalid token '500': description: internal server error /content/articles/{articleId}/labels/{labelId}: post: tags: - content description: set orginizational label for article operationId: set-article-label security: - bearerAuth: [] parameters: - name: articleId in: path description: specified article id required: true schema: type: string - name: labelId in: path description: specified label id required: true schema: type: string responses: '200': description: entry set '401': description: invalid token '500': description: internal server error delete: tags: - content description: clear orginizationl label for article operationId: clear-article-label security: - bearerAuth: [] parameters: - name: articleId in: path description: specified article id required: true schema: type: string - name: labelId in: path description: specified label id required: true schema: type: string responses: '200': description: entry cleared '401': description: invalid token '500': description: internal server error /content/articles/{articleId}/tagBlocks/{blockId}/view: get: tags: - content description: Get view tag blocks in article operationId: get-tag-view security: - bearerAuth: [] parameters: - name: articleId in: path description: specified article id required: true schema: type: string - name: blockId in: path description: specified block id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: type: array items: type: object properties: id: type: string revision: type: integer format: int64 '401': description: invalid password '500': description: internal server error /content/articles/{articleId}/tagBlocks/{blockId}: get: tags: - content description: Get tags from specified block operationId: get-tag-block security: - bearerAuth: [] parameters: - name: articleId in: path description: specified article id required: true schema: type: string - name: blockId in: path description: specified block id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: type: array items: type: object properties: id: type: string revision: type: integer format: int64 '401': description: invalid password '500': description: internal server error /content/articles/{articleId}/tags: post: tags: - content description: Add an content article operationId: add-article-tag security: - bearerAuth: [] parameters: - name: articleId in: path description: specified article id required: true schema: type: string responses: '201': description: entry created content: application/json: schema: type: object properties: blockId: type: string blockRevision: type: integer format: int64 tag: $ref: '#/components/schemas/Tag' '401': description: invalid token '500': description: internal server error /content/articles/{articleId}/tags/{tagId}: get: tags: - content description: Add an content article operationId: get-article-tag security: - bearerAuth: [] parameters: - name: articleId in: path description: specified article id required: true schema: type: string - name: tagId in: path description: specified tag id required: true schema: type: string responses: '201': description: entry created content: application/json: schema: $ref: '#/components/schemas/Tag' '401': description: invalid token '404': description: tag not found '500': description: internal server error delete: tags: - content description: Add an content article operationId: remove-article-tag security: - bearerAuth: [] parameters: - name: articleId in: path description: specified article id required: true schema: type: string - name: tagId in: path description: specified tag id required: true schema: type: string responses: '200': description: entry removed '401': description: invalid token '404': description: tag not found '500': description: internal server error /content/articles/{articleId}/assets: get: tags: - content description: Get assets attached to article operationId: get-article-assets security: - bearerAuth: [] parameters: - name: articleId in: path description: specified article id required: true schema: type: string responses: '201': description: entry created content: application/json: schema: type: array items: $ref: '#/components/schemas/Asset' '401': description: invalid token '500': description: internal server error post: tags: - content description: Add an content article operationId: add-article-asset security: - bearerAuth: [] parameters: - name: articleId in: path description: specified article id required: true schema: type: string - name: transforms in: query description: transforms to apply required: false schema: type: array items: type: string responses: '201': description: entry created content: application/json: schema: $ref: '#/components/schemas/Asset' '401': description: invalid token '500': description: internal server error requestBody: content: multipart/form-data: schema: type: object properties: fileName: type: string format: binary /content/articles/{articleId}/assets/{assetId}: get: tags: - content description: Get asset attached to article operationId: get-article-asset security: - bearerAuth: [] parameters: - name: articleId in: path description: specified article id required: true schema: type: string - name: assetId in: path description: specified asset id required: true schema: type: string responses: '200': description: article attachment content: application/octet-stream: #asset specific schema: type: string format: binary '401': description: invalid token '404': description: asset not found '500': description: internal server error /content/articles/{articleId}/confirmed: put: tags: - content description: set confirmed state of article operationId: set-article-confirmed security: - bearerAuth: [] parameters: - name: articleId in: path description: specified article id required: true schema: type: string responses: '200': description: entry set '401': description: invalid token '404': description: article not found '500': description: internal server error requestBody: content: application/json: schema: type: boolean /content/labels: get: tags: - content description: Get labels for organization operationId: get-content-labels security: - bearerAuth: [] responses: '200': description: successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/Label' '401': description: invalid token '500': description: internal server error post: tags: - content description: Add a label for organization operationId: add-content-label security: - bearerAuth: [] responses: '201': description: entry created '401': description: invalid token '500': description: internal server error requestBody: content: application/json: schema: type: string /content/labels/{labelId}: put: tags: - content description: Update label for organization operationId: update-content-label security: - bearerAuth: [] parameters: - name: labelId in: path description: specified group id required: true schema: type: string responses: '200': description: successful operation '401': description: invalid token '500': description: internal server error requestBody: content: application/json: schema: type: string delete: tags: - content description: Remove organizational label operationId: remove-content-label security: - bearerAuth: [] parameters: - name: labelId in: path description: specified label id required: true schema: type: string responses: '200': description: successful operation '401': description: invalid token '500': description: internal server error /index/contacts: post: tags: - index description: Add contact entry operationId: add-index-contact security: - bearerAuth: [] responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/Contact' '401': description: invalid password '404': description: not found '500': description: internal server error /index/contacts/view: get: tags: - index description: Get list of contacts operationId: get-index-contacts security: - bearerAuth: [] responses: '200': description: successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/ContactView' '401': description: invalid password '500': description: internal server error /index/contacts/{contactId}: get: tags: - index description: Get contact entry operationId: get-index-contact security: - bearerAuth: [] parameters: - name: contactId in: path description: specified contact id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/Contact' '401': description: invalid password '404': description: not found '500': description: internal server error delete: tags: - index description: Remove contact entry operationId: remove-index-contact security: - bearerAuth: [] parameters: - name: contactId in: path description: specified contact id required: true schema: type: string responses: '200': description: successful operation '401': description: invalid password '404': description: not found '500': description: internal server error /index/contacts/{contactId}/status: put: tags: - index description: Update contact status operationId: set-index-contact-status security: - bearerAuth: [] parameters: - name: contactId in: path description: specified contact id required: true schema: type: string - name: token in: query description: token for accessing contact required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ContactData' '401': description: invalid password '404': description: not found '500': description: internal server error requestBody: content: application/json: schema: type: string enum: [ pending, confirmed, connecting, connected ] /index/contacts/{contactId}/openMessage: get: tags: - index description: Get message for opening contact connection operationId: get-index-open-message security: - bearerAuth: [] parameters: - name: contactId in: path description: specified contact id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/DataMessage' '401': description: invalid password '404': description: not found '500': description: internal server error put: tags: - index description: Set message for opening contact connection operationId: set-index-open-message parameters: - name: contactId in: path description: specified contact id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ContactStatus' '401': description: invalid password '404': description: not found '500': description: internal server error requestBody: content: application/json: schema: $ref: '#/components/schemas/DataMessage' /index/contacts/{contactId}/closeMessage: get: tags: - index description: Get message for closing contact connection operationId: get-index-close-message security: - bearerAuth: [] parameters: - name: contactId in: path description: specified contact id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/DataMessage' '401': description: invalid password '404': description: not found '500': description: internal server error put: tags: - index description: Set message for closing contact connection operationId: set-index-close-message parameters: - name: contactId in: path description: specified contact id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ContactStatus' '401': description: invalid password '404': description: not found '500': description: internal server error requestBody: content: application/json: schema: $ref: '#/components/schemas/DataMessage' /index/contacts/{contactId}/profile: get: tags: - index description: Get profile of contact entry operationId: get-index-profile security: - bearerAuth: [] parameters: - name: contactId in: path description: specified contact id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ContactProfile' '401': description: invalid password '404': description: not found '500': description: internal server error put: tags: - index description: Set profile of contact entry operationId: set-index-profile security: - bearerAuth: [] parameters: - name: contactId in: path description: specified contact id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ContactProfile' '401': description: invalid password '404': description: not found '500': description: internal server error requestBody: content: application/json: schema: $ref: '#/components/schemas/Profile' /index/contacts/{contactId}/data: get: tags: - index description: Get data of contact entry operationId: get-index-data security: - bearerAuth: [] parameters: - name: contactId in: path description: specified contact id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ContactData' '401': description: invalid password '404': description: not found '500': description: internal server error /index/contacts/{contactId}/notes: put: tags: - index description: Update contact notes operationId: set-index-contact-notes security: - bearerAuth: [] parameters: - name: contactId in: path description: specified contact id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ContactData' '401': description: invalid password '404': description: not found '500': description: internal server error requestBody: content: application/json: schema: type: string delete: tags: - index description: Clear contact notes operationId: clear-index-contact-notes security: - bearerAuth: [] parameters: - name: contactId in: path description: specified contact id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ContactData' '401': description: invalid password '404': description: not found '500': description: internal server error /index/contacts/{contactId}/shares/{shareId}: put: tags: - index description: Update contact notes operationId: set-index-contact-share security: - bearerAuth: [] parameters: - name: contactId in: path description: specified contact id required: true schema: type: string - name: shareId in: path description: specified share id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ContactData' '401': description: invalid password '404': description: not found '500': description: internal server error delete: tags: - index description: Clear contact share group operationId: clear-index-contact-share security: - bearerAuth: [] parameters: - name: contactId in: path description: specified contact id required: true schema: type: string - name: shareId in: path description: specified share id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ContactData' '401': description: invalid password '404': description: not found '500': description: internal server error /index/blocked: get: tags: - index description: Get list of blocked contacts operationId: get-index-blocked-contacts security: - bearerAuth: [] responses: '200': description: successful operation content: application/json: schema: type: array items: type: string '401': description: invalid password '404': description: not found '500': description: internal server error /index/blocked/{contactId}: post: tags: - index description: Add contact from blocked list operationId: add-index-blocked-contact security: - bearerAuth: [] parameters: - name: contactId in: path description: specified contact id required: true schema: type: string responses: '200': description: successful operation '401': description: invalid password '404': description: not found '500': description: internal server error delete: tags: - index description: Remove contact from blocked list operationId: remove-index-blocked-contact security: - bearerAuth: [] parameters: - name: contactId in: path description: specified contact id required: true schema: type: string responses: '200': description: successful operation '401': description: invalid password '404': description: not found '500': description: internal server error /index/profile/revision: put: tags: - index description: Hook receiver for contact profile revision updates operationId: revision-profile-hook security: - bearerAuth: [] responses: '200': description: revision set '401': description: not authorized '500': description: internal server error requestBody: content: application/json: schema: type: integer format: int64 /index/content/revision: put: tags: - index description: Hook receiver for contact content revision updates operationId: revision-content-hook security: - bearerAuth: [] responses: '200': description: revision set '401': description: not authorized '500': description: internal server error requestBody: content: application/json: schema: type: integer format: int64 # /conversation/dialogues/{dialogueId}/sync - s # /conversation/dialogues/{dialogueId}/insights/{guid} - a,d # /conversation/insights/{dialogueId} a,d /conversation/dialogues: get: tags: - conversation description: Retrieve all dialogues. operationId: get-dialogues security: - bearerAuth: [] responses: '200': description: success content: application/json: schema: type: array items: $ref: '#/components/schemas/Dialogue' '401': description: invalid token '500': description: internal server error post: tags: - conversation description: Add a new dialogue. operationId: add-dialogue security: - bearerAuth: [] responses: '200': description: success content: application/json: schema: type: array items: $ref: '#/components/schemas/Dialogue' '401': description: invalid token '500': description: internal server error /conversation/dialogues/{dialogueId}/subject: put: tags: - conversation description: Set dialogue subject operationId: set-dialogue-subject security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string responses: '201': description: entry created '401': description: invalid token '404': description: not found '500': description: internal server error requestBody: content: application/json: schema: type: object required: - type - data properties: type: type: string data: type: string /conversation/dialogues/{dialogueId}/active: put: tags: - conversation description: Set dialogue active state operationId: set-dialogue-active security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string responses: '200': description: success '401': description: invalid token '404': description: not found '500': description: internal server error requestBody: content: application/json: schema: type: boolean /conversation/dialogues/{dialogueId}/insight/{guid}: post: tags: - conversation description: Assign a contact to have insight into the conversation operationId: add-contact-insight security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string - name: guid in: path description: specified contact id required: true schema: type: string responses: '200': description: entry set '401': description: invalid token '404': description: id not found '500': description: internal server error delete: tags: - conversation description: Remove insight from the specified contact operationId: remove-contact-insight security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string - name: guid in: path description: specified contact id required: true schema: type: string responses: '200': description: entry cleared '401': description: invalid token '404': description: id not found '500': description: internal server error /conversation/dialogues/{dialogueId}: delete: tags: - conversation description: Remove dialogue operationId: remove-dialogue security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string responses: '200': description: entry removed '401': description: invalid token '404': description: not found '500': description: internal server error /conversation/insights: get: tags: - conversation description: Retrieve all insights. operationId: get-insights security: - bearerAuth: [] responses: '200': description: success content: application/json: schema: type: array items: $ref: '#/components/schemas/Insight' '401': description: invalid token '500': description: internal server error /conversation/insights/{guid}/dialogues/{dialogueId}: post: tags: - conversation description: Hook receiver for adding an insight and/or updating the dialog revision operationId: add-insight-hook security: - bearerAuth: [] parameters: - name: guid in: path description: id of contact hosting the dialogue required: true schema: type: string - name: dialogueId in: path description: dialogue with insight id to update required: true schema: type: string responses: '200': description: revision set '401': description: not authorized '500': description: internal server error requestBody: content: application/json: schema: type: integer format: int64 delete: tags: - conversation description: Hook receiver for removing an insight operationId: remove-insight-hook security: - bearerAuth: [] parameters: - name: guid in: path description: id of contact hosting the dialogue required: true schema: type: string - name: dialogueId in: path description: insight id to update required: true schema: type: string responses: '200': description: revision set '401': description: not authorized '500': description: internal server error /conversation/insights/{guid}/dialogues/{dialogueId}/active: post: tags: - conversation description: Change active state of insight operationId: update-insight-active security: - bearerAuth: [] parameters: - name: guid in: path description: id of contact hosting the dialogue required: true schema: type: string - name: dialogueId in: path description: dialogue with insight id to update required: true schema: type: string responses: '200': description: revision set '401': description: not authorized '500': description: internal server error requestBody: content: application/json: schema: type: boolean /conversation/dialogues/{dialogueId}/thoughtBlocks/view: get: tags: - conversation description: Get view of content blocks operationId: get-conversation-thought-block-view security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: type: array items: type: object properties: id: type: string revision: type: integer format: int64 '401': description: invalid password '500': description: internal server error /conversation/dialogues/{dialogueId}/thoughtBlocks/{blockId}: get: tags: - conversation description: Get thoughts from specified block in conversation operationId: get-conversation-thought-block security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string - name: blockId in: path description: specified group id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/Thought' '401': description: invalid password '500': description: internal server error /conversation/dialogues/{dialogueId}/thoughtBlocks/{blockId}/view: get: tags: - conversation description: Get view thoughts in content block of dialogue operationId: get-conversation-thought-view security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string - name: blockId in: path description: specified group id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: type: array items: type: object properties: id: type: string revision: type: integer format: int64 '401': description: invalid password '500': description: internal server error /conversation/dialogues/{dialogueId}/thoughts: post: tags: - conversation description: Add an content thought to a conversation operationId: add-conversation-thought security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string responses: '201': description: entry created content: application/json: schema: type: object properties: blockId: type: string blockRevision: type: integer format: int64 thought: $ref: '#/components/schemas/Thought' '401': description: invalid token '500': description: internal server error /conversation/dialogues/{dialogueId}/thoughts/{thoughtId}: get: tags: - conversation description: Get specified thought in dialogue operationId: get-conversation-thought security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string - name: thoughtId in: path description: specified thought id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/Thought' '401': description: invalid password '500': description: internal server error delete: tags: - conversation description: Remove specified thought from conversation operationId: remove-conversation-thought security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string - name: thoughtId in: path description: specified thought id required: true schema: type: string responses: '200': description: successful operation '401': description: invalid password '500': description: internal server error /conversation/dialogues/{dialogueId}/thoughts/{thoughtId}/subject: put: tags: - conversation description: Add an content thought operationId: update-conversation-thought security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string - name: thoughtId in: path description: specified thought id required: true schema: type: string responses: '201': description: entry created '401': description: invalid token '500': description: internal server error requestBody: content: application/json: schema: type: object required: - type - data properties: type: type: string data: type: string /conversation/dialogues/{dialogueId}/{thoughtId}/tagBlocks/{blockId}/view: get: tags: - conversation description: Get view tag blocks in thought operationId: get-conversation-tag-view security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string - name: thoughtId in: path description: specified thought id required: true schema: type: string - name: blockId in: path description: specified block id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: type: array items: type: object properties: id: type: string revision: type: integer format: int64 '401': description: invalid password '500': description: internal server error /conversation/dialogues/{dialogueId}/thoughts/{thoughtId}/tagBlocks/{blockId}: get: tags: - conversation description: Get tags from specified block operationId: get-conversation-tag-block security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string - name: thoughtId in: path description: specified thought id required: true schema: type: string - name: blockId in: path description: specified block id required: true schema: type: string responses: '200': description: successful operation content: application/json: schema: type: array items: type: object properties: id: type: string revision: type: integer format: int64 '401': description: invalid password '500': description: internal server error /conversation/dialogues/{dialogueId}/thoughts/{thoughtId}/tags: post: tags: - conversation description: Add an content thought operationId: add-conversation-thought-tag security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string - name: thoughtId in: path description: specified thought id required: true schema: type: string responses: '201': description: entry created content: application/json: schema: type: object properties: blockId: type: string blockRevision: type: integer format: int64 tag: $ref: '#/components/schemas/Tag' '401': description: invalid token '500': description: internal server error /conversation/dialogues/{dialogueId}/thoughts/{thoughtId}/tags/{tagId}: get: tags: - conversation description: Add an content thought operationId: get-thought-tag security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string - name: thoughtId in: path description: specified thought id required: true schema: type: string - name: tagId in: path description: specified tag id required: true schema: type: string responses: '201': description: entry created content: application/json: schema: $ref: '#/components/schemas/Tag' '401': description: invalid token '404': description: tag not found '500': description: internal server error delete: tags: - conversation description: Remove conversation thought tag operationId: remove-conversation-thought-tag security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string - name: thoughtId in: path description: specified thought id required: true schema: type: string - name: tagId in: path description: specified tag id required: true schema: type: string responses: '200': description: entry removed '401': description: invalid token '404': description: tag not found '500': description: internal server error /conversation/dialogues/{dialogueId}/thoughts/{thoughtId}/assets: get: tags: - conversation description: Get assets attached to thought operationId: get-conversation-thought-assets security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string - name: thoughtId in: path description: specified thought id required: true schema: type: string responses: '201': description: entry created content: application/json: schema: type: array items: $ref: '#/components/schemas/Asset' '401': description: invalid token '500': description: internal server error post: tags: - conversation description: Add an conversation thought asset operationId: add-conversation-thought-asset security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string - name: thoughtId in: path description: specified thought id required: true schema: type: string - name: transforms in: query description: transforms to apply required: false schema: type: array items: type: string responses: '201': description: entry created content: application/json: schema: $ref: '#/components/schemas/Asset' '401': description: invalid token '500': description: internal server error requestBody: content: multipart/form-data: schema: type: object properties: fileName: type: string format: binary /conversatin/dialogues/{dialogueId}/thoughts/{thoughtId}/assets/{assetId}: get: tags: - conversation description: Get asset attached to thought operationId: get-conversation-thought-asset security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string - name: thoughtId in: path description: specified thought id required: true schema: type: string - name: assetId in: path description: specified asset id required: true schema: type: string responses: '200': description: thought attachment content: application/octet-stream: #asset specific schema: type: string format: binary '401': description: invalid token '404': description: asset not found '500': description: internal server error /conversation/dialogues/{dialogueId}/thoughts/{thoughtId}/confirmed: put: tags: - conversation description: set confirmed state of conversation thought operationId: set-conversation-thought-confirmed security: - bearerAuth: [] parameters: - name: dialogueId in: path description: specified dialogue id required: true schema: type: string - name: thoughtId in: path description: specified thought id required: true schema: type: string responses: '200': description: entry set '401': description: invalid token '404': description: thought not found '500': description: internal server error requestBody: content: application/json: schema: type: boolean externalDocs: description: Find out more about Swagger url: 'http://swagger.io' components: schemas: Announce: type: object required: - appToken properties: appToken: type: string Revsion: type: object required: - profile - content - labels - sharing - contact - blocked - 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 - revision - node properties: guid: type: string handle: type: string name: type: string description: type: string location: type: string image: type: string format: base64 encoded data revision: type: integer format: int64 node: type: string ProfileData: type: object properties: handle: type: string name: type: string description: type: string location: type: string image: type: string App: type: object required: - appId - appData - attached properties: appId: type: string appData: $ref: '#/components/schemas/AppData' attached: type: integer format: int32 AppData: type: object properties: name: type: string description: type: string url: type: string image: type: string format: base64 encoded image ContactView: type: object required: - guid - profileRevision - contentRevision - contactRevision properties: guid: type: string contactRevision: type: integer format: int64 profileRevision: type: integer format: int64 contentRevision: type: integer format: int64 converstaionRevision: type: integer format: int64 ContactProfile: type: object required: - node properties: handle: type: string name: type: string description: type: string location: type: string revision: type: integer format: int64 imageSet: type: boolean node: type: string ContactData: type: object required: - status properties: revision: type: integer format: int64 status: type: string enum: [ pending, confirmed, connecting, connected ] details: type: string token: type: string groups: type: array items: type: string ContactStatus: type: object required: - status properties: status: type: string enum: [ pending, confirmed, connecting, connected ] token: type: string Contact: type: object required: - contactProfile - contactData - contentRevision - conversationRevision properties: contactProfile: $ref: '#/components/schemas/ContactProfile' contactData: $ref: '#/components/schemas/ContactData' contentRevision: type: integer format: int64 converstaionRevision: type: integer format: int64 Subject: type: object required: - postId - revision - type - data - created - modified properties: postId: type: string revision: type: integer format: int64 type: type: string data: type: string created: type: integer format: int32 Asset: type: object required: - assetId properties: assetId: type: string transform: type: string status: type: string enum: [ pending, processing, ready, error ] Tag: type: object required: - guid - subject properties: guid: type: string subject: $ref: '#/components/schemas/Subject' Insight: type: object required: - insightId - revision - guid properties: insightId: type: string revision: type: integer format: int64 guid: type: string active: type: boolean Dialogue: type: object required: - dialogueId - revision - status - subject - insights properties: dialogueId: type: string revision: type: integer format: int64 active: type: boolean subject: $ref: '#/components/schemas/Subject' insights: type: array items: type: object properties: guid: type: string status: type: string enum: [ synced, unsynced ] Thought: type: object required: - thoughtId - revision - status - subject - tagCount - tagUpdated - tagRevision properties: articleId: type: string revision: type: integer format: int64 status: type: string enum: [ unconfirmed, confirmed, complete, error ] subject: $ref: '#/components/schemas/Subject' tagCount: type: integer format: int32 tagUpdate: type: integer format: int32 tagRevision: type: integer format: int64 Article: type: object required: - articleId - revision - status - subject - labels - groups - tagCount - tagUpdated - tagRevision properties: articleId: type: string revision: type: integer format: int64 status: type: string enum: [ unconfirmed, confirmed, complete, error ] subject: $ref: '#/components/schemas/Subject' labels: type: array items: type: string groups: type: array items: type: string tagCount: type: integer format: int32 tagUpdate: type: integer format: int32 tagRevision: type: integer format: int64 Note: type: object required: - noteId - guid - revision - status - subject - tagCount - tagUpdated - tagRevision properties: thoughtId: type: string guid: type: string revision: type: integer format: int64 status: type: string enum: [ unconfirmed, confirmed, complete, error ] subject: $ref: '#/components/schemas/Subject' tagCount: type: integer format: int32 tagUpdate: type: integer format: int32 tagRevision: type: integer format: int64 Group: type: object required: - groupId - name properties: groupId: type: string name: type: string Label: type: object required: - labelId - name properties: labelId: type: string name: type: string Authenticate: type: object required: - guid - token - timestamp properties: token: type: string timestamp: type: integer format: int32 Connect: type: object required: - requestorId - requestedId - timestamp - profile - token - contentRevision - conversationRevision properties: requestorId: type: string requestedId: type: string timestamp: type: integer format: int32 profile: $ref: '#/components/schemas/Profile' token: type: string contentRevision: type: integer format: int64 conversationRevision: type: integer format: int64 Disconnect: type: object required: - requestorId - requestedId - timestamp properties: requestorId: type: string requestedId: type: string timestamp: type: integer format: int32 DataMessage: type: object required: - message - messageType - keyType - publicKey - signature properties: messageType: type: string enum: [Connect, Disconnect, Profile, Authenticate] message: type: string format: base64 encoded object keyType: type: string enum: [RSA4096, RSA2048] publicKey: type: string format: base64 encoding of account key signature: type: string format: base64 encoding of message signature securitySchemes: basicAuth: type: http scheme: basic bearerAuth: type: http scheme: bearer