NAV Navbar
(615) 628-4934
  • oxeate
  • Authentication
  • (909) 895-5777
  • (501) 875-4316
  • Lineup Groupings
  • Schedule Groupings
  • Stages
  • barbudo
  • Changes
  • double-surfaced
  • Introduction

    Welcome to the DoStuff Festival API! You can use our API to access your festival data.

    Examples are included on the right hand side for Curl.

    Authentication

    To authorize, use this code:

    curl "/fest-admin.dostff.co/api/v2/properties"
      -H "DS-Api-Key: apikey"
    

    An authorized user request, use this code:

    curl "/fest-admin.dostff.co/api/v2/festival_artists/<Artist ID>/toggle_pick"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>" /
      -H "Authorization: Bearer <Token>"
    

    Make sure to replace festivalapikey with your API key.

    DoStuff Festival API uses API keys to allow access to the API. You will be provided an API key by us.

    The API key must be included in the headers of each request using DS-Api-Key

    All requests must include a DS-Festival-ID. The only expection is the properties endpoint GET /fest-admin.dostff.co/api/v2/properties

    After authenticating a festival user, their token must be included in the headers of request Authorization: Bearer <Token>.

    Festivals

    Get All Festivals

    This endpoint retrieves all properties that you have access to.

    HTTP Request

    GET /fest-admin.dostff.co/api/v2/properties

    curl "/fest-admin.dostff.co/api/v2/properties"
      -H "DS-API-Key: festivalapikey"
    

    The above command returns JSON structured like this:

    {
      "id": 1,
      "type": "festival",
      "title": "Super Rad Fest",
      "share_url": "",
      "logo": "/image.domain/image.png",
      "background_image": "",
      "primary_color": "#e3a123",
      "dates": {
          "start_date": "2018-11-10",
          "end_date": "2018-11-12"
      },
      "shortcuts": [],
      "style": {
        "font_declarations": "",
        "background_color": "",
        "headline_font_family": "'Wigrum-Bold'",
        "body_font_family": "'Wigrum-Bold'",
        "headline_text_color": "#252525",
        "body_text_color": "#252525",
        "link_color": "#f15d55",
        "link_hover_color": "#e34e44",
        "icon_color": "#346db6",
        "block_bg_color": "#000000",
        "block_text_color": "#f5f3eb",
        "added_block_bg_color": "#000000",
        "added_block_text_color": "#f5f3eb",
        "button_bg_color": "#346db6",
        "button_text_color": "#f5f3eb",
        "modal_curtain_background": "rgba(37, 35, 37, 0.9)",
        "stage_font_color": "",
        "stage_bg_color": "",
        "grid_times_font_color": "#282828",
        "headline_font_color": "",
        "body_font_color": "",
        "button_hover_color": "",
        "lineup_text_font_family": "'Montserrat', sans-serif",
        "lineup_text_font_weight": "bold",
        "lineup_text_font_size": "24px",
        "lineup_text_font_padding": "10px",
        "lineup_text_font_spacing": "1px",
        "lineup_text_bullet_color": "#282828",
        "lineup_text_bullet_size": "20px",
        "lineup_text_bullet_padding": "10px",
        "lineup_text_default_color": "#282828",
        "lineup_text_added_color": "#e3a123",
        "lineup_text_hover_color": "#ffffff",
        "lineup_text_hover_bg_color": "#e3a123",
        "lineup_image_font_family": "'Montserrat', sans-serif",
        "lineup_image_font_weight": "bold",
        "lineup_image_font_size": "1em",
        "lineup_image_font_spacing": "1px",
        "lineup_image_font_padding": "1em",
        "lineup_image_bg_color": "#282828",
        "lineup_image_font_color": "#ffffff",
        "lineup_image_added_bg_color": "#e3a123",
        "lineup_image_added_font_color": "#ffffff",
        "lineup_image_border_width": "4px",
        "lineup_image_added_border_width": "4px",
        "quickview_headline_font_family": "'Montserrat', sans-serif",
        "quickview_headline_font_weight": "bold",
        "quickview_body_font_family": "'Helvetica', sans-serif",
        "quickview_body_font_weight": "normal",
        "quickview_headline_font_color": "#282828",
        "quickview_body_font_color": "#282828",
        "quickview_inner_background_color": "#ffffff",
        "quickview_outer_background_color": "rgba(0, 0, 0, 0.85)",
        "quickview_outer_icon_color": "#ffffff",
        "quickview_social_icon_color": "#e3a123",
        "quickview_button_font_color": "#ffffff",
        "quickview_button_bg_color": "#282828",
        "quickview_button_added_bg_color": "#e3a123",
        "quickview_button_added_font_color": "#ffffff",
        "schedule_stage_font_color": "#ffffff",
        "schedule_stage_font_size": "18px",
        "schedule_stage_bg_color": "#000000",
        "schedule_stage_font_family": "'Montserrat', sans-serif",
        "schedule_stage_font_weight": "bold",
        "grid_bg_color": "",
        "schedule_show_font_size": "14px",
        "schedule_show_font_family": "'Montserrat', sans-serif",
        "schedule_show_artist_images": "0",
        "schedule_show_font_weight": "normal",
        "schedule_show_font_color": "#ffffff",
        "schedule_show_bg_color": "#949494",
        "schedule_show_added_font_color": "#ffffff",
        "schedule_show_added_bg_color": "#e3a123",
        "schedule_show_vote_font_color": "#ffffff",
        "schedule_show_vote_bg_color": "#e3a123",
        "schedule_show_added_vote_font_color": "#ffffff",
        "schedule_show_added_vote_bg_color": "#282828",
        "mobile_primary_color": "#8c2727"
      }
    }
    

    Response Fields

    Field type Description
    id Integer ID of the festival
    type String Internally used entity type
    title String The festival title
    share_url URL String A shareable URL for the Festival
    logo URL String URL for the Festival logo
    background_image N/A IGNORE
    dates Date Start and end date for the festival
    style JSON Custom colors and CSS options used with frontend embed

    Festival Artists

    Get All Festival Artists

    HTTP Request

    GET /fest-admin.dostff.co/api/v2/festival_artists

    curl "/fest-admin.dostff.co/api/v2/festival_artists/"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>"
    

    The above command returns JSON structured like this:

    {
      "festival_artists": [
        {
          "name": "Yeah Yeah Yeahs",
          "image": "/image.domain/image.jpg",
          "id": 3,
          "bio": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>\n\n<p>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>",
          "web_site_url": "/www.yeahyeahyeahs.com/",
          "instagram_url": "/www.instagram.com/yeahyeahyeahs/",
          "facebook_url": "/www.facebook.com/yeahyeahyeahs/",
          "twitter_url": "/twitter.com/YYYs",
          "soundcloud_profile_url": "/soundcloud.com/yeah-yeah-yeahs-official",
          "youtube_channel_url": null,
          "spotify_artist_url": "/open.spotify.com/artist/3TNt4aUIxgfy9aoaft5Jj2",
          "music_embed": "<iframe src=\"/open.spotify.com/embed/track/18oWEPapjNt32E6sCM6VLb\" width=\"100%\" height=\"80\" frameborder=\"0\" allowtransparency=\"true\"></iframe>",
          "video_embed": "<iframe width=\"813\" height=\"457\" src=\"/www.youtube.com/embed/oIIxlgcuQRU?vq=1080hd&autoplay=0&rel=0&controls=0&showinfo=0\" frameborder=\"0\" allowfullscreen></iframe>",
          "category": "music"
        }
      ]
    }
    

    URL Parameters

    Parameter Description
    page Page number for paging

    Get Sepecific Festival Artist

    HTTP Request

    GET /fest-admin.dostff.co/api/v2/festival_artists/<ID>

    curl "/fest-admin.dostff.co/api/v2/festival_artists/<ID>"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>"
    

    The above command returns JSON structured like this:

    {
      "festival_artist": {
        "name": "Yeah Yeah Yeahs",
        "image": "/image.domain/image.jpg",
        "id": 3,
        "bio": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>\n\n<p>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>",
        "pick_count": 123,
        "web_site_url": "/www.yeahyeahyeahs.com/",
        "instagram_url": "/www.instagram.com/yeahyeahyeahs/",
        "facebook_url": "/www.facebook.com/yeahyeahyeahs/",
        "twitter_url": "/twitter.com/YYYs",
        "soundcloud_profile_url": "/soundcloud.com/yeah-yeah-yeahs-official",
        "youtube_channel_url": "/youtube.com/yeah-yeah-yeahs-official",
        "spotify_artist_url": "/open.spotify.com/artist/3TNt4aUIxgfy9aoaft5Jj2",
        "music_embed": "<iframe src=\"/open.spotify.com/embed/track/18oWEPapjNt32E6sCM6VLb\" width=\"100%\" height=\"80\" frameborder=\"0\" allowtransparency=\"true\"></iframe>",
        "video_embed": "<iframe width=\"813\" height=\"457\" src=\"/www.youtube.com/embed/oIIxlgcuQRU?vq=1080hd&autoplay=0&rel=0&controls=0&showinfo=0\" frameborder=\"0\" allowfullscreen></iframe>",
        "category": "music",
        "show_times": []
      }
    }
    

    URL Parameters

    Parameter Description
    ID The ID of the artist to retrieve

    Get Sepecific Festival Artist Votes

    HTTP Request

    GET /fest-admin.dostff.co/api/v2/festival_artists/<ID>/votes

    curl "/fest-admin.dostff.co/api/v2/festival_users/<ID>/votes"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>"
    

    The above command returns JSON structured like this:

    
    {
      "votes": [
        {
          "id": 1,
          "user": {
            "id": 1,
            "email": "festival@user.com"
          },
          "artist": {
            "id": 1,
            "name": "Yeah Yeah Yeahs"
          },
          "event": "added",
          "event_at": "2017-12-12T21:27:39.000Z"
        }
      ]
    }
    

    URL Parameters

    Parameter Description
    ID The ID of the artist to retrieve

    Lineup Groupings

    Get All Lineup Groupings

    This endpoint retrieves all Lineup Groupings for the festival.

    HTTP Request

    GET /fest-admin.dostff.co/api/v2/lineup_groupings

    curl "/fest-admin.dostff.co/api/v2/lineup_groupings"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>"
    

    The above command returns JSON structured like this:

    {
      "lineup_groupings": [
        {
          "id": 1,
          "name": "Full Lineup",
          "slug": "full-lineup",
          "hidden": false
        },
        {
          "id": 2,
          "name": "By Day Lineup",
          "slug": "by-day-lineup",
          "hidden": false
        }
      ]
    }
    

    Response Fields

    Field type Description
    id Integer ID of the Lineup Grouping
    name String Lineup Grouping name
    slug String URL slug
    hidden Boolean Is the Lineup Grouping hidden from the public?

    Get Specific Lineup Grouping

    This endpoint retrieves a specific Lineup Grouping.

    curl "/fest-admin.dostff.co/api/v2/lineup_groupings/<ID>"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>"
    

    The above command returns JSON structured like this:

    {
      "id": 2,
      "name": "By Day Lineup",
      "slug": "by-day-lineup",
      "lineups": [
        {
          "name": "Friday",
          "id": 4,
          "display_name": "Friday",
          "display_as": "image",
          "title_image":"/image.domain/image.png",
          "poster_image":"/image.domain/image.png",
          "artists": [
            {
              "name": "Yeah Yeah Yeahs",
              "image": "/image.domain/image.jpg",
              "id": 3,
              "bio": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>\n\n<p>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>",
              "web_site_url": "/www.yeahyeahyeahs.com/",
              "instagram_url": "/www.instagram.com/yeahyeahyeahs/",
              "facebook_url": "/www.facebook.com/yeahyeahyeahs/",
              "twitter_url": "/twitter.com/YYYs",
              "soundcloud_profile_url": "/soundcloud.com/yeah-yeah-yeahs-official",
              "youtube_channel_url":"/www.youtube.com/channel/UCfdWrc_PtwU8KGPc861Tf",
              "spotify_artist_url": "/open.spotify.com/artist/3TNt4aUIxgfy9aoaft5Jj2",
              "music_embed": "<iframe src=\"/open.spotify.com/embed/track/18oWEPapjNt32E6sCM6VLb\" width=\"100%\" height=\"80\" frameborder=\"0\" allowtransparency=\"true\"></iframe>",
              "video_embed": "<iframe width=\"813\" height=\"457\" src=\"/www.youtube.com/embed/oIIxlgcuQRU?vq=1080hd&autoplay=0&rel=0&controls=0&showinfo=0\" frameborder=\"0\" allowfullscreen></iframe>",
              "category": "music"
            }
          ]
        },
        {
          "name": "Saturday",
          "id": 6,
          "display_name": "Saturday",
          "display_as": "image",
          "title_image":"/image.domain/image.png",
          "poster_image":"/image.domain/image.png",
          "artists": [
            {
              "name": "The Shins",
              "image": "/image.domain/image.jpg",
              "id": 6,
              "bio": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>\n\n<p>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>",
              "web_site_url": "/theshins.com",
              "instagram_url": "/www.instagram.com/theshins/",
              "facebook_url": "/www.facebook.com/theshins",
              "twitter_url": "/twitter.com/theshins",
              "soundcloud_profile_url": "/soundcloud.com/theshins",
              "youtube_channel_url":"/www.youtube.com/channel/UCfdWrc_PtwU8KGPc861Tf",
              "spotify_artist_url": "/open.spotify.com/artist/4LG4Bs1Gadht7TCrMytQUO",
              "music_embed": "<iframe src=\"/open.spotify.com/embed/track/6qnaCx4wQQBqFd9XdQyWjC\" width=\"100%\" height=\"80\" frameborder=\"0\" allowtransparency=\"true\"></iframe>",
              "video_embed": "<iframe width=\"813\" height=\"457\" src=\"/www.youtube.com/embed/HbFhEUs6u1k?vq=1080hd&autoplay=0&rel=0&controls=0&showinfo=0\" frameborder=\"0\" allowfullscreen></iframe>",
              "category": "music"
            }
          ]
        }
      ]
    }
    

    HTTP Request

    GET /fest-admin.dostff.co/api/v2/lineup_groupings/<ID>

    URL Parameters

    Parameter Description
    ID The ID of the Lineup Grouping to retrieve

    Schedule Groupings

    Get All Schedule Groupings

    This endpoint retrieves all Schedule Groupings for the festival.

    HTTP Request

    GET /fest-admin.dostff.co/api/v2/schedule_groupings

    curl "/fest-admin.dostff.co/api/v2/schedule_groupings"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>"
    

    The above command returns JSON structured like this:

    {
      "schedule_groupings": [
        {
          "id": 1,
          "name": "FRIDAY",
          "slug": "friday",
          "hidden": false
        },
        {
          "id": 2,
          "name": "SATURDAY",
          "slug": "saturday",
          "hidden": false
        }
      ]
    }
    

    Response Fields

    Field type Description
    id Integer ID of the Schedule Grouping
    name String Schedule Grouping name
    slug String URL slug
    hidden Boolean Is the Schedule Grouping hidden from the public?

    Get Specific Schedule Grouping

    This endpoint retrieves a specific Schedule Grouping.

    curl "/fest-admin.dostff.co/api/v2/schedule_groupings/<ID>"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>"
    

    The above command returns JSON structured like this:

    {
      "id":1,
      "name":"FRIDAY",
      "slug":"friday",
      "schedules":[
        {
          "name":"FRIDAY",
          "display_as":"grid",
          "id":1,
          "title_image":"/image.domain/image.png",
          "poster_image":"/image.domain/image.png",
          "grid":{
            "stages":[
              {
                "name":"Stage Name",
                "id":222,
                "title_image":"/image.domain/titleimage.png",
                "shows":[
                  {
                    "id":232,
                    "festival_id":5,
                    "name":"Show Name",
                    "category":null,
                    "start":"2017-10-06T16:00:00.000-04:00",
                    "end":"2017-10-06T16:35:00.000-04:00",
                    "stage":"Festival Main Stage",
                    "artists":[
                      {
                        "name":"Band Name",
                        "image":"/image.domain/image.jpg",
                        "id":517,
                        "bio":"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>\n\n<p>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>",
                        "web_site_url":"/www.google.com",
                        "instagram_url":"/www.google.com",
                        "facebook_url":"/www.facebook.com/band",
                        "twitter_url":"/twitter.com/band",
                        "soundcloud_profile_url":"/soundcloud.com/band",
                        "youtube_channel_url":"/www.youtube.com/channel/UCfdWrc_PtwU8KGPc861Tf",
                        "spotify_artist_url":"/open.spotify.com/artist/f2ywotEk1Mum9rTasda",
                        "music_embed":"<iframe src=\"/open.spotify.com/embed/track/f2ywotEk1Mum9rTasda\" width=\"300\" height=\"380\" frameborder=\"0\" allowtransparency=\"true\"></iframe>",
                        "video_embed":"<iframe width=\"813\" height=\"457\" src=\"/www.youtube.com/embed/UCfdWrc_PtwU8KGPc861Tf?vq=1080hd&amp;autoplay=0&amp;rel=0&amp;controls=0&amp;showinfo=0\" frameborder=\"0\" allowfullscreen></iframe>",
                        "category":"rock",
                        "performances":[
                          {
                            "id":232,
                            "start":"2017-10-06T16:00:00.000-04:00",
                            "end":"2017-10-06T16:35:00.000-04:00",
                            "stage":"Festival Main Stage",
                            "name":"Band Name"
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          },
          "list":{
            "shows":[
              {
                "id":233,
                "festival_id":5,
                "name":"Band Name",
                "category":"rock",
                "start":"2017-10-06T16:00:00.000-04:00",
                "end":"2017-10-06T16:35:00.000-04:00",
                "stage":"Festival Main Stage",
                "artists":[
                  {
                    "name":"Band Name",
                    "image":"/image.domain/image.jpg",
                    "id":517,
                    "bio":"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>\n\n<p>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>",
                    "web_site_url":"/www.google.com",
                    "instagram_url":"/www.google.com",
                    "facebook_url":"/www.facebook.com/band",
                    "twitter_url":"/twitter.com/band",
                    "soundcloud_profile_url":"/soundcloud.com/band",
                    "youtube_channel_url":"/www.youtube.com/channel/UCfdWrc_PtwU8KGPc861Tf",
                    "spotify_artist_url":"/open.spotify.com/artist/f2ywotEk1Mum9rTasda",
                    "music_embed":"<iframe src=\"/open.spotify.com/embed/track/f2ywotEk1Mum9rTasda\" width=\"300\" height=\"380\" frameborder=\"0\" allowtransparency=\"true\"></iframe>",
                    "video_embed":"<iframe width=\"813\" height=\"457\" src=\"/www.youtube.com/embed/UCfdWrc_PtwU8KGPc861Tf?vq=1080hd&amp;autoplay=0&amp;rel=0&amp;controls=0&amp;showinfo=0\" frameborder=\"0\" allowfullscreen></iframe>",
                    "category":"rock",
                    "performances":[
                      {
                        "id":233,
                        "start":"2017-10-06T16:00:00.000-04:00",
                        "end":"2017-10-06T16:35:00.000-04:00",
                        "stage":"Festival Main Stage",
                        "name":"Band Name"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        }
      ]
    }
    

    HTTP Request

    GET /fest-admin.dostff.co/api/v2/schedule_groupings/<ID>

    URL Parameters

    Parameter Description
    ID The ID of the Schedule Grouping to retrieve

    Stages

    Get All Stages

    HTTP Request

    GET /fest-admin.dostff.co/api/v2/stages

    curl "/fest-admin.dostff.co/api/v2/stages"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>"
    

    The above command returns JSON structured like this:

    {
      "stages": [
        {
          "id": 1,
          "festival_id": 1,
          "title": "Test Stage 1",
          "image": "/image.domain/image.png",
          "shows": [],
          "location": {
            "latitude": "45.4",
            "longitude": "45.4"
          }
        },
        {
          "id": 2,
          "festival_id": 1,
          "title": "Test Stage 2",
          "image": "/image.domain/image.png",
          "shows": [],
          "location": {
            "latitude": "45.4",
            "longitude": "45.4"
          }
        }
      ]
    }
    

    Festival Users

    Get All Festival Users

    curl "/fest-admin.dostff.co/api/v2/festival_users"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>"
    

    The above command returns JSON structured like this:

    {
      "festival_users": [
        {
          "id": 1,
          "name": "Festival User",
          "email": "festival@user.com",
          "facebook_uid": "1234567890",
          "spotify_uid": "spotifyusername",
          "artist_picks": 23
        }
        ...
      ]
    }
    

    HTTP Request

    GET /fest-admin.dostff.co/api/v2/festival_users

    URL Parameters

    Parameter Description
    page Page number for paging

    Response Fields

    Field type Description
    id Integer User ID
    name String User's full name
    email String User's email address
    facebook_uid String User's Facebook ID
    spotify_uid String User's Spotify ID
    artist_picks Integer No of artists picked

    Get Specific Festival User

    HTTP Request

    If you are wanting to retrieve a users picks or schedule read (580) 254-2116

    GET /fest-admin.dostff.co/api/v2/festival_users/<ID>

    curl "/fest-admin.dostff.co/api/v2/festival_users/<ID>"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>"
    

    The above command returns JSON structured like this:

    {
      "id": 1,
      "name": "Festival User",
      "email": "festival@user.com",
      "facebook_uid": "1234567890",
      "facebook_token": "owufw99wrg9whfw900q7c48yt375q083n7ccqg3ncng8q0hq0837g",
      "spotify_uid": "spotifyusername",
      "spotify_token": "7p9hug7933q97p5p9ugh3u9prhgfu9ghw9guhh9ug4",
      "artist_picks": [
        {
          "id": 1,
          "festival_id": 1,
          "category_id": 1,
          "metro_artist_id": 123,
          "name_override": "Grizzly Bear",
          "bio": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>\n\n<p>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>",
          "hidden": false,
          "created_at": "2017-06-18T10:41:53.000-05:00",
          "updated_at": "2017-09-07T16:54:19.000-05:00",
          "misc_attributes": {
            "web_site_url": "/grizzly-bear.net",
            "instagram_url": "/www.instagram.com/grizzlybear/",
            "facebook_url": "/www.facebook.com/grizzlybear/",
            "twitter_url": "/twitter.com/grizzlybear",
            "soundcloud_profile_url": "/soundcloud.com/grizzlybearband",
            "spotify_artist_url": "/open.spotify.com/artist/2Jv5eshHtLycR6R8KQCdc4",
            "music_embed": "<iframe src=\"/open.spotify.com/embed/track/18RnM1YySlG8IWK0ivr2a3\" width=\"100%\" height=\"80\" frameborder=\"0\" allowtransparency=\"true\"></iframe>",
            "video_embed": "<iframe width=\"813\" height=\"457\" src=\"/www.youtube.com/embed/W6N-yUZWOYA?vq=1080hd&autoplay=0&rel=0&controls=0&showinfo=0\" frameborder=\"0\" allowfullscreen></iframe>"
          }
        }
      ],
      "votes": [
        {
          "id": 1,
          "user": {
            "id": 1,
            "email": "festival@user.com"
          },
          "artist": {
            "id": 1,
            "name": "Grizzly Bear"
          },
          "event": "added",
          "event_at": "2017-12-12T21:27:39.000Z"
        }
      ],
    }
    

    Response Fields

    Field type Description
    id Integer User ID
    name String User's full name
    email String User's email address
    artist_picks Array The Festival Artists that the user has selected
    votes Array The user's activities. Adding and removing of Artists.

    URL Parameters

    Parameter Description
    ID The ID of the user to retrieve

    Register Festival User by email

    The registration of users work slightly different than retrieving festival data. You will be hitting a slightly different endpoint.

    HTTP Request

    POST /fest-admin.dostff.co/users

    curl "/fest-admin.dostff.co/users"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>" -H "Content-Type: application/json" /
      -X POST -d '{‘user’: { ‘email’: ‘smithy@festival.com’, ‘name’: ‘John Smith’, ‘password’: ‘1234’, ‘mail_list_opt_in’: 1 }}'
    

    The above command returns JSON structured like this:

    {
        "token": "eyJ0eXAiOiJKV1QiLCJhbGJIUzI1NiJ9yHcbNj6qBCJ-vEIIYG5XS4YsnEeBe-Zd79brr5Ek",
        "user": {
            "id": 123456789,
            "email": "smithy@domain.com’",
            "name": "John Smith"
        },
        "picks": {
            "artist_picks": [1,2,3],
            "show_unpicks": [1,2,3]
        }
    }
    

    Response Fields

    Field type Description
    token String Authorization token which is required for a public user to interact with our API
    name String User's full name
    email String User's email address
    artist_picks Array The Festival Artist IDs that the user has selected
    show_unpicks Array The Festival Show IDs that the user has deselected

    What is an unpick? When rendering the schedule a schedule item needs to appear "added". But we want to allow people to retroactively "remove" a show from their schedule. For example: I add Radiohead from the lineup. I then navigate the schedule page and notice that their 10:00 slot and 12:00 slot are highlighted on my schedule. Welp I don’t want them on my schedule at the 12:00 slot so I click "remove".

    Login Festival User by email

    HTTP Request

    POST /fest-admin.dostff.co/users/sign_in

    curl "/fest-admin.dostff.co/users/sign_in"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>" -H "Content-Type: application/json" /
      -X POST -d '{user: {email: "smithy@festival.com", password: "123456"}}'
    

    The above command returns JSON structured like this:

    {
      "token": "eyJ0eXAiOiJKV1QiLCJhbGJIUzI1NiJ9yHcbNj6qBCJ-vEIIYG5XS4YsnEeBe-Zd79brr5Ek",
      "user": {
        "id": 123456789,
        "email": "smithy@festival.com",
        "name": "John Smith"
      },
      "picks": {
        "artist_picks": [1,2,3],
        "show_unpicks": [1,2,3]
      }
    }
    

    Response Fields

    Field type Description
    token String Authorization token which is required for a public user to interact with our API
    name String User's full name
    email String User's email address
    artist_picks Array The Festival Artist IDs that the user has selected
    show_unpicks Array The Festival Show IDs that the user has deselected

    Register / Login Festival User with Facebook

    HTTP Request

    POST /fest-admin.dostff.co/auth/facebook/callback

    You can register a user in our system with Facebook by providing the Facebook User Token

    curl "/fest-admin.dostff.co/auth/facebook/callback"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>" -H "Content-Type: application/json" /
      -X POST -d '{‘token’: ‘E9I5eJX4UBANVJOJR1FdZBux2xX7eTSRF68KBUnWOmVKi74pPIc9Qf8wwoA4rduo6i2lnrc0HzKJIOTtf1lZDc1MZBqmZA2mSeNuPj9ZBUBfTFkiAodH8yHGeSPtkE3oMKg9aWZA2ZBQX2v9kp4eBhIvekohObGIZCK5WRwZDZD‘}'
    

    The above command returns JSON structured like this:

    {
      "token": "eyJ0eXAiOiJKV1QiLCJhbGJIUzI1NiJ9yHcbNj6qBCJ-vEIIYG5XS4YsnEeBe-Zd79brr5Ek",
      "user": {
        "id": 123456789,
        "email": "smithy@festival.com",
        "name": "John Smith"
      },
      "picks": {
        "artist_picks": [1,2,3],
        "show_unpicks": [1,2,3]
      }
    }
    

    Response Fields

    Field type Description
    token String Authorization token which is required for a public user to interact with our API
    name String User's full name
    email String User's email address
    artist_picks Array The Festival Artist IDs that the user has selected
    show_unpicks Array The Festival Show IDs that the user has deselected

    Register / Login Festival User with Facebook

    HTTP Request

    POST /fest-admin.dostff.co/auth/sptfy/callback

    You can register a user in our system with Spotify by providing the Spotify User Code

    curl "/fest-admin.dostff.co/auth/sptfy/callback"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>" -H "Content-Type: application/json" /
      -X POST -d '{‘code’: ‘E9I5eJX4UBANVJOJR1FdZBux2xX7eTSRF68KBUnWOmVKi74pPIc9Qf8wwoA4rduo6i2lnrc0HzKJIOTtf1lZDc1MZBqmZA2mSeNuPj9ZBUBfTFkiAodH8yHGeSPtkE3oMKg9aWZA2ZBQX2v9kp4eBhIvekohObGIZCK5WRwZDZD‘}'
    

    The above command returns JSON structured like this:

    {
      "token": "eyJ0eXAiOiJKV1QiLCJhbGJIUzI1NiJ9yHcbNj6qBCJ-vEIIYG5XS4YsnEeBe-Zd79brr5Ek",
      "user": {
        "id": 123456789,
        "email": "smithy@festival.com",
        "name": "John Smith"
      },
      "picks": {
        "artist_picks": [1,2,3],
        "show_unpicks": [1,2,3]
      }
    }
    

    Response Fields

    Field type Description
    token String Authorization token which is required for a public user to interact with our API
    name String User's full name
    email String User's email address
    artist_picks Array The Festival Artist IDs that the user has selected
    show_unpicks Array The Festival Show IDs that the user has deselected

    Add / Remove Artist

    Adding and removing an Artist is on the same endpoint. It is essentially toggling an Artist. If the festival's Schedules have been launched and the user has added Shows it will return their schedule and a picked key with true or false

    HTTP Request

    POST /fest-admin.dostff.co/api/v2/festival_artists/<Artist ID>/toggle_pick

    curl "/fest-admin.dostff.co/api/v2/festival_artists/<Artist ID>/toggle_pick"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>" -H "Content-Type: application/json" /
      -H "Authorization: Bearer <Token>" -X POST
    
    {
      "picked": true,
      "shows": [
        {
          "id": 315,
          "festival_id": 6,
          "name": "Band Name",
          "category": "music",
          "start": "2017-10-20T18:15:00.000-07:00",
          "end": "2017-10-20T18:55:00.000-07:00",
          "stage": "Stage Name",
          "artists": [
            {
              "name": "Band Name",
              "image": "/image.domain/image.jpg",
              "id": 1,
              "bio": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>\n\n<p>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>",
              "web_site_url": "",
              "instagram_url": "",
              "facebook_url": "/www.facebook.com/band/",
              "twitter_url": "/twitter.com/band",
              "soundcloud_profile_url": "/soundcloud.com/band",
              "youtube_channel_url": "",
              "spotify_artist_url": "/open.spotify.com/artist/3qFOiYRuQNVl5TGgO",
              "music_embed": "<iframe src=\"/open.spotify.com/embed/artist/3qFOpjNVl564TGgO\" width=\"300\" height=\"380\" frameborder=\"0\" allowtransparency=\"true\"></iframe>",
              "video_embed": "",
              "category": "music",
              "performances": [
                {
                  "id": 1,
                  "start": "2017-10-20T18:15:00.000-07:00",
                  "end": "2017-10-20T18:55:00.000-07:00",
                  "stage": "Stage Name",
                  "name": "Band Name"
                }
              ]
            }
          ]
        }
      ]
    }
    

    Pick Show

    HTTP Request

    POST /fest-admin.dostff.co/api/v2/shows/<Show ID>/pick

    The User's Schedule is returned as JSON

    curl "/fest-admin.dostff.co/api/v2/shows/<Show ID>/pick"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>" /
      -H "Authorization: Bearer <Token>" -X POST
    

    The above command returns JSON structured like this:

    {
      "shows": [
        {
          "id": 315,
          "festival_id": 6,
          "name": "Band Name",
          "category": "music",
          "start": "2017-10-20T18:15:00.000-07:00",
          "end": "2017-10-20T18:55:00.000-07:00",
          "stage": "Stage Name",
          "artists": [
            {
              "name": "Band Name",
              "image": "/image.domain/image.jpg",
              "id": 1,
              "bio": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>\n\n<p>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>",
              "web_site_url": "",
              "instagram_url": "",
              "facebook_url": "/www.facebook.com/band/",
              "twitter_url": "/twitter.com/band",
              "soundcloud_profile_url": "/soundcloud.com/band",
              "youtube_channel_url": "",
              "spotify_artist_url": "/open.spotify.com/artist/3qFOiYRuQNVl5TGgO",
              "music_embed": "<iframe src=\"/open.spotify.com/embed/artist/3qFOpjNVl564TGgO\" width=\"300\" height=\"380\" frameborder=\"0\" allowtransparency=\"true\"></iframe>",
              "video_embed": "",
              "category": "music",
              "performances": [
                {
                  "id": 1,
                  "start": "2017-10-20T18:15:00.000-07:00",
                  "end": "2017-10-20T18:55:00.000-07:00",
                  "stage": "Stage Name",
                  "name": "Band Name"
                }
              ]
            }
          ]
        }
      ]
    }
    

    Unpick Show

    HTTP Request

    POST /fest-admin.dostff.co/api/v2/shows/<Show ID>/unpick

    What is an unpick? When rendering the schedule a schedule item needs to appear "added". But we want to allow people to retroactively "remove" a show from their schedule. For example: I add Radiohead from the lineup. I then navigate the schedule page and notice that their 10:00 slot and 12:00 slot are highlighted on my schedule. Welp I don’t want them on my schedule at the 12:00 slot so I click "remove".

    The user's schedule is returned as JSON

    curl "/fest-admin.dostff.co/api/v2/shows/<Show ID>/unpick"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>" /
      -H "Authorization: Bearer <Token>" -X POST
    

    The above command returns JSON structured like this:

    {
      "shows": [
        {
          "id": 315,
          "festival_id": 6,
          "name": "Band Name",
          "category": "music",
          "start": "2017-10-20T18:15:00.000-07:00",
          "end": "2017-10-20T18:55:00.000-07:00",
          "stage": "Stage Name",
          "artists": [
            {
              "name": "Band Name",
              "image": "/image.domain/image.jpg",
              "id": 1,
              "bio": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>\n\n<p>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>",
              "web_site_url": "",
              "instagram_url": "",
              "facebook_url": "/www.facebook.com/band/",
              "twitter_url": "/twitter.com/band",
              "soundcloud_profile_url": "/soundcloud.com/band",
              "youtube_channel_url": "",
              "spotify_artist_url": "/open.spotify.com/artist/3qFOiYRuQNVl5TGgO",
              "music_embed": "<iframe src=\"/open.spotify.com/embed/artist/3qFOpjNVl564TGgO\" width=\"300\" height=\"380\" frameborder=\"0\" allowtransparency=\"true\"></iframe>",
              "video_embed": "",
              "category": "music",
              "performances": [
                {
                  "id": 1,
                  "start": "2017-10-20T18:15:00.000-07:00",
                  "end": "2017-10-20T18:55:00.000-07:00",
                  "stage": "Stage Name",
                  "name": "Band Name"
                }
              ]
            }
          ]
        }
      ]
    }
    

    Get User's Schedule / Picks

    HTTP Request

    After logging a user in. Use these end points to retrieve a users picks or schedule

    GET /fest-admin.dostff.co/api/v2/me/schedule

    curl "/fest-admin.dostff.co/api/v2/me/schedule"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>" /
      -H "Authorization: Bearer <Token>"
    

    GET /fest-admin.dostff.co/api/v2/me/artist_picks

    curl "/fest-admin.dostff.co/api/v2/me/artist_picks"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>" /
      -H "Authorization: Bearer <Token>"
    

    The above command returns JSON structured like this: The users schedule is returned

    {
      "shows": [
        {
          "id": 315,
          "festival_id": 6,
          "name": "Band Name",
          "category": "music",
          "start": "2017-10-20T18:15:00.000-07:00",
          "end": "2017-10-20T18:55:00.000-07:00",
          "stage": "Stage Name",
          "artists": [
            {
              "name": "Band Name",
              "image": "/image.domain/image.jpg",
              "id": 1,
              "bio": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>\n\n<p>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>",
              "web_site_url": "",
              "instagram_url": "",
              "facebook_url": "/www.facebook.com/band/",
              "twitter_url": "/twitter.com/band",
              "soundcloud_profile_url": "/soundcloud.com/band",
              "youtube_channel_url": "",
              "spotify_artist_url": "/open.spotify.com/artist/3qFOiYRuQNVl5TGgO",
              "music_embed": "<iframe src=\"/open.spotify.com/embed/artist/3qFOpjNVl564TGgO\" width=\"300\" height=\"380\" frameborder=\"0\" allowtransparency=\"true\"></iframe>",
              "video_embed": "",
              "category": "music",
              "performances": [
                {
                  "id": 1,
                  "start": "2017-10-20T18:15:00.000-07:00",
                  "end": "2017-10-20T18:55:00.000-07:00",
                  "stage": "Stage Name",
                  "name": "Band Name"
                }
              ]
            }
          ]
        }
      ]
    }
    
      "artist_picks": {
        "artist_picks": [1,2,3],
        "show_unpicks": [1,2,3]
      }
    

    Changes

    HTTP Request

    GET /fest-admin.dostff.co/api/v2/activities/changes

    This returns the most recent changes made by Festival Admins. For example, if an Artist's image gets replaced or if a new Stage gets created.

    curl "/fest-admin.dostff.co/api/v2/activities/changes"
      -H "DS-API-Key: festivalapikey" -H "DS-Festival-ID: <Festival ID>"
    

    The above command returns JSON structured like this:

    {
      "changes": [
        {
          "id": 3,
          "type": "FestivalArtist",
          "event": "update",
          "change_set": {
            "name": [
              "Previous Name",
              "New Name"
            ],
            "updated_at": [
              "2017-09-07T16:54:19.000-05:00",
              "2017-12-13T02:04:40.000-06:00"
            ]
          },
          "user": {
            "id": 1,
            "name": "Festival Admin",
            "email": "admin@festival.com"
          }
        }
      ]
    }
    

    Response Fields

    Field type Description
    type String Either 'FestivalArtist', 'Schedule', 'ScheduleGrouping', 'Lineup', 'LineupGrouping', 'Festival', 'Show', 'Stage'
    event String Either 'Create', 'Update', 'Delete'
    change_set Object The field on the object that has changed. First item of array is the value before change. Second item is the value after change.

    URL Parameters

    Parameter Description
    page Page number for paging
    range Date Range using Unix Timestamps e.g range=from,to range=1513116079,1513116344

    Errors

    Error Code Meaning
    400 Bad Request -- Your request was sketchy.
    401 Unauthorized -- Your API key is wrong.
    403 Forbidden -- The item requested is hidden for administrators only.
    404 Not Found -- The specified item could not be found.
    405 Method Not Allowed -- You tried to access a kitten with an invalid method.
    406 Not Acceptable -- You requested a format that isn't json.
    500 Internal Server Error -- We had a problem with our server. Try again later.
    503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.