@mojitoinc/core-service


☁️ Mojito Modules - Core Service



👨‍💻 React components for the Mojito Platform, Reference App and third-party projects, including Mojito's core service

Version: 1.0.0


Using this library in your project Core Service

create .npmrc file from root dir and copy & paste following code,

If you have Personal follow step 2

Step - 1

Create Personal token: https://github.com/settings/tokens

  1. Generate New Token (Classic)
  2. enable following permission
  3. read:packages Download packages from GitHub Package Registry

Step 2

Copy the personal token and replace to <PROFILE_TOKEN>

@mojitoinc:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=<PROFILE_TOKEN>

You can install this project with one of these commands:

npm install --save @mojitoinc/core-service

yarn add @mojitoinc/core-service

Once the package is installed, you can import the library using import;

Two way of integration Core API provider uri or apollo client, if pass both param priority is client only.

    import { CoreServiceProvider } from "@mojitoinc/core-service";


<CoreServiceProvider uri={ 'https://api.dev.graphql.com' } token={ 'Bearer <Token>' }>
{ children }
</CoreServiceProvider>

Param type Description
uri string skip this param, if client param passed
client Apollo Client skip this param, if uri param passed
token string Optional

After setup with CoreServiceProvider, API can be access via hooks

following the api are

  1. GetSignature Message
  2. LoginWithSignature
  3. RedeemClaimable Code

GetSignatureMessage

It will provide a message that should be used for in signing process

import { useClaims, Response, GetSignatureData } from "@mojitoinc/core-service";

const { getSignatureMessage } = useClaims();

const response: Response<GetSignatureData> = await getSignatureMessage({
orgId: <ORG_ID>,
networkID: <NETWORK_ID>,
walletAddress: <WALLET_ADDRESS>,
});
Param type Required Description
orgId UUID1
networkID UUID1
walletAddress string
Response
 {
"data: {
"getSignatureMessage": "This message is used for signature validation for organization caa and wallet address 0x6588ec22a85d611c8c3cd254d0c063d0be78a6c1 at 2023-02-22T04:39:23Z"
}
}
Error
  • error getting organization by id: record not found

LoginWithSignature

The request receiver retrieves the Signature security token

import { useClaims, Response, LoginWithSignatureData } from "@mojitoinc/core-service";

const { loginWithSignature } = useClaims();

const response: Response<LoginWithSignatureData> = await loginWithSignature({
challenge: <GET_SIGNATURE_MESSAGE>,
signature: <CROSS_MINT_SIGNATURE>,
signer: <SIGNER_ADDRESS>,
chainId: <CHAIN_ID>,
orgId: <ORG_ID>,
});

Param type Required Description
challenge String
signature String
signer String
chainId Int Int can represent values between -(2^31) and 2^31 - 1
orgId UUID1
Response
 {
"data": {
"loginWithSignature": {
"token": "344fbc51-b6d4-4428-9783-b09dd9df95fb"
}
}
}
Error
  • Challenge is too old, please request a new one

RedeemClaimableCode

Redeem a claimable code

import { useClaims, Response, RedeemClaimableCodeData } from "@mojitoinc/core-service";

const { redeemClaimableCode } = useClaims();

const response: Response<RedeemClaimableCodeData> = await redeemClaimableCode({
code: discountCode,
destAddr: address,
});
Param type Required Description
code string
destAddr string
Response
 {
"data": {
"redeemClaimableCode": {
"success": true
}
}
}
Error
  • Challenge is too old, please request a new one

GetUsdConversion

will receives 1 unit crypto equivalent USD price

import { useConversion, Response, USDConversionData } from '@mojitoinc/core-service';

const { getUSDConversion } = useConversion();

const response: Response<USDConversionData> = await getUSDConversion({ cryptoCurrencyCode: <cryptoCurrencyCode> });
Param type Required Description
cryptoCurrencyCode enum CryptoCurrencyCode
CryptoCurrencyCode
enum
Enum Variable value
ETH ETH
MATIC MATIC
WETH WETH
WMATIC WMATIC
Response
{
"data": {
"getUSDPrice": {
"amount": "1799.34",
"currency": "USD",
"base": "ETH",
}
}
}
Error
  • Expected type CryptoCurrenyCode!, found "".

GetSupportedCurrency

will receives list of supported currency by id

import { useConversion, Response, GetSupportedCurrenciesData } from '@mojitoinc/core-service';

const { getSupportedCurrency, GetSupportedCurrenciesData } = useConversion();

const response: Response<GetSupportedCurrenciesData> = await getSupportedCurrency({ nftTokenId: '514fedfe-165b-451b-b2f6-63667e66c096', orgId: 'f2f5c627-5421-4c40-9913-edfd09dd98b3' });
Param type Required Description
nftTokenId UUID
orgId UUID
Response
{
"data": {
"getSupportedCurrencies": [
{
"id": "8b2343d6-8a8b-11ed-9e0a-42010a940031",
"name": "ETH",
"networkId": "c41db347-0ee3-4212-943a-ca213b8e0ea8",
"symbol": "ETH",
"contractAddress": "0x0000000000000000000000000000000000000000",
"secondaryMarketplaceContractAddress": "0xB658b650F0B2Dacd90aF58Ad78b3a6F8eb9BdF21",
"network": {
"id": "c41db347-0ee3-4212-943a-ca213b8e0ea8",
"name": "Goerli Testnet",
"chainID": 5,
"wethAddress": "0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6",
"paymentCurrency": "WETH"
}
},
]
}
}
Error
  • error getting token by ID: record not found.

AuctionDetails

Auction Details and Auction History

import { useAuction } from '@mojitoinc/core-service';

const { auctionDetails } = useAuction();

