// creates an end user account /** * @swagger * /v1/users/: * post: * summary: end user' google, facebook, apple, crypto' signature * description: | * Crate End user endpoint, should be used with Authorization header set to App JWT. * App JWT example: {JWT token} * tags: * - Users * requestBody: * required: true * content: * application/json: * schema: * oneOf: * - $ref: '#/definitions/UserGoogleAppleFacebookLogin' * - $ref: '#/definitions/SignatureRegistration' * examples: * social: * value: * loginType: google | facebook | apple * password: pass * authToken: token * signature: * value: * loginType: signature * walletAddress: '0xd374e71b0943d2ca83968cb3c41332fc693a7427' * signature: '0xc83dcf6b475cf99026505658d87741ce9180cc0b4a4ab78d7044d3b9e9d3fdf153e3e9c9c549c06ca26581cdf5398b485129a64affdcc2357b4de68283fe4a541c' * msg: 'Register' * firsName: Crypto * lastName: Man * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/sign-up-with-email/: * post: * summary: Users are allowed to register from the application, but they will need an authorization token from the corresponding application. * tags: * - Users * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * email: * type: string * firstName: * type: string * lastName: * type: string * signupPlan: * type: string * enum: [business, free] * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/create-with-app-id/{id}: * post: * summary: If the user has the appropriate ACL, they can create other users for the application with the ID passed as a parameter * tags: * - Users * parameters: * - in: path * name: id * type: string * required: true * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * email: * type: string * firstName: * type: string * lastName: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/create-many-with-app-id/{id}: * post: * summary: If the user has the appropriate ACL, they can create other users for the application with the ID passed as a parameter * tags: * - Users * parameters: * - in: path * name: id * type: string * required: true * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * usersList: * type: array * items: * $ref: '#/definitions/UserData' * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/tags-set/{appId}: * post: * summary: Set tags to the users. To preserve the previous user tags, they need to be sent along with the new tags. * description: Set tags to the users. To preserve the previous user tags, they need to be sent along with the new tags. Allows do delete tags with [] tagsList. * tags: * - Users * parameters: * - in: path * name: appId * type: string * required: true * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * usersIdList: * type: array * items: * type: string * tagsList: * type: array * items: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/tags-add/{appId}: * post: * summary: Add tags to the users. * description: Add tags to the users. * tags: * - Users * parameters: * - in: path * name: appId * type: string * required: true * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * usersIdList: * type: array * items: * type: string * tagsList: * type: array * items: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/tags-delete/{appId}: * post: * summary: Removing tags specified in the request body from users. * description: Removing tags specified in the request body from users. * tags: * - Users * parameters: * - in: path * name: appId * type: string * required: true * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * usersIdList: * type: array * items: * type: string * tagsList: * type: array * items: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/terms-and-conditions: * post: * summary: post terms and conditions * tags: * - Users * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * isAgreeWithTerms: * type: boolean * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/login: * post: * summary: end user' login by google, facebook, apple, crypto' signature * description: | * End user login endpoint, should be used with Authorization header set to App JWT. * App JWT example: {JWT token} * tags: * - Users * requestBody: * required: true * content: * application/json: * schema: * oneOf: * - $ref: '#/definitions/UserGoogleAppleFacebookLogin' * - $ref: '#/definitions/SignatureLogin' * examples: * social: * value: * loginType: google | facebook | apple * password: pass * authToken: token * signature: * value: * loginType: signature * walletAddress: '0xd374e71b0943d2ca83968cb3c41332fc693a7427' * signature: '0xc83dcf6b475cf99026505658d87741ce9180cc0b4a4ab78d7044d3b9e9d3fdf153e3e9c9c549c06ca26581cdf5398b485129a64affdcc2357b4de68283fe4a541c' * msg: 'Login' * responses: * '200': * description: A successful response * '409': * description: user did not validate his email in registration step */ /** * @swagger * /v1/users/login-with-email: * post: * summary: login with email and password * description: | * End user login endpoint, should be used with Authorization header set to App JWT. * Ethora App JWT example: JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjp7Il9pZCI6IjYxZTU1YzlkOTBlYTk5NTk0YmM3ZTZhMiIsImFwcE5hbWUiOiJFdGhvcmEiLCJhcHBHb29nbGVJZCI6Ijk3MjkzMzQ3MDA1NC1oYnNmMjlvaHBhdG83NnRpbDJqdGY2amdnMWI0Mzc0Yy5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImNyZWF0b3JJZCI6IjYyYzNmNGE5M2FkMjcwNjc0YzFmNjJmYiIsImNyZWF0ZWRBdCI6IjIwMjItMDctMDVUMDg6Mjc6MjYuMzM2WiIsIl9fdiI6MH0sImlhdCI6MTY1NzAwOTY1OH0.dnvrO_dQ_2GLyUX-b71CcHFDnphpjeTYOxz6vZ2fsPY * tags: * - Users * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * email: * type: string * password: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/set-permanent-password-with-temp-password: * post: * summary: set-permanent-password-with-temp-password * tags: * - Users * security: [] * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * tempPassword: * type: string * password: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/login/refresh: * post: * description: User refreshing * tags: * - Users * responses: * '200': * description: A successful response */ // refresh user token /** * @swagger * /v1/users/changePassword: * post: * description: change user password * tags: * - Users * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * password: * type: string * npassword: * type: string * responses: * '200': * description: A successful response */ // e-mail verification /** * @swagger * /v1/users/verifyEmail: * post: * description: e-mail verification * tags: * - Users * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * password: * type: string * npassword: * type: string * responses: * '200': * description: A successful response */ // resend email verification link /** * @swagger * /v1/users/resendLink: * post: * description: resend email verification link * tags: * - Users * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * email: * type: string * responses: * '200': * description: A successful response */ // requests a password reset /** * @swagger * /v1/users/forgot: * post: * description: requests a password reset * tags: * - Users * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * email: * type: string * responses: * '200': * description: A successful response */ // resets a user's password /** * @swagger * /v1/users/reset: * post: * description: resets a user's password * tags: * - Users * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * token: * type: string * responses: * '200': * description: A successful response */ // route to check if particular user exists in all database /** * @swagger * /v1/users/checkEmail/{email}: * get: * description: route to check if particular user exists in all database * tags: * - Users * parameters: * - in: path * name: email * type: string * required: true * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/{appId}: * get: * description: get users, require App Jwt * tags: * - Users * parameters: * - in: path * name: appId * type: string * required: true * - in: query * name: limit * type: number * - in: query * name: offset * type: number * - in: query * name: orderBy * schema: * type: string * enum: [email, createdAt, firstName, lastName] * - in: query * name: order * schema: * type: string * enum: [asc, desc] * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/: * put: * description: Update current users * tags: * - Users * requestBody: * required: true * content: * multipart/form-data: * schema: * type: object * properties: * file: * type: string * format: binary * firstName: * type: string * lastName: * type: string * username: * type: string * email: * type: string * phone: * type: string * company: * type: string * addressLine1: * type: string * addressLine2: * type: string * street: * type: string * city: * type: string * country: * type: string * zip: * type: string * description: * type: string * isProfileOpen: * type: boolean * isAssetsOpen: * type: boolean * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/{appId}/{userId}: * put: * description: Update users by id * tags: * - Users * parameters: * - in: path * name: appId * type: string * required: true * - in: path * name: userId * type: string * required: true * requestBody: * required: true * content: * multipart/form-data: * schema: * type: object * properties: * file: * type: string * format: binary * firstName: * type: string * lastName: * type: string * username: * type: string * email: * type: string * phone: * type: string * company: * type: string * addressLine1: * type: string * addressLine2: * type: string * street: * type: string * city: * type: string * country: * type: string * zip: * type: string * description: * type: string * isProfileOpen: * type: boolean * isAssetsOpen: * type: boolean * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/count: * get: * description: count users * tags: * - Users * parameters: * - in: query * name: tag * type: string * responses: * '200': * description: A successful response */ // returns profile data + image for currently authenticated user /** * @swagger * /v1/users/profile/{walletAddress}: * get: * description: access to user profile * tags: * - Users * parameters: * - in: path * name: walletAddress * type: string * required: true * responses: * '200': * description: A successful response */ // returns profile data + image for currently authenticated user /** * @swagger * /v1/users/profile/{walletAddress}/{accessToken}: * get: * description: access to user profile * tags: * - Users * parameters: * - in: path * name: walletAddress * type: string * required: true * - in: path * name: accessToken * type: string * required: true * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/search: * post: * description: users search * tags: * - Users * requestBody: * content: * application/json: * schema: * type: object * properties: * firstName: * type: string * lastName: * type: string * username: * type: string * email: * type: string * phone: * type: string * company: * type: string * addressLine1: * type: string * addressLine2: * type: string * street: * type: string * city: * type: string * country: * type: string * zip: * type: string * description: * type: string * responses: * '200': * description: A successful response */ // adds tag (or tags) to a user /** * @swagger * /v1/users/referral: * post: * description: post new refferal * tags: * - Users * requestBody: * content: * application/json: * schema: * type: object * properties: * referrerId: * type: string * responses: * '200': * description: A successful response */ // return user's action /** * @swagger * /v1/users/actions: * get: * description: countTokenCreation for app * tags: * - Users * responses: * '200': * description: A successful response */ // returns a last 5 days of new user registrations for a particular Application /** * @swagger * /v1/users/graph: * get: * description: returns a last 5 days of new user registrations for a particular Application * tags: * - Users * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users: * delete: * description: deleting current user * tags: * - Users * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/delete-many-with-app-id/{id}: * post: * description: deleting user by user id * tags: * - Users * parameters: * - in: path * name: id * type: string * required: true * requestBody: * content: * application/json: * schema: * type: object * required: * - usersIdList * properties: * usersIdList: * type: array * items: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/reset-passwords-with-app-id/{id}: * post: * description: reseting password for users from usersIdList * tags: * - Users * parameters: * - in: path * name: id * type: string * required: true * requestBody: * content: * application/json: * schema: * type: object * required: * - usersIdList * properties: * usersIdList: * type: array * items: * type: string * responses: * '200': * description: A successful response */ //#region Emails request /** * @swagger * /v1/users/emails: * post: * description: add emails * tags: * - Users * requestBody: * content: * application/json: * schema: * type: object * properties: * loginType: * type: string * email: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/emails: * get: * description: get user emails * tags: * - Users * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/emails/{email}: * delete: * description: deleting user email * tags: * - Users * parameters: * - in: path * name: email * type: string * required: true * responses: * '200': * description: A successful response */ // creates an end user account /** * @swagger * /v1/users/payments: * post: * description: payments * tags: * - Users * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * type: * type: string * transaction: * type: Object * responses: * '200': * description: A successful response */ // creates an end user account /** * @swagger * /v1/users/checkExtWallet: * post: * description: check if ext wallet exists * tags: * - Users * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * walletAddress: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/acl: * get: * description: get current user' acls * tags: * - Users * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/acl/{appId}/{userId}: * put: * description: update acl for appId and userId respectively * tags: * - Users * parameters: * - in: path * name: appId * type: string * required: true * - in: path * name: userId * type: string * required: true * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * network: * type: object * properties: * netStats: * type: object * properties: * read: * type: boolean * application: * type: object * properties: * appCreate: * type: object * properties: * create: * type: boolean * appSettings: * type: object * properties: * read: * type: boolean * update: * type: boolean * admin: * type: boolean * appUsers: * type: object * properties: * create: * type: boolean * read: * type: boolean * update: * type: boolean * delete: * type: boolean * admin: * type: boolean * appTokens: * type: object * properties: * create: * type: boolean * read: * type: boolean * update: * type: boolean * admin: * type: boolean * appPush: * type: object * properties: * create: * type: boolean * read: * type: boolean * update: * type: boolean * admin: * type: boolean * appStats: * type: object * properties: * read: * type: boolean * admin: * type: boolean * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/exportData: * get: * description: get current user' data as JSON file * tags: * - Users * responses: * '200': * description: A successful response */ /** * @swagger * /v1/users/export/{appId}: * get: * description: export users * parameters: * - in: path * name: appId * type: string * required: true * tags: * - Users * responses: * '200': * description: A successful response */ //create an app /** * @swagger * /v1/apps: * post: * description: App creation * tags: * - Apps * requestBody: * required: true * content: * multipart/form-data: * schema: * type: object * required: * - displayName * properties: * displayName: * type: string * domainName: * type: string * appDescription: * type: string * defaultAccessProfileOpen: * type: boolean * defaultAccessAssetsOpen: * type: boolean * usersCanFree: * type: boolean * logoImage: * type: string * format: binary * loginScreenBackgroundImage: * type: string * format: binary * coinLogoImage: * type: string * format: binary * bundleId: * type: string * primaryColor: * type: string * secondaryColor: * type: string * coinSymbol: * type: string * coinName: * type: string * responses: * '200': * description: A successful response */ //update an app with id /** * @swagger * /v1/apps/{id}: * put: * description: App update * tags: * - Apps * parameters: * - in: path * name: id * type: string * required: true * requestBody: * required: true * content: * multipart/form-data: * schema: * type: object * required: * - displayName * properties: * displayName: * type: string * domainName: * type: string * appDescription: * type: string * defaultAccessProfileOpen: * type: boolean * defaultAccessAssetsOpen: * type: boolean * usersCanFree: * type: boolean * logoImage: * type: string * format: binary * loginScreenBackgroundImage: * type: string * format: binary * coinLogoImage: * type: string * format: binary * googleServicesJson: * type: string * format: binary * GoogleServiceInfoPlist: * type: string * format: binary * GoogleServiceInfoPlist2: * type: string * format: binary * primaryColor: * type: string * secondaryColor: * type: string * coinSymbol: * type: string * coinName: * type: string * firebaseWebConfigString: * type: string * loginBackgroundColor: * type: string * defaultRooms: * type: array * items: * $ref: '#/definitions/DefaultRooms' * * responses: * '200': * description: A successful response */ /** * @swagger * /v1/apps/user-defaults/{id}: * put: * description: App update * tags: * - Apps * parameters: * - in: path * name: id * type: string * required: true * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * defaultAccessProfileOpen: * type: boolean * defaultAccessAssetsOpen: * type: boolean * usersCanFree: * type: boolean * defaultRooms: * type: array * items: * $ref: '#/definitions/DefaultRooms' * * responses: * '200': * description: A successful response */ /** * @swagger * /v1/apps/check-domain-name: * post: * description: check domain name * tags: * - Apps * requestBody: * required: true * content: * application/json: * schema: * type: object * required: * - domainName * properties: * domainName: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/apps/get-config: * get: * description: get app data config * tags: * - Apps * parameters: * - in: query * name: domainName * type: string * required: true * responses: * '200': * description: A successful response */ /** * @swagger * /v1/apps/get-default-rooms: * get: * description: returns default rooms for application, appJwt is required * tags: * - Apps * responses: * '200': * description: A successful response */ /** * @swagger * /v1/apps/get-default-rooms/app-id/{appId}: * get: * description: return default rooms for application, userJwt is required * tags: * - Apps * parameters: * - in: path * name: appId * type: string * required: true * responses: * '200': * description: A successful response */ /** * @swagger * /v1/apps/{id}: * delete: * description: App delete * tags: * - Apps * parameters: * - in: path * name: id * type: string * required: true * responses: * '200': * description: A successful response */ /** * @swagger * /v1/apps/rotate-jwt/{id}: * delete: * description: rotate app jwt * tags: * - Apps * parameters: * - in: path * name: id * type: string * required: true * responses: * '200': * description: A successful response */ /** * @swagger * /v1/apps/: * get: * description: Allows to get a list of all applications for which the user has reading permissions. * tags: * - Apps * responses: * '200': * description: A successful response */ /** * @swagger * /v1/explorer/transactions/: * get: * description: Get transactions * tags: * - Explorer * parameters: * - in: query * name: limit * type: number * default: 10 * - in: query * name: offset * type: number * default: 0 * - in: query * name: tokenId * type: string * - in: query * name: walletAddress * type: string * - in: query * name: nftId * type: string * - in: query * name: tokenName * type: string * - in: query * name: _id * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/explorer/transactions/{transactionHash}: * get: * description: Get transaction by transactionHash * tags: * - Explorer * parameters: * - in: path * name: transactionHash * type: string * required: true * responses: * '200': * description: A successful response */ // returns blocks /** * @swagger * /v1/explorer/blocks/: * get: * description: Get blocks * tags: * - Explorer * parameters: * - in: query * name: limit * type: number * default: 10 * - in: query * name: offset * type: number * default: 0 * responses: * '200': * description: A successful response */ /** * @swagger * /v1/explorer/blocks/{blockNumber}: * get: * description: Get block by blockNumber * tags: * - Explorer * parameters: * - in: path * name: blockNumber * type: string * required: true * responses: * '200': * description: A successful response */ // returns the last 14 days of transactions count (by day) (used in dashboard Explorer graph) /** * @swagger * /v1/explorer/history: * get: * description: Get history * tags: * - Explorer * responses: * '200': * description: A successful response */ // returns type of specific transaction by contract address /** * @swagger * /v1/explorer/type/{address}: * get: * description: Returns type of specific transaction by contract address * tags: * - Explorer * parameters: * - in: path * name: address * type: string * required: true * responses: * '200': * description: A successful response */ // returns multiple params (difficult, blocknumer, transactions length) with one call /** * @swagger * /v1/explorer/dashBlock: * get: * description: Returns type of specific transaction by contract address * tags: * - Explorer * responses: * '200': * description: A successful response */ // returns latest 5 day transaction count by a particular Application /** * @swagger * /v1/explorer/graph: * get: * description: returns latest 5 day transaction count by a particular Application * tags: * - Explorer * responses: * '200': * description: A successful response */ // returns a count of all contracts (token issuances) by specific Application (from DB) // (a token issuance counts as 1 contract) /** * @swagger * /v1/explorer/count/contract: * get: * description: returns a count of all contracts (token issuances) by specific Application (from DB) * tags: * - Explorer * responses: * '200': * description: A successful response */ // returns a count of all ERC20 tokens across platform/blockchain (from DB) /** * @swagger * /v1/explorer/count: * get: * description: returns a count of all ERC20 tokens across platform/blockchain (from DB) * tags: * - Explorer * responses: * '200': * description: A successful response */ // returns multiple blockchain parameters for dashboard (network health etc) /** * @swagger * /v1/explorer/blockchain: * get: * description: returns multiple blockchain parameters for dashboard (network health etc) * tags: * - Explorer * responses: * '200': * description: A successful response */ /** * @swagger * /v1/files/: * post: * description: Files upload * tags: * - Files * requestBody: * required: true * content: * multipart/form-data: * schema: * type: object * required: * - files * properties: * files: * type: array * items: * type: string * format: binary * responses: * '200': * description: A successful response */ /** * @swagger * /v1/files/encrypted/: * post: * description: Files upload * tags: * - Files * requestBody: * required: true * content: * multipart/form-data: * schema: * type: object * required: * - file * properties: * file: * type: string * format: binary * responses: * '200': * description: A successful response */ /** * @swagger * /v1/files/: * get: * description: get files created by user (JWT owner) * tags: * - Files * parameters: * - in: query * name: limit * type: number * default: 10 * - in: query * name: offset * type: number * default: 0 * responses: * '200': * description: A successful response */ /** * @swagger * /v1/files/{id}: * get: * description: get file created by user (JWT owner) by id * tags: * - Files * parameters: * - in: path * name: id * type: string * required: true * responses: * '200': * description: A successful response */ /** * @swagger * /v1/files/{id}: * delete: * description: delete created by user (JWT owner) by id * tags: * - Files * parameters: * - in: path * name: id * type: string * required: true * responses: * '200': * description: A successful response */ /** * @swagger * /v1/tokens/items: * post: * description: Create ERC721 token (NFT) * tags: * - Tokens * requestBody: * required: true * content: * application/json: * schema: * type: object * required: * - name * - mediaId * - rarity * properties: * name: * type: string * mediaId: * type: string * rarity: * type: number * responses: * '200': * description: A successful response */ // transfers a token from one wallet to another // (needs ACL to make sure app only owner level can do this and only transfer from wallets belonging to their app) /** * @swagger * /v1/tokens/transfer: * post: * description: transfers a ERC20 token from one wallet to another * tags: * - Tokens * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * tokenId: * type: string * default: ERC20 * tokenName: * type: string * amount: * type: number * toWallet: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/tokens/transfer/items: * post: * description: transfers a ERC721 token from one wallet to another * tags: * - Tokens * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * nftId: * type: string * receiverWallet: * type: string * amount: * type: number * responses: * '200': * description: A successful response */ /** * @swagger * /v1/tokens/burn/items: * post: * description: Burn NFT * tags: * - Tokens * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * nftId: * type: string * amount: * type: number * responses: * '200': * description: A successful response */ // This is used for extra issuance of a token type that already exists /** * @swagger * /v1/tokens/mint: * post: * description: This is used for extra issuance of a token type that already exists * tags: * - Tokens * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * tokenId: * type: string * default: ERC20 * tokenName: * type: string * toWallet: * type: string * amount: * type: number * responses: * '200': * description: A successful response */ // Burn feature to remove existing tokens (only allows to burn tokens in user's own wallet) /** * @swagger * /v1/tokens/: * delete: * description: Burn feature to remove existing tokens (only allows to burn tokens in user's own wallet) * tags: * - Tokens * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * tokenId: * type: string * default: ERC20 * tokenName: * type: string * amount: * type: number * responses: * '200': * description: A successful response */ //API to supply issuance count /** * @swagger * /v1/tokens/count: * get: * description: API to supply issuance count * tags: * - Tokens * responses: * '200': * description: A successful response */ //provides token issuance history for a particular Application /** * @swagger * /v1/tokens/history/: * get: * description: provides token issuance history for a particular Application * tags: * - Tokens * responses: * '200': * description: A successful response */ // provides token distribution graph data across app wallet and other wallets /** * @swagger * /v1/tokens/graph/: * get: * description: provides token distribution graph data across app wallet and other wallets * tags: * - Tokens * responses: * '200': * description: A successful response */ /** * @swagger * /v1/tokens/graph/{tokenName}: * get: * description: provides token distribution graph data across app wallet and other wallets * tags: * - Tokens * parameters: * - in: path * name: tokenName * type: string * required: true * responses: * '200': * description: A successful response */ // This is used for extra issuance of a token type that already exists /** * @swagger * /v1/tokens/items/nfmt: * post: * description: create NFMT contract * tags: * - Tokens * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * type: * type: string * enum: * - light * - normal * name: * type: string * minLength: 3 * maxLength: 20 * description: contract' name * symbol: * type: string * minLength: 3 * maxLength: 5 * description: contract' symbol * description: * type: string * minLength: 10 * maxLength: 512 * description: contract' description for metadata * owner: * type: string * description: owner Eth wallet address * beneficiaries: * type: array * items: * type: string * description: array of beneficiaries' addresses * splitPercents: * type: array * items: * type: number * description: array of percents values (50% == 500) * maxSupplies: * type: array * items: * type: number * description: array of maxSupplies for tokenId * costs: * type: array * items: * type: string * description: array of costs' for every tokenId in Wei * attachmentId: * type: string * description: mongoId for image(file) for which NFMT will be created * responses: * '200': * description: A successful response */ //API to supply issuance count /** * @swagger * /v1/tokens/get: * get: * description: get all tokens * tags: * - Tokens * responses: * '200': * description: A successful response */ /** * @swagger * /v1/tokens/get/{contractAddress}: * get: * description: get token by contractAddress * tags: * - Tokens * parameters: * - in: path * name: contractAddress * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/tokens/items/nfmt/mint: * post: * description: mint NFMT contract * tags: * - Tokens * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * contractAddress: * type: string * slot: * type: number * description: index number from arrays of maxSupplies and costs, tokenId - 1 * amount: * type: number * target: * type: string * description: eth address * responses: * '200': * description: A successful response */ /** * @swagger * /v1/tokens/items/nfmt/transfer: * post: * description: transfer for NFMT contract * tags: * - Tokens * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * to: * type: string * description: Eth wallet address * id: * type: number * description: tokeId * amount: * type: number * contractAddress: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/tokens/export: * post: * description: export for NFMT contract * tags: * - Tokens * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * contractAddress: * type: string * to: * type: string * description: wallet address * id: * type: number * description: tokenId * amount: * type: number * description: amount of tokens for export * responses: * '200': * description: A successful response */ /** * @swagger * /v1/tokens/export-to-usdc: * post: * description: export coins to USDC L1 * - Tokens * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * transactionId: * type: string * l1Address: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/tokens/items/nfmt/transferOwnership: * post: * description: NFMT transferOwnership * tags: * - Tokens * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * toAddress: * type: string * contractAddress: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/tokens/items/nfmt/burn/{contractAddress}/{tokenId}: * post: * description: NFMT burn * tags: * - Tokens * parameters: * - in: path * name: contractAddress * type: string * required: true * - in: path * name: tokenId * type: number * required: true * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * amount: * type: number * responses: * '200': * description: A successful response */ /** * @swagger * /v1/tokens/items/nfmt/collection-destroy/{contractAddress}: * post: * description: NFMT destroy collection * tags: * - Tokens * parameters: * - in: path * name: contractAddress * type: string * required: true * responses: * '200': * description: A successful response */ // creates a token (global across blockchain) // any authenticated user can do this (need to introduce ACL) /** * @swagger * /v1/tokens/{appId}: * post: * description: Create ERC20 token for appId * tags: * - Tokens * parameters: * - in: path * name: appId * type: string * required: true * requestBody: * required: true * content: * multipart/form-data: * schema: * type: object * required: * - tokenId * - tokenName * - tokenSymbol * - amount * properties: * tokenName: * type: string * tokenSymbol: * type: string * amount: * type: number * responses: * '200': * description: A successful response */ // returns specific token balance in specific wallet // if token name is not supplied, all tokens within wallet will be shown /** * @swagger * /v1/wallets/balance: * get: * description: Get balances by walletAddress * tags: * - Wallets * responses: * '200': * description: A successful response */ /** * @swagger * /v1/wallets/ext-wallet: * post: * description: Create external wallet * tags: * - Wallets * requestBody: * required: true * content: * application/json: * schema: * type: object * required: * - address * properties: * address: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/wallets/ext-wallet/{l2Address}: * get: * description: get external wallet by id * tags: * - Wallets * parameters: * - in: path * name: l2Address * type: string * required: true * responses: * '200': * description: A successful response */ /** * @swagger * /v1/wallets/ext-wallet/: * put: * description: update external wallet by id * tags: * - Wallets * requestBody: * required: true * content: * application/json: * schema: * type: object * required: * - address * properties: * address: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/wallets/ext-wallet/{address}: * delete: * description: delete external wallet by id * tags: * - Wallets * parameters: * - in: path * name: address * type: string * required: true * responses: * '200': * description: A successful response */ //get ether balance for a particular wallet using wallet address /** * @swagger * /v1/wallets/balance/{walletAddress}/ethers: * get: * description: get ether balance for a particular wallet using wallet address * tags: * - Wallets * parameters: * - name: walletAddress * in: path * required: true * type: string * responses: * '200': * description: A successful response */ //update default token for particular wallet using user id of wallet /** * @swagger * /v1/wallets/updateDefaultToken: * patch: * description: update default token for particular wallet using user id of wallet * tags: * - Wallets * requestBody: * content: * application/json: * schema: * type: object * properties: * defaultToken: * type: string * responses: * '200': * description: A successful response */ //returns all application and app owner's wallet for a particular user if specifc user id of wallet not provided //returns a specific app wallet and app's JWT if app id i.e user id of wallet is provided. (This also checks whether user is requesting wallet he has access to.) /** * @swagger * /v1/wallets/: * get: * description: Get wallets * tags: * - Wallets * responses: * '200': * description: A successful response */ /** * @swagger * /v1/wallets/{appId}: * get: * description: Get wallets * tags: * - Wallets * parameters: * - name: appId * in: path * required: true * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/data: * post: * description: Object creation * tags: * - Data * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * key: * type: value * responses: * '200': * description: A successful response */ /** * @swagger * /v1/data/{id}: * get: * description: get object * tags: * - Data * parameters: * - in: path * name: id * type: string * required: true * responses: * '200': * description: A successful response */ /** * @swagger * /v1/data: * get: * description: Get objects by className * tags: * - Data * parameters: * - in: query * name: where * type: object * additionalProperties: * type: object * - in: query * name: limit * type: number * default: 10 * - in: query * name: offset * type: number * default: 0 * - in: query * name: sort * type: string * enum: [asc, desc] * responses: * '200': * description: A successful response */ /** * @swagger * /v1/data/{id}: * patch: * description: Object update * tags: * - Data * parameters: * - in: path * name: id * type: string * required: true * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * key: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/data/{id}: * delete: * description: Object delete * tags: * - Data * parameters: * - in: path * name: id * type: string * required: true * responses: * '200': * description: A successful response */ /** * @swagger * /v1/docs: * post: * description: Docs creation * tags: * - Docs * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * owner: * type: string * documentName: * type: string * isBurnable: * type: boolean * isTransferable: * type: boolean * isFilesMutableByAdmin: * type: boolean * isFilesMutableByOwner: * type: boolean * isSignable: * type: boolean * isSignatureRevocable: * type: boolean * files: * type: array * items: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/docs/share/{accessToken}: * get: * description: get document file by accessToken (share link) * tags: * - Docs * parameters: * - in: path * name: accessToken * type: string * required: true * responses: * '200': * description: A successful response */ /** * @swagger * /v1/docs/{walletAddress}: * get: * description: Docs get * tags: * - Docs * parameters: * - in: path * name: walletAddress * type: string * required: true * responses: * '200': * description: A successful response */ /** * @swagger * /v1/docs/{walletAddress}/{docId}: * get: * description: Docs get * tags: * - Docs * parameters: * - in: path * name: walletAddress * type: string * required: true * - in: path * name: docId * type: string * required: true * responses: * '200': * description: A successful response */ /** * @swagger * /v1/docs/{id}: * delete: * description: Docs delete * tags: * - Docs * parameters: * - in: path * name: id * type: string * required: true * responses: * '200': * description: A successful response */ /** * @swagger * /v1/room/: * post: * summary: create new room * tags: * - Room * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * name: * type: string * roomJid: * type: string * from: * type: object * properties: * direction: * type: string * roomJid: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/room/: * get: * summary: get all user' rooms * tags: * - Room * responses: * '200': * description: A successful response */ /** * @swagger * /v1/room/{roomJid}: * delete: * summary: delete room by roomJid * tags: * - Room * parameters: * - in: path * name: roomJid * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/room/join/{roomJid}: * post: * summary: join to room * tags: * - Room * parameters: * - in: path * name: roomJid * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/room/currentRoom: * get: * summary: get current room for the auth' user * tags: * - Room * responses: * '200': * description: A successful response */ /** * @swagger * /v1/room/getRoom/{roomJid}: * get: * summary: get room inf by roomJid * tags: * - Room * parameters: * - in: path * name: roomJid * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/room/{roomJid}: * put: * description: update room * tags: * - Room * parameters: * - in: path * name: roomJid * type: string * required: true * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * ownerNavLinks: * type: object * properties: * north: * type: string * east: * type: string * south: * type: string * west: * type: string * userNavLinks: * type: object * properties: * north: * type: string * east: * type: string * south: * type: string * west: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/room/check-for-meta-room: * post: * description: get meta rooms by user room list * tags: * - Room * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * jids: * type: array * items: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/sharelink: * post: * description: sharelink creation * tags: * - Sharelink * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * expiration: * type: number * memo: * type: string * resource: * type: string * responses: * '200': * description: A successful response */ /** * @swagger * /v1/sharelink/: * get: * description: Docs get * tags: * - Sharelink * responses: * '200': * description: A successful response */ /** * @swagger * /v1/sharelink/{token}: * delete: * description: Docs get * tags: * - Sharelink * parameters: * - in: path * name: token * type: string * required: true * responses: * '200': * description: A successful response */ /** * @swagger * /v1/mobile/get-custom-src/{appId}: * get: * description: get custom mobile src code by appId * tags: * - Mobile * parameters: * - in: path * name: appId * type: string * required: true * responses: * '200': * description: A successful response */ /** * @swagger * /v1/mobile/check-custom-src/{appId}: * get: * description: check if custom src exists, return file stats if it exists * tags: * - Mobile * parameters: * - in: path * name: appId * type: string * required: true * responses: * '200': * description: A successful response */ /** * @swagger * /v1/mobile/src-builder/{appId}: * post: * description: creates new mobile scr code for appId * tags: * - Mobile * parameters: * - in: path * name: appId * type: string * required: true * requestBody: * required: true * content: * multipart/form-data: * schema: * type: object * properties: * logoImage: * type: string * format: binary * loginScreenBackgroundImage: * type: string * format: binary * coinLogoImage: * type: string * format: binary * bundleId: * type: string * appName: * type: string * primaryColor: * type: string * secondaryColor: * type: string * coinSymbol: * type: string * coinName: * type: string * responses: * '200': * description: A successful response */