Implement the Upcoming.org REST API for Drupal

Last updated on
24 April 2025

Upcoming.org is an online searchable database of events. With a data model that includes events, metros (cities), venues, categories, watchlists and users, they have created an effective way to list and share events based on location and personal interest. They have also recently added an API which allows external clients to add or search events, categories, watchlists etc. This presents an ideal point of integration with other websites that also collect information on events.

Drupal is equipped with the event and location modules. Used together, Drupal is able to track the when and where of events. Drupal events can be categorized as well. The Drupal events data model and the Upcoming.org events data model are therefore quite similar.

Implementing the Upcoming.org API for Drupal would open up the following possibilites:

  • Drupal sites importing and exporting events, venues and categories to Upcoming.org.
  • Drupal sites importing and exporting events, venues and categories to other Drupal sites.
  • Importing and exporting event information using the growing list of 3rd party tools that support this API [1], [2]

The API is described in detail here on the Upcoming.org site [3].

Deliverables:

  1. Analyze and compare the Drupal (event + location modules) data model, compare it with the data model defined at Upcoming.org, and specify the additions needed to make the Drupal model compatible.
  2. Write Drupal module code which defines the corresponding API endpoints for all GET and POST requests made to the API. Specifically, this is the implementation of the Drupal hook_menu function [4]
  3. Write the callback functions that implement these functions in the API:
    • event.getInfo [HTTP GET]
    • event.add [HTTP POST]
    • event.search [HTTP GET]
    • event.getWatchlist [HTTP GET]
  4. Use Drupal's built in HTTP client to call these same four functions from Upcoming.org or another Drupal site that supports the Upcoming.org API

[1] http://community.upcoming.org/docs/Language-specific_Libraries
[2] http://community.upcoming.org/docs/Platform-specific_Plug-ins
[3] http://upcoming.org/services/api/

Help improve this page

Page status: Not set

You can: