Lossless Aegis GraphQL API reference

In order to get started on using the API, you would need to generate an API key using Lossless Aegis. https://aegis.lossless.io/ (API Keys) section.

Contact

Lossless

API Endpoints
https://aegis-api.lossless.io/graphql
Headers
# Auth header
x-api-key: <YOUR_TOKEN_HERE>

Queries

apiKeys

Description

Get organisation API keys

Response

Returns [OrganisationApiKeyEntity!]!

Example

Query
query ApiKeys {
  apiKeys {
    id
    apiKeyName
    apiKey
    organisationId
    createdAt
  }
}
Response
{
  "data": {
    "apiKeys": [
      {
        "id": "xyz789",
        "apiKeyName": "abc123",
        "apiKey": "xyz789",
        "organisationId": "xyz789",
        "createdAt": "2007-12-03T10:15:30Z"
      }
    ]
  }
}

authenticate

Description

Authenticate user

Response

Returns a UserEntity!

Arguments
Name Description
email - String! Users login email address
password - String! Users login password
mfaCode - String MFA authenticator code
recoveryCode - String MFA recovery code

Example

Query
query Authenticate(
  $email: String!,
  $password: String!,
  $mfaCode: String,
  $recoveryCode: String
) {
  authenticate(
    email: $email,
    password: $password,
    mfaCode: $mfaCode,
    recoveryCode: $recoveryCode
  ) {
    id
    socialId
    email
    verified
    lastOrganizationId
    mfaSecret
    createdAt
    updatedAt
    emailPreferences {
      userId
      generalMarketingEmailsEnabled
      organisationEmailsEnabled
    }
    organisation {
      id
      name
      ownerUserId
      updatedAt
      createdAt
      organisationMember {
        ...OrganisationMemberEntityFragment
      }
      protectedAddresses {
        ...ProtectedAddressEntityFragment
      }
      owner {
        ...UserEntityFragment
      }
      apiKeys {
        ...OrganisationApiKeyEntityFragment
      }
      notificationSettings {
        ...NotificationSettingsEntityFragment
      }
      organisationInvite {
        ...OrganisationInviteEntityFragment
      }
      organisationSubscription {
        ...OrganisationSubscriptionEntityFragment
      }
    }
    organisationMember {
      userId
      organisationId
      role
      updatedAt
      createdAt
      user {
        ...UserEntityFragment
      }
      organisation {
        ...OrganisationEntityFragment
      }
    }
  }
}
Variables
{
  "email": "xyz789",
  "password": "xyz789",
  "mfaCode": "xyz789",
  "recoveryCode": "abc123"
}
Response
{
  "data": {
    "authenticate": {
      "id": "abc123",
      "socialId": "xyz789",
      "email": "abc123",
      "verified": false,
      "lastOrganizationId": "abc123",
      "mfaSecret": "xyz789",
      "createdAt": "2007-12-03T10:15:30Z",
      "updatedAt": "2007-12-03T10:15:30Z",
      "emailPreferences": UserEmailPreferences,
      "organisation": [OrganisationEntity],
      "organisationMember": [OrganisationMemberEntity]
    }
  }
}

authenticateGoogle

Description

Authenticate user with Google Auth

Response

Returns a UserEntity!

Arguments
Name Description
googleAuthToken - String! Google Auth token
mfaCode - String Google Auth token
recoveryCode - String MFA recovery code

Example

Query
query AuthenticateGoogle(
  $googleAuthToken: String!,
  $mfaCode: String,
  $recoveryCode: String
) {
  authenticateGoogle(
    googleAuthToken: $googleAuthToken,
    mfaCode: $mfaCode,
    recoveryCode: $recoveryCode
  ) {
    id
    socialId
    email
    verified
    lastOrganizationId
    mfaSecret
    createdAt
    updatedAt
    emailPreferences {
      userId
      generalMarketingEmailsEnabled
      organisationEmailsEnabled
    }
    organisation {
      id
      name
      ownerUserId
      updatedAt
      createdAt
      organisationMember {
        ...OrganisationMemberEntityFragment
      }
      protectedAddresses {
        ...ProtectedAddressEntityFragment
      }
      owner {
        ...UserEntityFragment
      }
      apiKeys {
        ...OrganisationApiKeyEntityFragment
      }
      notificationSettings {
        ...NotificationSettingsEntityFragment
      }
      organisationInvite {
        ...OrganisationInviteEntityFragment
      }
      organisationSubscription {
        ...OrganisationSubscriptionEntityFragment
      }
    }
    organisationMember {
      userId
      organisationId
      role
      updatedAt
      createdAt
      user {
        ...UserEntityFragment
      }
      organisation {
        ...OrganisationEntityFragment
      }
    }
  }
}
Variables
{
  "googleAuthToken": "abc123",
  "mfaCode": "xyz789",
  "recoveryCode": "xyz789"
}
Response
{
  "data": {
    "authenticateGoogle": {
      "id": "xyz789",
      "socialId": "abc123",
      "email": "abc123",
      "verified": true,
      "lastOrganizationId": "xyz789",
      "mfaSecret": "xyz789",
      "createdAt": "2007-12-03T10:15:30Z",
      "updatedAt": "2007-12-03T10:15:30Z",
      "emailPreferences": UserEmailPreferences,
      "organisation": [OrganisationEntity],
      "organisationMember": [OrganisationMemberEntity]
    }
  }
}

contractAnalysis

Description

Retrieves watchlist addresses analysis data

Response

Returns a ContractAnalysisEntity

Arguments
Name Description
protectedAddressId - String! Watchlist address ID

Example

Query
query ContractAnalysis($protectedAddressId: String!) {
  contractAnalysis(protectedAddressId: $protectedAddressId) {
    protectedAddressId
    reviewed
    analysisData {
      general {
        ...ContractAnalysisGeneralEntityFragment
      }
      recommendedEvents {
        ...ContractAnalysisRecommendedEventsEntityFragment
      }
      integratedContracts {
        ...ContractAnalysisIntegratedContractsEntityFragment
      }
      privellegedAddresses {
        ...ContractAnalysisPrivellegedAddressEntityFragment
      }
      modifierFunctions {
        ...ContractAnalysisFnModifiersEntityFragment
      }
    }
  }
}
Variables
{"protectedAddressId": "abc123"}
Response
{
  "data": {
    "contractAnalysis": {
      "protectedAddressId": "xyz789",
      "reviewed": false,
      "analysisData": ContractAnalysisDataEntity
    }
  }
}

getActiveTier

Description

Get active tier

Response

Returns an ActiveTierResponse!

Example

Query
query GetActiveTier {
  getActiveTier {
    tier
    tierBillingType
    currentPeriodStart
    currentPeriodEnd
    subscriptionLimits {
      maxTeamMembers
      notificationsEnabled
      maxPhoneNotifications
      maxNotificationChannels
      maxProtectedAddresses
      maxApiKeys
      teamsMaxLimit
      onChainSecurity
      offChainSecurity
      mempoolSecurity
      smsEnabled
      customEventsAlertsEnabled
      smsLimit
      currentSmsUsage
    }
    paymentMethodDetails {
      billingEmail
      last4
      expMonth
      expYear
      cardBrand
    }
    paymentType
    billingEmail
  }
}
Response
{
  "data": {
    "getActiveTier": {
      "tier": "FREE",
      "tierBillingType": "MONTHLY",
      "currentPeriodStart": 987.65,
      "currentPeriodEnd": 987.65,
      "subscriptionLimits": SubscriptionLimits,
      "paymentMethodDetails": PaymentMethodDetailsResponse,
      "paymentType": "abc123",
      "billingEmail": "xyz789"
    }
  }
}