const response: Response<AuctionData> = await auctionDetails({ id: <ID> });
Param type Required Description
id UUID
Response
{
"data": {
"collectionItemById": {
"id": "8ed1783c-c4c4-47f1-9384-5ff64f2ebc97",
"name": "POCA During Sale 2",
"artist": null,
"status": "Active",
"description": null,
"details": {
"id": "68d2fee2-db56-48f4-9e10-e703e9054ae6",
"startingBid": 0.0001,
"startDate": "2023-03-22T05:00:00Z",
"endDate": "2023-03-22T11:00:00Z",
"currentBid": {
"userId": "afca6cad-782c-4338-b71d-9193b14b736d",
"currentBid": 0.0002,
"isMine": false,
"walletAddress": "0x669dbFF9c68CAC7b52C4B789f5Ebc3b5293D0a73",
"marketplaceUser": {
"id": "afca6cad-782c-4338-b71d-9193b14b736d",
"username": null,
"avatar": null,
},
},
"myBid": null,
"bids": [
{
"id": "9b407667-fc96-4022-a892-8c5d2fea4e52",
"amount": 0.0002,
"createdAt": "2023-03-22T09:32:15Z",
"maximumBid": null,
"marketplaceAuctionLotId": "68d2fee2-db56-48f4-9e10-e703e9054ae6",
"walletAddress": "0x669dbFF9c68CAC7b52C4B789f5Ebc3b5293D0a73",
"txHash": "0xa6d9d6474e759134bd85d9111376366a3e8360f93eafc723646967c63d675422",
"marketplaceUser": {
"id": "afca6cad-782c-4338-b71d-9193b14b736d",
"username": null,
"avatar": null,
},
}
],
},
}
}
}
Error
  • uuid: incorrect UUID length.

VerifyOnchainBid

Receive tax and contract address

import { useAuction, OnChainBidResponse } from '@mojitoinc/core-service';

const { verifyOnChainBid } = useAuction();

const response: Response<OnChainBidResponse> = await verifyOnChainBid({
lotID=<lotID>,
orgID=<orgID>,
walletAddress=<walletAddress>,
amount: <amount>, });
Param type Required Description
lotID UUID
orgID UUID
walletAddress string
amount Int
Response
{
"data": {
"verifyOnchainBid": {
"amount": 0.0003,
"tax": 0.000055575933397801415,
"onChainAuctionContractAddress": "0xeed7f3e16a6018d65dffd63bc30ac252c034edc1",
"commissionFee": 0.000005999999999999999,
"platformFee": 0.000005999999999999999,
"__typename": "OnChainBidResponse"
}
}
}
Error
  • jwt token invalid or has been expired
  • uuid: incorrect UUID length
  • error fetching user wallet: wallet by address by not found: record not found
  • amount is less then current bid + min increment

confirmOnchainBid

Auction submit

import { confirmOnChainBid, BidsItemData } from '@mojitoinc/core-service';

const { confirmOnChainBid } = useAuction();

const response: Promise<Response<BidsItemData>> = await confirmOnChainBid({
lotID=<lotID>
orgID=<orgID>
walletAddress=<walletAddress>
amount=<amount>
tax=<tax>
txhash=<txhash>
commissionFee=<commissionFee>
platformFee<platformFee<> });
Response
{
"data": {
"confirmOnchainBid": {
"amount": 0.0005,
"tax": 0.00007216969871926542,
"__typename": "MarketplaceAuctionBid"
}
}
}
Error
  • jwt token invalid or has been expired
  • uuid: incorrect UUID length
  • error fetching user wallet: wallet by address by not found: record not found
  • error creating marketplace auction bid: bid amount is below the current bid

User API can be access via hooks

following the api are

  1. me
  2. updateUserOrgSettings

me

It will provide a active user data

import { useUser, GetUserData } from "@mojitoinc/mojito-core-service";

const { currentUser } = useUser();

const response: Response<GetUserData> = await currentUser({
orgId: <ORG_ID>,
});
Param type Required Description
orgId UUID1
Response
 {
"data: {
"me": {
"id": "d1a59f7e-8626-46f9-b0ca-b70477910c8c",
"userOrgs": [
{
"id": "30ec5163-90bc-4b6a-a0a1-8696cc19c327",
"role": "Admin",
"organizationId": "d086ea16-d40d-454c-84a4-64b5e940670a",
"organization": {
"purchaseLimitWithoutKYC": 0
},
"kycStatus": "Clear",
"w8Form": true,
"isBlacklisted": false,
"bidAllowed": true,
"avatar": null,
"username": "020704f2-cb16-4c26-bed0-4ac0dbdf67bb",
"settings": null,
"reason": ""
}
]
}
}
}
Error
  • access denied

updateUserOrgSettings

It can able to update the user details

import { useUser, updateUserOrgSettingsData } from "@mojitoinc/mojito-core-service";

const { updateUserOrgSettings } = useUser();

const response: Response<updateUserOrgSettingsData> = await updateUserOrgSettings({
userOrgId: <USER_ORG_ID>,
username: <USER_NAME>,
avatar: <AVATAR>,
settingsJson: <SETTING_JSON>,
profilePic: <PROFILE_PIC>
});
Param type Required Description
userOrgId UUID1
username String
avatar String
settingsJson String
profilePic String
Response
 {
"data: {
"updateUserOrgSettings": {
"id": "d1a59f7e-8626-46f9-b0ca-b70477910c8c",
"username": "test",
"avatar": "U0BpDFXLEKmMNPly",
}
}
}
Error
  • user is not authorized to update record within userOrgID

KYC API can be access via hooks

following the api are

  1. createApplicant
  2. createCheck
  3. getApplicant
  4. getSDKToken
  5. updateApplicant

createApplicant

It can able to create form to complete KYC

import { useKYC } from "@mojitoinc/mojito-core-service";

const { createApplicant } = useKYC();

const response: Response<CreateApplicantData> = await createApplicant({
orgID: <ORG_ID>,
input: {
firstName: <FIRST_NAME>,
lastName: <LAST_NAME>,
dob: <DATE_OF_BIRTH>,
address: {
country: <COUNTRY>,
state: <STATE>,
town: <TOWN>,
postcode: <POSTAL_CODE>
}
},
});
Param type Required Description
orgID UUID1
input ApplicantRequest
Response
 {
"data: {
"createApplicant": {
"id": "7578afa6-cb7e-45cc-82ef-5c5821ebec42",
"firstName": "test",
"lastName": "test",
"email": "",
"dob": "1998-12-22",
"href": "/v3.2/applicants/7578afa6-cb7e-45cc-82ef-5c5821ebec42",
"idNumbers": null,
"address": {
"flatNumber": null,
"buildingNumber": "12",
"buildingName": null,
"street": "test road",
"subStreet": null,
"town": "new york",
"postcode": "12345",
"country": "US",
"line1": null,
"line2": null,
"line3": null,
"state": "new york"
}
}
}
}
Error
  • error getting user organization KYC by applicant id: record not found

