Skip to content
This repository was archived by the owner on Jun 15, 2020. It is now read-only.

API Endpoints

Andrew Chan edited this page Dec 29, 2017 · 20 revisions

The Application Portal API exposes resources like forms, categories, and applications for logged in users and is used extensively by the frontend.

The following are relevant objects exposed by the API endpoints, which may be slightly different than their counterparts in the database models for performance and ease of use reasons:

The form object

This object is slightly different than the form object in the models. Its attributes are:

  • id: Primary key of the form (integer).
  • name: Human-readable name of the form (string).
  • created_at: Timestamp of the form (Unix datetime string).
  • archived: Whether or not the form is archived (bool).
  • questions: A nested list of question objects.
  • categories: A nested list of category objects.

The question object

  • id: Primary key of the question (integer).
  • form: Foreign key/ID of the associated form (integer).
  • question_text: Human-readable question text (string).
  • question_type: 'Paragraph', 'Checkbox', 'Radiobutton', or 'Dropdown' (string).
  • options: Stringified list of question options, where each option is a string.
  • order_number: Index of the question in the form (integer). Does not need to be zero-indexed or whatever as long as you can reconstruct the correct order.

The category object

  • id: Primary key of the category (integer).
  • form: Foreign key/ID of the associated form (integer).
  • name: Human-readable name of the category (string).

The application object

  • id: Primary key of the application (integer).
  • category: Foreign key/ID of the associated category (integer).
  • email: Email of the applicant (string).
  • first_name: First name of the applicant (string).
  • last_name: Last name of the applicant (string).
  • read: Whether or not a reader has reviewed the application yet (bool).
  • answers: A dictionary of answer objects indexed by answer ID.

The answer object

  • id: Primary key of the answer (integer).
  • application: Foreign key/ID of the associated application (integer).
  • question: Foreign key/ID of the associated question (integer).
  • answer_text: The answer text (string). This may be a stringified list depending on the question type.

The following are API endpoints that make use of the above objects.

/forms/

Gets the full list of forms as form objects. Each form object should also contain the list of question objects associated with it, in the correct order, as well as the list of category objects associated with it.

Example response:

{
  'forms': [
    {
      'id': 4,
      'name': 'Consulting Spring 2018',
      'created_at': '2017/12/07 17:55:48 +0000',
      'archived': false,
      'questions': [
        {
          'id': 1,
          'form': 4,
          'question_text': 'Check the classes you have taken:',
          'question_type': 'Checkbox',
          'options': "['CS61A', 'CS61B', 'CS61C']",
          'order_number': 0,
        },
        {
          'id': 2,
          'form': 4,
          'question_text': 'Why CodeBase?',
          'question_type': 'Paragraph',
          'options': '',
          'order_number': 1,
        },
      ],
      'categories': [
        {
          'id': 1,
          'form': 4,
          'name': 'Received',
        },
        {
          'id': 2,
          'form': 4,
          'name': 'Accepted',
        },
      ],
    },
    {
      'id': 3,
      'name': 'Mentored Spring 2018',
      'created_at': '2017/12/07 17:55:00 +0000',
      'archived': true,
      'questions': [
        {
          'id': 3,
          'form': 3,
          'question_text': 'Check the classes you have taken:',
          'question_type': 'Checkbox',
          'options': "['CS61A', 'CS61B', 'CS61C']",
          'order_number': 0,
        },
        {
          'id': 4,
          'form': 3,
          'question_text': 'Why CodeBase?',
          'question_type': 'Paragraph',
          'options': '',
          'order_number': 1,
        },
      ],
      'categories': [
        {
          'id': 3,
          'form': 3,
          'name': 'Received',
        },
        {
          'id': 4,
          'form': 3,
          'name': 'Accepted',
        },
      ],
    },
  ],
};

Response Properties

  • forms: List of form objects
Clone this wiki locally