Skip to main content
This page documents all the data structures returned by the Recurse Center API and used throughout the application.

Core Types

Profile

The main data structure representing a Recurser’s profile information.
id
u32
required
Unique identifier for the profile
first_name
String
required
Recurser’s first name
last_name
String
required
Recurser’s last name
name
String
required
Full name
name_hl
String
required
Full name with search highlights
email
String
required
Email address
github
Option<String>
GitHub username (without @ prefix)
employer_role
Option<String>
Current job title or role
twitter
Option<String>
Twitter/X username (without @ prefix)
pronouns
Option<String>
Preferred pronouns (e.g., “she/her”, “he/him”, “they/them”)
unformatted_phone_number
Option<String>
Phone number in original format
phone_number
Option<String>
Formatted phone number
zoom_url
Option<String>
Personal Zoom meeting URL
zulip_id
Option<u32>
Zulip user ID
personal_site_url
Option<String>
Personal website URL
blog_url
Option<String>
Blog URL
cluster_username
Option<String>
RC cluster username
linkedin
Option<String>
LinkedIn profile URL or username
image_path
String
required
Path to profile image (may contain “missing” for default avatar)
slug
String
required
URL-friendly identifier for the profile
joy_of_computing_username
Option<String>
Joy of Computing username
current_location
Option<Location>
Current geographic location
stints
Vec<Stint>
default:"[]"
List of RC stints (batches attended)
company
Option<Company>
Current employer information
The Profile struct includes numerous rendered HTML and search highlight fields for different sections:
bio_rendered
Option<String>
Bio as rendered HTML
bio_match
Option<bool>
Whether bio matched search query
bio_hl
Option<String>
Bio with search highlights
bio_truncated
Option<String>
Truncated bio for previews
Similar fields exist for:
  • before_rc_* - What they did before RC
  • during_rc_* - What they did during RC
  • interests_* - Interests and hobbies
  • zulip_intro_* - Zulip introduction
  • employer_info_* - Employer information
  • github_* - GitHub information
  • phone_number_* - Phone number
  • email_* - Email
results_count
Option<u32>
Number of search results (when searching)

Batch

Information about an RC batch (cohort).
id
u32
required
Unique identifier for the batch
name
String
required
Full batch name (e.g., “Winter 1 2024”)
short_name
Option<String>
Abbreviated batch name (e.g., “W1’24”)
alt_name
Option<String>
Alternative batch name
start_date
Option<String>
Batch start date (ISO 8601 format)
end_date
Option<String>
Batch end date (ISO 8601 format)

Location

Geographic location information.
id
u32
required
Unique identifier for the location
name
String
required
Location name (e.g., “Brooklyn, NY, USA”)
short_name
Option<String>
Abbreviated location name
location_type
Option<String>
Type of location (city, state, country, etc.)
Serialized as type in JSON
ascii_name
Option<String>
ASCII-safe version of the location name

Company

Employer information.
id
u32
required
Unique identifier for the company
name
String
required
Company name

Stint

Information about a Recurser’s time at RC.
id
u32
required
Unique identifier for the stint
stint_type
String
required
Type of stint (e.g., “retreat”, “residency”)
Serialized as type in JSON
title
Option<String>
Title or description of the stint
for_half_batch
bool
required
Whether this was a half-batch stint
in_progress
bool
required
Whether the stint is currently in progress
start_date
String
required
Start date (ISO 8601 format)
end_date
Option<String>
End date (ISO 8601 format, null if in progress)
batch
Option<Batch>
Associated batch information

HubVisit

Information about a visit to the RC hub.
person
PersonInfo
required
Information about the person who visited
date
String
required
Visit date (ISO 8601 format)
app_data
serde_json::Value
default:"null"
Application-specific data (arbitrary JSON)
notes
String
default:"''"
Notes about the visit
created_at
String
required
Timestamp when the record was created
updated_at
String
required
Timestamp when the record was last updated
created_by_app
Option<String>
Application that created the record
updated_by_app
Option<String>
Application that last updated the record

PersonInfo

Basic person identification.
id
u32
required
Unique identifier for the person
name
String
required
Person’s full name

Token

Personal access token information.
id
u32
required
Unique identifier for the token
token
String
required
The actual token string
description
String
required
Human-readable description of the token’s purpose
last_used_at
Option<String>
Timestamp of last token usage

Deprecated Types

The following types are deprecated and maintained only for backward compatibility. Use the Profile API types instead.

Person (Deprecated)

Older person data structure from the deprecated People API.
id
u32
required
Unique identifier
first_name
String
required
First name
middle_name
Option<String>
Middle name
last_name
String
required
Last name
email
String
required
Email address
twitter
Option<String>
Twitter username
github
Option<String>
GitHub username
batch_id
Option<u32>
Primary batch ID
phone_number
Option<String>
Phone number
has_photo
bool
required
Whether a profile photo exists
interests
Option<String>
Interests description
before_rc
Option<String>
What they did before RC
during_rc
Option<String>
What they did during RC
is_faculty
bool
required
Whether the person is RC faculty
is_hacker_schooler
bool
required
Whether the person is a Recurser
job
Option<String>
Job title
image
String
required
Profile image URL
batch
Option<Batch>
Primary batch information
pseudonym
Option<String>
Pseudonym or preferred name
current_location
Option<Location>
Current location
stints
Vec<DeprecatedStint>
default:"[]"
List of stints (deprecated format)
batches
Vec<Batch>
default:"[]"
All batches attended
projects
Vec<serde_json::Value>
default:"[]"
Project information (arbitrary JSON)
Link information (arbitrary JSON)
skills
Vec<serde_json::Value>
default:"[]"
Skill information (arbitrary JSON)
bio
Option<String>
Biography text

DeprecatedStint

Older stint format from the deprecated People API.
batch_id
Option<u32>
Associated batch ID
start_date
String
required
Start date
end_date
Option<String>
End date
stint_type
String
required
Type of stint
Serialized as type in JSON

Query Parameter Types

ProfileSearchParams

Parameters for searching profiles.
query
Option<String>
Search query string
batch_id
Option<u32>
Filter by batch ID
location_id
Option<u32>
Filter by location ID
role
Option<String>
Filter by role
scope
Option<String>
Search scope
limit
Option<u32>
Maximum number of results to return
offset
Option<u32>
Number of results to skip (for pagination)

LocationSearchParams

Parameters for searching locations.
query
String
required
Location search query
limit
Option<u32>
Maximum number of results

HubVisitQueryParams

Parameters for querying hub visits.
date
Option<NaiveDate>
Specific date to query
start_date
Option<NaiveDate>
Start of date range
end_date
Option<NaiveDate>
End of date range
person_id
Option<u32>
Filter by person ID
page
Option<u32>
Page number for pagination
per_page
Option<u32>
Results per page

HubVisitUpdate

Data for updating a hub visit.
notes
Option<String>
Updated notes
app_data
Option<serde_json::Value>
Updated application data (arbitrary JSON)

Build docs developers (and LLMs) love