The Opportunity Object
Opportunities cover both club roles (internships, mentorship, member teams) and external job postings imported in bulk. The website shows only the subset flagged with website_viewable.
{
"id": "7a3d9c21-88bf-4a10-b0c9-6d2e5f1a4e77",
"title": "Intern",
"description": "Gain hands-on experience by working under a director, with the opportunity to grow into an officer role.",
"link_url": "https://forms.gle/DZ5kgJWWuPsxHFBs8",
"category": "Club Role",
"icon_url": "/assets/opportunities/intern.svg",
"term": "Spring 2026",
"opens_on": "2026-01-05",
"closes_on": "2026-02-01",
"expires_at": null,
"display_order": 1,
"website_viewable": true,
"is_active": true,
"created_at": "2026-09-03T18:24:11Z",
"created_by": "c4e11505-5555-42f9-9f48-678a0abf55c6",
"updated_at": "2026-09-03T18:24:11Z",
"updated_by": "c4e11505-5555-42f9-9f48-678a0abf55c6"
}
Attributes
id string
A UUID for the object.
title string
The opportunity's title.
description string nullable
The opportunity's description.
link_url string nullable
The external URL applicants use to apply. Exactly one of link_url or linked_form_id is set.
linked_form_id string nullable
A UUID referencing an internal form to route applicants to, instead of an external link_url.
category string nullable
The card type. One of Internship, Club Role, Project, Sponsor, Job, or Other.
icon_url string nullable
A URL to the icon shown alongside the opportunity.
term string nullable
The application window as shown on the website card (e.g. Spring 2026).
opens_on string nullable
The date applications open.
closes_on string nullable
The date applications close.
expires_at string nullable
Internal auto-hide date. Rows past this timestamp drop out of the active_opportunities view.
display_order integer
Controls the order opportunities are returned in. Lower values come first.
website_viewable boolean
Whether the opportunity may be shown on the public website. Defaults to false, so nothing becomes public by accident.
is_active boolean
Whether the opportunity is live in the admin app at all. Distinct from website_viewable.
created_at string
When the opportunity was created.
created_by string nullable
A UUID that references the User who created the opportunity.
updated_at string
When the opportunity was last updated.
updated_by string nullable
A UUID that references the User who last updated the opportunity.
Job posting attributes
Bulk-imported job postings carry additional columns that this API returns and accepts, but which are normally maintained by the admin app's CSV importer: company_name, location, employment_type, salary, field, source, and external_id.
employment_type is constrained to Full-time, Part-time, Internship, or Contract. source is constrained to manual or csv_import and defaults to manual. external_id is a unique dedup key for re-imports.
The notify_members and notified_at columns are deliberately not exposed by this API. They drive member notification dispatch, so they are managed by the admin app rather than through general CRUD.