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 when task verification is equivalent to answering the question, Did this particular user perform this task — yes or no?

If you want to understand the workflow and considerations of GraphQL credentials, please refer to the introduction

Config process

1. Finding the Config in Task Settings

The option to configure GraphQL credential can be found in step 3, Task Settings of quest creation on the Galxe Dashboard, under the Import Your Own Data task type.

2. 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

3. 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
    }
}

4. 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
    }

5. Write Expressions

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

6. Description

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

Guide users to specific operation pages to complete interactive tasks.

8. 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;
}