createCheck

It can able to check the details

import { useKYC } from "@mojitoinc/mojito-core-service";

const { createCheck } = useKYC();

const response: Response<CreateCheckData> = await createCheck({
applicantID: <APPLICANT_ID>,
});
Param type Required Description
applicantID UUID1
Response
 {
"data: {
"createCheck": {
"id": "c2854107-93b6-4200-a1f7-ad28beaa9d1d",
"success": true
}
}
}
Error
  • error getting user organization KYC by applicant id: record not found

getApplicant

It can able to get user kyc details

import { useKYC } from "@mojitoinc/mojito-core-service";

const { getApplicant } = useKYC();

const response: Response<GetApplicantData> = await getApplicant({
organizationID: <ORGANIZATION_ID>,
});
Param type Required Description
organizationID UUID1
Response
 {
"data: {
"getApplicant": {
"id": "262f085c-474b-44be-8568-e1b58a16c97f",
"firstName": "test",
"lastName": "test",
"email": "",
"dob": "1998-12-22",
"href": "/v3.2/applicants/7578afa6-cb7e-45cc-82ef-5c5821ebec42",
"idNumbers": null,
"address": {
"flatNumber": null,
"buildingNumber": "12",
"buildingName": null,
"street": "test road",
"subStreet": null,
"town": "new york",
"postcode": "12345",
"country": "US",
"line1": null,
"line2": null,
"line3": null,
"state": "new york"
}
}
}
}
Error
  • error getting user organization KYC by applicant id: record not found

getSDKToken

It can able to get sdk token

import { useKYC } from "@mojitoinc/mojito-core-service";

const { getSDKToken } = useKYC();

const response: Response<GetSDKTokenData> = await getSDKToken({
applicantID: <APPLICANT_ID>,
referrer: <REFERRER>,
});
Param type Required Description
applicantID UUID1
referrer String
Response
 {
"data: {
"getSDKToken": {
"token": "eyJhbGciOiJFUzUxMiJ9.eyJleHAiOjE2ODExMTgzNjEsInBheWxvYWQiOnsiYXBwIjoiNzU3OGFmYTYtY2I3ZS00NWNjLTgyZWYtNWM1ODIxZWJlYzQyIiwiY2xpZW50X3V1aWQiOiIyMmQyYzQ1NC0zNzMxLTQ4N2UtYmUzYS05N2I4NmQ4NWYzOWMiLCJpc19zYW5kYm94Ijp0cnVlLCJpc19zZWxmX3NlcnZpY2VfdHJpYWwiOmZhbHNlLCJpc190cmlhbCI6ZmFsc2UsInJlZiI6Imh0iHBzOi8vd2hpc2tleWV4Y2hhbmdlLWRldi5uZXRsaWZ5LmFwcC8iLCJzYXJkaW5lX3Nlc3Npb24iOiI1NzkxMGUyMC0yMTljLTQxZTItOTUzOS1lYjJhYjFmZDdiZTQifSwidXVpZCI6InBsYXRmb3JtX3N0YXRpY19hcGlfdG9rZW5fdXVpZCIsInVybHMiOnsiZGV0ZWN0X2RvY3VtZz50X3VybCI6Imh0dHBzOi8vc2RrLnVzLm9uZmlkby5jb20iLCJzeW5jX3VybCI6Imh0dHBzOi8vc3luYy5vbmZpZG8uY29tIiwiaG9zdGVkX3Nka191cmwiOiJodHRwczovL2lkLm9uZmlkby5jb20iLCJhdXRoX3VybCI6Imh0dHBzOi8vYXBpLnVzLm9uZmlkby5jb20iLCJvbmZpZG9fYXBpX3VybCI6Imh0dHBzOi8vYXBpLnVzLm9uZmlkby5jb20iLCJ0ZWxlcGhvbnlfdXJsIjoiaHR0cHM6Ly9hcGkudXMub25maWRvLmNvbSJ9fQ.MIGIAkIAtiM1UkIpaTKIGeTn6sYfX3GR4fTWPq_AeU1RxwQDQu5S7K3NM1z5hzh01sTo3KK_elpMh27XC0mhR9MkLt3kkroCQgG9gAW4w0vO1k1dXJKzbq3WDpklTqXtjT3plDbe5_bM8QujgjlbaW7nkASg68BYqa7P5UHOI5p-_QBayflaU3wXa"
}
}
}
Error
  • error getting user organization KYC by applicant id: record not found

updateApplicant

It can able to update the user kyc details

import { useKYC } from "@mojitoinc/mojito-core-service";

const { updateApplicant } = useKYC();

const response: Response<UpdateApplicantData> = await updateApplicant({
orgID: <ORG_ID>,
input: {
firstName: <FIRST_NAME>,
lastName: <LAST_NAME>,
dob: <DATE_OF_BIRTH>,
address: {
country: <COUNTRY>,
state: <STATE>,
town: <TOWN>,
postcode: <POSTAL_CODE>
}
},
});
Param type Required Description
orgID UUID1
input ApplicantRequest
Response
 {
"data: {
"updateApplicant": {
"id": "7578afa6-cb7e-45cc-82ef-5c5821ebec42",
"firstName": "test",
"lastName": "test",
"email": "",
"dob": "1998-12-22",
"href": "/v3.2/applicants/7578afa6-cb7e-45cc-82ef-5c5821ebec42",
"idNumbers": null,
"address": {
"flatNumber": null,
"buildingNumber": "12",
"buildingName": null,
"street": "test road",
"subStreet": null,
"town": "new york",
"postcode": "12345",
"country": "US",
"line1": null,
"line2": null,
"line3": null,
"state": "new york"
}
}
}
}
Error
  • error getting user organization KYC by applicant id: record not found

