Skip to main content

List Club Applications

List all applications for a club

Authentication

Required - must be club officer or owner

Path Parameters

club_code
string
required
Club code identifier

Response Fields

id
integer
required
Application ID
name
string
Application name
description
string
Application description (HTML)
application_start_time
datetime
When application opens
application_end_time
datetime
When application closes
result_release_time
datetime
When results are released
is_active
boolean
Whether application is currently active
external_url
string
External application URL
acceptance_email
string
Email template for accepted applicants
rejection_email
string
Email template for rejected applicants
committees
array
Array of application committees
questions
array
Array of application questions

Example Request

curl https://pennclubs.com/api/clubs/pppjo/applications/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Example Response

[
  {
    "id": 42,
    "name": "Fall 2024 Recruitment",
    "description": "<p>Join our team!</p>",
    "application_start_time": "2024-09-01T00:00:00Z",
    "application_end_time": "2024-09-15T23:59:59Z",
    "result_release_time": "2024-09-20T18:00:00Z",
    "is_active": true,
    "external_url": "https://pennclubs.com/club/pppjo/application/42",
    "committees": [
      {"id": 1, "name": "Engineering"},
      {"id": 2, "name": "Design"}
    ],
    "questions": [
      {
        "id": 100,
        "question_type": 1,
        "prompt": "Why do you want to join?",
        "word_limit": 200,
        "precedence": 0
      }
    ]
  }
]

Get Application Details

Retrieve detailed information about a specific application

Authentication

Required

Path Parameters

club_code
string
required
Club code identifier
id
integer
required
Application ID

Response

Same fields as list endpoint

Example Request

curl https://pennclubs.com/api/clubs/pppjo/applications/42/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Get Current Applications

Get currently active applications for a club

Authentication

Required

Path Parameters

club_code
string
required
Club code identifier

Response

Array of active application objects (applications currently accepting submissions)

Example Request

curl https://pennclubs.com/api/clubs/pppjo/applications/current/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Create Application

Create a new application for the club

Authentication

Required - must be club officer or owner

Path Parameters

club_code
string
required
Club code identifier

Request Body

name
string
required
Application name
description
string
Application description (HTML)
application_start_time
datetime
required
When application opens (ISO 8601 format)
application_end_time
datetime
required
When application closes
result_release_time
datetime
required
When results are released
is_active
boolean
Whether application is active (default: false)
acceptance_email
string
Email template for accepted applicants (Jinja2 template)
rejection_email
string
Email template for rejected applicants (Jinja2 template)

Example Request

curl -X POST https://pennclubs.com/api/clubs/pppjo/applications/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Spring 2025 Recruitment",
    "description": "<p>Join our amazing team!</p>",
    "application_start_time": "2025-01-15T00:00:00Z",
    "application_end_time": "2025-02-01T23:59:59Z",
    "result_release_time": "2025-02-10T18:00:00Z",
    "is_active": true
  }'

Update Application

Update an existing application

Authentication

Required - must be club officer or owner

Path Parameters

club_code
string
required
Club code identifier
id
integer
required
Application ID

Request Body

Same fields as create endpoint (all optional for PATCH)

Delete Application

Delete an application

Authentication

Required - must be club officer or owner

Path Parameters

club_code
string
required
Club code identifier
id
integer
required
Application ID

Application Questions

List questions for an application

Authentication

Required

Path Parameters

club_code
string
required
Club code identifier
application_id
integer
required
Application ID

Response Fields

id
integer
Question ID
question_type
integer
Question type (1=Free Response, 2=Multiple Choice, 3=Short Answer, 4=Info Text)
prompt
string
Question prompt/text
word_limit
integer
Word limit for response
precedence
integer
Display order (lower numbers shown first)
committee_question
boolean
Whether question is committee-specific
committees
array
Array of committee IDs this question applies to
multiple_choice
array
Array of multiple choice options (for question_type=2)

Create Application Question

Add a question to an application

Authentication

Required - must be club officer or owner

Request Body

question_type
integer
required
Question type (1=Free Response, 2=Multiple Choice, 3=Short Answer, 4=Info Text)
prompt
string
required
Question prompt/text
word_limit
integer
Word limit for response (default: 0 = no limit)
precedence
integer
Display order (default: 0)
committee_question
boolean
Whether question is committee-specific (default: false)

Example Request

curl -X POST https://pennclubs.com/api/clubs/pppjo/applications/42/questions/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "question_type": 1,
    "prompt": "Tell us about your relevant experience",
    "word_limit": 300,
    "precedence": 1
  }'

Application Submissions

List all submissions for an application

Authentication

Required - must be club officer or owner

Path Parameters

club_code
string
required
Club code identifier
application_id
integer
required
Application ID

Response Fields

id
integer
Submission ID
user
object
Applicant user information
status
integer
Submission status (1=Pending, 2=Rejected after written, 3=Rejected after interview, 4=Accepted)
reason
string
Decision reason/feedback
committee
object
Committee applied to
responses
array
Array of question responses
notified
boolean
Whether applicant has been emailed
created_at
datetime
Submission timestamp

Submit Application

Submit an application

Authentication

Required

Request Body

committee
integer
Committee ID to apply to
responses
array
required
Array of question responses
Each response should have:
  • question: Question ID
  • text: Response text (for free response/short answer)
  • multiple_choice: Multiple choice option ID (for multiple choice)

Example Request

curl -X POST https://pennclubs.com/api/clubs/pppjo/applications/42/submissions/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "committee": 1,
    "responses": [
      {
        "question": 100,
        "text": "I have experience with Python and Django..."
      },
      {
        "question": 101,
        "multiple_choice": 5
      }
    ]
  }'

Update Submission Status

Update submission status and feedback

Authentication

Required - must be club officer or owner

Request Body

status
integer
New status (1=Pending, 2=Rejected after written, 3=Rejected after interview, 4=Accepted)
reason
string
Decision reason/feedback to send to applicant

Example Request

curl -X PATCH https://pennclubs.com/api/clubs/pppjo/applications/42/submissions/123/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "status": 4,
    "reason": "Congratulations! We were impressed by your experience."
  }'

Send Decision Emails

Send acceptance/rejection emails to applicants

Authentication

Required - must be club officer or owner

Request Body

email_type
object
required
Email type to send (id: “acceptance” or “rejection”)
allow_resend
boolean
Allow re-sending to already notified applicants (default: false)
dry_run
boolean
Preview emails without sending (default: false)

Example Request

curl -X POST https://pennclubs.com/api/clubs/pppjo/applications/42/send_emails/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "email_type": {"id": "acceptance"},
    "allow_resend": false,
    "dry_run": true
  }'

Build docs developers (and LLMs) love