Overview
OWASP Nest provides a comprehensive event discovery platform for OWASP conferences, AppSec Days, partner events, and local chapter meetups worldwide.
Event Model
Events are standalone entities with rich metadata and geographic information:
backend/apps/owasp/models/event.py
Event Categories
Global Major OWASP conferences (AppSec Global, etc.)
AppSec Days Regional AppSec Days events
Partner Partner organization events
Other Chapter meetups and community events
Event Attributes
Core Fields
name: str # Event name
key: str # Unique slugified identifier
category: str # Event category
start_date: date # Event start date
end_date: date | None # Event end date (optional)
description: str # Event description
summary: str # AI-generated summary
url: str # Event registration URL
Location Data
suggested_location: str # AI-generated location string
latitude: float | None # Geocoded latitude
longitude: float | None # Geocoded longitude
Timestamps
created_at: datetime # Record creation
updated_at: datetime # Last update
Browsing Events
Upcoming Events
Get events happening in the future:
GET /api/v0/events?is_upcoming= true
curl "https://nest.owasp.org/api/v0/events?is_upcoming=true&ordering=start_date"
Location-Based Search
Find events by geographic bounds:
GET /api/v0/events?latitude_gte= 40 & latitude_lte = 50 & longitude_gte = -10 & longitude_lte = 10
Filter Parameters:
latitude_gte - Minimum latitude
latitude_lte - Maximum latitude
longitude_gte - Minimum longitude
longitude_lte - Maximum longitude
is_upcoming - Filter for future events only
Sorting Events
Available sort options:
start_date - Earliest first
-start_date - Latest first (default)
end_date - By end date
-end_date - By end date descending
latitude / -latitude - By location
longitude / -longitude - By location
Event API
List Events
Response:
{
"items" : [
{
"key" : "owasp-global-appsec-usa-2025-washington-dc" ,
"name" : "OWASP Global AppSec USA 2025 - Washington DC" ,
"start_date" : "2025-09-15" ,
"end_date" : "2025-09-19" ,
"latitude" : 38.9072 ,
"longitude" : -77.0369 ,
"url" : "https://owasp.org/events/2025-09-usa/"
}
],
"count" : 42 ,
"next" : "https://nest.owasp.org/api/v0/events?page=2"
}
Get Event Details
GET /api/v0/events/{event_key}
Example:
curl "https://nest.owasp.org/api/v0/events/owasp-global-appsec-usa-2025-washington-dc"
Response:
{
"key" : "owasp-global-appsec-usa-2025-washington-dc" ,
"name" : "OWASP Global AppSec USA 2025 - Washington DC" ,
"description" : "Join us for the premier application security conference..." ,
"start_date" : "2025-09-15" ,
"end_date" : "2025-09-19" ,
"latitude" : 38.9072 ,
"longitude" : -77.0369 ,
"url" : "https://owasp.org/events/2025-09-usa/"
}
Date Parsing
Nest includes sophisticated date parsing for various formats:
# backend/apps/owasp/models/event.py:111
@ staticmethod
def parse_dates ( dates : str , start_date : date) -> date | None :
Examples:
ISO format: 2025-05-26
Date ranges: May 15-17, 2025
Day ranges: 15-17 (infers month from start_date)
Year crossover: December 28 - January 2
The parser normalizes various dash characters (hyphen, en-dash, em-dash) and handles year crossover for multi-day events.
Geocoding
Events use AI-powered geocoding similar to chapters:
Location Generation
# backend/apps/owasp/models/event.py:220
def generate_geo_location ( self ) -> None :
"""Add latitude and longitude data."""
location = None
if self .suggested_location and self .suggested_location != "None" :
location = get_location_coordinates( self .suggested_location)
if location is None :
location = get_location_coordinates( self .get_context())
if location:
self .latitude = location.latitude
self .longitude = location.longitude
Context Building
Event context for AI includes:
def get_context ( self , * , include_dates : bool = False ) -> str :
context = [
f "Name: { self .name } " ,
f "Description: { self .description } " ,
f "Summary: { self .summary } " ,
]
if include_dates:
context.append( f "Dates: { self .start_date } - { self .end_date } " )
return " \n " .join(context)
AI-Generated Summaries
Events can generate AI summaries from their metadata:
# backend/apps/owasp/models/event.py:259
def generate_summary ( self , prompt = None ) -> None :
"""Generate a summary for the event."""
open_ai = OpenAi()
open_ai.set_input( self .get_context( include_dates = True ))
open_ai.set_max_tokens( 100 ).set_prompt(
prompt or Prompt.get_owasp_event_summary()
)
summary = open_ai.complete()
self .summary = summary if summary != "None" else ""
Upcoming Events Query
Get only future events with valid data:
# backend/apps/owasp/models/event.py:72
@ staticmethod
def upcoming_events ():
"""Get upcoming events."""
return (
Event.objects
.filter( start_date__gt = timezone.now())
.exclude(Q( name__exact = "" ) | Q( url__exact = "" ))
.order_by( "start_date" )
)
Upcoming events are filtered to exclude entries with missing names or URLs, ensuring high-quality results.
Slack Integration
Query upcoming events via Slack:
Features:
Shows upcoming events sorted by start date
Displays event name, dates, location, description
Includes registration URL links
Links to full events page
# backend/apps/slack/commands/events.py:7
def get_events_data ():
"""Get events data for the template."""
from apps.owasp.models.event import Event
return [
{
"description" : event.description,
"end_date" : event.end_date,
"location" : event.suggested_location,
"name" : event.name,
"start_date" : event.start_date,
"url" : event.url,
}
for event in sorted (Event.upcoming_events(), key = lambda e : e.start_date)
]
Event Categories
Events are categorized for easy filtering:
class Category ( models . TextChoices ):
APPSEC_DAYS = "appsec_days" , "AppSec Days"
GLOBAL = "global" , "Global"
OTHER = "other" , "Other"
PARTNER = "partner" , "Partner"
Database Indexes
Optimized for date-based queries:
indexes = [
models.Index( fields = [ "-start_date" ], name = "event_start_date_desc_idx" ),
models.Index( fields = [ "-end_date" ], name = "event_end_date_desc_idx" ),
]
Event Data Sources
Events are imported from:
OWASP Foundation event pages
Chapter meetup calendars
Partner organization feeds
Manual submissions
Code Reference
Key implementation files:
Model: backend/apps/owasp/models/event.py:28
API: backend/apps/api/rest/v0/event.py:16
Slack Command: backend/apps/slack/commands/events.py:25
Date Parser: backend/apps/owasp/models/event.py:111
AI Integration
Events are indexed for AI-powered discovery:
backend/apps/ai/common/extractors/event.py
Extracted Content:
Event name and description
Location information
Date ranges
Event category
Registration URLs
Calendar Integration
Coming Soon Calendar export features (iCal, Google Calendar) are planned for future releases.