Connect wallet API can be access via hooks

following the api are

  1. connectExternalWallet
  2. getActiveWalletsContent
  3. getSupportedNetworks

connectExternalWallet

It can able to connect wallet

import { useConnectWallet, ConnectExternalWalletData } from "@mojitoinc/mojito-core-service";

const { connectExternalWallet } = useConnectWallet();

const response: Response<ConnectExternalWalletData> = await connectExternalWallet({
signature: <SIGNATURE>,
message: <MESSAGE>,
address: <ADDRESS>,
orgID: <ORG_ID>,
networkID: <NETWORK_ID>,
});
Param type Required Description
orgID UUID1
networkID UUID1
message String
signature String
address String
Response
 {
"data": {
"connectExternalWallet": true
}
}
Error
  • challenge is too old, please request a new one

getActiveWalletsContent

It can able to get wallet data

import { useConnectWallet, GetActiveWalletsContentData } from "@mojitoinc/mojito-core-service";

const { getActiveWalletsContent } = useConnectWallet();

const response: Response<GetActiveWalletsContentData> = await getActiveWalletsContent({
orgID: <ORG_ID>,
networkId: <NETWORK_ID>,
walletAddress: <WALLET_ADDRESS>,
filters: <FILTERS>,
refreshCache: <REFRESH_CACHE>,
});
Param type Required Description
orgID UUID1
networkId UUID1
walletAddress String
filters ActiveWalletFilterInput
refreshCache Boolean
Response
 {
"data": {
"getActiveWalletsContent": {
"tokens": [
{
"contractAddress": "0xd0e2fd21764f643fa32b06a4c7d7924f43138d90",
"id": "6",
"network": "Goerli Testnet",
"tokenType": "ERC1155",
"title": "BasedHead #6",
"tokenURI": "https://drops.api.topdogstudios.io/basedAf/token/6",
"nftTokenId": "5bc739a6-f5d3-4417-b4af-91687e0af525",
"mintedAt": "2023-01-25T14:18:02Z",
"status": "SALE_PENDING",
"metadata": {
"name": "BasedHead #6",
"description": "This PFP will be affiliated to the Fraz corporation.\n\nFraz is believed to have begun in the mid-1800s as the JP Fraz and Sons Tinctures and Cure-all Company. However, the lack of any supporting evidence that TrashLand existed before the 1980s suggests that this may not be factually correct. Fraz makes a variety of different food items, all alcoholic beverages, which are distilled from edible shore drift sourced on the island. In 2022, Fraz was announced as the official drink of the Metaverse.\n\n[Download V0 BasedHead](https://ipfs.io/ipfs/QmWiDG1zG7vncPYXMEVSkRYcn2gsujAACSyUsbXvD33ezC)",
"image": "https://ipfs.io/ipfs/QmQJBFoLqcgxDogd5pLgbMKn6u4RPiu1djUfecuZxMhdzk",
"animationURL": "",
"openSeaImageURL": ""
},
"contractName": "test",
"artistName": "Test",
},
]
}
}
}
Error
  • wallet by address by id not found: record not found

getSupportedNetworks

It can able to get the supported networks list

import { useConnectWallet, GetSupportedNetworksData } from "@mojitoinc/mojito-core-service";

const { getSupportedNetworks } = useConnectWallet();

const response: Response<GetSupportedNetworksData> = await getSupportedNetworks({
orgId: <ORG_ID>,
includeTestnets: <INCLUDE_TESTNETS>,
});
Param type Required Description
orgId UUID1
includeTestnets Boolean
Response
 {
"data": {
"getSupportedNetworks": [
{
"id": "f7babe75-2dfc-434a-9e3b-a28e101c4863",
"name": "Ethereum Mainnet",
"chainID": 1,
"isTestnet": false
},
{
"id": "c41db347-0ee3-4212-943a-ca213b8e0ea8",
"name": "Goerli Testnet",
"chainID": 5,
"isTestnet": true
},
]
}
}
Error
  • encoding/hex: invalid byte: U+002D '-'

List item API can be access via hooks

following the api are

  1. createSignatureToListNFTForSale
  2. removeListing
  3. submitProofOfApproval

createSignatureToListNFTForSale

It can able to create list item for sale

import { useListItem, CreateSignatureToListNFTForSaleData } from "@mojitoinc/mojito-core-service";

const { createSignatureToListNFTForSale } = useListItem();

const response: Response<CreateSignatureToListNFTForSaleData> = await createSignatureToListNFTForSale({
orgId: <ORG_ID>,
nftTokenId: <NFT_TOKEN_ID>,
tokenType: <TOKEN_TYPE>,
quantity: <QUANTITY>,
nftOwnerAddress: <NFT_OWNER_ADDRESS>,
fixedPrice: <FIXED_PRICE>,
paymentToken: <PAYMENT_TOKEN>,
currencyId: <CURRENCY_ID>,
});
Param type Required Description
orgId UUID1
nftTokenId UUID1
tokenType TokenType
quantity Int
nftOwnerAddress String
fixedPrice Float
paymentToken String
currencyId UUID1
Response
 {
"data": {
"createSignatureToListNFTForSale": {
"messageToSign": "0xc061ed6367ab12e87d93ac081487f069e4c8ba3b6bc100fec2a1afffd937f632",
"order": {
"id":"32dc6e44-79f3-4d2f-8068-94639e543a6e"
"nftTokenId":"6bd80dcd-9cc8-4078-a7e2-02c5164d7ab4"
"tokenContract":"0xd0e2fd21764f643fa32b06a4c7d7924f43138d90"
"tokenId":"15"
"tokenType":"ERC1155"
"quantity":1
"nftOwnerAddress":"0xC7e893488A039A341d935959E52f86085976F865"
"fixedPrice":0.04
"paymentToken":"0x0000000000000000000000000000000000000000"
"orderType":"LISTING"
}
}
}
}
Error
  • error getting organization by id: record not found

removeListing

It can able to remove listing an item

import { useListItem, RemoveListingData } from "@mojitoinc/mojito-core-service";

