Ethos Developers - API Docs
  • API Documentation
    • Introduction
    • API v2
      • Activity
      • Categories
      • Chains
      • Contributions
      • Nfts
      • Projects
      • Project Votes
      • Score
      • System
      • Users
      • Xp
    • API v1 (deprecated)
      • Activities
      • Addresses
      • Attestations
      • Categories
      • Contracts
      • Contributions
      • Curated Lists
      • ENS
      • Events
      • Exchange Rates
      • Fees
      • Invitations
      • Markets
      • Notifications
      • Profiles
      • Replies
      • Reviews
      • Scores
      • Search
      • Signatures
      • Slashes
      • Twitter
      • Users
      • Vouches
      • XP
  • Whitepaper
    • Whitepaper
Powered by GitBook
On this page
  1. API Documentation
  2. API v2

Projects

PreviousNftsNextProject Votes

List all projects based on filters

get
Query parameters
userkeystringOptional
limitinteger · max: 100OptionalDefault: 50
offsetnumberOptionalDefault: 0
Responses
200
Successful response
application/json
400
Invalid input data
application/json
404
Not found
application/json
500
Internal server error
application/json
get
GET /api/v2/projects HTTP/1.1
Host: api.ethos.network
Accept: */*
{
  "projects": [
    {
      "id": 1,
      "userkey": "text",
      "status": "ACTIVE",
      "bannerImageUrl": "https://example.com",
      "isPromoted": true,
      "description": "text",
      "createdAt": "text",
      "updatedAt": "text",
      "user": {
        "id": 1,
        "profileId": 1,
        "displayName": "text",
        "username": "text",
        "avatarUrl": "https://example.com",
        "description": "text",
        "score": 1,
        "status": "ACTIVE",
        "userkeys": [
          "text"
        ],
        "xpTotal": 1,
        "xpStreakDays": 1,
        "stats": {
          "review": {
            "received": {
              "negative": 1,
              "neutral": 1,
              "positive": 1
            }
          },
          "vouch": {
            "given": {
              "amountWeiTotal": 1,
              "count": 1
            },
            "received": {
              "amountWeiTotal": 1,
              "count": 1
            }
          }
        }
      },
      "votes": {
        "bullish": {
          "topVoters": [
            {
              "id": 1,
              "profileId": 1,
              "displayName": "text",
              "username": "text",
              "avatarUrl": "https://example.com",
              "description": "text",
              "score": 1,
              "status": "ACTIVE",
              "userkeys": [
                "text"
              ],
              "xpTotal": 1,
              "xpStreakDays": 1,
              "stats": {
                "review": {
                  "received": {
                    "negative": 1,
                    "neutral": 1,
                    "positive": 1
                  }
                },
                "vouch": {
                  "given": {
                    "amountWeiTotal": 1,
                    "count": 1
                  },
                  "received": {
                    "amountWeiTotal": 1,
                    "count": 1
                  }
                }
              }
            }
          ],
          "total": 1,
          "uniqueVoters": 1
        },
        "bearish": {
          "topVoters": [
            {
              "id": 1,
              "profileId": 1,
              "displayName": "text",
              "username": "text",
              "avatarUrl": "https://example.com",
              "description": "text",
              "score": 1,
              "status": "ACTIVE",
              "userkeys": [
                "text"
              ],
              "xpTotal": 1,
              "xpStreakDays": 1,
              "stats": {
                "review": {
                  "received": {
                    "negative": 1,
                    "neutral": 1,
                    "positive": 1
                  }
                },
                "vouch": {
                  "given": {
                    "amountWeiTotal": 1,
                    "count": 1
                  },
                  "received": {
                    "amountWeiTotal": 1,
                    "count": 1
                  }
                }
              }
            }
          ],
          "total": 1,
          "uniqueVoters": 1
        }
      },
      "categories": [
        {
          "id": 1,
          "name": "text",
          "slug": "text",
          "description": "text"
        }
      ],
      "chains": [
        {
          "id": 1,
          "name": "text",
          "url": "https://example.com",
          "iconUrl": "https://example.com"
        }
      ],
      "commentCount": 1
    }
  ],
  "total": 1
}

Get suggested projects for a user

get
Query parameters
limitnumberOptionalDefault: 5
Responses
200
Successful response
application/json
400
Invalid input data
application/json
404
Not found
application/json
500
Internal server error
application/json
get
GET /api/v2/projects/suggested HTTP/1.1
Host: api.ethos.network
Accept: */*
[
  {
    "id": 1,
    "userkey": "text",
    "status": "ACTIVE",
    "bannerImageUrl": "https://example.com",
    "isPromoted": true,
    "description": "text",
    "createdAt": "text",
    "updatedAt": "text",
    "user": {
      "id": 1,
      "profileId": 1,
      "displayName": "text",
      "username": "text",
      "avatarUrl": "https://example.com",
      "description": "text",
      "score": 1,
      "status": "ACTIVE",
      "userkeys": [
        "text"
      ],
      "xpTotal": 1,
      "xpStreakDays": 1,
      "stats": {
        "review": {
          "received": {
            "negative": 1,
            "neutral": 1,
            "positive": 1
          }
        },
        "vouch": {
          "given": {
            "amountWeiTotal": 1,
            "count": 1
          },
          "received": {
            "amountWeiTotal": 1,
            "count": 1
          }
        }
      }
    },
    "votes": {
      "bullish": {
        "topVoters": [
          {
            "id": 1,
            "profileId": 1,
            "displayName": "text",
            "username": "text",
            "avatarUrl": "https://example.com",
            "description": "text",
            "score": 1,
            "status": "ACTIVE",
            "userkeys": [
              "text"
            ],
            "xpTotal": 1,
            "xpStreakDays": 1,
            "stats": {
              "review": {
                "received": {
                  "negative": 1,
                  "neutral": 1,
                  "positive": 1
                }
              },
              "vouch": {
                "given": {
                  "amountWeiTotal": 1,
                  "count": 1
                },
                "received": {
                  "amountWeiTotal": 1,
                  "count": 1
                }
              }
            }
          }
        ],
        "total": 1,
        "uniqueVoters": 1
      },
      "bearish": {
        "topVoters": [
          {
            "id": 1,
            "profileId": 1,
            "displayName": "text",
            "username": "text",
            "avatarUrl": "https://example.com",
            "description": "text",
            "score": 1,
            "status": "ACTIVE",
            "userkeys": [
              "text"
            ],
            "xpTotal": 1,
            "xpStreakDays": 1,
            "stats": {
              "review": {
                "received": {
                  "negative": 1,
                  "neutral": 1,
                  "positive": 1
                }
              },
              "vouch": {
                "given": {
                  "amountWeiTotal": 1,
                  "count": 1
                },
                "received": {
                  "amountWeiTotal": 1,
                  "count": 1
                }
              }
            }
          }
        ],
        "total": 1,
        "uniqueVoters": 1
      }
    },
    "categories": [
      {
        "id": 1,
        "name": "text",
        "slug": "text",
        "description": "text"
      }
    ],
    "chains": [
      {
        "id": 1,
        "name": "text",
        "url": "https://example.com",
        "iconUrl": "https://example.com"
      }
    ],
    "commentCount": 1
  }
]

