API Documentation
Everything you need to integrate with the Tampa.dev platform.
Examples
All examples use Personal Access Tokens. OAuth access tokens work the same way -- just replace the Bearer token value.
Read Operations
Get upcoming events
curl -H "Authorization: Bearer td_pat_abc123..." \
"https://api.tampa.dev/v1/events?status=upcoming&limit=5"
Get your profile
curl -H "Authorization: Bearer td_pat_abc123..." \
https://api.tampa.dev/v1/profile
List groups
curl -H "Authorization: Bearer td_pat_abc123..." \
"https://api.tampa.dev/v1/groups?featured=1"
Get group details
curl -H "Authorization: Bearer td_pat_abc123..." \
https://api.tampa.dev/v1/groups/tampadevs
Check your RSVP status
curl -H "Authorization: Bearer td_pat_abc123..." \
https://api.tampa.dev/v1/events/evt_abc123/rsvp
List your favorite groups
curl -H "Authorization: Bearer td_pat_abc123..." \
https://api.tampa.dev/v1/favorites
Get achievement progress
curl -H "Authorization: Bearer td_pat_abc123..." \
https://api.tampa.dev/v1/profile/achievements
Write Operations
Update your profile
curl -X PATCH \
-H "Authorization: Bearer td_pat_abc123..." \
-H "Content-Type: application/json" \
-d '{"bio": "Building cool stuff", "location": "Tampa, FL"}' \
https://api.tampa.dev/v1/profile
RSVP to an event
curl -X POST \
-H "Authorization: Bearer td_pat_abc123..." \
https://api.tampa.dev/v1/events/evt_abc123/rsvp
Cancel your RSVP
curl -X DELETE \
-H "Authorization: Bearer td_pat_abc123..." \
https://api.tampa.dev/v1/events/evt_abc123/rsvp
Check in to an event
curl -X POST \
-H "Authorization: Bearer td_pat_abc123..." \
-H "Content-Type: application/json" \
-d '{"method": "qr"}' \
https://api.tampa.dev/v1/checkin/ABC123
Add a favorite group
curl -X POST \
-H "Authorization: Bearer td_pat_abc123..." \
https://api.tampa.dev/v1/favorites/tampadevs
Remove a favorite group
curl -X DELETE \
-H "Authorization: Bearer td_pat_abc123..." \
https://api.tampa.dev/v1/favorites/tampadevs
Claim a badge
curl -X POST \
-H "Authorization: Bearer td_pat_abc123..." \
https://api.tampa.dev/v1/claim/BADGE-CODE-123
Follow a user
curl -X POST \
-H "Authorization: Bearer td_pat_abc123..." \
https://api.tampa.dev/v1/users/johndoe/follow
Unfollow a user
curl -X DELETE \
-H "Authorization: Bearer td_pat_abc123..." \
https://api.tampa.dev/v1/users/johndoe/follow
Create a portfolio item
curl -X POST \
-H "Authorization: Bearer td_pat_abc123..." \
-H "Content-Type: application/json" \
-d '{
"title": "My Project",
"url": "https://example.com",
"description": "A cool project"
}' \
https://api.tampa.dev/v1/profile/portfolio
Token Management
Create a new PAT
curl -X POST \
-H "Authorization: Bearer td_pat_abc123..." \
-H "Content-Type: application/json" \
-d '{
"name": "CI Pipeline",
"scopes": ["read:events", "read:groups"],
"expiresInDays": 30
}' \
https://api.tampa.dev/v1/profile/tokens
List your tokens
curl -H "Authorization: Bearer td_pat_abc123..." \
https://api.tampa.dev/v1/profile/tokens
Revoke a token
curl -X DELETE \
-H "Authorization: Bearer td_pat_abc123..." \
https://api.tampa.dev/v1/profile/tokens/tok_abc123
Group Management
These examples require a PAT with manage:* scopes and the appropriate group role.
Create an event
curl -X POST \
-H "Authorization: Bearer td_pat_abc123..." \
-H "Content-Type: application/json" \
-d '{
"title": "TypeScript Workshop",
"description": "Hands-on TypeScript workshop",
"startTime": "2026-03-01T14:00:00-05:00",
"endTime": "2026-03-01T17:00:00-05:00",
"timezone": "America/New_York",
"eventType": "in_person",
"maxAttendees": 25
}' \
https://api.tampa.dev/v1/manage/groups/grp_react/events
Award a badge
curl -X POST \
-H "Authorization: Bearer td_pat_abc123..." \
https://api.tampa.dev/v1/manage/groups/grp_react/badges/bdg_abc123/award/usr_def456
Generate a checkin code
curl -X POST \
-H "Authorization: Bearer td_pat_abc123..." \
-H "Content-Type: application/json" \
-d '{"expiresInMinutes": 120}' \
https://api.tampa.dev/v1/manage/groups/grp_react/events/evt_abc123/checkin-codes
Create a badge claim link
curl -X POST \
-H "Authorization: Bearer td_pat_abc123..." \
-H "Content-Type: application/json" \
-d '{"maxUses": 50, "expiresInDays": 7}' \
https://api.tampa.dev/v1/manage/groups/grp_react/badges/bdg_abc123/claim-links
Using OAuth Access Tokens
After completing the OAuth flow, use the access token the same way as a PAT:
curl -H "Authorization: Bearer eyJhbGciOiJSUz..." \
https://api.tampa.dev/v1/profile
Pagination
All list endpoints support limit and offset parameters:
# Get the second page of events (items 21-40)
curl -H "Authorization: Bearer td_pat_abc123..." \
"https://api.tampa.dev/v1/events?limit=20&offset=20"
Check the pagination.hasMore field to determine if more pages exist.
Discover available scopes
curl https://api.tampa.dev/v1/scopes
This endpoint does not require authentication and returns all available OAuth scopes with descriptions and hierarchy information.
MCP (AI Agent) Examples
The same operations are available via the MCP server using JSON-RPC 2.0. Here is an example of listing events via MCP:
Initialize an MCP session
curl -X POST https://api.tampa.dev/mcp \
-H "Authorization: Bearer td_pat_abc123..." \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-03-26",
"capabilities": {},
"clientInfo": { "name": "my-agent", "version": "1.0" }
}
}'
Call a tool
curl -X POST https://api.tampa.dev/mcp \
-H "Authorization: Bearer td_pat_abc123..." \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "events_list",
"arguments": { "limit": 5 }
}
}'
See MCP Examples for more detailed integration patterns including Claude Desktop configuration and multi-step workflows.