---
# System prepended metadata

title: Dungeon Master DB & API Spec
tags: [' Dungeon Master', RIPs]

---

---
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}
```