Get a specific project by ID

get
Path parameters
projectIdintegerRequired
Responses
200
Successful response
application/json
400
Invalid input data
application/json
404
Not found
application/json
500
Internal server error
application/json
get
GET /api/v2/projects/{projectId} HTTP/1.1
Host: api.ethos.network
Accept: */*
{
  "id": 1,
  "userkey": "text",
  "status": "ACTIVE",
  "bannerImageUrl": "https://example.com",
  "isPromoted": true,
  "description": "text",
  "createdAt": "text",
  "updatedAt": "text"
}

Get detailed information for a specific project

get
Path parameters
projectIdintegerRequired
Query parameters
topVotersLimitnumber · max: 100OptionalDefault: 3
Responses
200
Successful response
application/json
400
Invalid input data
application/json
404
Not found
application/json
500
Internal server error
application/json
get
GET /api/v2/projects/{projectId}/details HTTP/1.1
Host: api.ethos.network
Accept: */*
{
  "id": 1,
  "userkey": "text",
  "status": "ACTIVE",
  "bannerImageUrl": "https://example.com",
  "isPromoted": true,
  "description": "text",
  "createdAt": "text",
  "updatedAt": "text",
  "user": {
    "id": 1,
    "profileId": 1,
    "displayName": "text",
    "username": "text",
    "avatarUrl": "https://example.com",
    "description": "text",
    "score": 1,
    "status": "ACTIVE",
    "userkeys": [
      "text"
    ],
    "xpTotal": 1,
    "xpStreakDays": 1,
    "stats": {
      "review": {
        "received": {
          "negative": 1,
          "neutral": 1,
          "positive": 1
        }
      },
      "vouch": {
        "given": {
          "amountWeiTotal": 1,
          "count": 1
        },
        "received": {
          "amountWeiTotal": 1,
          "count": 1
        }
      }
    }
  },
  "votes": {
    "bullish": {
      "topVoters": [
        {
          "id": 1,
          "profileId": 1,
          "displayName": "text",
          "username": "text",
          "avatarUrl": "https://example.com",
          "description": "text",
          "score": 1,
          "status": "ACTIVE",
          "userkeys": [
            "text"
          ],
          "xpTotal": 1,
          "xpStreakDays": 1,
          "stats": {
            "review": {
              "received": {
                "negative": 1,
                "neutral": 1,
                "positive": 1
              }
            },
            "vouch": {
              "given": {
                "amountWeiTotal": 1,
                "count": 1
              },
              "received": {
                "amountWeiTotal": 1,
                "count": 1
              }
            }
          }
        }
      ],
      "total": 1,
      "uniqueVoters": 1
    },
    "bearish": {
      "topVoters": [
        {
          "id": 1,
          "profileId": 1,
          "displayName": "text",
          "username": "text",
          "avatarUrl": "https://example.com",
          "description": "text",
          "score": 1,
          "status": "ACTIVE",
          "userkeys": [
            "text"
          ],
          "xpTotal": 1,
          "xpStreakDays": 1,
          "stats": {
            "review": {
              "received": {
                "negative": 1,
                "neutral": 1,
                "positive": 1
              }
            },
            "vouch": {
              "given": {
                "amountWeiTotal": 1,
                "count": 1
              },
              "received": {
                "amountWeiTotal": 1,
                "count": 1
              }
            }
          }
        }
      ],
      "total": 1,
      "uniqueVoters": 1
    }
  },
  "categories": [
    {
      "id": 1,
      "name": "text",
      "slug": "text",
      "description": "text"
    }
  ],
  "chains": [
    {
      "id": 1,
      "name": "text",
      "url": "https://example.com",
      "iconUrl": "https://example.com"
    }
  ],
  "commentCount": 1,
  "links": [
    {
      "type": "WEBSITE",
      "url": "https://example.com"
    }
  ]
}

