---
tags: RIPs, Dungeon Master
---
# Dungeon Master DB & API Spec
## DB Tables
### Raids
| Name | Identifier | Type | Optional | Note |
| ------------------------ | ------------------- | --------------------- | -------- | ----------------------------------- |
| Raid ID | id | id | auto | |
| Raid Name | raid_name | string | no | |
| Contact Name | contact_name | string | yes | |
| Raid Status | raid_status | string - options | no | default: Uncategorized |
| Point Member | point_member | foreign_key: member | yes | |
| Escrow Index | escrow_index | integer | yes | ro - set by system at creation |
| Invoice | invoice_id | integer/string | yes | could be automated, probably manual |
| Contact Email | contact_email | string | yes | |
| Contact Bio | contact_bio | text | yes | |
| Contact Email | contact_email | string | yes | |
| Contact Telegram | contact_telegram | string | yes | |
| Contact Discord | contact_discord | string | yes | |
| Contact Twitter | contact_twitter | string | yes | |
| Preferred Contact Method | preferred_contact | string - options | yes | twitter, discord, telegram, email |
| Project Type | type | string - options | no | existing/new |
| **Project Category** | category | string - options | yes | cleric input, category of work needed |
| Project Specs | specs | string - options | yes | has spec, needs help |
| Specs Link | specs_link | string - URL | yes | check is URL |
| Project Description | description | text | no? | |
| Services Required | services_required | json - multi-select | no | roles selection |
| Desired Delivery | desired_delivery | date | no | at least 2(?) weeks in the future* |
| Additional Information | additional_info | text | yes | |
| Delivery Priorities | delivery_priorities | json - multi-select | no | pick 2 of 3: fast, cheap, inexpensive |
| Consultation Hash | consult_tx | string | yes | empty for non-paid |
| Escrow Hash | escrow_tx | string | yes | |
| Guild Referral | referral_source | string | yes | |
| Form Feedback | hire_us_feedback | text | yes | |
| Form Rating | rating | integer | yes | |
| **Raid Start Date** | raid_start | date | yes | date when status set to prepraring for battle |
| **Raid Shipped Date** | raid_ship | date | yes | date when status set to shipped or lost |
| **Help Needed** | help_need | json - multi-select | yes | roles looking for |
| Portfolio Title | portfolio_title | string | yes | separate "public" title |
| Portfolio Category | portfolio_category | string - options | yes | could be merged with category? |
| Portfolio Blurb | portfolio_blurb | string | yes | |
| Portfolio Icon | portfolio_icon | string | yes | |
| Portfolio Roles | portfolio_roles | string - multiselect | yes | |
| Portfolio Case Study | portfolio_case | text | yes | |
| Portfolio Video | portfolio_video | date | yes | |
| Portfolio Public | portfolio_public | boolean | no | default: `false` |
| Created | created | date | no | auto on creation of record |
| Updated | updated | date | no | auto update on each update of a record |
| **Spoils Tx** | spoils_tx | string - hash | yes | |
- smart escrow fields?
- raid & camp channels?
### Members
| Name | Identifier | Type | Note |
| -------- | -------- | -------- | -------- |
| Name | name | string | |
| Guild Class | class | string - options | |
| Primary Skills | primary_skills | string - multiselect | |
| Secondary Skills | secondary_skills | string - multiselect | |
| Discord Handle | discord | string | |
| Telegram Handle | telegram | string | |
| Github Handle | github | string | |
| Twitter Handle | twitter | string | |
| Email | email | string | |
| ENS Name | ens | string | |
| Ethereum Address | eth_address | string | |
| Pledge Ready | pledge | boolean | |
| Member Status | status | string - options | |
| Introduction | introduction | text | |
| Raiding | raiding_status | boolean | |
#### Apprentice/Cohort Fields on Member Table
| Name | Identifier | Type | Question Text |
| -------- | -------- | -------- | -------- |
| Learning Goals | goals | text | |
| Technical Skills | technical | boolean | |
| Passions | goals | text | |
| Favorites | goals | text | |
| Years in crypto | crypto_exp | integer | |
| DAO Experience | dao_exp | string - options | |
| Why Crypto | why_crypto | text | |
| Why RaidGuild | why_raidguild | text | |
| Read Handbook | handbook_read | text | |
| Cohort Availability | cohort_availability | string - multiselect | |
| Application Note | application_note | text | |
| Application Date | application_date | date | |
| **Membership Date** | membership_date | date | |
| **Referred By** | referrer | foreign_key: member | |
| **Championed By** | champion | foreign_key: member | |
### Raid Parties
| Name | Identifier | Type |
| -------- | -------- | -------- |
| Raid Party Member ID | id | id |
| Raid | raid | foreign_key: raid |
| Member | member | foreign_key: member |
### Raid Comments
| Name | Identifier | Type |
| -------- | -------- | -------- |
| Raid Comment ID | id | id |
| Raid | raid | foreign_key: raid |
| Member | member | foreign_key: member |
| Comment | comment | text |
### Related Raids
| Name | Identifier | Type |
| -------- | -------- | -------- |
| Related Raid ID | id | id |
| Raid | raid | foreign_key: raid |
| Related Raid | related_raid | foreign_key: raid |
| Relationship | relationship | string |
### Raid Status Update
| Name | Identifier | Type |
| -------- | -------- | -------- |
| Status Update ID | id | id |
| Raid | raid | foreign_key: raid |
| Status | status | status options |
| Raider | raider | foreign_key: member that updated |
## API Endpoints
API Base: `https://keeper.raidguild.org`
### Get Raids
GET `/raids`
200 Returns
```json
[{id, raid_name, ..., created, updated},
{id, raid_name, ..., created, updated},
...
]
```
### Get Raid
GET `/raid/{ID}`
is any member data returned with `raid_party`?
200 Returns
```json
{id, raid_name, ..., created, updated}
```
### Create Raid
POST `/raid/`
Through Hire Us or clerics. Could open to all members potentially.
200 Returns
```json
{id}
```
### Update Raid
PUT `/raid/{ID}`
Limit to raid party members & clerics
200 Returns
```json
{id, raid_name, ..., created, updated}
```
### Get Members
GET `/members`
200 Returns
```json
[{name, guild_class, ..., introduction, raiding},
{name, guild_class, ..., introduction, raiding},
...
]
```
### Get Member
GET `/member/{ID}`
200 Returns
```json
{name, guild_class, ..., introduction, raiding}
```
### Create Member
POST `/member/`
from Join Us form only*
200 Returns
```json
{id}
```
### Update Member
PUT `/member/{ID}`
for member/cleric only
200 Returns
```json
{name, guild_class, ..., introduction, raiding}
```
### Add Raid Comment
POST `/raid/comment`
200 Returns
```json
{id}
```