Overview

GraphQL Single-Dimensional Credential allows you to fetch user data via GraphQL APIs and validate user eligibility based on a single condition. It is suitable for simple use cases such as whitelist checks or balance validations.


Config process

1. Basic Config

  • ID Type

ID Type provides various identity options, including social accounts, blockchain addresses, and other unique identifiers.

  • Title

Give your credential an enticing title.

  • Credential Source

Choose GraphQL type

  • Type:

Choose Single Dimension

2. Configure API

  • Input Endpoint Example:
https://api.example.com/query
  • Add Headers (Optional)
`access-token`: `YOUR_TOKEN`
  • Input Query:
query info($address: String!) {
    tokenBalance(address: $address) {
    balance
    }
}

3. Test API Response

  • Input a test address, send the request, and confirm whether the response is correct.
  • The response must be in JSON format. Example:
      {
          "balance":100
      }
    

4. Write Expressions

  1. Points balance validation:
    function(resp) {
        return resp.balance >= 100 ? 1 : 0;
    }
    

5. Description

Description of the certificate, supports rich text input, maximum 200 characters.

Guide users to specific operation pages to complete interactive tasks.

7. Participation End Time && Update Frequency (Optional)

  • Participation End Time:

Control the time range of the credential, prohibiting new validations after the deadline.

  • Update Frequency:

Remind users of the frequency of API data source updates, such as once a day or once every two days.


Example

Galxe MSU Space requires holding at least 100 points

  • Endpoint
https://graphigo.prd.galaxy.eco/query
  • Headers

No header

  • Query

    query info($address: String!) {
        space(id: 68267) {
            addressLoyaltyPoints(address: $address) {
            points
            }
        }
    }
    
  • Response

  {
      "space": {
      "addressLoyaltyPoints": {
          "points": 100
      }
      }
  }
  • Expression
function(resp) {
    return resp.space.addressLoyaltyPoints >= 100 ? 1 : 0;
}