Get detailed information for a specific project by username

get
Path parameters
usernamestringRequired
Query parameters
topVotersLimitnumberOptionalDefault: 3
Responses
200
Successful response
application/json
400
Invalid input data
application/json
404
Not found
application/json
500
Internal server error
application/json
get
GET /api/v2/projects/username/{username} HTTP/1.1
Host: api.ethos.network
Accept: */*
{
  "id": 1,
  "userkey": "text",
  "status": "ACTIVE",
  "bannerImageUrl": "https://example.com",
  "isPromoted": true,
  "description": "text",
  "createdAt": "text",
  "updatedAt": "text",
  "user": {
    "id": 1,
    "profileId": 1,
    "displayName": "text",
    "username": "text",
    "avatarUrl": "https://example.com",
    "description": "text",
    "score": 1,
    "status": "ACTIVE",
    "userkeys": [
      "text"
    ],
    "xpTotal": 1,
    "xpStreakDays": 1,
    "stats": {
      "review": {
        "received": {
          "negative": 1,
          "neutral": 1,
          "positive": 1
        }
      },
      "vouch": {
        "given": {
          "amountWeiTotal": 1,
          "count": 1
        },
        "received": {
          "amountWeiTotal": 1,
          "count": 1
        }
      }
    }
  },
  "votes": {
    "bullish": {
      "topVoters": [
        {
          "id": 1,
          "profileId": 1,
          "displayName": "text",
          "username": "text",
          "avatarUrl": "https://example.com",
          "description": "text",
          "score": 1,
          "status": "ACTIVE",
          "userkeys": [
            "text"
          ],
          "xpTotal": 1,
          "xpStreakDays": 1,
          "stats": {
            "review": {
              "received": {
                "negative": 1,
                "neutral": 1,
                "positive": 1
              }
            },
            "vouch": {
              "given": {
                "amountWeiTotal": 1,
                "count": 1
              },
              "received": {
                "amountWeiTotal": 1,
                "count": 1
              }
            }
          }
        }
      ],
      "total": 1,
      "uniqueVoters": 1
    },
    "bearish": {
      "topVoters": [
        {
          "id": 1,
          "profileId": 1,
          "displayName": "text",
          "username": "text",
          "avatarUrl": "https://example.com",
          "description": "text",
          "score": 1,
          "status": "ACTIVE",
          "userkeys": [
            "text"
          ],
          "xpTotal": 1,
          "xpStreakDays": 1,
          "stats": {
            "review": {
              "received": {
                "negative": 1,
                "neutral": 1,
                "positive": 1
              }
            },
            "vouch": {
              "given": {
                "amountWeiTotal": 1,
                "count": 1
              },
              "received": {
                "amountWeiTotal": 1,
                "count": 1
              }
            }
          }
        }
      ],
      "total": 1,
      "uniqueVoters": 1
    }
  },
  "categories": [
    {
      "id": 1,
      "name": "text",
      "slug": "text",
      "description": "text"
    }
  ],
  "chains": [
    {
      "id": 1,
      "name": "text",
      "url": "https://example.com",
      "iconUrl": "https://example.com"
    }
  ],
  "commentCount": 1,
  "links": [
    {
      "type": "WEBSITE",
      "url": "https://example.com"
    }
  ]
}

List team members for a project

get
Path parameters
projectIdintegerRequired
Query parameters
limitinteger · max: 50OptionalDefault: 50
offsetnumberOptionalDefault: 0
Responses
200
Successful response
application/json
400
Invalid input data
application/json
404
Not found
application/json
500
Internal server error
application/json
get
GET /api/v2/projects/{projectId}/team HTTP/1.1
Host: api.ethos.network
Accept: */*
[
  {
    "id": 1,
    "profileId": 1,
    "displayName": "text",
    "username": "text",
    "avatarUrl": "https://example.com",
    "description": "text",
    "score": 1,
    "status": "ACTIVE",
    "userkeys": [
      "text"
    ],
    "xpTotal": 1,
    "xpStreakDays": 1,
    "stats": {
      "review": {
        "received": {
          "negative": 1,
          "neutral": 1,
          "positive": 1
        }
      },
      "vouch": {
        "given": {
          "amountWeiTotal": 1,
          "count": 1
        },
        "received": {
          "amountWeiTotal": 1,
          "count": 1
        }
      }
    }
  }
]