const { createSignatureToListNFTForSale } = useListItem();

const response: Response<RemoveListingData> = await removeListing({
orgID: <ORG_ID>,
nftTokenId: <NFT_TOKEN_ID>,
});
Param type Required Description
orgID UUID1
nftTokenId UUID1
Response
 {
"data": {
"removeListing": "Listing removed."
}
}
Error
  • error getting organization by id: record not found

submitProofOfApproval

It can able to submit approval for listing an item

import { useListItem, SubmitProofOfApprovalData } from "@mojitoinc/mojito-core-service";

const { submitProofOfApproval } = useListItem();

const response: Response<SubmitProofOfApprovalData> = await submitProofOfApproval({
orgID: <ORG_ID>,
nftTokenId: <NFT_TOKEN_ID>,
signature: <SIGNATURE>,
quantity: <QUANTITY>,
fixedPrice: <FIXED_PRICE>,
paymentToken: <PAYMENT_TOKEN>,
currencyId: <CURRENCY_ID>,
creatorFee: <CREATOR_FEE>,
});
Param type Required Description
orgID UUID1
nftTokenId UUID1
signature String
quantity Int
fixedPrice Float
paymentToken String
currencyId UUID1
creatorFee TokenType
Response
 {
"data": {
"submitProofOfApproval":"Signature updated."
}
}
Error
  • error getting organization by id: record not found

Tax and fee API can be access via hooks

following the api are

  1. estimateTaxAndRoyaltyFee
  2. getTaxQuote

estimateTaxAndRoyaltyFee

It can able to get tax and fee data

import { useFee, EstimateTaxAndRoyaltyFeeData } from "@mojitoinc/mojito-core-service";

const { estimateTaxAndRoyaltyFee } = useFee();

const response: Response<EstimateTaxAndRoyaltyFeeData> = await estimateTaxAndRoyaltyFee({
orgId: <ORG_ID>,
estimateType: <ESTIMATE_TYPE>,
nftTokenId: <NFT_TOKEN_ID>,
orderId: <ORDER_ID>,
price: <PRICE>,
country: <COUNTRY>,
postalCode: <POSTAL_CODE>,
});
Param type Required Description
orgId UUID1
estimateType TaxEstimateType
nftTokenId UUID1
orderId UUID1
price Float
country String
postalCode String
Response
 {
"data": {
"estimateTaxAndRoyaltyFee": {
"taxPercentage": 0,
"royaltyFee": 0,
"platformFee": 2.5,
"taxResponse": {
"cryptoTaxPrice": 0,
"cryptoTotalPrice": 1,
"USDUnitprice": 1920.88,
"taxPercentage": 0
}
}
}
}
Error
  • error getting organization by id: record not found

getTaxQuote

It can able to get tax and fee data

import { useFee, GetTaxQuoteData } from "@mojitoinc/mojito-core-service";

const { getTaxQuote } = useFee();

const response: Response<GetTaxQuoteData> = await getTaxQuote({
orgID: <ORG_ID>,
taxablePrice: <TAXABLE_PRICE>,
street1: <STREET>,
city: <CITY>,
state: <STATE>,
postalCode: <POSTAL_CODE>,
country: <COUNTRY>,
currencyCode: <CURRENCY_CODE>,
});
Param type Required Description
orgID UUID1
taxablePrice Float
street1 String
city String
state String
postalCode String
country String
currencyCode String
Response
{
"data": {
"getTaxQuote": {
"verifiedAddress": {
"street1": "",
"state": "Tamil Nadu",
"postalCode": "",
"country": "IN",
"currencyCode": "USD"
},
"taxablePrice": 76.6724,
"totalTaxedPrice": 76.6724,
"totalTaxAmount": 0
}
}
}
Error
  • error getting organization by id: record not found

NFT API can be access via hooks

following the api are

  1. getNFTFavoriteListByUser
  2. addNFTToFavorite
  3. removeNFTFromFavorite
  4. getAllRegistryTokens
  5. getNFTDetails
  6. getNFTHistory
  7. getNFTAttributesRarity
  8. initiateBuyNFT
  9. updateTransactionHash
  10. generateSecondaryInvoice
  11. userOrderActivity

getNFTFavoriteListByUser

It can able to get favorite NFT list

import { useNFT, GetNFTFavoriteListByUserData } from "@mojitoinc/mojito-core-service";

const { getNFTFavoriteListByUser } = useNFT();

const response: Response<GetNFTFavoriteListByUserData> = await getNFTFavoriteListByUser({
orgId: <ORG_ID>,
searchKey: <SEARCH_KEY>,
filter: <FILTER>,
limit: <LIMIT>,
offset: <OFFSET>,
buyerAddress: <BUYER_ADDRESS>,
});
Param type Required Description
orgId UUID1
searchKey Number
filter enum SavedNFTFilterInput
limit Int
offset Int
buyerAddress String
SavedNFTFilterInput
enum
Enum Variable value
recently_listed recently_listed
recently_minted recently_minted
initially_minted initially_minted
price_low_to_high price_low_to_high
most_saved most_saved
purchased_from_org purchased_from_org
Response
{
"data": {
"getNFTFavouriteListByUser": {
"totalCount": 1,
"data": [
{
"id":"6"
"title":"BasedHead #6"
"status":"OPEN_FOR_SALE"
"network":"Goerli Testnet"
"networkID":"c41db347-0ee3-4212-943a-ca213b8e0ea8"
"tokenURI":"https://drops.api.topdogstudios.io/basedAf/token/6"
}
]
}
}
}
Error
  • error getting organization by id: record not found

addNFTToFavorite

It can able to add NFT to favorite

import { useNFT, AddNFTToFavoriteData } from "@mojitoinc/mojito-core-service";

const { addNFTToFavorite } = useNFT();

const response: Response<AddNFTToFavoriteData> = await addNFTToFavorite({
orgID: <ORG_ID>,
tokenId: <TOKEN_ID>,
});
Param type Required Description
orgId UUID1
tokenId UUID1
Response
{
"data": {
"addNFTToFavourite": true,
}
}
Error
  • error getting token by ID: record not found