getNotificationSettings

Description

Retrieve all organisation notification channel settings which are associated to the Team. This is a read-only endpoint.

Example

Query
query GetNotificationSettings {
  getNotificationSettings {
    id
    organisationId
    type
    name
    typeData {
      webhookUrl
      telegramChatId
      telegramBotToken
      emailList
      phoneList
    }
    updatedAt
    createdAt
  }
}
Response
{
  "data": {
    "getNotificationSettings": [
      {
        "id": "abc123",
        "organisationId": "xyz789",
        "type": "abc123",
        "name": "abc123",
        "typeData": NotificationSettingsMetadata,
        "updatedAt": "2007-12-03T10:15:30Z",
        "createdAt": "2007-12-03T10:15:30Z"
      }
    ]
  }
}

getProtectedAddressCustomEventsNotificationSettings

Description

Retrieve all watchlist address custom events alert settings. This query will retrieve all notification channel which are associated to the watchlist address. The retrieved IDs will be used to either update, or remove the alerts associated to the address.

Arguments
Name Description
protectedAddressId - String! Watchlist address ID

Example

Query
query GetProtectedAddressCustomEventsNotificationSettings($protectedAddressId: String!) {
  getProtectedAddressCustomEventsNotificationSettings(protectedAddressId: $protectedAddressId) {
    id
    organisationId
    protectedAddressId
    isPaused
    notificationSettings {
      id
      organisationId
      type
      name
      typeData {
        ...NotificationSettingsMetadataFragment
      }
      updatedAt
      createdAt
    }
    updatedAt
    createdAt
  }
}
Variables
{"protectedAddressId": "xyz789"}
Response
{
  "data": {
    "getProtectedAddressCustomEventsNotificationSettings": {
      "id": "xyz789",
      "organisationId": "abc123",
      "protectedAddressId": "abc123",
      "isPaused": true,
      "notificationSettings": [
        NotificationSettingsEntity
      ],
      "updatedAt": "2007-12-03T10:15:30Z",
      "createdAt": "2007-12-03T10:15:30Z"
    }
  }
}

getProtectedAddressNotificationSettings

Description

Retrieve all watchlist address alert settings. This query will retrieve all notification channel which are associated to the watchlist address. The retrieved IDs will be used to either update, or remove the alerts associated to the address.

Arguments
Name Description
protectedAddressId - String! Watchlist address ID

Example

Query
query GetProtectedAddressNotificationSettings($protectedAddressId: String!) {
  getProtectedAddressNotificationSettings(protectedAddressId: $protectedAddressId) {
    id
    organisationId
    notificationSettingsId
    protectedAddressId
    riskScoreThreshold
    riskTypesToNotify
    isPaused
    notificationSettings {
      id
      organisationId
      type
      name
      typeData {
        ...NotificationSettingsMetadataFragment
      }
      updatedAt
      createdAt
    }
    protectedAddress {
      id
      name
      address
      tvlEnabled
      chain
      createdAt
      organisationId
      protectedAddressTypes {
        ...ProtectedAddressTypeEntityFragment
      }
      protectedAddressAbi {
        ...ProtectedAddressAbiEntityFragment
      }
      lastBackTestingReportProcess {
        ...BackTestingReportProcessEntityFragment
      }
      addressNotificationSettings {
        ...ProtectedAddressNotificationSettingsEntityFragment
      }
      protectedAddressImplementation {
        ...ProtectedAddressImplementationEntityFragment
      }
      addressAnalysis {
        ...ContractAnalysisEntityFragment
      }
    }
    updatedAt
    createdAt
  }
}
Variables
{"protectedAddressId": "abc123"}
Response
{
  "data": {
    "getProtectedAddressNotificationSettings": [
      {
        "id": "xyz789",
        "organisationId": "abc123",
        "notificationSettingsId": "xyz789",
        "protectedAddressId": "xyz789",
        "riskScoreThreshold": 987.65,
        "riskTypesToNotify": ["TORNADO_TX"],
        "isPaused": true,
        "notificationSettings": NotificationSettingsEntity,
        "protectedAddress": ProtectedAddressEntity,
        "updatedAt": "2007-12-03T10:15:30Z",
        "createdAt": "2007-12-03T10:15:30Z"
      }
    ]
  }
}

getProtectedAddressTVLNotificationSettings

Description

Retrieve all watchlist address TVL alert settings by tokens. This query will retrieve all notification channel which are associated to the watchlist address. The retrieved IDs will be used to either update, or remove the alerts associated to the address.

Response

Returns [TVLSettingsEntity!]

Arguments
Name Description
protectedAddressId - String! Watchlist address ID

Example

Query
query GetProtectedAddressTVLNotificationSettings($protectedAddressId: String!) {
  getProtectedAddressTVLNotificationSettings(protectedAddressId: $protectedAddressId) {
    id
    organisationId
    tokenId
    thresholdPercentage
    timePeriod
    monitoredToken {
      id
      tokenName
      tokenLogo
      tokenDivisor
      tokenSymbol
      contractAddress
    }
    notificationSettings {
      id
      organisationId
      type
      name
      typeData {
        ...NotificationSettingsMetadataFragment
      }
      updatedAt
      createdAt
    }
    createdAt
  }
}
Variables
{"protectedAddressId": "abc123"}
Response
{
  "data": {
    "getProtectedAddressTVLNotificationSettings": [
      {
        "id": "abc123",
        "organisationId": "xyz789",
        "tokenId": "xyz789",
        "thresholdPercentage": 123,
        "timePeriod": "abc123",
        "monitoredToken": TokenLockedInContractEntity,
        "notificationSettings": [
          NotificationSettingsEntity
        ],
        "createdAt": "2007-12-03T10:15:30Z"
      }
    ]
  }
}

getSubscriptionTiers

Description

Get a list of available subscriptions

Response

Returns [SubscriptionTierEntity!]!

Example

Query
query GetSubscriptionTiers {
  getSubscriptionTiers {
    id
    tier
    tierBillingType
  }
}
Response
{
  "data": {
    "getSubscriptionTiers": [
      {
        "id": "xyz789",
        "tier": "FREE",
        "tierBillingType": "MONTHLY"
      }
    ]
  }
}

protectedAddress

Description

Using this query you can obtain a single watchlist address details (settings, ABI, alert settings, etc.)

Response

Returns a ProtectedAddressEntity!

Arguments
Name Description
address - String! Watchlist address
chain - String! Watchlist address chain

Example

