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