Register
Submit a solution
The challenge is finished.

Challenge Overview

FAA NOTAM: Notice to Airmen Developer API Design Challenge

Project Background

 

The Federal Aviation Administration (FAA) in collaboration with Topcoder is working to further improve timely access to Notice to Airmen (NOTAM) data by developing required Application Programming Interfaces (APIs) to meet the diverse needs of the aviation industry. 


A Notice to Airmen (NOTAM) is the real-time notification component of the FAA's Aeronautical Information System and contains up-to-date information related to any change in the National Airspace System (NAS).

Who uses NOTAMs?

  • Commercial, General Aviation, and Drone pilots need access to NOTAM data before and during flight. 

  • The FAA issues NOTAMs to support multiple Federal Agencies, Airports, protect critical infrastructure, disaster relief efforts, and space operations. 

 

Challenge Overview

Welcome to the Notice to Airmen Developer Portal API Design Challenge!  Your task in this challenge is to define the endpoints of the developer portal component - create an Open API specification (swagger), and a database model (entity relationship diagram (ERD)) to store the data.

 

Background Information

A NOTAM is a real time, safety critical, information essential to personnel concerned with flight operations but not known far enough in advance to be publicized by other means. It states the abnormal status of a component of the NAS – not the normal status. 

 

The system that we’re building will need to ingest all the data sources and provide an API to query all the data based on various properties, such as location, notam type, location and notam number, effective start and end dates, affected feature types and last updated date.

 

To access the API, users will first need to be registered on a developer portal where they would get an access key for the API. 

 

Designing the API for the developer portal is the scope of this challenge. The NOTAM data filtering API is not in scope.

 

All the application components will be hosted on Kubernetes and will need to be dockerized.

 

NOTE: For more details on project background and NOTAM data sources, see the architecture challenge 

 

Technology Stack

 
  • Swagger Open API Specification

  • ERD

  • Relational Database - PostgreSQL

 

Task Details

We’re aiming to create two things in this challenge:

  • REST Open API specification document (swagger)

  • Database structure - ERD

 

The developer portal will have three types of users: administrator, regular API user and anonymous. 

 

Anonymous users will have access to public content:

  • published NOTAM api details and changelog and 

  • published SDK details and changelog

Both of those are managed by the admin (see below).

 

The registration flow will follow this flow:

  1. User fills in the registration details and agrees to terms of service

  2. User verifies their email

  3. Account is created, but is ‘pending approval’

  4. Admin will review the account and approve or deny the account (either way, user is notified about the action via email)

 

Creating an account will require entering these fields:

  • name (first, last) *

  • email *

  • password *

  • company *

  • address *

  • city *

  • state *

  • country * 

  • Postal/zip code *

  • primary phone *

  • alternate phone

  • Intended use of NOTAM data

Verifying captcha will be mandatory before creating an account. In case the user has forgotten their account credentials, a “forgot password” feature will be available to reset the password via a reset password link sent to the user’s email address. 

 

Once the user is registered, they will have access to the following features:

  • Manage API tokens (create/delete)

  • Send feedback

  • Update profile (update account registration details)

 

API tokens are user secrets that will be used to access the NOTAM API. Each token will have only a few attributes: 

  • name 

  • key 

  • status (active/disabled) 

 

The token key is generated by the backend (not user entered) and status is set to active by default. Admin user will be able to disable any user account (along with all it’s tokens), or any specific user token.

 

A simple mechanism for sending  feedback will be provided. The scope will include a text field that a user can enter comments for feedback. When a user submits  the feedback, the feedback content and user contact information will be sent to a support email address. Further communication between the FAA and the user will be over email (outside the developer portal). The support email address should be configurable.

 

Updating profile feature will enable the user to update all account registration info except for the email address.

 

Admin user role will be able to:

  • Approve/deny new user accounts

  • Disable existing user accounts

  • Add/remove admin accounts

  • Manage info for published NOTAM API - upload swagger file, set api description (text field) and changelog (text field) - both text fields will be wysiwyg editors in the future frontend app

  • Manage info for published NOTAM API SDK - upload SDK file, set sdk description (text field) and changelog (text field) - both text fields will be wysiwyg editors in the future frontend app

  • View application statistics: number of users registered, location based account distribution stats (accounts per country), and api usage statistics (aggregated hourly values for the last 48hrs, each containing two values: number of api calls, and number of notams returned)

 

All entities should have timestamps (createdAt, updatedAt) and createdBy and updatedBy fields.

 

Followup tasks will be available for the challenge winner to make small updates to the API definitions, and to create a mapping of API endpoints to design screens.


What To Submit

Submit a Swagger API specification, ER diagram and any other documents that you think will better illustrate your API design.



Final Submission Guidelines

See above

ELIGIBLE EVENTS:

2021 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30150089