Query
query ProtectedAddress(
  $address: String!,
  $chain: String!
) {
  protectedAddress(
    address: $address,
    chain: $chain
  ) {
    id
    name
    address
    tvlEnabled
    chain
    createdAt
    organisationId
    protectedAddressTypes {
      id
      protectedAddressId
      addressType
    }
    protectedAddressAbi {
      id
      abi
      protectedAddressId
    }
    lastBackTestingReportProcess {
      id
      authorId
      organisationId
      protectedAddressId
      status
      createdAt
      finishedAt
      startDate
      approximateFinishDate
      endDate
      protectedAddress {
        ...ProtectedAddressEntityFragment
      }
      organisation {
        ...OrganisationEntityFragment
      }
      author {
        ...UserEntityFragment
      }
    }
    addressNotificationSettings {
      id
      organisationId
      notificationSettingsId
      protectedAddressId
      riskScoreThreshold
      riskTypesToNotify
      isPaused
      notificationSettings {
        ...NotificationSettingsEntityFragment
      }
      protectedAddress {
        ...ProtectedAddressEntityFragment
      }
      updatedAt
      createdAt
    }
    protectedAddressImplementation {
      protectedAddressId
      implementationAddress
    }
    addressAnalysis {
      protectedAddressId
      reviewed
      analysisData {
        ...ContractAnalysisDataEntityFragment
      }
    }
  }
}
Variables
{
  "address": "abc123",
  "chain": "xyz789"
}
Response
{
  "data": {
    "protectedAddress": {
      "id": "abc123",
      "name": "abc123",
      "address": "abc123",
      "tvlEnabled": false,
      "chain": "xyz789",
      "createdAt": "2007-12-03T10:15:30Z",
      "organisationId": "abc123",
      "protectedAddressTypes": [
        ProtectedAddressTypeEntity
      ],
      "protectedAddressAbi": ProtectedAddressAbiEntity,
      "lastBackTestingReportProcess": BackTestingReportProcessEntity,
      "addressNotificationSettings": [
        ProtectedAddressNotificationSettingsEntity
      ],
      "protectedAddressImplementation": ProtectedAddressImplementationEntity,
      "addressAnalysis": ContractAnalysisEntity
    }
  }
}

protectedAddressEvents

Description

Using this query you can obtain protected address events, if it is a contract

Response

Returns [ProtectedAddressTopicType!]

Arguments
Name Description
protectedAddressId - String! Watchlist address ID

Example

Query
query ProtectedAddressEvents($protectedAddressId: String!) {
  protectedAddressEvents(protectedAddressId: $protectedAddressId) {
    id
    protectedAddressId
    monitored
    topic
    topicId
  }
}
Variables
{"protectedAddressId": "abc123"}
Response
{
  "data": {
    "protectedAddressEvents": [
      {
        "id": "xyz789",
        "protectedAddressId": "xyz789",
        "monitored": false,
        "topic": "xyz789",
        "topicId": "xyz789"
      }
    ]
  }
}

protectedAddressMonitoredTokens

Description

Using this query you can retrieve all of the tokens locked in this watchlist address

Arguments
Name Description
protectedAddressId - String! Watchlist address ID

Example

Query
query ProtectedAddressMonitoredTokens($protectedAddressId: String!) {
  protectedAddressMonitoredTokens(protectedAddressId: $protectedAddressId) {
    id
    tokenName
    tokenLogo
    tokenDivisor
    tokenSymbol
    contractAddress
  }
}
Variables
{"protectedAddressId": "xyz789"}
Response
{
  "data": {
    "protectedAddressMonitoredTokens": [
      {
        "id": "abc123",
        "tokenName": "xyz789",
        "tokenLogo": "abc123",
        "tokenDivisor": 987.65,
        "tokenSymbol": "xyz789",
        "contractAddress": "abc123"
      }
    ]
  }
}

protectedAddressSuspiciousTransactionCount

Description

Get the number of suspicious transactions by watchlist address.

Response

Returns an Int!

Arguments
Name Description
protectedAddress - String! Watchlist address
chain - String! Chain

Example

Query
query ProtectedAddressSuspiciousTransactionCount(
  $protectedAddress: String!,
  $chain: String!
) {
  protectedAddressSuspiciousTransactionCount(
    protectedAddress: $protectedAddress,
    chain: $chain
  )
}
Variables
{
  "protectedAddress": "xyz789",
  "chain": "xyz789"
}
Response
{"data": {"protectedAddressSuspiciousTransactionCount": 987}}

protectedAddressSuspiciousTransactions

Description

Get all suspicious transactions by organisation, and its filters

Arguments
Name Description
skip - Float! Skips elements up to a specified take position
take - Float! Takes elements from the skip position
orderBy - String
protectedAddress - String! Watchlist address
chain - String! Chain

Example

Query
query ProtectedAddressSuspiciousTransactions(
  $skip: Float!,
  $take: Float!,
  $orderBy: String,
  $protectedAddress: String!,
  $chain: String!
) {
  protectedAddressSuspiciousTransactions(
    skip: $skip,
    take: $take,
    orderBy: $orderBy,
    protectedAddress: $protectedAddress,
    chain: $chain
  ) {
    txHash
    to
    createdAt
    blockNumber
    chain
    from
    risks
    riskScore
    suspiciousAddress {
      address
      riskScore
      createdAt
    }
    protectedAddresses {
      id
      name
      address
      tvlEnabled
      chain
      createdAt
      organisationId
      protectedAddressTypes {
        ...ProtectedAddressTypeEntityFragment
      }
      protectedAddressAbi {
        ...ProtectedAddressAbiEntityFragment
      }
      lastBackTestingReportProcess {
        ...BackTestingReportProcessEntityFragment
      }
      addressNotificationSettings {
        ...ProtectedAddressNotificationSettingsEntityFragment
      }
      protectedAddressImplementation {
        ...ProtectedAddressImplementationEntityFragment
      }
      addressAnalysis {
        ...ContractAnalysisEntityFragment
      }
    }
  }
}
Variables
{
  "skip": 987.65,
  "take": 987.65,
  "orderBy": "xyz789",
  "protectedAddress": "abc123",
  "chain": "xyz789"
}
Response
{
  "data": {
    "protectedAddressSuspiciousTransactions": [
      {
        "txHash": "abc123",
        "to": "xyz789",
        "createdAt": "xyz789",
        "blockNumber": 123.45,
        "chain": "abc123",
        "from": "xyz789",
        "risks": ["xyz789"],
        "riskScore": 123,
        "suspiciousAddress": [SuspiciousAddressEntity],
        "protectedAddresses": [ProtectedAddressEntity]
      }
    ]
  }
}

protectedAddressTokens

Description

Using this query you can retrieve all of the tokens locked in this watchlist address

Arguments
Name Description
protectedAddressId - String! Watchlist address ID

Example

Query
query ProtectedAddressTokens($protectedAddressId: String!) {
  protectedAddressTokens(protectedAddressId: $protectedAddressId) {
    id
    tokenName
    tokenLogo
    tokenDivisor
    tokenSymbol
    contractAddress
  }
}
Variables
{"protectedAddressId": "abc123"}
Response
{
  "data": {
    "protectedAddressTokens": [
      {
        "id": "abc123",
        "tokenName": "xyz789",
        "tokenLogo": "xyz789",
        "tokenDivisor": 987.65,
        "tokenSymbol": "abc123",
        "contractAddress": "xyz789"
      }
    ]
  }
}

