-
Notifications
You must be signed in to change notification settings - Fork 54
Funnel API
This is a REST API.
- Endpoint
- Operations
- Resources
Each API endpoint supports the following operations (using the users resource as an example):
-
GET /«resource»/«resouce id» Retrieves a single JSON object by id.
-
GET /«resource»?«query» Retrieves a JSON array of objects matching the query. The query is in querystring format, with the following supported arguments:
- «filters on indexed fields of the resource»
- limit: «integer»
- order: «name of range indexed field»[,{asc|desc}]
-
GET /«resource»/«resource id»/«relation»?query Retrieves a JSON array of objects through a named relation, for examples to get the participants of an event.
-
PUT /«resource»/«resource id» Create or update an object. Request data should be a full resource object, the semantics should not allow partial updates. Updates will fail unless the PUT version_id matches the latest version.
-
DELETE /«resource»/«resource id» Delete an object.
-
POST /«resource»/«action» Custom actions that don't fit anywhere else, like merging two users. If an action does not neatly fall under a resource, it can be under the root resource.
First, there are models of venues that are more or less permanent.
- location_id
- venue_id
- capacity
Next, there are models of the conference brands, and their annual editions.
- brand_id
- images : Map of urls with keys 'logo', 'cover', etc.
- colors : Map of hex colors with keys 'background', 'text', 'accent', etc.
- website
- admin_team_id
- labels
Cover is previously the background image.
- brand_id
- sale_id
- review_team_id
- images
- colors
- website
- labels
An event is the smallest unit of the conference that an attendee can buy a ticket to — say Day 1 of a particular edition, or a workshop. In legacy code this is referred to as a ProposalSpace.
- brand_id
- edition_id
- capacity
- title
- tagline
- description : Markdown
- start
- end
- venue_id
- event_id
- proposer_id → user.id
- presenter_id → user.id
- title
- description : Markdown
- links : Map of keywords to URLs
- status
- vote_target_id
- comment_target_id
- labels
Notes:
- Technical level, Session type, Proposal Space sections can be moved to labels.
- Objective, Description and Requirements are combined into body.
- Slides and preview video are in links.
- Email, phone, location and bio will be retrieved from the user table.
Slots are the smallest unit of scheduling, and can be a 'presentation' or a 'break'. Room ID is optional, if it is omitted it is assumed to be venue-wide. Presentations are linked to a proposal, but also have a copy of its title, description etc. to allow event organizers to edit the schedule without affecting the underlying proposal.
- event_id
- room_id
- type
- start
- end
- proposal_id
- presenter_id
- title
- description
- labels
Slot types can be 'presentation' or 'break'.
- user_name
- full_name
- phone
- location_id
- bio : Markdown
- user_id
- event_id
- order_item_id (currently this lives inside
- event_id
- inviter_id → user.id
- invitee_id → user.id
- event_id
- feedback_form_version
- title
- type
- slot_id
- feedback_form_id
- feedback_form_id
- feedback_target_id
- user_id
- value
- comment
- entity_type
- entity_id
- user_type
- auth_type
- user_id
- feedback_type
- form_version
- value
- comment
- name
- title
- label_set_id