KX API User Documentation¶
Introduction¶
Welcome to the KX API! This documentation provides all the information you need to interact with the API.
Create DAO¶
Endpoint: POST /dao/create
Description: Create a new DAO.
Request:
{
"name": "DAO Name",
"admin": {
"twitterId": "adminTwitterId",
"twitterUsername": "adminUsername"
}
}
Response:
{
"_id": "daoId",
"name": "DAO Name",
"members": [
{
"twitterId": "adminTwitterId",
"twitterUsername": "adminUsername"
}
],
"admins": [
{
"twitterId": "adminTwitterId",
"twitterUsername": "adminUsername"
}
],
"customRoles": [],
"pendingVotes": []
}
Add Member to DAO¶
Endpoint: POST /dao/add-member
Description: Add a member to a DAO.
Request:
{
"daoId": "DAO ID",
"members": [
{
"twitterId": "memberTwitterId",
"twitterUsername": "memberUsername"
}
]
}
Response:
{
"_id": "daoId",
"name": "DAO Name",
"members": [
{
"twitterId": "adminTwitterId",
"twitterUsername": "adminUsername"
},
{
"twitterId": "memberTwitterId",
"twitterUsername": "memberUsername"
}
],
"admins": [
{
"twitterId": "adminTwitterId",
"twitterUsername": "adminUsername"
}
],
"customRoles": [],
"pendingVotes": []
}
Add Admin to DAO¶
Endpoint: POST /dao/add-admin
Description: Add an admin to a DAO.
Request:
{
"daoId": "DAO ID",
"admins": [
{
"twitterId": "adminTwitterId",
"twitterUsername": "adminUsername"
}
]
}
Response:
{
"_id": "daoId",
"name": "DAO Name",
"members": [...],
"admins": [
{
"twitterId": "adminTwitterId",
"twitterUsername": "adminUsername"
}
],
...
}
Assign Custom Role¶
Endpoint: POST /dao/assign-role
Description: Assign a custom role to a member in a DAO.
Request:
{
"daoId": "DAO ID",
"memberTwitterUsername": "memberUsername",
"roleName": "Role Name",
"permissions": ["Permission1", "Permission2"]
}
Response:
{
"_id": "daoId",
"name": "DAO Name",
"members": [
{
"twitterId": "memberTwitterId",
"twitterUsername": "memberUsername",
"customRole": {
"roleName": "Role Name",
"permissions": ["Permission1", "Permission2"]
}
}
],
...
}
Update Member in DAO¶
Endpoint: PUT /dao/update-member
Description: Update a member’s information in a DAO.
Request:
{
"daoId": "DAO ID",
"member": {
"twitterId": "memberTwitterId",
"twitterUsername": "memberUsername",
"customRole": {
"roleName": "Role Name",
"permissions": ["Permission1", "Permission2"]
}
}
}
Response:
{
"_id": "daoId",
"name": "DAO Name",
"members": [
{
"twitterId": "memberTwitterId",
"twitterUsername": "memberUsername",
"customRole": {
"roleName": "Role Name",
"permissions": ["Permission1", "Permission2"]
}
}
],
...
}
Update Admin in DAO¶
Endpoint: PUT /dao/update-admin
Description: Update an admin’s information in a DAO.
Request:
{
"daoId": "DAO ID",
"admin": {
"twitterId": "adminTwitterId",
"twitterUsername": "adminUsername"
}
}
Response:
{
"_id": "daoId",
"name": "DAO Name",
"admins": [
{
"twitterId": "adminTwitterId",
"twitterUsername": "adminUsername"
}
],
...
}
Delete Member from DAO¶
Endpoint: DELETE /dao/delete-member
Description: Delete a member from a DAO.
Request:
{
"daoId": "DAO ID",
"twitterUsername": "memberUsername"
}
Response:
{
"_id": "daoId",
"name": "DAO Name",
"members": [...],
...
}
Delete Admin from DAO¶
Endpoint: DELETE /dao/delete-admin
Description: Delete an admin from a DAO.
Request:
{
"daoId": "DAO ID",
"twitterUsername": "adminUsername"
}
Response:
{
"_id": "daoId",
"name": "DAO Name",
"admins": [...],
...
}
Get DAO Info¶
Endpoint: GET /dao/:daoName
Description: Get information about a specific DAO.
Request:
GET /dao/DAO_NAME
Response:
{
"_id": "daoId",
"name": "DAO Name",
"members": [...],
"admins": [...],
"customRoles": [...],
"pendingVotes": [...]
}
Get DAOs¶
Endpoint: GET /daos
Description: Get a list of all DAOs.
Request:
GET /daos
Response:
[
{
"_id": "daoId1",
"name": "DAO Name 1",
...
},
{
"_id": "daoId2",
"name": "DAO Name 2",
...
}
]
Create Poll¶
Endpoint: POST /polls/create
Description: Create a new Twitter poll.
Request:
{
"question": "Poll question",
"choices": ["Option 1", "Option 2"],
"durationMinutes": 60,
"method": "reply_all",
"daoId": "DAO ID"
}
Response:
{
"_id": "pollId",
"question": "Poll question",
"choices": ["Option 1", "Option 2"],
"durationMinutes": 60,
...
}
Get Poll Results¶
Endpoint: GET /polls/results/:pollId
Description: Get the results of a specific Twitter poll.
Request:
GET /polls/results/POLL_ID
Response:
{
"_id": "pollId",
"question": "Poll question",
"choices": ["Option 1", "Option 2"],
"votes": [
{
"userId": "userId1",
"choice": "Option 1"
},
...
]
}
Get Stored Polls¶
Endpoint: GET /polls/stored
Description: Get a list of all stored polls.
Request:
GET /polls/stored
Response:
[
{
"_id": "pollId1",
"question": "Poll question 1",
"choices": ["Option 1", "Option 2"],
...
},
{
"_id": "pollId2",
"question": "Poll question 2",
"choices": ["Option 1", "Option 2"],
...
}
]
Cast Vote¶
Endpoint: POST /polls/cast-vote
Description: Cast a vote in a poll.
Request:
{
"pollId": "POLL_ID",
"choice": "Option 1",
"userId": "USER_ID",
"daoName": "DAO Name"
}
Response:
{
"message": "Vote cast successfully"
}
Get Twitter ID by Username¶
Endpoint: POST /polls/twitter-id
Description: Get Twitter ID(s) by username(s).
Request:
{
"usernames": ["username1", "username2"]
}
Response:
[
{
"username": "username1",
"id": "twitterId1"
},
{
"username": "username2",
"id": "twitterId2"
}
]
Register¶
Endpoint: POST /register
Description: Register a new user.
Request:
POST /register
Response:
{
"message": "User registered successfully"
}
Twitter Callback¶
Endpoint: GET /twitter/callback
Description: Twitter OAuth callback.
Request:
GET /twitter/callback
Response:
{
"message": "Twitter callback successful"
}
Check Session Status¶
Endpoint: GET /status
Description: Check the session status of the user.
Request:
GET /status
Response:
{
"authenticated": true,
"user": {
"id": "userId",
...
}
}