protectedAddresses

Description

Using the 'protectedAddresses' query you can retrieve all of the watchlist addresses, which are monitored.

Response

Returns [ProtectedAddressEntity!]!

Arguments
Name Description
skip - Float! Skips elements up to a specified take position
take - Float! Takes elements from the skip position
orderBy - String

Example

Query
query ProtectedAddresses(
  $skip: Float!,
  $take: Float!,
  $orderBy: String
) {
  protectedAddresses(
    skip: $skip,
    take: $take,
    orderBy: $orderBy
  ) {
    id
    name
    address
    tvlEnabled
    chain
    createdAt
    organisationId
    protectedAddressTypes {
      id
      protectedAddressId
      addressType
    }
    protectedAddressAbi {
      id
      abi
      protectedAddressId
    }
    lastBackTestingReportProcess {
      id
      authorId
      organisationId
      protectedAddressId
      status
      createdAt
      finishedAt
      startDate
      approximateFinishDate
      endDate
      protectedAddress {
        ...ProtectedAddressEntityFragment
      }
      organisation {
        ...OrganisationEntityFragment
      }
      author {
        ...UserEntityFragment
      }
    }
    addressNotificationSettings {
      id
      organisationId
      notificationSettingsId
      protectedAddressId
      riskScoreThreshold
      riskTypesToNotify
      isPaused
      notificationSettings {
        ...NotificationSettingsEntityFragment
      }
      protectedAddress {
        ...ProtectedAddressEntityFragment
      }
      updatedAt
      createdAt
    }
    protectedAddressImplementation {
      protectedAddressId
      implementationAddress
    }
    addressAnalysis {
      protectedAddressId
      reviewed
      analysisData {
        ...ContractAnalysisDataEntityFragment
      }
    }
  }
}
Variables
{
  "skip": 987.65,
  "take": 123.45,
  "orderBy": "xyz789"
}
Response
{
  "data": {
    "protectedAddresses": [
      {
        "id": "xyz789",
        "name": "xyz789",
        "address": "abc123",
        "tvlEnabled": false,
        "chain": "abc123",
        "createdAt": "2007-12-03T10:15:30Z",
        "organisationId": "xyz789",
        "protectedAddressTypes": [
          ProtectedAddressTypeEntity
        ],
        "protectedAddressAbi": ProtectedAddressAbiEntity,
        "lastBackTestingReportProcess": BackTestingReportProcessEntity,
        "addressNotificationSettings": [
          ProtectedAddressNotificationSettingsEntity
        ],
        "protectedAddressImplementation": ProtectedAddressImplementationEntity,
        "addressAnalysis": ContractAnalysisEntity
      }
    ]
  }
}

protectedAddressesCount

Description

Get the total number of watchlist addresses added.

Response

Returns an Int!

Example

Query
query ProtectedAddressesCount {
  protectedAddressesCount
}
Response
{"data": {"protectedAddressesCount": 123}}

refreshToken

Description

Request a refresh token, if the refresh token is valid and is not expired.

Response

Returns a Boolean!

Example

Query
query RefreshToken {
  refreshToken
}
Response
{"data": {"refreshToken": false}}

suspiciousTransactionCount

Description

Get the number of suspicious transactions by organisation, and its filters

Response

Returns an Int!

Arguments
Name Description
protectedAddress - String Watchlist address
suspiciousAddressOrTxHash - String Transaction hash or Suspicious Address
chain - String Chain

Example

Query
query SuspiciousTransactionCount(
  $protectedAddress: String,
  $suspiciousAddressOrTxHash: String,
  $chain: String
) {
  suspiciousTransactionCount(
    protectedAddress: $protectedAddress,
    suspiciousAddressOrTxHash: $suspiciousAddressOrTxHash,
    chain: $chain
  )
}
Variables
{
  "protectedAddress": "abc123",
  "suspiciousAddressOrTxHash": "xyz789",
  "chain": "xyz789"
}
Response
{"data": {"suspiciousTransactionCount": 987}}

suspiciousTransactions

Description

Get all suspicious transactions by organisation, and its filters

Arguments
Name Description
skip - Float! Skips elements up to a specified take position
take - Float! Takes elements from the skip position
orderBy - String
protectedAddress - String Watchlist address
suspiciousAddressOrTxHash - String Transaction hash or Suspicious Address
chain - String Chain

Example

Query
query SuspiciousTransactions(
  $skip: Float!,
  $take: Float!,
  $orderBy: String,
  $protectedAddress: String,
  $suspiciousAddressOrTxHash: String,
  $chain: String
) {
  suspiciousTransactions(
    skip: $skip,
    take: $take,
    orderBy: $orderBy,
    protectedAddress: $protectedAddress,
    suspiciousAddressOrTxHash: $suspiciousAddressOrTxHash,
    chain: $chain
  ) {
    txHash
    to
    createdAt
    blockNumber
    chain
    from
    risks
    riskScore
    suspiciousAddress {
      address
      riskScore
      createdAt
    }
    protectedAddresses {
      id
      name
      address
      tvlEnabled
      chain
      createdAt
      organisationId
      protectedAddressTypes {
        ...ProtectedAddressTypeEntityFragment
      }
      protectedAddressAbi {
        ...ProtectedAddressAbiEntityFragment
      }
      lastBackTestingReportProcess {
        ...BackTestingReportProcessEntityFragment
      }
      addressNotificationSettings {
        ...ProtectedAddressNotificationSettingsEntityFragment
      }
      protectedAddressImplementation {
        ...ProtectedAddressImplementationEntityFragment
      }
      addressAnalysis {
        ...ContractAnalysisEntityFragment
      }
    }
  }
}
Variables
{
  "skip": 123.45,
  "take": 987.65,
  "orderBy": "xyz789",
  "protectedAddress": "abc123",
  "suspiciousAddressOrTxHash": "xyz789",
  "chain": "xyz789"
}
Response
{
  "data": {
    "suspiciousTransactions": [
      {
        "txHash": "abc123",
        "to": "xyz789",
        "createdAt": "xyz789",
        "blockNumber": 123.45,
        "chain": "xyz789",
        "from": "abc123",
        "risks": ["abc123"],
        "riskScore": 987,
        "suspiciousAddress": [SuspiciousAddressEntity],
        "protectedAddresses": [ProtectedAddressEntity]
      }
    ]
  }
}

tokenBalances

Description

Using this query you can obtain token balance by date range

Response

Returns [TokenBalanceEntity!]!

Arguments
Name Description
tokenId - String! Token ID
startDate - DateTime! Start Date
endDate - DateTime! End Date
timePeriod - String! Time period

Example

