ActivityFox Dev

API Reference

Complete reference for all custom Express.js API endpoints including children, calendar, activities, sessions, search, and vendor signup.

API Reference

All endpoints are prefixed with /api. Authentication is via Sharetribe session cookie unless noted otherwise.

Child Management

EndpointMethodBodyDescription
/api/children/createPOST{ childName, birthYear }Create child user + CalDAV calendar
/api/childrenGETList parent's children
/api/children/updatePOST{ childId, ...fields }Update child profile
/api/children/deletePOST{ childId }Delete child
/api/children/upload-avatarPOSTmultipart/form-dataUpload child avatar
/api/children/remove-avatarPOST{ childId }Remove child avatar
/api/children/sharePOST{ childId, email }Invite another parent
/api/children/invitationsGETList pending invitations
/api/children/invitations/acceptPOST{ invitationId }Accept invitation
/api/children/invitations/declinePOST{ invitationId }Decline invitation

Child Preferences

EndpointMethodBodyDescription
/api/children/interestsGET?childId=Get child's category interests
/api/children/interestsPOST{ childId, categories: string[] }Set child's category interests (replaces all)
/api/children/like-activityPOST{ childId, activityId }Toggle like on an activity
/api/children/get-likesGET?childId=Get child's liked activities
/api/children/connectionsGET?childId=Get child's connections
/api/children/connectionsPOST{ childId, connectedChildId, relationship }Add bidirectional connection
/api/children/connectionsDELETE{ childId, connectedChildId }Remove bidirectional connection

Relationship types: twin (score 10), sibling (9), close-friend (8), friend (6), classmate (4).

CalDAV Calendar

All calendar endpoints verify ownership (calendar must belong to one of the user's children).

EndpointMethodBody / ParamsDescription
/api/calendar/createPOST{ childId }Create CalDAV calendar for a child
/api/calendar/listGETList all user's calendars
/api/calendar/events/:calendarIdGETcalendarId (base64url)Fetch events
/api/calendar/eventsPOST{ calendarId, summary, dtstart, dtend, rrule? }Create event
/api/calendar/events/updatePOST{ calendarId, eventUrl, ...fields }Update event
/api/calendar/events/deletePOST{ calendarId, eventUrl }Delete event

Activities

EndpointMethodBody / ParamsDescription
/api/activitiesGETList vendor's activities (auth: vendor)
/api/activities/:idGETid (UUID)Get single activity with sessions
/api/activities/createPOST{ title, category, description?, ageGroupMin?, ageGroupMax?, locationAddress?, locationLat?, locationLng?, imageUrls? }Create activity draft
/api/activities/updatePOST{ id, ...fields }Update activity
/api/activities/deletePOST{ id }Delete activity + cascade sessions

Sessions

EndpointMethodBody / ParamsDescription
/api/sessionsGET?activityId=List sessions for an activity
/api/sessions/createPOST{ activityId, label, startDate, endDate, daysOfWeek, startTime, endTime, totalSeats, priceSubUnits, currency? }Create session draft
/api/sessions/updatePOST{ id, ...fields }Update session
/api/sessions/deletePOST{ id }Delete session + Sharetribe listing + CalDAV calendar
/api/sessions/publishPOST{ id }Publish: create Sharetribe listing + CalDAV calendar + Meilisearch index
EndpointMethodBody / ParamsDescription
/api/search/sessionsGET?q=&category=&ageMin=&ageMax=&...Search proxy to Meilisearch sessions index
/api/search/syncPOST{ activityId? }Manually trigger Meilisearch sync for one or all activities

Vendor Signup

EndpointMethodBodyDescription
/api/vendor-signupPOST{ orgName, contactName, email, phone?, programTypes, website?, referralSource?, notes? }Public — no auth. Store vendor interest form submission

Required fields: orgName, contactName, email, programTypes (non-empty array).

Server Utilities

FilePurpose
server/api-util/childOwnership.jsBidirectional parent-child ownership verification + calendar ownership
server/api-util/crypto.jsAES-256-GCM encryption for child credentials
server/api-util/davisClient.jstsdav client factory, ICS parsing/building, calendar creation, vendor provisioning
server/api-util/integrationSdk.jsSharetribe Integration SDK singleton
server/api-util/supabaseClient.jsSupabase client with requireSupabase() factory
server/api-util/meilisearchClient.jsMeilisearch client with index initialization

On this page