removeNFTFromFavorite

It can able to remove NFT from favorite

import { useNFT, RemoveNFTFromFavoriteData } from "@mojitoinc/mojito-core-service";

const { removeNFTFromFavorite } = useNFT();

const response: Response<RemoveNFTFromFavoriteData> = await removeNFTFromFavorite({
orgID: <ORG_ID>,
tokenId: <TOKEN_ID>,
});
Param type Required Description
orgId UUID1
tokenId UUID1
Response
{
"data": {
"removeNFTFromFavourite": true,
}
}
Error
  • error getting token by ID: record not found

getAllRegistryTokens

It can able to get NFT list

import { useNFT, GetAllRegistryTokensData } from "@mojitoinc/mojito-core-service";

const { getAllRegistryTokens } = useNFT();

const response: Response<GetAllRegistryTokensData> = await getAllRegistryTokens({
orgID: <ORG_ID>,
searchKey: <SEARCH_KEY>,
filter: <FILTER>,
limit: <LIMIT>,
offset: <OFFSET>,
marketplaceID: <MARKETPLACE_ID>,
});
Param type Required Description
orgID UUID1
searchKey Number
filter enum RegistryTokenFilterInput
limit Int
offset Int
buyerAddress String
sort RegistryTokenSortInput
artistID UUID1
registryID UUID1
categorySlug String
artistSlug String
RegistryTokenFilterInput
enum
Enum Variable value
recently_listed recently_listed
recently_minted recently_minted
initially_minted initially_minted
price_low_to_high price_low_to_high
price_high_to_low price_high_to_low
Response
{
"data": {
"getAllRegistryTokens": {
"totalCount": 1,
"data": [
{
"ID":"7992bcb2-1d34-4158-b07b-e8725016b1d1"
"TokenName":"BasedHead #15"
"TokenID":"15"
"Status":"OPEN_FOR_SALE"
"TokenURI":"https://drops.api.topdogstudios.io/basedAf/token/15"
"NFTTokenID":"6bd80dcd-9cc8-4078-a7e2-02c5164d7ab4"
}
]
}
}
}
Error
  • error getting organization by id: record not found

getNFTDetails

It can able to get NFT list

import { useNFT, GetNFTDetailsData } from "@mojitoinc/mojito-core-service";

const { getNFTDetails } = useNFT();

const response: Response<GetNFTDetailsData> = await getNFTDetails({
orgId: <ORG_ID>,
contractAddress: <CONTRACT_ADDRESS>,
onChainTokenID: <ONCHAIN_TOKEN_ID>,
ownerAddress: <OWNER_ADDRESS>,
});
Param type Required Description
orgId UUID1
contractAddress String
onChainTokenID BigInt
ownerAddress String
buyerAddress String
editionNumber Int
nftTokenId UUID1
networkId UUID1
Response
{
"data": {
"getNFTDetails": {
"contractAddress":"0xd0e2fd21764f643fa32b06a4c7d7924f43138d90"
"tokenId":"7"
"network":"Goerli Testnet"
"networkID":"c41db347-0ee3-4212-943a-ca213b8e0ea8"
"contractName":"test"
"tokenType":"ERC1155"
"mintedAt":"2023-01-25T06:40:22Z"
"status":"SALE_PENDING"
}
}
}
Error
  • error getting organization by id: record not found

getNFTHistory

It can able to get NFT history

import { useNFT, GetNFTHistoryData } from "@mojitoinc/mojito-core-service";

const { getNFTHistory } = useNFT();

const response: Response<GetNFTHistoryData> = await getNFTHistory({
orgId: <ORG_ID>,
contractAddress: <CONTRACT_ADDRESS>,
tokenId: <TOKEN_ID>,
networkId: <NETWORK_ID>,
ownerAddress: <OWNER_ADDRESS>,
nftTokenId: <NFT_TOKEN_ID>,
limit: <LIMIT>,
offset: <OFFSET>
});
Param type Required Description
orgId UUID1
contractAddress String
networkId UUID1
tokenId BigInt
nftTokenId UUID1
ownerAddress String
limit Int
offset Int
Response
{
"data": {
"getNFTHistoryV2": {
"totalCount": 30,
"data": [
{
"hash":"0xd3cc350c9020a32f699bea54824b90aa5adad6fbc5e09a0dbc2b78ce1415ae03",
"from":"0xa77915a574e1f9b88db152525ceBfEAA8c71bAa4",
"to":"test"
"blockTimestamp":"2023-01-27T12:41:23Z"
"eventType":"Sale"
"fromUserAvatar":"qvx3wQZawwkDtws2"
}
]
}
}
}
Error
  • error getting organization by id: record not found

getNFTAttributesRarity

It can able to get NFT Traits

import { useNFT, GetNFTAttributesRarityData } from "@mojitoinc/mojito-core-service";

const { getNFTAttributesRarity } = useNFT();

const response: Response<GetNFTAttributesRarityData> = await getNFTAttributesRarity({
contractAddress: <CONTRACT_ADDRESS>,
tokenID: <TOKEN_ID>,
networkID: <NETWORK_ID>,
refreshCatch: <REFRESH_CACHE>,
});
Param type Required Description
contractAddress String
networkID UUID1
tokenID BigInt
refreshCatch Boolean
Response
{
"data": {
"getNFTAttributesRarity": [
{
"traitType":"Brand",
"displayType":"",
"maxValue":0,
"prevalance":0,
"value": {
"__typename":"AttributeValueString",
"stringValue":"DGAF"
}
}
]
}
}
Error
  • error getting organization by id: record not found

initiateBuyNFT

It can able to get order details

import { useNFT, InitiateBuyNFTData } from "@mojitoinc/mojito-core-service";

const { initiateBuyNFT } = useNFT();