Query
query TokenBalances(
  $tokenId: String!,
  $startDate: DateTime!,
  $endDate: DateTime!,
  $timePeriod: String!
) {
  tokenBalances(
    tokenId: $tokenId,
    startDate: $startDate,
    endDate: $endDate,
    timePeriod: $timePeriod
  ) {
    date
    value
  }
}
Variables
{
  "tokenId": "abc123",
  "startDate": "2007-12-03T10:15:30Z",
  "endDate": "2007-12-03T10:15:30Z",
  "timePeriod": "abc123"
}
Response
{
  "data": {
    "tokenBalances": [
      {
        "date": "2007-12-03T10:15:30Z",
        "value": 987.65
      }
    ]
  }
}

user

Description

Return the curent logged in user details

Response

Returns a UserDetailsEntity!

Example

Query
query User {
  user {
    id
    socialId
    email
    verified
    lastOrganizationId
    mfaSecret
    createdAt
    updatedAt
    emailPreferences {
      userId
      generalMarketingEmailsEnabled
      organisationEmailsEnabled
    }
    organisation {
      id
      name
      ownerUserId
      updatedAt
      createdAt
      organisationMember {
        ...OrganisationMemberEntityFragment
      }
      protectedAddresses {
        ...ProtectedAddressEntityFragment
      }
      owner {
        ...UserEntityFragment
      }
      apiKeys {
        ...OrganisationApiKeyEntityFragment
      }
      notificationSettings {
        ...NotificationSettingsEntityFragment
      }
      organisationInvite {
        ...OrganisationInviteEntityFragment
      }
      organisationSubscription {
        ...OrganisationSubscriptionEntityFragment
      }
    }
    organisationMember {
      userId
      organisationId
      role
      updatedAt
      createdAt
      user {
        ...UserEntityFragment
      }
      organisation {
        ...OrganisationEntityFragment
      }
    }
    loggedInOrganisation {
      userId
      organisationId
      role
      updatedAt
      createdAt
      user {
        ...UserEntityFragment
      }
      organisation {
        ...OrganisationEntityFragment
      }
    }
  }
}
Response
{
  "data": {
    "user": {
      "id": "xyz789",
      "socialId": "xyz789",
      "email": "abc123",
      "verified": true,
      "lastOrganizationId": "abc123",
      "mfaSecret": "abc123",
      "createdAt": "2007-12-03T10:15:30Z",
      "updatedAt": "2007-12-03T10:15:30Z",
      "emailPreferences": UserEmailPreferences,
      "organisation": [OrganisationEntity],
      "organisationMember": [OrganisationMemberEntity],
      "loggedInOrganisation": OrganisationMemberEntity
    }
  }
}

usersOrganisations

Description

Get all of the users joined organisations including his owned ones.

Response

Returns [OrganisationMemberEntity!]!

Example

Query
query UsersOrganisations {
  usersOrganisations {
    userId
    organisationId
    role
    updatedAt
    createdAt
    user {
      id
      socialId
      email
      verified
      lastOrganizationId
      mfaSecret
      createdAt
      updatedAt
      emailPreferences {
        ...UserEmailPreferencesFragment
      }
      organisation {
        ...OrganisationEntityFragment
      }
      organisationMember {
        ...OrganisationMemberEntityFragment
      }
    }
    organisation {
      id
      name
      ownerUserId
      updatedAt
      createdAt
      organisationMember {
        ...OrganisationMemberEntityFragment
      }
      protectedAddresses {
        ...ProtectedAddressEntityFragment
      }
      owner {
        ...UserEntityFragment
      }
      apiKeys {
        ...OrganisationApiKeyEntityFragment
      }
      notificationSettings {
        ...NotificationSettingsEntityFragment
      }
      organisationInvite {
        ...OrganisationInviteEntityFragment
      }
      organisationSubscription {
        ...OrganisationSubscriptionEntityFragment
      }
    }
  }
}
Response
{
  "data": {
    "usersOrganisations": [
      {
        "userId": "xyz789",
        "organisationId": "xyz789",
        "role": "xyz789",
        "updatedAt": "2007-12-03T10:15:30Z",
        "createdAt": "2007-12-03T10:15:30Z",
        "user": UserEntity,
        "organisation": OrganisationEntity
      }
    ]
  }
}

Types

ActiveTierResponse

Fields
Field Name Description
tier - Tier! Subscription tier
tierBillingType - TierBillingType! Subscription tier billing type
currentPeriodStart - Float Current period start
currentPeriodEnd - Float Current period end
subscriptionLimits - SubscriptionLimits
paymentMethodDetails - PaymentMethodDetailsResponse
paymentType - String
billingEmail - String
Example
{
  "tier": "FREE",
  "tierBillingType": "MONTHLY",
  "currentPeriodStart": 123.45,
  "currentPeriodEnd": 123.45,
  "subscriptionLimits": SubscriptionLimits,
  "paymentMethodDetails": PaymentMethodDetailsResponse,
  "paymentType": "abc123",
  "billingEmail": "abc123"
}

AddressRiskType

Description

Watchlist address risk types

Values
Enum Value Description

TORNADO_TX

DEPLOYER

CONTRACT

INTERACTION

FLASHLOAN

EVENT

KNOWN_HACKER

AI

OFAC_COMPLIANCE

ROLE_GRANTED

PROXY_ADMIN_CHANGE

OWNERSHIP

ADMIN_CHANGED

ROLE_REVOKED

PROXY_UPGRADE

PAUSED

UNPAUSED

Example
"TORNADO_TX"

BackTestingReportProcessEntity

Description

This is description the Watchlist entity. Every organisation can have multiple watchlist addresses. For Lossless Aegis in order to start monitoring the address, the organisation must add it to the watchlist.

Fields
Field Name Description
id - String! Backtesting report process ID
authorId - String! ID of the user initiated report
organisationId - String! ID of the organisation initiated report
protectedAddressId - String! ID of the protected address
status - String! Process status
createdAt - DateTime! Created at
finishedAt - DateTime Finished at
startDate - DateTime! Start Date of the range
approximateFinishDate - DateTime Approximate end date of the backtesting process
endDate - DateTime! End Date of the range
protectedAddress - ProtectedAddressEntity! Protected Address
organisation - OrganisationEntity! Owner of the report
author - UserEntity! User who initiated report
Example
{
  "id": "xyz789",
  "authorId": "abc123",
  "organisationId": "abc123",
  "protectedAddressId": "abc123",
  "status": "xyz789",
  "createdAt": "2007-12-03T10:15:30Z",
  "finishedAt": "2007-12-03T10:15:30Z",
  "startDate": "2007-12-03T10:15:30Z",
  "approximateFinishDate": "2007-12-03T10:15:30Z",
  "endDate": "2007-12-03T10:15:30Z",
  "protectedAddress": ProtectedAddressEntity,
  "organisation": OrganisationEntity,
  "author": UserEntity
}

Boolean

Description

The Boolean scalar type represents true or false.

ContractAnalysisDataEntity

Fields
Field Name Description
general - ContractAnalysisGeneralEntity
recommendedEvents - [ContractAnalysisRecommendedEventsEntity!]
integratedContracts - [ContractAnalysisIntegratedContractsEntity!]
privellegedAddresses - [ContractAnalysisPrivellegedAddressEntity!]
modifierFunctions - [ContractAnalysisFnModifiersEntity!]
Example
{
  "general": ContractAnalysisGeneralEntity,
  "recommendedEvents": [
    ContractAnalysisRecommendedEventsEntity
  ],
  "integratedContracts": [
    ContractAnalysisIntegratedContractsEntity
  ],
  "privellegedAddresses": [
    ContractAnalysisPrivellegedAddressEntity
  ],
  "modifierFunctions": [ContractAnalysisFnModifiersEntity]
}

