[TBA] Change to The Blue Alliance APIs

The Blue Alliance has long been committed to providing open data for the FRC community. Our current API (v2) launched in 2013 and has been a wild success – it has handled over 80 million requests in a single year! However, as TBA grows, we need to scale and iterate the API, as well.

As of June 1, 2017, APIv2 will be officially deprecated and superseded by a new version of The Blue Alliance API. In addition, APIv2 will no longer be accessible starting January 1, 2018.

Read the full blog post, including tips on how to get started migrating your app to APIv3: https://blog.thebluealliance.com/2017/05/31/announcing-a-new-api/

And I can’t thank you and Eugene enough for that.

All the stats and reports I post depend on you guys for the raw data.

How soon will you be able to upload robot pictures from my Instagram to fill in the blanks?

Are you all caught up on uploading your pictures? I was waiting until you were done for the season so I only had to run the import once

I’m all caught up but I won’t be done with the season til November.

Gotcha, I’ll work on importing what what’s up already this week. I just didn’t want to start and have to keep running the import job to catch up (I’d rather it be a more discrete thing).

And only 10 million of those have been from my spreadsheets :stuck_out_tongue:

I’m responsible for a few million of those myself…

My passion for computer science and programming, which are now my major and my internship this summer, were incubated by playing around with the TBA API. This is something I am immensely grateful for. Keep up the great work, TBA team, you all do a fantastic service.

Plus, QD would not have won SLFF if it weren’t for many, many TBA API requests.

And those only include the ones we are able to track. Keep an eye out for a #techtalk TBA Blog post with more details about this soon… :rolleyes:

Edit: And here it is https://www.chiefdelphi.com/forums/showthread.php?threadid=158699

I’m SLOWLY going through them all. Have ~700 left that were unlabeled before you started using standardized labeling schemes! :slight_smile: Then I’ll work on getting your latest & greatest up :wink:

You’re AWESOME KOKO!

Can you post a link to your Instagram page? I’d like to seem them too!

All the photos that Koko posted are now waiting on Github to be added to the moderation queue, however it might be a little while as there are quite a few of them :stuck_out_tongue:

Thank you for coming out with such wonderful APIs allowing teams to retrieve various data about different aspects of the competition and statistics. I read through the API doc and wrote a Java app to play around with the data. The code can be found here. (https://github.com/trc492/TBAShell/tree/master/release)
May I make a suggestion? Could the API syntax be made to be more REST compliant?
For example, my app implemented the REST compliant syntax and map it back to the v3 request syntax. But it would be nice if the v3 syntax is actually REST compliant so no mapping is required. The syntax I would like to see is basically:
<model>?<filter1>=<key1>&<filter2>=<key2>]
It is more intuitive for me to think about what kind of data I am retrieving and what are the filters applying to the data.
For example, if I want to retrieve all matches at the roebling divison on team 973. I would say:
list matches?event=2017roe&team=frc973
instead of:
get frc973/event/2017roe/matches
Here is the full detail of the REST syntax:


Syntax: <Command>
<Command>:
        ?                               - Print the short help message.
        help                            - Print the long help message.
        quit                            - Exit this program.
        exit                            - Exit this program.
        list <Options>] <Model>        - Retrieve and list model data.
        get <Request>                   - Send raw <Request> to the web server.
<Options>:
        -verbose=(0|1|2)                - Specifies output verbosity (0: minimum, 1: medium, 2: maximum).
<Model>:
        status?team=<TeamKey>&event=<EventKey>]
        teams?(year=<Year>|team=<TeamKey>|event=<EventKey>|district=<DistrictKey>)]
        events?(year=<Year>|team=<TeamKey>&year=<Year>]|event=<EventKey>|district=<DistrictKey>)
        districts?(year=<Year>|team=<TeamKey>)
        matches?(team=<TeamKey>&year=<Year>|event=<EventKey>&team=<TeamKey>]|match=<MatchKey>)
        awards?(team=<TeamKey>&year=<Year>]|event=<EventKey>&team=<TeamKey>])
        rankings?(event=<EventKey>|district=<DistrictKey>)
        oprs?event=<EventKey>
        district_points?event=<EventKey>
        insights?event=<EventKey>
        predictions?event=<EventKey>
        alliances?event=<EventKey>
        years_participated?team=<TeamKey>
        robots?team=<TeamKey>
        media?team=<TeamKey>&year=<Year>
        social_media?team=<TeamKey>
<Request>: (version 3)
        status                                                  - TBA Status request.
        teams/<Year>]/<PageNum>/(simple|keys)]                - Team List Request with optional year and verbosity.
        team/<TeamKey>[/simple]                                 - Single Team Request with optional verbosity.
        team/<TeamKey>/years_participated                       - Team Years Participated Request.
        team/<TeamKey>/districts                                - Team Districts Request.
        team/<TeamKey>/robots                                   - Team Robots Request.
        team/<TeamKey>/events/<Year>]/(simple|keys)]          - Team Events Request with optional year and verbosity.
        team/<TeamKey>/event/<EventKey>/matches/(simple|keys)] - Team Event Matches Request with optional verbosity.
        team/<TeamKey>/event/<EventKey>/awards                  - Team Event Awards Request.
        team/<TeamKey>/event/<EventKey>/status                  - Team Event Status Request.
        team/<TeamKey>/awards/<Year>]                          - Team Awards Request with optional year.
        team/<TeamKey>/matches/<Year>]/(simple|keys)]         - Team Matches Request with optional year and verbosity.
        team/<TeamKey>/media/<Year>                             - Team Media Request.
        team/<TeamKey>/social_media                             - Team Social Media Request.
        events/<Year>/(simple|keys)]                           - Event List Request with optional verbosity.
        event/<EventKey>[/simple]                               - Single Event Request with optional verbosity.
        event/<EventKey>/teams/(simple|keys)]                  - Event Teams Request with optional verbosity.
        event/<EventKey>/alliances                              - Event Alliances Request.
        event/<EventKey>/insights                               - Event Insights Request.
        event/<EventKey>/oprs                                   - Event OPR Request.
        event/<EventKey>/predictions                            - Event Rankings Request.
        event/<EventKey>/rankings                               - Event Rankings Request.
        event/<EventKey>/district_points                        - Event District Points Request.
        event/<EventKey>/matches/(simple|keys)]                - Event Matches Request with optional verbosity.
        event/<EventKey>/awards                                 - Event Awards Request.
        districts/<Year>                                        - District List Request.
        district/<DistrictKey>/teams/(simple|keys)]            - District Teams Request with optional verbosity.
        district/<DistrictKey>/rankings                         - District Rankings Request.
        district/<DistrictKey>/events/(simple|keys)]           - District Events Request with optional verbosity.
        match/<MatchKey>[/simple]                               - Match Request with optional verbosity.