const response: Response<InitiateBuyNFTData> = await initiateBuyNFT({
nftTokenId: <NFT_TOKEN_ID>,
buyerAddress: <BUYER_ADDRESS>,
orgId: <ORG_ID>,
country: <COUNTRY>,
postalCode: <POSTAL_CODE>,
currencyId: <CURRENCY_ID>,
cryptoTax: <CRYPTO_TAX>,
taxAddress: <TAX_ADDRESS>
});
Param type Required Description
nftTokenId UUID1
buyerAddress String
orgId UUID1
country String
postalCode String
currencyId UUID1
cryptoTax CryptoTax
taxAddress TaxAddressInput
Response
{
"data": {
"initiateBuyNFT": {
"proofOfApproval":"0x28a9e439e3c091e737ff6209a1aa6f6022d8e7d16d738b2cbbc2fe8fad86630c341602d2653fcda2d02034278aee2a4fce9d6a48b7662ab67c5893c0fd857cf01c"
}
}
}
Error
  • error getting organization by id: record not found

updateTransactionHash

It can able to update the transaction hash

import { useNFT, UpdateTransactionHashData } from "@mojitoinc/mojito-core-service";

const { updateTransactionHash } = useNFT();

const response: Response<UpdateTransactionHashData> = await updateTransactionHash({
nftTokenId: <NFT_TOKEN_ID>,
orgId: <ORG_ID>,
buyerAddress: <BUYER_ADDRESS>,
transactionHash: <TRANSACTION_HASH>,
orderId: <ORDER_ID>,
});
Param type Required Description
nftTokenId UUID1
orgId UUID1
buyerAddress String
transactionHash String
orderId UUID1
Response
{
"data": {
"updateTransactionHash": {
"success":false,
"newNFTID":"2bb1fec0-94be-499c-989c-1a2a75ceb478"
}
}
}
Error
  • error getting organization by id: record not found

generateSecondaryInvoice

It will give a url to download invoice as a PDF format

import { useNFT, GenerateSecondaryInvoiceData } from "@mojitoinc/mojito-core-service";

const { generateSecondaryInvoice } = useNFT();

const response: Response<GenerateSecondaryInvoiceData> =
await generateSecondaryInvoice({
invoiceID: <INVOICE_ID>,
orderID: <ORDER_ID>,
activityName: <ACTIVITY_NAME>,
invoiceResType: <INVOICE_RES_TYPE>,
});
Param type Required Description
invoiceID UUID1
orderID UUID1
activityName enum ActivityName
invoiceResType enum InvoiceResType
ActivityName
enum
Enum Variable value
Listed_Item Listed_Item
Listed_Item_Removed Listed_Item_Removed
Sold_Item Sold_Item
Offered Offered
Offer_Cancelled Offer_Cancelled
Offer_Rejected Offer_Rejected
Offer_Expired Offer_Expired
Bought_Item Bought_Item
InvoiceResType
enum
Enum Variable value
pdf pdf
base64 base64
Response
 {
"data: {
"generateSecondaryInvoice": "https://storage.googleapis.com/mojito-dev-public/organizations/8fb128bd-f55d-4bcc-8b6c-0beb684e4d4e/invoices/208af15b-ae03-47c7-aa79-27ce453bcb2d_buyer.pdf"
}
}
Error
  • error getting invoice with id: record not found

getUserOrderActivity

It will provide a user order activity data

import { useUser, UserOrderActivityData } from "@mojitoinc/mojito-core-service";
const { userOrderActivity } = useUser();
const response: Response<UserOrderActivityData> = await userOrderActivity({
orgId: <ORG_ID>,
filter: <FILTER>,
limit: <LIMIT>,
offset: <OFFSET>
});
Param type Required Description
orgId UUID1
filter enum OrderActivityFilters
limit Int
offset Int
OrderActivityFilters
enum
Enum Variable value
LATEST_TO_OLDEST LATEST_TO_OLDEST
LATEST_TO_OLDEST LATEST_TO_OLDEST
Response
 {
"data: {
"getUserOrderActivity": {
"totalCount": 529,
"data": [
{
"CreatedAt": "2023-03-29T10:52:18Z",
"nftImageUrl": "https://ipfs.io/ipfs/Qmf3YhCWVyansFPqunCfpCfKz9xNGzeMwYze7b359JR5xU",
"ActivityName": "Offered",
"TokenName": "BasedHead #8",
"TokenID": "8",
"NFTTokenID": "527ef338-2e68-4b62-a5d3-d1cb1ec81b30",
"ContractName": "test",
"ContractAddress": "0xd0e2fd21764f643fa32b06a4c7d7924f43138d90",
"Price": [
{
"value": 72.5217,
"unit": "USD"
},
{
"value": 0.04,
"unit": "WETH"
}
],
"NetworkID": "c41db347-0ee3-4212-943a-ca213b8e0ea8",
"TransactionHash": "",
"FromUserName": "rajesh1",
"ToUserName": "mainnet3",
"FromUserAvatar": "U0BpDFXLEKmMNPly",
"ToUserAvatar": "Ph9sz1la6hyMY3sd",
"FromWallet": {
"id": "4e89c916-3663-4d53-b549-1767c1e1a8d1",
"name": "rajesh account wallet",
"address": "0xc7e893488a039a341d935959e52f86085976f865"
},
"ToWallet": {
"id": "02eb2545-1c70-4f68-a856-aa7ed25bd013",
"name": "",
"address": "0xeAE67de0b3e913Ecb1Fae4d3bB936CD8dc282dD8"
},
"InvoiceURL": "",
"InvoiceID": null,
"OrderID": "c24a1370-9350-4516-82ab-6312b8ee571a",
"Status": "EXPIRED",
"cryptoTax": {
"cryptoTaxPrice": 0,
"cryptoTotalPrice": 0.04,
"USDUnitprice": 0.5,
"taxPercentage": 0
},
"order": {
"platformFee": 0.001,
"creatorFee": 0
}
}
]
}
}
}
Error
  • error getting organization by id: record not found

Offer API can be access via hooks

following the api are

  1. acceptOffer
  2. cancelOffer
  3. createOffer
  4. getOffers
  5. getSignatureForOfferApproval
  6. rejectOffer
  7. submitProofOfOffer

acceptOffer

It can able to accept offer for an NFT

import { useOffer, AcceptOfferData } from "@mojitoinc/mojito-core-service";

const { acceptOffer } = useOffer();