ContractAnalysisEntity

Fields
Field Name Description
protectedAddressId - String! Protected address Id
reviewed - Boolean! Is smart contract analysis reviewed
analysisData - ContractAnalysisDataEntity Analysis data
Example
{
  "protectedAddressId": "xyz789",
  "reviewed": true,
  "analysisData": ContractAnalysisDataEntity
}

ContractAnalysisFnModifiersEntity

Fields
Field Name Description
functionName - String! Function name
modifierName - String! Modifier name
file - String! Solidity filename name
Example
{
  "functionName": "xyz789",
  "modifierName": "abc123",
  "file": "abc123"
}

ContractAnalysisGeneralEntity

Fields
Field Name Description
isVerified - Boolean! Indicates if the contract is verified
Example
{"isVerified": false}

ContractAnalysisIntegratedContractsEntity

Fields
Field Name Description
contractType - String! Address type
contractAddress - String! Contract address
tokenName - String Token name
Example
{
  "contractType": "abc123",
  "contractAddress": "xyz789",
  "tokenName": "xyz789"
}

ContractAnalysisPrivellegedAddressEntity

Fields
Field Name Description
type - String! Privellege type
address - String! Address
Example
{
  "type": "xyz789",
  "address": "abc123"
}

ContractAnalysisRecommendedEventsEntity

Fields
Field Name Description
topic - String! Event topic name
topicId - String! Topic Id hash
Example
{
  "topic": "xyz789",
  "topicId": "abc123"
}

DateTime

Description

A date-time string at UTC, such as 2019-12-03T09:54:33Z, compliant with the date-time format.

Example
"2007-12-03T10:15:30Z"

Float

Description

The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.

Example
123.45

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
123

NotificationSettingsEntity

Description

The notification settings entity represents the user added notification channels. In order to receive notifications the user must add at least one notification channel. And the assign the notification channel to the watchlist address.

Fields
Field Name Description
id - String! Notification channel ID
organisationId - String! Notification channel owner ID
type - String! Notification channel type
name - String! Notification channel name
typeData - NotificationSettingsMetadata! Notification channel metadata
updatedAt - DateTime! Updated at
createdAt - DateTime! Created at
Example
{
  "id": "xyz789",
  "organisationId": "abc123",
  "type": "abc123",
  "name": "xyz789",
  "typeData": NotificationSettingsMetadata,
  "updatedAt": "2007-12-03T10:15:30Z",
  "createdAt": "2007-12-03T10:15:30Z"
}

NotificationSettingsMetadata

Description

Describes a watchlist address notification settings metadata. This is a general entity that stores the nescessary data for the notification settings channels e.g: SLACK, EMAIL and etc..

Fields
Field Name Description
webhookUrl - String Slack webhook URL
telegramChatId - String Telegram Chat ID
telegramBotToken - String Telegram Bot Token
emailList - [String!] Email list array
phoneList - [String!] Phone list array
Example
{
  "webhookUrl": "xyz789",
  "telegramChatId": "abc123",
  "telegramBotToken": "xyz789",
  "emailList": ["abc123"],
  "phoneList": ["abc123"]
}

OrganisationApiKeyEntity

Description

Describes the Organisation API key entity

Fields
Field Name Description
id - String! API key ID
apiKeyName - String! API key name
apiKey - String! API key
organisationId - String! API key owner ID
createdAt - DateTime! API key created at
Example
{
  "id": "xyz789",
  "apiKeyName": "xyz789",
  "apiKey": "xyz789",
  "organisationId": "xyz789",
  "createdAt": "2007-12-03T10:15:30Z"
}

OrganisationEntity

Fields
Field Name Description
id - String! Organisation ID
name - String! Organisation name
ownerUserId - String! Organisation owners user Id
updatedAt - String Organisation updated at
createdAt - DateTime! Organisation created at
organisationMember - [OrganisationMemberEntity!] Organisation members
protectedAddresses - [ProtectedAddressEntity!] Users watchlist addresses
owner - UserEntity Organisation owner
apiKeys - OrganisationApiKeyEntity
notificationSettings - [NotificationSettingsEntity!] Users notification channels
organisationInvite - [OrganisationInviteEntity!] User organisation invites
organisationSubscription - OrganisationSubscriptionEntity Organisation subscription details
Example
{
  "id": "xyz789",
  "name": "xyz789",
  "ownerUserId": "abc123",
  "updatedAt": "xyz789",
  "createdAt": "2007-12-03T10:15:30Z",
  "organisationMember": [OrganisationMemberEntity],
  "protectedAddresses": [ProtectedAddressEntity],
  "owner": UserEntity,
  "apiKeys": OrganisationApiKeyEntity,
  "notificationSettings": [NotificationSettingsEntity],
  "organisationInvite": [OrganisationInviteEntity],
  "organisationSubscription": OrganisationSubscriptionEntity
}

OrganisationInviteEntity

Fields
Field Name Description
senderEmail - String! Invite senders email
receiverEmail - String! Invite receivers email
organisationId - String! Invitations organisation id
pendingRole - String! Pending invitation user role
status - String! Invitations status
createdAt - DateTime! Invitations created at
updatedAt - DateTime! Invitations updated at
Example
{
  "senderEmail": "xyz789",
  "receiverEmail": "xyz789",
  "organisationId": "xyz789",
  "pendingRole": "abc123",
  "status": "abc123",
  "createdAt": "2007-12-03T10:15:30Z",
  "updatedAt": "2007-12-03T10:15:30Z"
}

OrganisationLimitsEntity

Fields
Field Name Description
maxTeamMembers - Int!
notificationsEnabled - Boolean!
maxPhoneNotifications - Int!
maxNotificationChannels - Int!
maxProtectedAddresses - Int!
maxApiKeys - Int!
onChainSecurity - Boolean!
offChainSecurity - Boolean!
mempoolSecurity - Boolean!
smsEnabled - Boolean!
customEventsAlertsEnabled - Boolean!
smsLimit - Int!
currentSmsUsage - Int!
Example
{
  "maxTeamMembers": 987,
  "notificationsEnabled": false,
  "maxPhoneNotifications": 987,
  "maxNotificationChannels": 123,
  "maxProtectedAddresses": 123,
  "maxApiKeys": 987,
  "onChainSecurity": true,
  "offChainSecurity": false,
  "mempoolSecurity": false,
  "smsEnabled": false,
  "customEventsAlertsEnabled": true,
  "smsLimit": 123,
  "currentSmsUsage": 987
}

OrganisationMemberEntity