Remove a team member from a project (Admin or Project Owner only)

delete
Authorizations
Path parameters
projectIdintegerRequired
Query parameters
userIdsinteger[]Required
Responses
200
Successful response
application/json
Responseany
400
Invalid input data
application/json
401
Authorization not provided
application/json
403
Insufficient access
application/json
404
Not found
application/json
500
Internal server error
application/json
delete
DELETE /api/v2/projects/{projectId}/team HTTP/1.1
Host: api.ethos.network
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*

No content

Remove a chain from a project (Admin or Project Owner only)

delete
Authorizations
Path parameters
projectIdnumberRequired
Query parameters
chainIdnumberRequired
Responses
200
Successful response
application/json
400
Invalid input data
application/json
401
Authorization not provided
application/json
403
Insufficient access
application/json
404
Not found
application/json
500
Internal server error
application/json
delete
DELETE /api/v2/projects/{projectId}/chains HTTP/1.1
Host: api.ethos.network
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "chains": [
    {
      "id": 1,
      "name": "text",
      "url": "https://example.com",
      "iconUrl": "https://example.com"
    }
  ]
}

Confirm project creation using a token (Admin only)

get
Authorizations
Query parameters
userkeystringRequired
timeoutnumberOptionalDefault: 30000
Responses
200
Successful response
application/json
400
Invalid input data
application/json
401
Authorization not provided
application/json
403
Insufficient access
application/json
404
Not found
application/json
500
Internal server error
application/json
get
GET /api/v2/projects/confirm HTTP/1.1
Host: api.ethos.network
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "id": 1,
  "userkey": "text",
  "status": "ACTIVE",
  "bannerImageUrl": "https://example.com",
  "isPromoted": true,
  "description": "text",
  "createdAt": "text",
  "updatedAt": "text",
  "user": {
    "id": 1,
    "profileId": 1,
    "displayName": "text",
    "username": "text",
    "avatarUrl": "https://example.com",
    "description": "text",
    "score": 1,
    "status": "ACTIVE",
    "userkeys": [
      "text"
    ],
    "xpTotal": 1,
    "xpStreakDays": 1,
    "stats": {
      "review": {
        "received": {
          "negative": 1,
          "neutral": 1,
          "positive": 1
        }
      },
      "vouch": {
        "given": {
          "amountWeiTotal": 1,
          "count": 1
        },
        "received": {
          "amountWeiTotal": 1,
          "count": 1
        }
      }
    }
  },
  "votes": {
    "bullish": {
      "topVoters": [
        {
          "id": 1,
          "profileId": 1,
          "displayName": "text",
          "username": "text",
          "avatarUrl": "https://example.com",
          "description": "text",
          "score": 1,
          "status": "ACTIVE",
          "userkeys": [
            "text"
          ],
          "xpTotal": 1,
          "xpStreakDays": 1,
          "stats": {
            "review": {
              "received": {
                "negative": 1,
                "neutral": 1,
                "positive": 1
              }
            },
            "vouch": {
              "given": {
                "amountWeiTotal": 1,
                "count": 1
              },
              "received": {
                "amountWeiTotal": 1,
                "count": 1
              }
            }
          }
        }
      ],
      "total": 1,
      "uniqueVoters": 1
    },
    "bearish": {
      "topVoters": [
        {
          "id": 1,
          "profileId": 1,
          "displayName": "text",
          "username": "text",
          "avatarUrl": "https://example.com",
          "description": "text",
          "score": 1,
          "status": "ACTIVE",
          "userkeys": [
            "text"
          ],
          "xpTotal": 1,
          "xpStreakDays": 1,
          "stats": {
            "review": {
              "received": {
                "negative": 1,
                "neutral": 1,
                "positive": 1
              }
            },
            "vouch": {
              "given": {
                "amountWeiTotal": 1,
                "count": 1
              },
              "received": {
                "amountWeiTotal": 1,
                "count": 1
              }
            }
          }
        }
      ],
      "total": 1,
      "uniqueVoters": 1
    }
  },
  "categories": [
    {
      "id": 1,
      "name": "text",
      "slug": "text",
      "description": "text"
    }
  ],
  "chains": [
    {
      "id": 1,
      "name": "text",
      "url": "https://example.com",
      "iconUrl": "https://example.com"
    }
  ],
  "commentCount": 1,
  "links": [
    {
      "type": "WEBSITE",
      "url": "https://example.com"
    }
  ]
}
  • GETList all projects based on filters
  • GETGet suggested projects for a user
  • GETGet a specific project by ID
  • PUTUpdate an existing project (Admin or Project Owner only)
  • GETGet detailed information for a specific project
  • GETGet detailed information for a specific project by username
  • GETList team members for a project
  • POSTAdd team members to a project (Admin or Project Owner only)
  • DELETERemove a team member from a project (Admin or Project Owner only)
  • POSTAdd a chain to a project (Admin or Project Owner only)
  • DELETERemove a chain from a project (Admin or Project Owner only)
  • GETConfirm project creation using a token (Admin only)