const response: Response<AcceptOfferData> = await acceptOffer({
orgId: <ORG_ID>,
orderId: <ORDER_ID>,
transactionHash: <TRANSACTION_HASH>,
});
Param type Required Description
orgId UUID1
orderId UUID1
transactionHash String
Response
{
"data": {
"acceptOffer": {
"success":false
"newNFTID":"5bc739a6-f5d3-4417-b4af-91687e0af525"
}
}
}
Error
  • error getting organization by id: record not found

cancelOffer

It can able to cancel offer for an NFT

import { useOffer, CancelOfferData } from "@mojitoinc/mojito-core-service";

const { cancelOffer } = useOffer();

const response: Response<CancelOfferData> = await cancelOffer({
orgId: <ORG_ID>,
orderId: <ORDER_ID>,
});
Param type Required Description
orgId UUID1
orderId UUID1
Response
{
"data": {
"cancelOffer": "Offer cancelled."
}
}
Error
  • error getting organization by id: record not found

createOffer

It can able to create offer for an NFT

import { useOffer, CreateOfferData } from "@mojitoinc/mojito-core-service";

const { createOffer } = useOffer();

const response: Response<CreateOfferData> = await createOffer({
orgId: <ORG_ID>,
nftTokenId: <NFT_TOKEN_ID>,
buyerAddress: <BUYER_ADDRESS>,
offerPrice: <OFFER_PRICE>,
expiryDate: <EXPIRY_DATE>,
paymentToken: <PAYMENT_TOKEN>,
currencyId: <CURRENCY_ID>,
cryptoTax: <CRYPTO_TAX>,
taxAddress: <TAX_ADDRESS>,
});
Param type Required Description
orgId UUID1
nftTokenId UUID1
buyerAddress String
offerPrice Number
expiryDate String
paymentToken String
currencyId String
cryptoTax CryptoTax
taxAddress TaxAddressInput
Response
{
"data": {
"createOffer": {
"messageToSign":"0xf94d966f32828f3313c3aaa72559ee78bd4c784a6c1b0c4763c297e20f720a96",
"order": {
"id":"ac444a12-703a-4495-8e99-b5634bab63ea"
"nftTokenId":"1942008c-3329-405f-980e-48b2f0ee9a08"
"tokenId":"10"
"tokenContract":"0xd0e2fd21764f643fa32b06a4c7d7924f43138d90"
"quantity":1
"nftOwnerAddress":"0xf724aE0B5662b8ad6D155D50522eb097247271cB"
"fixedPrice":0.04
}
}
}
}
Error
  • error getting organization by id: record not found

getOffers

It can able to get offers list for an NFT

import { useOffer, GetOffersData } from "@mojitoinc/mojito-core-service";

const { getOffers } = useOffer();

const response: Response<GetOffersData> = await getOffers({
orgId: <ORG_ID>,
nftTokenId: <NFT_TOKEN_ID>,
});
Param type Required Description
orgId UUID1
nftTokenId UUID1
Response
{
"data": {
"getOffers": [
{
"id": "ac444a12-703a-4495-8e99-b5634bab63ea"
"offerExpiryDate": "2023-04-14T10:40:00Z"
"nftOwnerAddress": "0xf724aE0B5662b8ad6D155D50522eb097247271cB"
"tokenType": "ERC1155"
"tokenId": "10"
"tokenContract": "0xd0e2fd21764f643fa32b06a4c7d7924f43138d90"
"orderStatus": "PENDING"
"buyerTax": 0
"buyerAddress": "0xC7e893488A039A341d935959E52f86085976F865"
"fixedPrice": 0.04
"updatedAt": "2023-04-13T10:40:55Z"
"createdAt": "2023-04-13T10:40:51Z"
}
]
}
}
Error
  • error getting organization by id: record not found

getSignatureForOfferApproval

It can able to get signature approval data for an NFT

import { useOffer, GetSignatureForOfferApprovalData } from "@mojitoinc/mojito-core-service";

const { getSignatureForOfferApproval } = useOffer();

const response: Response<GetSignatureForOfferApprovalData> = await getSignatureForOfferApproval({
orgId: <ORG_ID>,
orderId: <ORDER_ID>,
creatorFee: <CREATOR_FEE>,
});
Param type Required Description
orgId UUID1
orderId UUID1
creatorFee Int
Response
{
"data": {
"getSignatureForOfferApproval": {
"proofOfApproval":"0xaf6e0275ba209ae723fdfe1b5411bebdf51f376d103ff9b227cedcc7b317974d09e698d1b9aea58e698a3724acd2fc8d3352eef96cb634bd735898f56f945da21c",
"order": {
"id":"d7bef205-2938-4443-b5b9-7f55db25da9a"
"nftTokenId":"5bc739a6-f5d3-4417-b4af-91687e0af525"
"tokenId":"6"
"tokenType":"ERC1155"
"quantity":1
"nftOwnerAddress":"0xc7e893488a039a341d935959e52f86085976f865"
"fixedPrice":0.04
}
}
}
}
Error
  • error getting organization by id: record not found

rejectOffer

It can able to reject offer for an NFT

import { useOffer, RejectOfferData } from "@mojitoinc/mojito-core-service";

const { rejectOffer } = useOffer();

const response: Response<RejectOfferData> = await rejectOffer({
orgId: <ORG_ID>,
orderId: <ORDER_ID>,
});
Param type Required Description
orgId UUID1
orderId UUID1
Response
{
"data": {
"rejectOffer": "Offer rejected."
}
}
Error
  • error getting organization by id: record not found

submitProofOfOffer

It can able to submit proof of offer for an NFT

import { useOffer, SubmitProofOfOfferData } from "@mojitoinc/mojito-core-service";

const { submitProofOfOffer } = useOffer();

const response: Response<SubmitProofOfOfferData> = await submitProofOfOffer({
orgId: <ORG_ID>,
orderId: <ORDER_ID>,
signature: <SIGNATURE>,
});
Param type Required Description
orgId UUID1
orderId UUID1
signature String
Response
{
"data": {
"submitProofOfOffer":"Signature updated."
}
}
Error
  • error getting organization by id: record not found

Claim Service development

Development setup