Fields
Field Name Description
userId - String! Organisation member id
organisationId - String! Organisation id
role - String! Organisation member role
updatedAt - DateTime! Organisation member updated at
createdAt - DateTime! Organisation member created at
user - UserEntity! Organisation member user details
organisation - OrganisationEntity! Organisation details
Example
{
  "userId": "xyz789",
  "organisationId": "abc123",
  "role": "xyz789",
  "updatedAt": "2007-12-03T10:15:30Z",
  "createdAt": "2007-12-03T10:15:30Z",
  "user": UserEntity,
  "organisation": OrganisationEntity
}

OrganisationSubscriptionEntity

Fields
Field Name Description
organisationId - String! Organisation id
subscriptionTierId - String! Subscription tier id
subscriptionTier - OrganisationSubscriptionLimitsEntity!
Example
{
  "organisationId": "abc123",
  "subscriptionTierId": "xyz789",
  "subscriptionTier": OrganisationSubscriptionLimitsEntity
}

OrganisationSubscriptionLimitsEntity

Fields
Field Name Description
tier - String! Organisation tier
tierLimits - OrganisationLimitsEntity! Organisation limits
Example
{
  "tier": "abc123",
  "tierLimits": OrganisationLimitsEntity
}

PaymentMethodDetailsResponse

Fields
Field Name Description
billingEmail - String! Billing email
last4 - String! Last 4 number of credit card
expMonth - Float! Expiration month
expYear - Float! Expiration year
cardBrand - String! Card brand
Example
{
  "billingEmail": "xyz789",
  "last4": "xyz789",
  "expMonth": 123.45,
  "expYear": 123.45,
  "cardBrand": "abc123"
}

ProtectedAddressAbiEntity

Description

Describes the watchlist address ABI entity. Watchlist address ABI is used in the Aegis app, in order for the organisation to interact with the smart contract. The Aegis APP will attempt to fetch the ABI first, if ABI is not detected you have an ability upload the ABI by your own.

Fields
Field Name Description
id - String! Watchlist address ABI entity ID
abi - String! Watchlist address stringyfied JSON
protectedAddressId - String! Watchlist address ID
Example
{
  "id": "xyz789",
  "abi": "abc123",
  "protectedAddressId": "abc123"
}

ProtectedAddressCustomEventsNotificationSettingsEntity

Description

In order to receive notifications about custom events detected associated to a watchlist address, the user must first add at least one notification channel. And them assign the notification channel to the watchlist address.

Fields
Field Name Description
id - String! Watchlist alert ID
organisationId - String! Watchlist address alert owner ID
protectedAddressId - String! Watchlist address ID
isPaused - Boolean! Are notifications paused for the watchlist address
notificationSettings - [NotificationSettingsEntity!]! Notification channels settings
updatedAt - DateTime! Updated at
createdAt - DateTime! Created at
Example
{
  "id": "xyz789",
  "organisationId": "abc123",
  "protectedAddressId": "abc123",
  "isPaused": false,
  "notificationSettings": [NotificationSettingsEntity],
  "updatedAt": "2007-12-03T10:15:30Z",
  "createdAt": "2007-12-03T10:15:30Z"
}

ProtectedAddressEntity

Description

This is description the Watchlist entity. Every organisation can have multiple watchlist addresses. For Lossless Aegis in order to start monitoring the address, the organisation must add it to the watchlist.

Fields
Field Name Description
id - String! Watchlist address ID
name - String! Watchlist address name
address - String! Watchlist address
tvlEnabled - Boolean! Watchlist tvl enabled
chain - String! Watchlist address chain
createdAt - DateTime! Created at
organisationId - String! Watchlist address owner ID
protectedAddressTypes - [ProtectedAddressTypeEntity!]! Watchlist address types
protectedAddressAbi - ProtectedAddressAbiEntity Watchlist address ABI
lastBackTestingReportProcess - BackTestingReportProcessEntity Watchlist address latest backtesting report process
addressNotificationSettings - [ProtectedAddressNotificationSettingsEntity!]! Watchlist address alert settings
protectedAddressImplementation - ProtectedAddressImplementationEntity
addressAnalysis - ContractAnalysisEntity
Example
{
  "id": "xyz789",
  "name": "xyz789",
  "address": "xyz789",
  "tvlEnabled": true,
  "chain": "abc123",
  "createdAt": "2007-12-03T10:15:30Z",
  "organisationId": "abc123",
  "protectedAddressTypes": [ProtectedAddressTypeEntity],
  "protectedAddressAbi": ProtectedAddressAbiEntity,
  "lastBackTestingReportProcess": BackTestingReportProcessEntity,
  "addressNotificationSettings": [
    ProtectedAddressNotificationSettingsEntity
  ],
  "protectedAddressImplementation": ProtectedAddressImplementationEntity,
  "addressAnalysis": ContractAnalysisEntity
}

ProtectedAddressImplementationEntity

Description

This entity represents an upgradeable proxy contract, implementation address. It is used to determine the actuall contract, which is being used for interaction

Fields
Field Name Description
protectedAddressId - String! Watchlist address ID
implementationAddress - String! Implementation address
Example
{
  "protectedAddressId": "abc123",
  "implementationAddress": "abc123"
}

ProtectedAddressNotificationSettingsEntity

Description

In order to receive notifications associated to a watchlist address, the user must first add at least one notification channel. And them assign the notification channel to the watchlist address.

Fields
Field Name Description
id - String! Watchlist alert ID
organisationId - String! Watchlist address alert owner ID
notificationSettingsId - String! Notification channel ID
protectedAddressId - String! Watchlist address ID
riskScoreThreshold - Float! Risk score threshold number. 0 means all notifications will be sent
riskTypesToNotify - [AddressRiskType!]! Array of Address Risk Types to notify on
isPaused - Boolean! Are notifications paused for the watchlist address
notificationSettings - NotificationSettingsEntity! Notification channel settings
protectedAddress - ProtectedAddressEntity! Watchlist address
updatedAt - DateTime! Updated at
createdAt - DateTime! Created at
Example
{
  "id": "xyz789",
  "organisationId": "abc123",
  "notificationSettingsId": "xyz789",
  "protectedAddressId": "xyz789",
  "riskScoreThreshold": 987.65,
  "riskTypesToNotify": ["TORNADO_TX"],
  "isPaused": false,
  "notificationSettings": NotificationSettingsEntity,
  "protectedAddress": ProtectedAddressEntity,
  "updatedAt": "2007-12-03T10:15:30Z",
  "createdAt": "2007-12-03T10:15:30Z"
}

ProtectedAddressTopicType

Description

This entity describes the watchlist address event e.g: MINT, PAUSE and etc..

Fields
Field Name Description
id - String! Topic id
protectedAddressId - String! Related watchlist address id
monitored - Boolean! Indicator whether this event is monitored or not
topic - String! Topic name
topicId - String! Topic Id
Example
{
  "id": "xyz789",
  "protectedAddressId": "xyz789",
  "monitored": true,
  "topic": "abc123",
  "topicId": "xyz789"
}

ProtectedAddressTypeEntity

Description

Describes the watchlist address type entity. Lossless Aegis can track multiple types of contracts. This entity describes the watchlist address type e.g: WALLET, PAUSABLE and etc..

Fields
Field Name Description
id - String! Watchlist address type entity ID
protectedAddressId - String! Watchlist address ID
addressType - String! Watchlist address type
Example
{
  "id": "abc123",
  "protectedAddressId": "xyz789",
  "addressType": "xyz789"
}

