GraphQL API
Apollo Federation v2.3 subgraph — 2 resolvers, 15 queries for metrics, time series, cohort analysis, and attribution.
Endpoints
| Environment | URL |
|---|---|
| Local | http://localhost:4004/graphql |
| Staging | https://staging-api.eventzr.com/graphql |
| Production | https://api.eventzr.com/graphql |
Authentication
All authenticated GraphQL operations require a valid JWT token. Tenant isolation is automatic — all queries are scoped to the tenantId from JWT claims. Public queries do not require authentication.
Authorization: Bearer <JWT>Core Types
AnalyticsMetrics
type AnalyticsMetrics @key(fields: "entityId") {
entityId: ID!
entityType: String!
tenantId: String!
traffic: TrafficMetrics
engagement: EngagementMetrics
transactions: TransactionMetrics
timeRange: String!
}TrafficMetrics
type TrafficMetrics {
pageViews: Int!
uniqueVisitors: Int!
sessions: Int!
bounceRate: Float!
avgSessionDuration: Float!
topReferrers: [ReferrerStats!]
}EngagementMetrics
type EngagementMetrics {
clicks: Int!
scrollDepth: Float!
formSubmissions: Int!
videoPlays: Int!
videoCompletions: Int!
shareCount: Int!
}TransactionMetrics
type TransactionMetrics {
totalRevenue: Float!
ticketsSold: Int!
avgOrderValue: Float!
conversionRate: Float!
refundRate: Float!
}Authenticated Queries (AnalyticsResolver)
query GetAnalyticsMetrics($input: MetricsInput!) {
analyticsMetrics(input: $input) {
entityId
entityType
traffic {
pageViews
uniqueVisitors
bounceRate
}
engagement {
clicks
formSubmissions
}
transactions {
totalRevenue
ticketsSold
conversionRate
}
timeRange
}
}query GetTimeSeries($input: TimeSeriesInput!) {
analyticsTimeSeries(input: $input) {
dataPoints {
timestamp
value
label
}
granularity
startDate
endDate
}
}query CompareEntities($input: ComparisonInput!) {
analyticsComparison(input: $input) {
entities {
entityId
entityType
metrics {
totalRevenue
ticketsSold
}
}
winner
insights
}
}Additional authenticated queries: analyticsTrends, analyticsTopEntities, analyticsCohortAnalysis, analyticsAttribution
Public Queries (PublicResolver)
These queries do not require authentication and return public-facing statistics.
query PublicEventStats($eventSlug: String!) {
publicEventStats(eventSlug: $eventSlug) {
totalAttendees
avgRating
reviewCount
shareCount
}
}query TrendingEvents($limit: Int) {
trendingEvents(limit: $limit) {
eventId
title
slug
trendScore
ticketsSold
category
}
}Additional public queries: publicVenueStats, publicDestinationStats, publicArtistStats, trendingEventsByCategory, trendingEventsByLocation, publicSiteStats
Federation
Apollo Federation v2.3
The analytics-svc contributes AnalyticsMetrics entities to the EventZR federated graph. Other services can reference analytics data using Federation directives.
Directives used: @key, @shareable, @external, @requires, @provides