Update an existing project (Admin or Project Owner only)

put
Authorizations
Path parameters
projectIdintegerRequired
Body
descriptionstringOptional
bannerImageUrlstring · uri | nullableOptional
categoryIdsinteger[]Optional
chainsinteger[]Optional
isPromotedbooleanOptional
launchDatestringOptional
statusstring · enumOptionalPossible values:
Responses
200
Successful response
application/json
400
Invalid input data
application/json
401
Authorization not provided
application/json
403
Insufficient access
application/json
404
Not found
application/json
500
Internal server error
application/json
put
PUT /api/v2/projects/{projectId} HTTP/1.1
Host: api.ethos.network
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 205

{
  "description": "text",
  "bannerImageUrl": "https://example.com",
  "categoryIds": [
    1
  ],
  "chains": [
    1
  ],
  "isPromoted": true,
  "launchDate": "text",
  "links": [
    {
      "type": "WEBSITE",
      "url": "https://example.com"
    }
  ],
  "status": "ACTIVE"
}
{
  "id": 1,
  "userkey": "text",
  "status": "ACTIVE",
  "bannerImageUrl": "https://example.com",
  "isPromoted": true,
  "description": "text",
  "createdAt": "text",
  "updatedAt": "text"
}

Add team members to a project (Admin or Project Owner only)

post
Authorizations
Path parameters
projectIdintegerRequired
Body
userIdsinteger[]Required
Responses
200
Successful response
application/json
Responseany
400
Invalid input data
application/json
401
Authorization not provided
application/json
403
Insufficient access
application/json
500
Internal server error
application/json
post
POST /api/v2/projects/{projectId}/team HTTP/1.1
Host: api.ethos.network
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 15

{
  "userIds": [
    1
  ]
}

No content

Add a chain to a project (Admin or Project Owner only)

post
Authorizations
Path parameters
projectIdnumberRequired
Body
chainIdnumberRequired
Responses
200
Successful response
application/json
400
Invalid input data
application/json
401
Authorization not provided
application/json
403
Insufficient access
application/json
500
Internal server error
application/json
post
POST /api/v2/projects/{projectId}/chains HTTP/1.1
Host: api.ethos.network
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 13

{
  "chainId": 1
}
{
  "chains": [
    {
      "id": 1,
      "name": "text",
      "url": "https://example.com",
      "iconUrl": "https://example.com"
    }
  ]
}