String

Description

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example
"xyz789"

SubscriptionLimits

Fields
Field Name Description
maxTeamMembers - Int!
notificationsEnabled - Boolean!
maxPhoneNotifications - Int!
maxNotificationChannels - Int!
maxProtectedAddresses - Int!
maxApiKeys - Int!
teamsMaxLimit - Int!
onChainSecurity - Boolean!
offChainSecurity - Boolean!
mempoolSecurity - Boolean!
smsEnabled - Boolean!
customEventsAlertsEnabled - Boolean!
smsLimit - Int!
currentSmsUsage - Int!
Example
{
  "maxTeamMembers": 123,
  "notificationsEnabled": true,
  "maxPhoneNotifications": 987,
  "maxNotificationChannels": 987,
  "maxProtectedAddresses": 123,
  "maxApiKeys": 987,
  "teamsMaxLimit": 123,
  "onChainSecurity": true,
  "offChainSecurity": false,
  "mempoolSecurity": false,
  "smsEnabled": true,
  "customEventsAlertsEnabled": false,
  "smsLimit": 987,
  "currentSmsUsage": 987
}

SubscriptionTierEntity

Fields
Field Name Description
id - String! Subscription tier id
tier - Tier! Subscription tier
tierBillingType - TierBillingType! Subscription tier billing type
Example
{
  "id": "abc123",
  "tier": "FREE",
  "tierBillingType": "MONTHLY"
}

SuspiciousAddressEntity

Fields
Field Name Description
address - String! Suspicious address
riskScore - Int! Suspicious address risk score
createdAt - DateTime! Created at
Example
{
  "address": "abc123",
  "riskScore": 987,
  "createdAt": "2007-12-03T10:15:30Z"
}

SuspiciousTransactionEntity

Fields
Field Name Description
txHash - String! Transaction hash
to - String Transaction's 'to' address
createdAt - String! Transaction date
blockNumber - Float! Transaction's block number
chain - String! Chain
from - String! Transaction's 'from' address
risks - [String!]! Transaction risk types
riskScore - Int! Transaction risk score
suspiciousAddress - [SuspiciousAddressEntity!] Transaction related suspicious addresses
protectedAddresses - [ProtectedAddressEntity!] Transaction related protected addresses
Example
{
  "txHash": "abc123",
  "to": "xyz789",
  "createdAt": "abc123",
  "blockNumber": 987.65,
  "chain": "xyz789",
  "from": "xyz789",
  "risks": ["abc123"],
  "riskScore": 123,
  "suspiciousAddress": [SuspiciousAddressEntity],
  "protectedAddresses": [ProtectedAddressEntity]
}

TVLSettingsEntity

Description

In order to receive notifications about custom events detected associated to a watchlist address, the user must first add at least one notification channel. And them assign the notification channel to the watchlist address.

Fields
Field Name Description
id - String! Notification ID
organisationId - String! Watchlist address alert owner ID
tokenId - String! Monitored token ID
thresholdPercentage - Int! Value change percentage to notify
timePeriod - String! Time Period to monitor
monitoredToken - TokenLockedInContractEntity!
notificationSettings - [NotificationSettingsEntity!]! Notification channels settings
createdAt - DateTime! Created at
Example
{
  "id": "abc123",
  "organisationId": "xyz789",
  "tokenId": "xyz789",
  "thresholdPercentage": 123,
  "timePeriod": "xyz789",
  "monitoredToken": TokenLockedInContractEntity,
  "notificationSettings": [NotificationSettingsEntity],
  "createdAt": "2007-12-03T10:15:30Z"
}

Tier

Description

The tier of the subscription

Values
Enum Value Description

FREE

GROWTH

BUSINESS

ENTERPRISE

CUSTOM

Example
"FREE"

TierBillingType

Description

Tier billing type of the subscription

Values
Enum Value Description

MONTHLY

ANNUALLY

Example
"MONTHLY"

TokenBalanceEntity

Description

Describes the token balance entity by date.

Fields
Field Name Description
date - DateTime! Date of the record
value - Float! Balance in tokens
Example
{
  "date": "2007-12-03T10:15:30Z",
  "value": 987.65
}

TokenLockedInContractEntity

Description

Describes the token locked in contract entity.

Fields
Field Name Description
id - String Token id in our DB
tokenName - String! Token name
tokenLogo - String Token logo
tokenDivisor - Float! Token divisor
tokenSymbol - String! Token symbol
contractAddress - String! Token's contract address
Example
{
  "id": "abc123",
  "tokenName": "xyz789",
  "tokenLogo": "xyz789",
  "tokenDivisor": 123.45,
  "tokenSymbol": "xyz789",
  "contractAddress": "abc123"
}

UserDetailsEntity

Description

Describes the user entity

Fields
Field Name Description
id - String! User ID
socialId - String Social ID
email - String! User email
verified - Boolean! User email verified
lastOrganizationId - String!
mfaSecret - String MFA Secret ID
createdAt - DateTime! User created at
updatedAt - DateTime! User updated at
emailPreferences - UserEmailPreferences User weekly emails preferences
organisation - [OrganisationEntity!]
organisationMember - [OrganisationMemberEntity!]
loggedInOrganisation - OrganisationMemberEntity
Example
{
  "id": "abc123",
  "socialId": "xyz789",
  "email": "xyz789",
  "verified": true,
  "lastOrganizationId": "xyz789",
  "mfaSecret": "abc123",
  "createdAt": "2007-12-03T10:15:30Z",
  "updatedAt": "2007-12-03T10:15:30Z",
  "emailPreferences": UserEmailPreferences,
  "organisation": [OrganisationEntity],
  "organisationMember": [OrganisationMemberEntity],
  "loggedInOrganisation": OrganisationMemberEntity
}

UserEmailPreferences

Fields
Field Name Description
userId - String! User id
generalMarketingEmailsEnabled - Boolean! User general marketing weekly emails enabled
organisationEmailsEnabled - Boolean! Organisation weekly emails enabled
Example
{
  "userId": "xyz789",
  "generalMarketingEmailsEnabled": true,
  "organisationEmailsEnabled": true
}

UserEntity

Description

Describes the user entity

Fields
Field Name Description
id - String! User ID
socialId - String Social ID
email - String! User email
verified - Boolean! User email verified
lastOrganizationId - String!
mfaSecret - String MFA Secret ID
createdAt - DateTime! User created at
updatedAt - DateTime! User updated at
emailPreferences - UserEmailPreferences User weekly emails preferences
organisation - [OrganisationEntity!]
organisationMember - [OrganisationMemberEntity!]
Example
{
  "id": "xyz789",
  "socialId": "abc123",
  "email": "abc123",
  "verified": true,
  "lastOrganizationId": "abc123",
  "mfaSecret": "abc123",
  "createdAt": "2007-12-03T10:15:30Z",
  "updatedAt": "2007-12-03T10:15:30Z",
  "emailPreferences": UserEmailPreferences,
  "organisation": [OrganisationEntity],
  "organisationMember": [OrganisationMemberEntity]
}