Download OpenAPI specification:
The Momentco Publisher API description v2
Returns all configuration values with masked secrets for debugging. Shows whether values come from GCP Secret Manager or environment variables. Use ?refresh=true to force fresh values from GCP.
| refresh required | string |
{- "timestamp": "string",
- "gcpSecretManager": {
- "enabled": true,
- "available": true
}, - "app": {
- "env": "string",
- "port": 0,
- "isDevelopment": true,
- "isProduction": true,
- "isLocalEnvironment": true
}, - "database": {
- "host": "string",
- "port": "string",
- "username": "string",
- "password": "string",
- "database": "string",
- "connectionUrl": "string"
}, - "jwt": {
- "accessTokenExpInSec": 0,
- "refreshTokenExpInSec": 0,
- "publicKeyBase64": "string",
- "privateKeyBase64": "string"
}, - "firebase": {
- "projectId": "string",
- "useEmulator": true,
- "emulatorAuthHost": "string"
}, - "brandFetch": {
- "baseUrl": "string",
- "apiKey": "string"
}, - "gcpStorage": {
- "projectId": { },
- "temporaryBucket": { },
- "permanentBucket": { },
- "keyFilename": "string",
- "credentialsJson": "string"
}, - "pubsub": {
- "projectId": "string"
}, - "campaign": {
- "baseUrl": "string"
}
}Returns a list of all supported currencies with their ISO codes, symbols, and full names
{- "USD": {
- "symbol": "$",
- "name": "US Dollar"
}, - "EUR": {
- "symbol": "€",
- "name": "Euro"
}, - "GBP": {
- "symbol": "£",
- "name": "British Pound"
}
} Generates a signed URL for uploading image, video, or document files directly to the temporary bucket.
Requirements:
- fileName: Name of the file to upload
- contentType: Must be an allowed image, video, or document type
* Images: png, jpeg, jpg, gif, webp, svg+xml
* Videos: mp4, webm, quicktime (.mov), x-msvideo (.avi), mpeg
* Documents: pdf, msword (.doc), vnd.openxmlformats-officedocument.wordprocessingml.document (.docx)
- intent: Purpose of upload (logo, cover-image, moment-video, document, etc.)
- fileSize: (Optional) File size in bytes. Max 5MB for documents, 500MB for videos. Helps determine upload strategy.
Upload Strategy:
- Small files (< 10MB): Uses simple upload
- Videos or large files (> 10MB): Automatically uses resumable upload for better reliability
- Documents: Always use simple upload (max 5MB, no resumable needed)
- Resumable uploads support chunked uploads and can resume if interrupted
Storage Paths:
- Images/Videos: {intent}/{timestamp}_{filename}
- Documents: documents/{random16chars}/{timestamp}_{filename} (random folder for security)
Response includes:
- uploadUrl: Signed URL for uploading the file
- resumableSessionUrl: (For resumable uploads) Session URL for chunked uploads
- recommendedChunkSize: (For resumable uploads) Recommended chunk size (256KB)
| fileName required | string Name of the file to upload |
| contentType required | string Enum: "image/png" "image/jpeg" "image/jpg" "image/gif" "image/webp" "image/svg+xml" "video/mp4" "video/webm" "video/quicktime" "video/x-msvideo" "video/mpeg" "application/pdf" "application/msword" "application/vnd.openxmlformats-officedocument.wordprocessingml.document" "text/csv" "application/csv" "application/vnd.ms-excel" "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" MIME type of the file (must be an allowed image, video, or document type) |
| intent required | string Enum: "logo" "host-avatar" "cover-image" "desktop-background-image" "moment-image" "moment-video" "sponsor-logo" "marketing-image" "marketing-video" "moment-list-image" "moment-list-video" "document" "moment-parse" Intent/purpose of the upload (determines storage path) |
| expiresIn | number [ 60 .. 86400 ] Expiration time in seconds (default: 3600 = 1 hour) |
| fileSize | number File size in bytes. Max 5MB for documents, 500MB for videos. Helps determine upload strategy (resumable vs simple). |
{- "fileName": "logo.png",
- "contentType": "image/png",
- "intent": "logo",
- "expiresIn": 3600,
- "fileSize": 104857600
}{- "success": true,
- "data": {
- "filePath": "logo/1640995200000_logo.png",
- "expiresAt": "2024-01-01T13:00:00.000Z",
- "resumableSessionUrl": "https://storage.googleapis.com/bucket-temp/moment-video/1640995200000_video.mp4?X-Goog-Algorithm=...",
- "recommendedChunkSize": 262144
}
} Moves a file from the temporary bucket to the public bucket.
Input:
- Full temporary bucket URL: "https://storage.googleapis.com/momentco-temp/logo/1640995200000_logo.png"
The file will be moved to the public bucket with the same path structure and deleted from the temporary bucket.
| tempBucketUrl required | string Full URL from temporary bucket (e.g., "https://storage.googleapis.com/momentco-temp/logo/1640995200000_logo.png"). The file will be moved to the public bucket. |
{
}{- "success": true,
- "data": {
- "success": true,
- "filePath": "logo/1640995200000_logo.png",
- "bucket": "momentco-public"
}
} Returns detailed information about storage service configuration and status.
Requires authentication (JWT).
Provides information about:
- Storage service availability
- Bucket configurations
- Environment settings
- Initialization errors (if any)
DEPRECATED: Use POST /api/v1/internal/moments/by-team/:teamId/search or POST /api/v1/internal/moments/by-team-slug/:teamSlug/search instead. Internal endpoint to search moments without authentication. Full access across all teams.
| limit | number <= 100 Default: 20 Number of results per page |
| cursor | string Cursor for pagination (base64 encoded JSON with sort fields) |
| direction | string Default: "forward" Enum: "forward" "backward" Pagination direction |
| query | string Full-text search query (searches in title, description, location) |
| teamId | string Filter by team ID |
| tags | Array of strings Filter by tags (all tags must match) |
| status | Array of strings Items Enum: "draft" "published" "postponed" "cancelled" "deleted" Filter by one or more moment statuses (OR logic). Accepts a single status string or an array of statuses. |
| eventTypes | Array of strings Items Enum: "Game" "Tournament" "Promotion" "Invitation" "Live Entertainment" "Entertainment" "Conference" "Fan Experience" "Merch Drops" Filter by event types (OR logic) |
| featureCards | Array of strings Items Enum: "XL" "Medium" Filter by featured card sizes (OR logic). When provided, only featured moments are returned. |
| startDate | string Filter by start date (earliest date the moment occurs) |
| endDate | string Filter by end date (latest date the moment occurs) |
| timezone | string Optional IANA timezone name (e.g., "America/New_York", "Europe/London") for time-based tag conversions. When provided, time-based tags like time.today, time.tomorrow will be calculated relative to this timezone. Should be obtained from browser Intl API or IANA timezone database. |
{- "limit": 20,
- "cursor": "eyJzdGFydERhdGUiOiIyMDI0LTAxLTE1VDAwOjAwOjAwWiIsImlkIjoiMTIzIn0=",
- "direction": "forward",
- "query": "basketball game",
- "teamId": "team-uuid-123",
- "tags": [
- "nba",
- "playoffs"
], - "status": [
- "draft"
], - "eventTypes": [
- "Game"
], - "featureCards": [
- "XL"
], - "startDate": "2024-01-01",
- "endDate": "2024-12-31",
- "timezone": "America/New_York"
}{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Internal endpoint to search moments lists without authentication. Full access across all teams.
| limit | number <= 100 Default: 20 Number of results per page |
| cursor | string Cursor for pagination (base64 encoded JSON with sort fields) |
| direction | string Default: "forward" Enum: "forward" "backward" Pagination direction |
| query | string Full-text search query (searches in title, description) |
| tags | Array of strings Filter by tags (all tags must match) |
| status | string Enum: "draft" "published" "postponed" "archived" Filter by list status |
| startDate | string Filter by schedule start date |
| endDate | string Filter by schedule end date |
{- "limit": 20,
- "cursor": "eyJzdGFydERhdGUiOiIyMDI0LTAxLTE1VDAwOjAwOjAwWiIsImlkIjoiMTIzIn0=",
- "direction": "forward",
- "query": "regular season",
- "tags": [
- "regular-season",
- "2024"
], - "status": "draft",
- "startDate": "2024-09-01",
- "endDate": "2024-12-31"
}{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}DEPRECATED: Use POST /teams/:teamId/moments/search instead. Search moments for a specific team with filters (tags, text, status, dates, published). Returns full moment entities with cursor-based pagination. Requires team membership. Results sorted by startDateTimeUtc ASC.
| teamId required | string Team ID |
| limit | number <= 100 Default: 20 Number of results per page |
| cursor | string Cursor for pagination (base64 encoded JSON with sort fields) |
| direction | string Default: "forward" Enum: "forward" "backward" Pagination direction |
| query | string Full-text search query (searches in title, description, location) |
| teamId | string Filter by team ID |
| tags | Array of strings Filter by tags (all tags must match) |
| status | Array of strings Items Enum: "draft" "published" "postponed" "cancelled" "deleted" Filter by one or more moment statuses (OR logic). Accepts a single status string or an array of statuses. |
| eventTypes | Array of strings Items Enum: "Game" "Tournament" "Promotion" "Invitation" "Live Entertainment" "Entertainment" "Conference" "Fan Experience" "Merch Drops" Filter by event types (OR logic) |
| featureCards | Array of strings Items Enum: "XL" "Medium" Filter by featured card sizes (OR logic). When provided, only featured moments are returned. |
| startDate | string Filter by start date (earliest date the moment occurs) |
| endDate | string Filter by end date (latest date the moment occurs) |
| timezone | string Optional IANA timezone name (e.g., "America/New_York", "Europe/London") for time-based tag conversions. When provided, time-based tags like time.today, time.tomorrow will be calculated relative to this timezone. Should be obtained from browser Intl API or IANA timezone database. |
{- "limit": 20,
- "cursor": "eyJzdGFydERhdGUiOiIyMDI0LTAxLTE1VDAwOjAwOjAwWiIsImlkIjoiMTIzIn0=",
- "direction": "forward",
- "query": "basketball game",
- "teamId": "team-uuid-123",
- "tags": [
- "nba",
- "playoffs"
], - "status": [
- "draft"
], - "eventTypes": [
- "Game"
], - "featureCards": [
- "XL"
], - "startDate": "2024-01-01",
- "endDate": "2024-12-31",
- "timezone": "America/New_York"
}{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Search moments lists for a specific team with filters (tags, text, status, dates). Returns full list entities with cursor-based pagination. Requires team membership.
| teamId required | string Team ID |
| limit | number <= 100 Default: 20 Number of results per page |
| cursor | string Cursor for pagination (base64 encoded JSON with sort fields) |
| direction | string Default: "forward" Enum: "forward" "backward" Pagination direction |
| query | string Full-text search query (searches in title, description) |
| tags | Array of strings Filter by tags (all tags must match) |
| status | string Enum: "draft" "published" "postponed" "archived" Filter by list status |
| startDate | string Filter by schedule start date |
| endDate | string Filter by schedule end date |
{- "limit": 20,
- "cursor": "eyJzdGFydERhdGUiOiIyMDI0LTAxLTE1VDAwOjAwOjAwWiIsImlkIjoiMTIzIn0=",
- "direction": "forward",
- "query": "regular season",
- "tags": [
- "regular-season",
- "2024"
], - "status": "draft",
- "startDate": "2024-09-01",
- "endDate": "2024-12-31"
}{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Bulk reindex all moments in Elasticsearch. Optionally filter by teamId. Processes in batches for memory efficiency.
| teamId | string Example: teamId=123e4567-e89b-12d3-a456-426614174000 Optional team ID to filter moments |
| batchSize | number Example: batchSize=100 Number of moments to process per batch (default: 100) |
{- "success": true,
- "message": "string",
- "data": {
- "total": 0,
- "indexed": 0,
- "errors": 0,
- "errorDetails": [
- "string"
]
}
}Bulk reindex all moments lists in Elasticsearch. Optionally filter by teamId. Processes in batches for memory efficiency.
| teamId | string Example: teamId=123e4567-e89b-12d3-a456-426614174000 Optional team ID to filter lists |
| batchSize | number Example: batchSize=100 Number of lists to process per batch (default: 100) |
{- "success": true,
- "message": "string",
- "data": {
- "total": 0,
- "indexed": 0,
- "errors": 0,
- "errorDetails": [
- "string"
]
}
}Bulk reindex all campaigns in Elasticsearch. Optionally filter by teamId. Processes in batches for memory efficiency.
| teamId | string Example: teamId=123e4567-e89b-12d3-a456-426614174000 Optional team ID to filter campaigns |
| batchSize | number Example: batchSize=100 Number of campaigns to process per batch (default: 100) |
{- "success": true,
- "message": "string",
- "data": {
- "total": 0,
- "indexed": 0,
- "errors": 0,
- "errorDetails": [
- "string"
]
}
}Retrieves all available tags with pagination, optionally filtered by type
| page | number Default: 1 Example: page=1 Page number (starts from 1) |
| limit | number <= 100 Default: 20 Example: limit=20 Number of results per page |
| orderBy | string Example: orderBy=createdAt Field to order by (e.g., createdAt, updatedAt) |
| orderDirection | string Enum: "ASC" "DESC" Example: orderDirection=DESC Order direction |
| tagType | string Enum: "user" "system" Filter tags by type (user or system) |
{- "meta": { },
- "data": {
- "data": [
- {
- "name": "basketball"
}
], - "total": 150,
- "page": 1,
- "limit": 20
}
}Searches for tags by name with pagination and optional type filtering
| page | number Default: 1 Example: page=1 Page number (starts from 1) |
| limit | number <= 100 Default: 20 Example: limit=20 Number of results per page |
| orderBy | string Example: orderBy=createdAt Field to order by (e.g., createdAt, updatedAt) |
| orderDirection | string Enum: "ASC" "DESC" Example: orderDirection=DESC Order direction |
| q required | string >= 2 characters Example: q=basketball Search query (minimum 2 characters) |
| tagType | string Enum: "user" "system" Filter tags by type (user or system) |
{- "meta": { },
- "data": {
- "data": [
- {
- "name": "basketball"
}
], - "total": 150,
- "page": 1,
- "limit": 20
}
}Retrieves paginated tags associated with a specific resource (no authentication required)
| resourceType required | string Enum: "moment-list" "moment" Type of resource to get tags for |
| resourceId required | string Example: 123e4567-e89b-12d3-a456-426614174000 Unique identifier of the resource |
| page | number Default: 1 Example: page=1 Page number (starts from 1) |
| limit | number <= 100 Default: 20 Example: limit=20 Number of results per page |
| orderBy | string Example: orderBy=createdAt Field to order by (e.g., createdAt, updatedAt) |
| orderDirection | string Enum: "ASC" "DESC" Example: orderDirection=DESC Order direction |
{- "meta": { },
- "data": {
- "data": [
- {
- "name": "basketball"
}
], - "total": 150,
- "page": 1,
- "limit": 20
}
}Search taxonomies by query string, namespace, tier, and other filters. No authentication required.
| q | string >= 2 characters Example: q=game Search query (minimum 2 characters) - searches in displayName, aliases, and description |
| namespace | string Example: namespace=event_type Filter by namespace (e.g., "event_type", "theme", "holiday") |
| tier | string Enum: "T1" "T2" Example: tier=T1 Filter by tier (T1 or T2) |
| filterExposed | boolean Example: filterExposed=true Filter by filterExposed flag (only show items available in filter UI) |
| labelExposed | boolean Example: labelExposed=true Filter by labelExposed flag (only show items available as labels) |
| entityType | string Enum: "moment-list" "moment" Example: entityType=moment Entity type for context-aware filtering (returns only relevant taxonomies for this entity type) |
| parentId | string <= 200 characters Example: parentId=systemwide.stage Filter by parent taxonomy ID (e.g., "systemwide.stage") - returns children of the parent |
[- {
- "id": "string",
- "displayName": "string",
- "namespace": "string",
- "tier": "string",
- "parentId": { },
- "description": "string",
- "aliases": "string",
- "intent": "filter",
- "filterExposed": true,
- "labelExposed": true,
- "isComputed": true,
- "conditions": "string",
- "sortOrder": 0,
- "isMultiValue": true
}
]Get suggested taxonomies based on entity type and optional context. Used for publisher UI during entity creation. No authentication required.
| entityType required | string Enum: "moment" "moment-list" Entity type (moment, moment-list) |
| parentTaxonomyId | string Example: parentTaxonomyId=event_type.game Optional parent taxonomy ID (e.g., "event_type.game") |
| startDate | string Example: startDate=2024-12-25T00:00:00Z Optional start date for context-aware suggestions (ISO 8601) |
{- "suggested": {
- "property1": {
- "required": true,
- "options": [
- {
- "id": "string",
- "displayName": "string",
- "namespace": "string",
- "tier": "string",
- "parentId": { },
- "description": "string",
- "aliases": "string",
- "intent": "filter",
- "filterExposed": true,
- "labelExposed": true,
- "isComputed": true,
- "conditions": "string",
- "sortOrder": 0,
- "isMultiValue": true
}
], - "autoDetected": "string",
- "children": [
- {
- "id": "string",
- "displayName": "string",
- "namespace": "string",
- "tier": "string",
- "parentId": { },
- "description": "string",
- "aliases": "string",
- "intent": "filter",
- "filterExposed": true,
- "labelExposed": true,
- "isComputed": true,
- "conditions": "string",
- "sortOrder": 0,
- "isMultiValue": true
}
]
}, - "property2": {
- "required": true,
- "options": [
- {
- "id": "string",
- "displayName": "string",
- "namespace": "string",
- "tier": "string",
- "parentId": { },
- "description": "string",
- "aliases": "string",
- "intent": "filter",
- "filterExposed": true,
- "labelExposed": true,
- "isComputed": true,
- "conditions": "string",
- "sortOrder": 0,
- "isMultiValue": true
}
], - "autoDetected": "string",
- "children": [
- {
- "id": "string",
- "displayName": "string",
- "namespace": "string",
- "tier": "string",
- "parentId": { },
- "description": "string",
- "aliases": "string",
- "intent": "filter",
- "filterExposed": true,
- "labelExposed": true,
- "isComputed": true,
- "conditions": "string",
- "sortOrder": 0,
- "isMultiValue": true
}
]
}
}, - "programmatic": {
- "property1": "auto",
- "property2": "auto"
}
}Internal API - Creates a new taxonomy. Id must be unique. If parentId is provided, parent must exist.
| id required | string <= 200 characters Unique identifier (e.g., "event_type.game", "theme.vip") |
| displayName required | string <= 200 characters Human-readable display name |
| namespace required | string <= 50 characters Namespace grouping (e.g., "event_type", "theme") |
| tier required | string Enum: "T1" "T2" Tier level: T1 (primary) or T2 (secondary) |
| parentId | object <= 200 characters Parent taxonomy ID for hierarchical relationships |
| description | object Description of the taxonomy item |
| aliases | object Alternative names or aliases |
| examples | object Usage examples |
| intent required | string Default: "metadata_only" Enum: "filter" "metadata_only" "label_only" Intent/purpose classification |
| filterExposed required | boolean Default: false Whether this item should be exposed in filter UI |
| labelExposed required | boolean Default: false Whether this item should be displayed as a label/badge |
| isComputed required | boolean Default: false Whether this value is computed dynamically |
| conditions | object Computation rules/expressions (for computed fields) |
| sortOrder required | number Default: 0 Sort order within namespace |
| isMultiValue required | boolean Default: false Whether multiple values can be selected/assigned |
{- "id": "event_type.game",
- "displayName": "Game",
- "namespace": "event_type",
- "tier": "T1",
- "parentId": "theme.vip",
- "description": { },
- "aliases": { },
- "examples": { },
- "intent": "filter",
- "filterExposed": true,
- "labelExposed": true,
- "isComputed": false,
- "conditions": "event.start_date==today",
- "sortOrder": 0,
- "isMultiValue": false
}{- "meta": { },
- "data": {
- "id": "string",
- "displayName": "string",
- "namespace": "string",
- "tier": "string",
- "parentId": { },
- "description": "string",
- "aliases": "string",
- "intent": "filter",
- "filterExposed": true,
- "labelExposed": true,
- "isComputed": true,
- "conditions": "string",
- "sortOrder": 0,
- "isMultiValue": true
}
}Internal API - Get all filterable taxonomies for a specific entity type. Used for internal service-to-service communication.
| entityType required | string Enum: "moment" "moment-list" Entity type (moment, moment-list) |
{- "property1": [
- {
- "id": "string",
- "displayName": "string",
- "namespace": "string",
- "tier": "string",
- "parentId": { },
- "description": "string",
- "aliases": "string",
- "intent": "filter",
- "filterExposed": true,
- "labelExposed": true,
- "isComputed": true,
- "conditions": "string",
- "sortOrder": 0,
- "isMultiValue": true
}
], - "property2": [
- {
- "id": "string",
- "displayName": "string",
- "namespace": "string",
- "tier": "string",
- "parentId": { },
- "description": "string",
- "aliases": "string",
- "intent": "filter",
- "filterExposed": true,
- "labelExposed": true,
- "isComputed": true,
- "conditions": "string",
- "sortOrder": 0,
- "isMultiValue": true
}
]
}Internal API - Gets a taxonomy by its id.
| id required | string Example: event_type.game Taxonomy id |
{- "meta": { },
- "data": {
- "id": "string",
- "displayName": "string",
- "namespace": "string",
- "tier": "string",
- "parentId": { },
- "description": "string",
- "aliases": "string",
- "intent": "filter",
- "filterExposed": true,
- "labelExposed": true,
- "isComputed": true,
- "conditions": "string",
- "sortOrder": 0,
- "isMultiValue": true
}
}Internal API - Updates an existing taxonomy. Id, namespace, and tier are immutable and cannot be updated. If parentId is provided, parent must exist.
| id required | string Example: event_type.game Taxonomy id (immutable) |
| displayName | string <= 200 characters Human-readable display name |
| parentId | object <= 200 characters Parent taxonomy ID for hierarchical relationships |
| description | string Description of the taxonomy item |
| aliases | string Alternative names or aliases |
| examples | string Usage examples |
| intent | string Enum: "filter" "metadata_only" "label_only" Intent/purpose classification |
| filterExposed | boolean Whether this item should be exposed in filter UI |
| labelExposed | boolean Whether this item should be displayed as a label/badge |
| isComputed | boolean Whether this value is computed dynamically |
| conditions | string Computation rules/expressions (for computed fields) |
| sortOrder | number Sort order within namespace |
| isMultiValue | boolean Whether multiple values can be selected/assigned |
{- "displayName": "Game",
- "parentId": "theme.vip",
- "description": "string",
- "aliases": "string",
- "examples": "string",
- "intent": "filter",
- "filterExposed": true,
- "labelExposed": true,
- "isComputed": false,
- "conditions": "event.start_date==today",
- "sortOrder": 0,
- "isMultiValue": false
}{- "meta": { },
- "data": {
- "id": "string",
- "displayName": "string",
- "namespace": "string",
- "tier": "string",
- "parentId": { },
- "description": "string",
- "aliases": "string",
- "intent": "filter",
- "filterExposed": true,
- "labelExposed": true,
- "isComputed": true,
- "conditions": "string",
- "sortOrder": 0,
- "isMultiValue": true
}
}Retrieves all teams that the current user is a member of
{- "meta": { },
- "data": [
- {
- "id": "string",
- "team": "string",
- "slug": "string",
- "externalId": "string",
- "website": "string",
- "sportId": "systemwide.sport.basketball",
- "sportDisplayName": "Basketball",
- "defaultCampaignId": "uuid-string",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "members": [
- {
- "id": "string",
- "userId": "string",
- "role": "owner",
- "isActive": true
}
]
}
]
}Creates a new team with the current user as the owner
| team required | string <= 100 characters Team name |
| website | string Team website link |
{- "team": "Marketing Team",
}{- "meta": { },
- "data": {
- "id": "string",
- "team": "string",
- "slug": "string",
- "externalId": "string",
- "website": "string",
- "sportId": "systemwide.sport.basketball",
- "sportDisplayName": "Basketball",
- "defaultCampaignId": "uuid-string",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "members": [
- {
- "id": "string",
- "userId": "string",
- "role": "owner",
- "isActive": true
}
]
}
}Returns the short URL for a team campaign. If campaignId is provided, uses that campaign (must belong to the team). Otherwise, falls back to the team's default campaign. If no default campaign exists, one will be automatically created.
| teamId required | string Example: uuid-string Team ID |
| campaignId | string Example: campaignId=123e4567-e89b-12d3-a456-426614174000 Optional campaign ID. If provided and related to the team, uses that campaign. Otherwise falls back to default campaign. |
{- "campaignId": "uuid-string",
}Retrieves a paginated list of team members with user profile details. Any active team member can access this endpoint.
| teamId required | string Example: uuid-string Team ID |
| page | number Default: 1 Example: page=1 Page number (starts from 1) |
| limit | number <= 100 Default: 20 Example: limit=20 Number of results per page |
| orderBy | string Example: orderBy=createdAt Field to order by (e.g., createdAt, updatedAt) |
| orderDirection | string Enum: "ASC" "DESC" Example: orderDirection=DESC Order direction |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Updates the role of a team member. Only team owners can perform this action.
| teamId required | string Example: uuid-string Team ID |
| memberId required | string Example: uuid-string Team member ID |
| role required | string Enum: "owner" "member" New role for the member |
{- "role": "owner"
}{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Removes a team member from the team (soft-delete). Only team owners can perform this action.
| teamId required | string Example: uuid-string Team ID |
| memberId required | string Example: uuid-string Team member ID |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Retrieves a team by its UUID or slug with all members. Only team members can access this endpoint.
| identifier required | string |
{- "meta": { },
- "data": {
- "id": "string",
- "team": "string",
- "slug": "string",
- "externalId": "string",
- "website": "string",
- "sportId": "systemwide.sport.basketball",
- "sportDisplayName": "Basketball",
- "defaultCampaignId": "uuid-string",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "members": [
- {
- "id": "string",
- "userId": "string",
- "role": "owner",
- "isActive": true
}
]
}
}Updates team information. Only team owners can update the team.
| teamId required | string Example: uuid-string Team ID |
| team | string <= 100 characters Team name |
| website | string Team website link |
{- "team": "Marketing Team",
}{- "meta": { },
- "data": {
- "id": "string",
- "team": "string",
- "slug": "string",
- "externalId": "string",
- "website": "string",
- "sportId": "systemwide.sport.basketball",
- "sportDisplayName": "Basketball",
- "defaultCampaignId": "uuid-string",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "members": [
- {
- "id": "string",
- "userId": "string",
- "role": "owner",
- "isActive": true
}
]
}
}Retrieves all brand and team-related information including brand details, logos, colors, team details, store, ticket info, and sponsors
| teamId required | string Example: uuid-string Team ID |
{- "meta": { },
- "data": {
- "team": {
- "id": "string",
- "team": "string",
- "slug": "string",
- "externalId": "string",
- "website": "string",
- "sportId": "systemwide.sport.basketball",
- "sportDisplayName": "Basketball",
- "defaultCampaignId": "uuid-string",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "members": [
- {
- "id": "string",
- "userId": "string",
- "role": "owner",
- "isActive": true
}
], - "domain": "string"
}, - "brand": {
- "logos": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "role": "primary",
- "format": { },
- "width": { },
- "height": { },
- "size": { },
- "background": { },
- "sortOrder": 0
}
], - "colors": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "colorCode": "#FF5733",
- "type": "primary"
}
], - "id": "string",
- "teamId": "string",
- "status": "string",
- "brandStatus": "incomplete",
- "brandSourceOfTruth": "customer_confirmed"
}, - "teamDetails": {
- "longName": "string",
- "shortName": "string",
- "primaryVenue": "string",
- "mascot": "string",
- "homeCityLong": "string",
- "homeCityShort": "string",
- "instagramHandles": [
- "string"
], - "officialWebsiteUrls": [
- "string"
]
}, - "teamStore": {
- "id": "string",
- "sourceOfTruth": { }
}, - "ticketInfo": {
- "type": "Full Season Membership",
- "ticketingPartner": {
- "key": "string",
- "name": "string",
- "ticketingUrl": { },
- "isActive": true
}, - "vipTicketInfo": "VIP packages include premium seating and exclusive access",
- "phone": "123-456-7890",
- "email": "example@example.com",
- "id": "string"
}, - "sponsors": [
- {
- "id": "string",
- "teamId": "string",
- "sponsorPartnerId": "string",
- "sponsorPartner": {
- "id": "string",
- "domain": "nike.com",
- "name": "Nike",
- "shortName": "NKE",
- "industries": [
- "Apparel",
- "Sports Equipment",
- "Footwear"
], - "brandId": "idtEghWGp4",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "logo": { },
- "effectiveLogo": { },
- "roles": [
- {
- "key": "string",
- "title": "string",
- "description": "string",
- "isActive": true
}
], - "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
}Internal endpoint to retrieve a paginated list of teams without relations. No authentication required.
| page | number Default: 1 Example: page=1 Page number (default: 1) |
| limit | number <= 100 Default: 20 Example: limit=20 Number of items per page (default: 20, max: 100) |
| orderBy | string Example: orderBy=createdAt Field to order by (e.g., createdAt, updatedAt) |
| orderDirection | string Enum: "ASC" "DESC" Example: orderDirection=DESC Order direction |
Internal endpoint to get a team by its slug. No authentication required.
| slug required | string Example: lakers Team slug |
{- "meta": { },
- "data": {
- "id": "string",
- "team": "string",
- "slug": "string",
- "externalId": "string",
- "website": "string",
- "sportId": "systemwide.sport.basketball",
- "sportDisplayName": "Basketball",
- "defaultCampaignId": "uuid-string",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "members": [
- {
- "id": "string",
- "userId": "string",
- "role": "owner",
- "isActive": true
}
]
}
}Internal endpoint to retrieve all brand and team-related information including brand details, logos, colors, team details, store, ticket info, and sponsors. No authentication required.
| teamId required | string |
{- "meta": { },
- "data": {
- "team": {
- "id": "string",
- "team": "string",
- "slug": "string",
- "externalId": "string",
- "website": "string",
- "sportId": "systemwide.sport.basketball",
- "sportDisplayName": "Basketball",
- "defaultCampaignId": "uuid-string",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "members": [
- {
- "id": "string",
- "userId": "string",
- "role": "owner",
- "isActive": true
}
], - "domain": "string"
}, - "brand": {
- "logos": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "role": "primary",
- "format": { },
- "width": { },
- "height": { },
- "size": { },
- "background": { },
- "sortOrder": 0
}
], - "colors": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "colorCode": "#FF5733",
- "type": "primary"
}
], - "id": "string",
- "teamId": "string",
- "status": "string",
- "brandStatus": "incomplete",
- "brandSourceOfTruth": "customer_confirmed"
}, - "teamDetails": {
- "longName": "string",
- "shortName": "string",
- "primaryVenue": "string",
- "mascot": "string",
- "homeCityLong": "string",
- "homeCityShort": "string",
- "instagramHandles": [
- "string"
], - "officialWebsiteUrls": [
- "string"
]
}, - "teamStore": {
- "id": "string",
- "sourceOfTruth": { }
}, - "ticketInfo": {
- "type": "Full Season Membership",
- "ticketingPartner": {
- "key": "string",
- "name": "string",
- "ticketingUrl": { },
- "isActive": true
}, - "vipTicketInfo": "VIP packages include premium seating and exclusive access",
- "phone": "123-456-7890",
- "email": "example@example.com",
- "id": "string"
}, - "sponsors": [
- {
- "id": "string",
- "teamId": "string",
- "sponsorPartnerId": "string",
- "sponsorPartner": {
- "id": "string",
- "domain": "nike.com",
- "name": "Nike",
- "shortName": "NKE",
- "industries": [
- "Apparel",
- "Sports Equipment",
- "Footwear"
], - "brandId": "idtEghWGp4",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "logo": { },
- "effectiveLogo": { },
- "roles": [
- {
- "key": "string",
- "title": "string",
- "description": "string",
- "isActive": true
}
], - "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
} Retrieves all media (images/videos) associated with a team.
Media is automatically moved to permanent storage when added to gallery.
Includes:
- Brand logos (imageType: 'logo')
- Brand cover images (imageType: 'cover-image')
- Moment images (imageType: 'moment-image')
- Moment videos (imageType: 'moment-video')
Supports pagination and filtering by media type.
| teamId required | string Example: 123e4567-e89b-12d3-a456-426614174000 Team ID |
| page | number >= 1 Example: page=1 Page number (default: 1) |
| limit | number [ 1 .. 100 ] Example: limit=50 Number of items per page (default: 50, max: 100) |
| types | Array of strings Items Enum: "logo" "host-avatar" "cover-image" "desktop-background-image" "moment-image" "moment-video" "sponsor-logo" "marketing-image" "marketing-video" "moment-list-image" "moment-list-video" "document" "moment-parse" Example: types=logo&types=moment-image Filter by image types |
{- "meta": { },
- "data": {
- "images": [
- {
- "id": "uuid",
- "teamId": "uuid",
- "imageType": "logo",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "total": 0,
- "page": 0,
- "limit": 0,
- "totalPages": 0
}
} Adds media (image/video) to the team gallery.
If the provided URL is from the temporary bucket, the file will be
automatically moved to permanent storage before being added to the gallery.
If the URL is already from permanent storage, it will be added directly.
This endpoint is idempotent - if the same URL already exists in the gallery
for this team, the existing entry will be returned.
| teamId required | string Example: 123e4567-e89b-12d3-a456-426614174000 Team ID |
| imageUrl required | string URL of the file (can be temporary or permanent bucket URL). If temporary, it will be moved to permanent storage. |
| imageType required | string Enum: "logo" "host-avatar" "cover-image" "desktop-background-image" "moment-image" "moment-video" "sponsor-logo" "marketing-image" "marketing-video" "moment-list-image" "moment-list-video" "document" "moment-parse" Type of media being added to gallery |
{- "imageType": "moment-image"
}{- "meta": { },
- "data": {
- "id": "uuid",
- "teamId": "uuid",
- "imageType": "logo",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Returns statistics about media in the team gallery
| teamId required | string Example: 123e4567-e89b-12d3-a456-426614174000 Team ID |
{- "meta": { },
- "data": {
- "totalImages": 0,
- "logos": 0,
- "coverImages": 0,
- "momentImages": 0,
- "momentVideos": 0
}
} Removes a media entry from the team gallery.
Note: This only removes the database entry. The actual file in cloud storage
is NOT deleted and remains available for archival purposes.
| teamId required | string Example: 123e4567-e89b-12d3-a456-426614174000 Team ID |
| galleryId required | string Example: 123e4567-e89b-12d3-a456-426614174000 Gallery entry ID |
{- "meta": { },
- "data": {
- "deleted": true,
- "id": "123e4567-e89b-12d3-a456-426614174000"
}
}Fetches brand information for a team using name and website. Extracts domain from website, fetches brand data, and matches with provided name.
| name required | string The team/brand name to match against fetched data |
| website required | string The website URL to extract domain from |
{- "meta": { },
- "data": {
- "name": "Example Corp",
- "domain": "example.com"
}
}Retrieves the team details associated with a specific team
| teamId required | string |
{- "longName": "string",
- "shortName": "string",
- "primaryVenue": "string",
- "mascot": "string",
- "homeCityLong": "string",
- "homeCityShort": "string",
- "instagramHandles": [
- "string"
], - "officialWebsiteUrls": [
- "string"
]
}Updates the team details information for a specific team. Creates a new team details if it doesn't exist.
| teamId required | string |
| longName | string Long brand name |
| shortName | string Short brand name |
| primaryVenue | string Primary venue |
| mascot | string Brand mascot |
| homeCityLong | string Home city (long format) |
| homeCityShort | string Home city (short format) |
| instagramHandles | Array of strings Instagram handles |
| officialWebsiteUrls | Array of strings Official website URLs |
{- "longName": "string",
- "shortName": "string",
- "primaryVenue": "string",
- "mascot": "string",
- "homeCityLong": "string",
- "homeCityShort": "string",
- "instagramHandles": [
- "string"
], - "officialWebsiteUrls": [
- "string"
]
}{- "longName": "string",
- "shortName": "string",
- "primaryVenue": "string",
- "mascot": "string",
- "homeCityLong": "string",
- "homeCityShort": "string",
- "instagramHandles": [
- "string"
], - "officialWebsiteUrls": [
- "string"
]
}{
}| teamId required | string |
| officialStoreUrl | string Official store URL for the team |
{
}{
}Retrieves the brand associated with a specific team. Returns brand kit including logos (with roles: PRIMARY, SECONDARY, ICON, ADDITIONAL) and colors (with types: PRIMARY, SECONDARY, OTHER). If brand is not found, it will be created and populated with BrandFetch data automatically.
| teamId required | string |
{- "meta": { },
- "data": {
- "logos": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "role": "primary"
}
], - "colors": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "colorCode": "#FF5733",
- "type": "primary"
}
],
}
}Updates the brand information for a specific team. Creates a new brand if it doesn't exist.
Important: When updating logos or colors, send the complete array. The entire array will replace existing items.
Logo Roles:
- PRIMARY: Main brand logo, typically used as the primary identifier
- SECONDARY: Alternative logo variant, used in specific contexts
- ICON: Simplified icon version, often used in small spaces
- ADDITIONAL: Additional logo variations for special use cases
Color Types:
- PRIMARY: Main brand color (not deletable)
- SECONDARY: Secondary brand color (not deletable)
- OTHER: Additional colors that can be added or removed
| teamId required | string |
required | Array of objects (BrandLogoInput) Brand logos - send complete array to replace all logos. Each logo can have a role (PRIMARY, SECONDARY, ICON, ADDITIONAL) to define its purpose. The complete array will replace existing logos, so include all logos you want to keep. |
required | Array of objects (BrandColorInput) Brand colors - send complete array to replace all colors. Each color must have a type (PRIMARY, SECONDARY, OTHER). Note: PRIMARY and SECONDARY colors are not deletable. The complete array will replace existing colors, so include all colors you want to keep. |
| coverImageUrl | string Cover image URL (optional - if not provided, will be set to null) |
| desktopBackgroundImageUrl | string Desktop background image URL (optional - if not provided, will be set to null) |
{- "logos": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "role": "primary"
}
], - "colors": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "colorCode": "#FF5733",
- "type": "primary"
}
],
}{- "logos": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "role": "primary"
}
], - "colors": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "colorCode": "#FF5733",
- "type": "primary"
}
],
}Internal endpoint to retrieve the brand kit (logos, colors, cover image) for a specific team by team ID. No authentication required.
| teamId required | string Example: 550e8400-e29b-41d4-a716-446655440000 Team ID (UUID) |
{- "logos": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "role": "primary"
}
], - "colors": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "colorCode": "#FF5733",
- "type": "primary"
}
],
}Retrieves the brand info associated with a specific team
| teamId required | string |
{- "meta": { },
- "data": {
- "shortNames": [
- "Lakers",
- "Purple and Gold"
], - "longName": "Los Angeles Lakers",
- "abbreviation": "LAL",
- "customerSupportEmail": "support@lakers.com",
- "customerSupportPhone": "+1-213-426-6000",
- "currency": "USD",
- "hashTags": [
- "#Lakers",
- "#LakeShow",
- "#PurpleAndGold"
], - "category": "Sports Team",
- "defaultCalendarBoilerplate": "Join us for an exciting game! Doors open at {doorsOpenTime}.",
- "industry": "Sports",
- "description": "The Miami Heat are an American professional basketball team based in Miami.",
- "eventTypeCalendarDefaults": {
- "Game": "Join us for game day! Arrive early for warmups.",
- "Tournament": "Tournament action — may the best team win!",
- "Conference": null
}
}
}Updates the brand info for a specific team. Creates a new brand info if it doesn't exist.
| teamId required | string |
| longName | string Official/Long name |
| shortNames | Array of strings Short names (nicknames) |
| abbreviation | string Abbreviation |
| officialWebsiteUrl | string Official website URL (primary website) |
| customerSupportEmail | string Customer support email address |
| customerSupportPhone | string Customer support phone number |
| currency | string Currency (ISO 3-letter code, defaults to USD) |
| hashTags | Array of strings Hashtags associated with the brand |
| category | string Brand category (e.g., "Sports Team") |
| defaultCalendarBoilerplate | string Default Calendar Boilerplate - Template text for calendar events |
| industry | string <= 100 characters Industry |
| description | string <= 1000 characters Brand description |
| eventTypeCalendarDefaults | object or null Per-event-type default calendar descriptions. Keys must be valid event types: Game, Tournament, Promotion, Invitation, Live Entertainment, Entertainment, Conference, Fan Experience, Merch Drops. Set a string value to define the default description for that event type. Set null to clear/remove a previously set default. Set empty string "" to intentionally leave blank. Omitted keys are preserved (partial merge). Max 2000 characters per value. |
{- "longName": "Los Angeles Lakers",
- "shortNames": [
- "Lakers",
- "Purple and Gold"
], - "abbreviation": "LAL",
- "customerSupportEmail": "support@lakers.com",
- "customerSupportPhone": "+1-213-426-6000",
- "currency": "USD",
- "hashTags": [
- "#Lakers",
- "#LakeShow",
- "#PurpleAndGold"
], - "category": "Sports Team",
- "defaultCalendarBoilerplate": "Join us for an exciting game! Doors open at {doorsOpenTime}.",
- "industry": "Sports",
- "description": "The Miami Heat are an American professional basketball team based in Miami.",
- "eventTypeCalendarDefaults": {
- "Game": "Join us for game day! Arrive early for warmups.",
- "Tournament": "Tournament action — may the best team win!",
- "Promotion": null
}
}{- "shortNames": [
- "Lakers",
- "Purple and Gold"
], - "longName": "Los Angeles Lakers",
- "abbreviation": "LAL",
- "customerSupportEmail": "support@lakers.com",
- "customerSupportPhone": "+1-213-426-6000",
- "currency": "USD",
- "hashTags": [
- "#Lakers",
- "#LakeShow",
- "#PurpleAndGold"
], - "category": "Sports Team",
- "defaultCalendarBoilerplate": "Join us for an exciting game! Doors open at {doorsOpenTime}.",
- "industry": "Sports",
- "description": "The Miami Heat are an American professional basketball team based in Miami.",
- "eventTypeCalendarDefaults": {
- "Game": "Join us for game day! Arrive early for warmups.",
- "Tournament": "Tournament action — may the best team win!",
- "Conference": null
}
}Internal endpoint to retrieve the brand info (short name, long name, abbreviation, website URLs, etc.) for a specific team by team ID. No authentication required.
| teamId required | string Example: 550e8400-e29b-41d4-a716-446655440000 Team ID (UUID) |
{- "shortNames": [
- "Lakers",
- "Purple and Gold"
], - "longName": "Los Angeles Lakers",
- "abbreviation": "LAL",
- "customerSupportEmail": "support@lakers.com",
- "customerSupportPhone": "+1-213-426-6000",
- "currency": "USD",
- "hashTags": [
- "#Lakers",
- "#LakeShow",
- "#PurpleAndGold"
], - "category": "Sports Team",
- "defaultCalendarBoilerplate": "Join us for an exciting game! Doors open at {doorsOpenTime}.",
- "industry": "Sports",
- "description": "The Miami Heat are an American professional basketball team based in Miami.",
- "eventTypeCalendarDefaults": {
- "Game": "Join us for game day! Arrive early for warmups.",
- "Tournament": "Tournament action — may the best team win!",
- "Conference": null
}
}Retrieves the brand voice associated with a specific team
| teamId required | string |
{- "meta": { },
- "data": {
- "dos": "Use friendly and approachable language",
- "donts": "Avoid using technical jargon",
- "formalityLevel": "semi_casual",
- "allowEmoji": true,
- "personalityTags": [
- "happy",
- "casual"
],
}
}Updates the brand voice for a specific team. Creates a new brand voice if it doesn't exist.
| teamId required | string |
| dos | string Do's - Brand voice guidelines |
| donts | string Don'ts - Brand voice restrictions |
| formalityLevel | string Enum: "very_formal" "formal" "semi_formal" "semi_casual" "casual" "very_casual" Formality Level - Hint for LLM about tone of communication |
| allowEmoji | boolean Allow emoji in texts |
| personalityTags | Array of strings Personality tags - Array of personality characteristics |
| uploadReferences | Array of strings Upload References - Array of file URLs |
{- "dos": "Use friendly and approachable language",
- "donts": "Avoid using technical jargon",
- "formalityLevel": "semi_casual",
- "allowEmoji": true,
- "personalityTags": [
- "happy",
- "casual"
],
}{- "dos": "Use friendly and approachable language",
- "donts": "Avoid using technical jargon",
- "formalityLevel": "semi_casual",
- "allowEmoji": true,
- "personalityTags": [
- "happy",
- "casual"
],
}Retrieves the team info associated with a specific team
| teamId required | string |
{- "meta": { },
- "data": {
- "sportId": "systemwide.sport.basketball",
- "sportDisplayName": "Basketball",
- "leagueId": "league-uuid",
- "leagueDisplayName": "NBA",
- "league": {
- "id": "string",
- "name": "National Basketball Association",
- "abbreviation": "NBA",
- "sportId": "systemwide.sport.basketball",
- "countryOrRegion": "United States/Canada",
- "level": "Major",
- "gender": "Men",
- "leagueType": "League",
- "notes": "Not fully professional; included for completeness",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "conferenceId": "conference.western",
- "conferenceDisplayName": "Western Conference",
- "genderId": "systemwide.gender.mens",
- "genderDisplayName": "Men's",
- "parentOrganization": "Player 15 Group",
- "rivalries": [
- "Los Angeles Lakers",
- "Golden State Warriors"
], - "mascotDescription": "Burnie is the mascot of the Miami Heat, the NBA basketball team since 1988.",
- "aggregatorTeamId": "string",
- "aggregatorLeagueId": "string",
- "aggregatorLastSyncedAt": "2019-08-24T14:15:22Z",
- "aggregatorSyncEnabled": true,
- "jerseyProfiles": [
- {
- "id": "uuid",
- "name": "Home Jersey",
- "automatedRule": "ALWAYS_HOME",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
}Updates the team info for a specific team. Creates a new team info if it doesn't exist. Conference is read-only.
| teamId required | string |
| sportId | string <= 200 characters Sport ID - references taxonomy.id (systemwide.sport.*). Identifies the sport type for this team. |
| leagueId | string League ID - references leagues.id (UUID). League the team belongs to (e.g., NBA, NFL, MLB). |
| genderId | string <= 200 characters Gender ID - references taxonomy.id (systemwide.gender.*). Team gender (e.g., systemwide.gender.mens, systemwide.gender.womens). |
| parentOrganization | string Parent Organization (e.g., "Player 15 Group for Phoenix Suns") |
| rivalries | Array of strings Major Rivalries |
| mascot | string Mascot image URL |
| mascotDescription | string Mascot description |
| aggregatorTeamId | string UUID of the team in the Aggregator API |
| aggregatorLeagueId | string UUID of the league in the Aggregator API |
| aggregatorSyncEnabled | boolean Whether automatic fixture sync is enabled for this team |
{- "sportId": "systemwide.sport.basketball",
- "leagueId": "league-uuid",
- "genderId": "systemwide.gender.mens",
- "parentOrganization": "Player 15 Group",
- "rivalries": [
- "Los Angeles Lakers",
- "Golden State Warriors"
], - "mascotDescription": "Burnie is the mascot of the Miami Heat, the NBA basketball team since 1988.",
- "aggregatorTeamId": "550e8400-e29b-41d4-a716-446655440000",
- "aggregatorLeagueId": "550e8400-e29b-41d4-a716-446655440001",
- "aggregatorSyncEnabled": true
}{- "sportId": "systemwide.sport.basketball",
- "sportDisplayName": "Basketball",
- "leagueId": "league-uuid",
- "leagueDisplayName": "NBA",
- "league": {
- "id": "string",
- "name": "National Basketball Association",
- "abbreviation": "NBA",
- "sportId": "systemwide.sport.basketball",
- "countryOrRegion": "United States/Canada",
- "level": "Major",
- "gender": "Men",
- "leagueType": "League",
- "notes": "Not fully professional; included for completeness",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "conferenceId": "conference.western",
- "conferenceDisplayName": "Western Conference",
- "genderId": "systemwide.gender.mens",
- "genderDisplayName": "Men's",
- "parentOrganization": "Player 15 Group",
- "rivalries": [
- "Los Angeles Lakers",
- "Golden State Warriors"
], - "mascotDescription": "Burnie is the mascot of the Miami Heat, the NBA basketball team since 1988.",
- "aggregatorTeamId": "string",
- "aggregatorLeagueId": "string",
- "aggregatorLastSyncedAt": "2019-08-24T14:15:22Z",
- "aggregatorSyncEnabled": true,
- "jerseyProfiles": [
- {
- "id": "uuid",
- "name": "Home Jersey",
- "automatedRule": "ALWAYS_HOME",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Retrieves all jersey profiles associated with a specific team
| teamId required | string |
[- {
- "id": "uuid",
- "name": "Home Jersey",
- "automatedRule": "ALWAYS_HOME",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]Creates a new jersey profile for a specific team
| teamId required | string |
| name required | string Name of the jersey |
| automatedRule required | string Enum: "ALWAYS_HOME" "ALWAYS_AWAY" "AD_HOC" Automated rule for jersey selection |
{- "name": "Home Jersey",
- "automatedRule": "ALWAYS_HOME"
}{- "id": "uuid",
- "name": "Home Jersey",
- "automatedRule": "ALWAYS_HOME",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Updates an existing jersey profile
| teamId required | string |
| jerseyId required | string |
| name required | string Name of the jersey |
| automatedRule required | string Enum: "ALWAYS_HOME" "ALWAYS_AWAY" "AD_HOC" Automated rule for jersey selection |
{- "name": "Home Jersey",
- "automatedRule": "ALWAYS_HOME"
}{- "id": "uuid",
- "name": "Home Jersey",
- "automatedRule": "ALWAYS_HOME",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Deletes an existing jersey profile
| teamId required | string |
| jerseyId required | string |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Retrieves the social media handles associated with a specific team
| teamId required | string |
{- "meta": { },
- "data": {
- "instagramHandles": [
- "@lakers",
- "@lakersofficial"
], - "snapchat": "@lakers",
- "twitter": "@Lakers",
- "tiktok": "@lakers"
}
}Updates the social media handles for a specific team. Creates a new team socials if it doesn't exist.
| teamId required | string |
| instagramHandles | Array of strings Instagram handles (array to support multiple accounts) |
| snapchat | string Snapchat handle/URL |
string Twitter handle/URL | |
| tiktok | string TikTok handle/URL |
{- "instagramHandles": [
- "@lakers",
- "@lakersofficial"
], - "snapchat": "@lakers",
- "twitter": "@Lakers",
- "tiktok": "@lakers"
}{- "instagramHandles": [
- "@lakers",
- "@lakersofficial"
], - "snapchat": "@lakers",
- "twitter": "@Lakers",
- "tiktok": "@lakers"
}Searches team sponsors by name for typeahead functionality. Returns list of matching sponsors for the specified team.
| teamId required | string |
| query required | string >= 2 characters Example: query=Nike Search query string (minimum 2 characters) |
[- {
- "id": "string",
- "teamId": "string",
- "sponsorPartnerId": "string",
- "sponsorPartner": {
- "id": "string",
- "domain": "nike.com",
- "name": "Nike",
- "shortName": "NKE",
- "industries": [
- "Apparel",
- "Sports Equipment",
- "Footwear"
], - "brandId": "idtEghWGp4",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "logo": { },
- "effectiveLogo": { },
- "roles": [
- {
- "key": "string",
- "title": "string",
- "description": "string",
- "isActive": true
}
], - "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]Retrieve sponsors associated with a specific team
| teamId required | string |
[- {
- "id": "string",
- "teamId": "string",
- "sponsorPartnerId": "string",
- "sponsorPartner": {
- "id": "string",
- "domain": "nike.com",
- "name": "Nike",
- "shortName": "NKE",
- "industries": [
- "Apparel",
- "Sports Equipment",
- "Footwear"
], - "brandId": "idtEghWGp4",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "logo": { },
- "effectiveLogo": { },
- "roles": [
- {
- "key": "string",
- "title": "string",
- "description": "string",
- "isActive": true
}
], - "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]Create a new team sponsor by linking a sponsor partner to a team with one or more roles
| teamId required | string |
| sponsorPartnerId | string Sponsor partner ID (from system-store) - deprecated, use brandId instead |
| brandId | string Brand ID from Brandfetch. If provided, will check system store for existing sponsor partner, or fetch from Brandfetch API and create one if not found. |
| roleKeys | Array of strings Sponsor role keys (array of role keys). Optional - can be empty array or omitted. If provided and non-empty, each role key must exist in the sponsor_roles table. |
| logo | string <= 512 characters Team-specific logo URL (overrides sponsor partner logo) |
{- "sponsorPartnerId": "123e4567-e89b-12d3-a456-426614174000",
- "brandId": "idtEghWGp4",
- "roleKeys": [
- "jersey_patch_sponsor",
- "official_partner"
],
}{- "id": "string",
- "teamId": "string",
- "sponsorPartnerId": "string",
- "sponsorPartner": {
- "id": "string",
- "domain": "nike.com",
- "name": "Nike",
- "shortName": "NKE",
- "industries": [
- "Apparel",
- "Sports Equipment",
- "Footwear"
], - "brandId": "idtEghWGp4",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "logo": { },
- "effectiveLogo": { },
- "roles": [
- {
- "key": "string",
- "title": "string",
- "description": "string",
- "isActive": true
}
], - "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update an existing team sponsor
| teamId required | string |
| sponsorId required | string |
| roleKeys | Array of strings Sponsor role keys (array of role keys) |
| isActive | boolean Whether the sponsor is active |
| logo | object or null <= 512 characters Team-specific logo URL (overrides sponsor partner logo). Set to null to clear. |
{- "roleKeys": [
- "jersey_patch_sponsor",
- "official_partner"
], - "isActive": true,
}{- "id": "string",
- "teamId": "string",
- "sponsorPartnerId": "string",
- "sponsorPartner": {
- "id": "string",
- "domain": "nike.com",
- "name": "Nike",
- "shortName": "NKE",
- "industries": [
- "Apparel",
- "Sports Equipment",
- "Footwear"
], - "brandId": "idtEghWGp4",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "logo": { },
- "effectiveLogo": { },
- "roles": [
- {
- "key": "string",
- "title": "string",
- "description": "string",
- "isActive": true
}
], - "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Hard delete a team sponsor, removing it from both team_sponsors and team_sponsor_roles tables
| teamId required | string |
| sponsorId required | string |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}DEPRECATED: Use GET /team/:teamId/team-venues instead.
Returns a paginated list containing non-publisher venues and publisher venues belonging to the team.
Excludes non-publisher venues overwritten by publisher. Only id, name, logoUrl, and dataSource fields are included.
| teamId required | string |
| page | number Default: 1 Example: page=1 Page number (starts from 1) |
| limit | number <= 100 Default: 20 Example: limit=20 Number of results per page |
| orderBy | string Example: orderBy=createdAt Field to order by (e.g., createdAt, updatedAt) |
| orderDirection | string Enum: "ASC" "DESC" Example: orderDirection=DESC Order direction |
| query | string >= 2 characters Example: query=Madison Square Search query for venue name (minimum 2 characters) |
{- "meta": { },
- "data": [
- {
- "id": "string",
- "officialName": "Madison Square Garden",
- "dataSource": "publisher"
}
]
}DEPRECATED: Use POST /team/:teamId/team-venues + POST /venues instead.
Creates a new venue with PUBLISHER data source for the specified team. Can optionally overwrite an existing non-publisher venue by providing parentId. User must be a member of the team.
| teamId required | string |
| parentId required | string |
| officialName required | string <= 255 characters Official venue name |
| googlePlaceId | string <= 255 characters Google Place ID |
| shortName | string <= 255 characters Short name or abbreviation for the venue |
| aliases | Array of strings Alternative names or aliases for the venue |
| latitude | number Latitude coordinate (must be between -90 and 90) |
| longitude | number Longitude coordinate (must be between -180 and 180) |
| location | string <= 255 characters Location description |
| address | string <= 255 characters Street address (optional for multi-step creation) |
| city | string <= 100 characters City (optional for multi-step creation) |
| state | string <= 50 characters State (optional for multi-step creation) |
| zip | string <= 20 characters ZIP code (optional for multi-step creation) |
| doorsOpenOffset | number Enum: 60 90 120 150 180 Doors open before event (in minutes) (optional for multi-step creation) |
| doorsOpenTime | string Doors open time (HH:mm format, e.g., "17:00:00" for 5:00 PM) |
| timezone | string <= 100 characters Local timezone (IANA format, e.g., "America/New_York") |
Array of objects (ParkingOptionDto) Parking lot options (optional for multi-step creation) | |
| parking | string Parking description (detailed text about parking options) |
| publicTransportation | string Public transportation information |
| bagPolicy | string Bag size policy (optional for multi-step creation) |
| prohibitedItems | string Prohibited items (optional for multi-step creation) |
| reentryAllowed | string Enum: "Allowed" "Not allowed" "Conditional" Re-entry policy (optional for multi-step creation) |
| reentryDetails | string Re-entry details (required if re-entry policy is Conditional) |
| adaAvailable | boolean ADA seating available (optional for multi-step creation) |
| wheelchairAccess | string Wheelchair accessibility description (optional for multi-step creation) |
| officialUrl | string <= 512 characters Official venue URL |
| logoUrl | string <= 512 characters Venue logo URL |
{- "officialName": "Madison Square Garden",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options. The Downtown Metromover has a nearby Park West station.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
}{- "meta": { },
- "data": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}DEPRECATED: Use /venues/:id instead.
Retrieves a specific venue by its unique identifier
| teamId required | string |
| id required | string |
{- "meta": { },
- "data": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}DEPRECATED: Use PATCH /team/:teamId/team-venues/:id instead.
Partially updates an existing publisher venue. Only provided fields will be updated. Supports multi-step form saves. User must be a member of the team.
| teamId required | string |
| id required | string |
| officialName | string <= 255 characters Official venue name |
| shortName | string <= 255 characters Short name or abbreviation for the venue |
| aliases | Array of strings Alternative names or aliases for the venue |
| latitude | number Latitude coordinate (must be between -90 and 90) |
| longitude | number Longitude coordinate (must be between -180 and 180) |
| location | string <= 255 characters Location description |
| address | string <= 255 characters Street address |
| city | string <= 100 characters City |
| state | string <= 50 characters State |
| zip | string <= 20 characters ZIP code |
| doorsOpenOffset | number Enum: 60 90 120 150 180 Doors open before event (in minutes) |
| doorsOpenTime | string Doors open time (HH:mm format, e.g., "17:00:00" for 5:00 PM) |
| timezone | string <= 100 characters Local timezone (IANA format, e.g., "America/New_York") |
Array of objects (ParkingOptionDto) Parking lot options | |
| parking | string Parking description (detailed text about parking options) |
| publicTransportation | string Public transportation information |
| bagPolicy | string Bag size policy |
| prohibitedItems | string Prohibited items |
| reentryAllowed | string Enum: "Allowed" "Not allowed" "Conditional" Re-entry policy |
| reentryDetails | string Re-entry details (required if re-entry policy is Conditional) |
| adaAvailable | boolean ADA seating available |
| wheelchairAccess | string Wheelchair accessibility description |
| officialUrl | string <= 512 characters Official venue URL |
| logoUrl | string <= 512 characters Venue logo URL |
{- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options. The Downtown Metromover has a nearby Park West station.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
}{- "meta": { },
- "data": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}DEPRECATED: Use PUT /team/:teamId/team-venues/:id instead.
Updates an existing publisher venue. All fields are required. Only venues created by publisher can be updated. User must be a member of the team. Metadata fields (parentId, dataSource, externalId, teamId) cannot be modified.
| teamId required | string |
| id required | string |
| officialName required | string <= 255 characters Official venue name |
| googlePlaceId | string <= 255 characters Google Place ID |
| shortName | string <= 255 characters Short name or abbreviation for the venue |
| aliases | Array of strings Alternative names or aliases for the venue |
| latitude | number Latitude coordinate (must be between -90 and 90) |
| longitude | number Longitude coordinate (must be between -180 and 180) |
| location | string <= 255 characters Location description |
| address | string <= 255 characters Street address (optional for multi-step creation) |
| city | string <= 100 characters City (optional for multi-step creation) |
| state | string <= 50 characters State (optional for multi-step creation) |
| zip | string <= 20 characters ZIP code (optional for multi-step creation) |
| doorsOpenOffset | number Enum: 60 90 120 150 180 Doors open before event (in minutes) (optional for multi-step creation) |
| doorsOpenTime | string Doors open time (HH:mm format, e.g., "17:00:00" for 5:00 PM) |
| timezone | string <= 100 characters Local timezone (IANA format, e.g., "America/New_York") |
Array of objects (ParkingOptionDto) Parking lot options (optional for multi-step creation) | |
| parking | string Parking description (detailed text about parking options) |
| publicTransportation | string Public transportation information |
| bagPolicy | string Bag size policy (optional for multi-step creation) |
| prohibitedItems | string Prohibited items (optional for multi-step creation) |
| reentryAllowed | string Enum: "Allowed" "Not allowed" "Conditional" Re-entry policy (optional for multi-step creation) |
| reentryDetails | string Re-entry details (required if re-entry policy is Conditional) |
| adaAvailable | boolean ADA seating available (optional for multi-step creation) |
| wheelchairAccess | string Wheelchair accessibility description (optional for multi-step creation) |
| officialUrl | string <= 512 characters Official venue URL |
| logoUrl | string <= 512 characters Venue logo URL |
{- "officialName": "Madison Square Garden",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options. The Downtown Metromover has a nearby Park West station.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
}{- "meta": { },
- "data": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}DEPRECATED: Use DELETE /team/:teamId/team-venues/:id instead.
Deletes a venue by its unique identifier. User must be a member of the team.
| teamId required | string |
| id required | string |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}DEPRECATED: Use PUT /team/:teamId/team-venues/:id/set-home instead.
Sets a venue as the home venue for the team. The venue must be accessible for the team (either a non-publisher venue not overwritten by your publisher venues, or one of your publisher venues). User must be a member of the team.
| teamId required | string |
| id required | string |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}DEPRECATED: Use POST /team/:teamId/team-venues/:teamVenueId/policies/:policyId instead.
Associates a policy with a venue. Both the policy and venue must belong to the team. Only team-owned venues (publisher venues) can have policies associated with them.
| teamId required | string |
| venueId required | string |
| policyId required | string |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}DEPRECATED: Use DELETE /team/:teamId/team-venues/:teamVenueId/policies/:policyId instead.
Removes the association between a policy and a venue. Both the policy and venue must belong to the team. Only team-owned venues (publisher venues) can have policies associated with them.
| teamId required | string |
| venueId required | string |
| policyId required | string |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Returns a paginated list of all venues (both publisher and non-publisher). Supports search by name and filter by Google Place ID.
| page | number Default: 1 Example: page=1 Page number (starts from 1) |
| limit | number <= 100 Default: 20 Example: limit=20 Number of results per page |
| orderBy | string Example: orderBy=createdAt Field to order by (e.g., createdAt, updatedAt) |
| orderDirection | string Enum: "ASC" "DESC" Example: orderDirection=DESC Order direction |
| search | string >= 2 characters Example: search=Madison Square Search query for venue name (minimum 2 characters) |
| googlePlaceId | string Example: googlePlaceId=ChIJhRwB-yFawokR5Phil-QQ3zM Filter by Google Place ID |
{- "meta": { },
- "data": [
- {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Creates a new venue. Can specify data source, team ID, and other metadata fields.
| officialName required | string <= 255 characters Official venue name |
| googlePlaceId | string <= 255 characters Google Place ID |
| shortName | string <= 255 characters Short name or abbreviation for the venue |
| aliases | Array of strings Alternative names or aliases for the venue |
| latitude | number Latitude coordinate (must be between -90 and 90) |
| longitude | number Longitude coordinate (must be between -180 and 180) |
| location | string <= 255 characters Location description |
| address | string <= 255 characters Street address (optional for multi-step creation) |
| city | string <= 100 characters City (optional for multi-step creation) |
| state | string <= 50 characters State (optional for multi-step creation) |
| zip | string <= 20 characters ZIP code (optional for multi-step creation) |
| doorsOpenOffset | number Enum: 60 90 120 150 180 Doors open before event (in minutes) (optional for multi-step creation) |
| doorsOpenTime | string Doors open time (HH:mm format, e.g., "17:00:00" for 5:00 PM) |
| timezone | string <= 100 characters Local timezone (IANA format, e.g., "America/New_York") |
Array of objects (ParkingOptionDto) Parking lot options (optional for multi-step creation) | |
| parking | string Parking description (detailed text about parking options) |
| publicTransportation | string Public transportation information |
| bagPolicy | string Bag size policy (optional for multi-step creation) |
| prohibitedItems | string Prohibited items (optional for multi-step creation) |
| reentryAllowed | string Enum: "Allowed" "Not allowed" "Conditional" Re-entry policy (optional for multi-step creation) |
| reentryDetails | string Re-entry details (required if re-entry policy is Conditional) |
| adaAvailable | boolean ADA seating available (optional for multi-step creation) |
| wheelchairAccess | string Wheelchair accessibility description (optional for multi-step creation) |
| officialUrl | string <= 512 characters Official venue URL |
| logoUrl | string <= 512 characters Venue logo URL |
| teamId | string Team ID (optional) |
| externalId | string <= 255 characters External ID from third-party systems (e.g., Sportsradar venue ID) |
| dataSource | string Enum: "system" "sportsradar" "brandfetch" "publisher" Data source indicating where the venue data originated from |
| parentId | string Parent venue ID - references source venue when Publisher overwrites external/system data |
{- "officialName": "Madison Square Garden",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options. The Downtown Metromover has a nearby Park West station.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000"
}{- "meta": { },
- "data": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Retrieves a specific venue by its unique identifier
| id required | string |
{- "meta": { },
- "data": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Updates an existing venue. All fields are required. Metadata fields (parentId, dataSource, externalId, teamId) cannot be modified.
| id required | string |
| officialName required | string <= 255 characters Official venue name |
| shortName | string <= 255 characters Short name or abbreviation for the venue |
| aliases | Array of strings Alternative names or aliases for the venue |
| latitude | number Latitude coordinate (must be between -90 and 90) |
| longitude | number Longitude coordinate (must be between -180 and 180) |
| location | string <= 255 characters Location description |
| address required | string <= 255 characters Street address |
| city required | string <= 100 characters City |
| state required | string <= 50 characters State |
| zip required | string <= 20 characters ZIP code |
| doorsOpenOffset required | number Enum: 60 90 120 150 180 Doors open before event (in minutes) |
| doorsOpenTime | string Doors open time (HH:mm format, e.g., "17:00:00" for 5:00 PM) |
| timezone | string <= 100 characters Local timezone (IANA format, e.g., "America/New_York") |
Array of objects (ParkingOptionDto) Parking lot options | |
| parking | string Parking description (detailed text about parking options) |
| publicTransportation | string Public transportation information |
| bagPolicy required | string Bag size policy |
| prohibitedItems required | string Prohibited items |
| reentryAllowed required | string Enum: "Allowed" "Not allowed" "Conditional" Re-entry policy |
| reentryDetails | string Re-entry details (required if re-entry policy is Conditional) |
| adaAvailable required | boolean ADA seating available |
| wheelchairAccess required | string Wheelchair accessibility description |
| officialUrl | string <= 512 characters Official venue URL |
| logoUrl | string <= 512 characters Venue logo URL |
{- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options. The Downtown Metromover has a nearby Park West station.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
}{- "meta": { },
- "data": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Partially updates an existing venue. Only provided fields will be updated. Supports multi-step form saves.
| id required | string |
| officialName | string <= 255 characters Official venue name |
| shortName | string <= 255 characters Short name or abbreviation for the venue |
| aliases | Array of strings Alternative names or aliases for the venue |
| latitude | number Latitude coordinate (must be between -90 and 90) |
| longitude | number Longitude coordinate (must be between -180 and 180) |
| location | string <= 255 characters Location description |
| address | string <= 255 characters Street address |
| city | string <= 100 characters City |
| state | string <= 50 characters State |
| zip | string <= 20 characters ZIP code |
| doorsOpenOffset | number Enum: 60 90 120 150 180 Doors open before event (in minutes) |
| doorsOpenTime | string Doors open time (HH:mm format, e.g., "17:00:00" for 5:00 PM) |
| timezone | string <= 100 characters Local timezone (IANA format, e.g., "America/New_York") |
Array of objects (ParkingOptionDto) Parking lot options | |
| parking | string Parking description (detailed text about parking options) |
| publicTransportation | string Public transportation information |
| bagPolicy | string Bag size policy |
| prohibitedItems | string Prohibited items |
| reentryAllowed | string Enum: "Allowed" "Not allowed" "Conditional" Re-entry policy |
| reentryDetails | string Re-entry details (required if re-entry policy is Conditional) |
| adaAvailable | boolean ADA seating available |
| wheelchairAccess | string Wheelchair accessibility description |
| officialUrl | string <= 512 characters Official venue URL |
| logoUrl | string <= 512 characters Venue logo URL |
{- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options. The Downtown Metromover has a nearby Park West station.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
}{- "meta": { },
- "data": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Deletes a venue by its unique identifier. This operation cascades to all TeamVenues associated with this venue.
| id required | string |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Internal endpoint to retrieve a paginated list of non-publisher venues (SYSTEM, SPORTSRADAR, BRANDFETCH). No authentication required.
| page | number Default: 1 Example: page=1 Page number (starts from 1) |
| limit | number <= 100 Default: 20 Example: limit=20 Number of results per page |
| orderBy | string Example: orderBy=createdAt Field to order by (e.g., createdAt, updatedAt) |
| orderDirection | string Enum: "ASC" "DESC" Example: orderDirection=DESC Order direction |
| query | string >= 2 characters Example: query=Madison Square Search query for venue name (minimum 2 characters) |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Creates a new venue with data from SYSTEM, SPORTSRADAR, or BRANDFETCH. Cannot create PUBLISHER venues.
| officialName required | string <= 255 characters Official venue name |
| googlePlaceId | string <= 255 characters Google Place ID |
| shortName | string <= 255 characters Short name or abbreviation for the venue |
| aliases | Array of strings Alternative names or aliases for the venue |
| latitude | number Latitude coordinate (must be between -90 and 90) |
| longitude | number Longitude coordinate (must be between -180 and 180) |
| location | string <= 255 characters Location description |
| address required | string <= 255 characters Street address |
| city required | string <= 100 characters City |
| state required | string <= 50 characters State |
| zip required | string <= 20 characters ZIP code |
| doorsOpenOffset required | number Enum: 60 90 120 150 180 Doors open before event (in minutes) |
| doorsOpenTime | string Doors open time (HH:mm format, e.g., "17:00:00" for 5:00 PM) |
| timezone | string <= 100 characters Local timezone (IANA format, e.g., "America/New_York") |
required | Array of objects (ParkingOptionDto) Parking lot options |
| parking | string Parking description (detailed text about parking options) |
| publicTransportation | string Public transportation information |
| bagPolicy required | string Bag size policy |
| prohibitedItems required | string Prohibited items |
| reentryAllowed required | string Enum: "Allowed" "Not allowed" "Conditional" Re-entry policy |
| reentryDetails | string Re-entry details (required if re-entry policy is Conditional) |
| adaAvailable required | boolean ADA seating available |
| wheelchairAccess required | string Wheelchair accessibility description |
| officialUrl | string <= 512 characters Official venue URL |
| logoUrl | string <= 512 characters Venue logo URL |
| teamId | string Team ID (optional) |
| externalId required | string <= 255 characters External ID from third-party systems (e.g., Sportsradar venue ID) |
| dataSource required | string Enum: "system" "sportsradar" "brandfetch" "publisher" Data source indicating where the venue data originated from |
{- "officialName": "Madison Square Garden",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options. The Downtown Metromover has a nearby Park West station.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar"
}{- "meta": { },
- "data": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Retrieves a specific venue by its unique identifier
| id required | string |
{- "meta": { },
- "data": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Fully updates an existing non-publisher venue. All fields are required. Cannot update PUBLISHER venues.
| id required | string |
| officialName required | string <= 255 characters Official venue name |
| shortName | string <= 255 characters Short name or abbreviation for the venue |
| aliases | Array of strings Alternative names or aliases for the venue |
| latitude | number Latitude coordinate (must be between -90 and 90) |
| longitude | number Longitude coordinate (must be between -180 and 180) |
| location | string <= 255 characters Location description |
| address required | string <= 255 characters Street address |
| city required | string <= 100 characters City |
| state required | string <= 50 characters State |
| zip required | string <= 20 characters ZIP code |
| doorsOpenOffset required | number Enum: 60 90 120 150 180 Doors open before event (in minutes) |
| doorsOpenTime | string Doors open time (HH:mm format, e.g., "17:00:00" for 5:00 PM) |
| timezone | string <= 100 characters Local timezone (IANA format, e.g., "America/New_York") |
required | Array of objects (ParkingOptionDto) Parking lot options |
| parking | string Parking description (detailed text about parking options) |
| publicTransportation | string Public transportation information |
| bagPolicy required | string Bag size policy |
| prohibitedItems required | string Prohibited items |
| reentryAllowed required | string Enum: "Allowed" "Not allowed" "Conditional" Re-entry policy |
| reentryDetails | string Re-entry details (required if re-entry policy is Conditional) |
| adaAvailable required | boolean ADA seating available |
| wheelchairAccess required | string Wheelchair accessibility description |
| officialUrl | string <= 512 characters Official venue URL |
| logoUrl | string <= 512 characters Venue logo URL |
| teamId | string Team ID (optional) |
| externalId required | string <= 255 characters External ID from third-party systems (e.g., Sportsradar venue ID) |
| dataSource required | string Enum: "system" "sportsradar" "brandfetch" "publisher" Data source indicating where the venue data originated from |
{- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options. The Downtown Metromover has a nearby Park West station.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar"
}{- "meta": { },
- "data": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Returns a paginated list of team venues for the specified team. Supports filtering by venue ID, Google Place ID, and home venue status.
| teamId required | string |
| page | number Default: 1 Example: page=1 Page number (starts from 1) |
| limit | number <= 100 Default: 20 Example: limit=20 Number of results per page |
| orderBy | string Example: orderBy=createdAt Field to order by (e.g., createdAt, updatedAt) |
| orderDirection | string Enum: "ASC" "DESC" Example: orderDirection=DESC Order direction |
| googlePlaceId | string Example: googlePlaceId=ChIJKxDbe_lYwokRVf__s8CPn-o Filter by Google Place ID (searches via joined venue) |
| venueId | string Example: venueId=123e4567-e89b-12d3-a456-426614174000 Filter by venue ID |
| isHomeVenue | boolean Example: isHomeVenue=true Filter by home venue status |
{- "meta": { },
- "data": [
- {
- "id": "string",
- "venueId": "123e4567-e89b-12d3-a456-426614174000",
- "venueName": "Madison Square Garden",
- "shortName": "MSG",
- "isHomeVenue": false
}
]
}Creates a new team venue association for the specified team. The venue must exist in the system. User must be a member of the team.
| teamId required | string |
| venueId required | string Venue ID |
| shortName | string <= 255 characters Short name or abbreviation for the venue |
| aliases | Array of strings Alternative names or aliases for the venue |
| doorsOpenTime | string Doors open time (HH:mm format, e.g., "17:00" for 5:00 PM) |
| parking | string Parking description (detailed text about parking options) |
| publicTransportation | string Public transportation information |
| isHomeVenue | boolean Whether this is the home venue for the team |
{- "venueId": "123e4567-e89b-12d3-a456-426614174000",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "doorsOpenTime": "17:00",
- "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options. The Downtown Metromover has a nearby Park West station.",
- "isHomeVenue": true
}{- "meta": { },
- "data": {
- "id": "string",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "venueId": "123e4567-e89b-12d3-a456-426614174000",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "doorsOpenTime": "17:00",
- "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "isHomeVenue": false,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Retrieves a specific team venue by its unique identifier
| teamId required | string |
| id required | string |
{- "meta": { },
- "data": {
- "id": "string",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "venueId": "123e4567-e89b-12d3-a456-426614174000",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "doorsOpenTime": "17:00",
- "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "isHomeVenue": false,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Updates an existing team venue. All fields are required. User must be a member of the team.
| teamId required | string |
| id required | string |
| shortName | string <= 255 characters Short name or abbreviation for the venue |
| aliases | Array of strings Alternative names or aliases for the venue |
| doorsOpenTime | string Doors open time (HH:mm format, e.g., "17:00" for 5:00 PM) |
| parking | string Parking description (detailed text about parking options) |
| publicTransportation | string Public transportation information |
| isHomeVenue | boolean Whether this is the home venue for the team |
{- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "doorsOpenTime": "17:00",
- "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options. The Downtown Metromover has a nearby Park West station.",
- "isHomeVenue": true
}{- "meta": { },
- "data": {
- "id": "string",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "venueId": "123e4567-e89b-12d3-a456-426614174000",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "doorsOpenTime": "17:00",
- "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "isHomeVenue": false,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Partially updates an existing team venue. Only provided fields will be updated. User must be a member of the team.
| teamId required | string |
| id required | string |
| shortName | string <= 255 characters Short name or abbreviation for the venue |
| aliases | Array of strings Alternative names or aliases for the venue |
| doorsOpenTime | string Doors open time (HH:mm format, e.g., "17:00" for 5:00 PM) |
| parking | string Parking description (detailed text about parking options) |
| publicTransportation | string Public transportation information |
| isHomeVenue | boolean Whether this is the home venue for the team |
{- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "doorsOpenTime": "17:00",
- "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options. The Downtown Metromover has a nearby Park West station.",
- "isHomeVenue": true
}{- "meta": { },
- "data": {
- "id": "string",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "venueId": "123e4567-e89b-12d3-a456-426614174000",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "doorsOpenTime": "17:00",
- "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "isHomeVenue": false,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Deletes a team venue by its unique identifier. User must be a member of the team.
| teamId required | string |
| id required | string |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Sets a team venue as the home venue for the team. This will update the team.homeVenueId and sync isHomeVenue flags across all team venues. User must be a member of the team.
| teamId required | string |
| id required | string |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Associates a policy with a team venue. Both the policy and team venue must belong to the team.
| teamId required | string |
| teamVenueId required | string |
| policyId required | string |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Removes the association between a policy and a team venue. Both the policy and team venue must belong to the team.
| teamId required | string |
| teamVenueId required | string |
| policyId required | string |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Returns all policies associated with a team venue. User must be a member of the team.
| teamId required | string |
| teamVenueId required | string |
{- "meta": { },
- "data": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "category": "venue",
- "title": "Code of Conduct",
- "description": "This policy outlines the expected behavior for all team members...",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Retrieves all streaming information associated with a specific team
| teamId required | string |
{- "meta": { },
- "data": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "streamingPartnerId": "123e4567-e89b-12d3-a456-426614174000",
- "streamingPartner": {
- "id": "string",
- "domain": "netflix.com",
- "name": "Netflix",
- "brandId": "idtEghWGp4",
- "isActive": true
}, - "streamingCategory": "Streaming",
- "note": "Additional information about the streaming",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Creates a new streaming information entry for a team. Each team can have multiple streaming partners, but each combination of teamId + streamingPartnerId must be unique.
| teamId required | string |
| streamingPartnerId required | string Streaming partner ID |
| streamingCategory required | string Enum: "Streaming" "Local" "Radio" Streaming category |
| customUrl | string Custom URL |
| note | string Note |
{- "streamingPartnerId": "123e4567-e89b-12d3-a456-426614174000",
- "streamingCategory": "Streaming",
- "note": "Additional information about the streaming"
}{- "meta": { },
- "data": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "streamingPartnerId": "123e4567-e89b-12d3-a456-426614174000",
- "streamingPartner": {
- "id": "string",
- "domain": "netflix.com",
- "name": "Netflix",
- "brandId": "idtEghWGp4",
- "isActive": true
}, - "streamingCategory": "Streaming",
- "note": "Additional information about the streaming",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Updates the blackout regions for a specific streaming information entry. Only blackout regions can be updated.
| teamId required | string |
| streamingPartnerId required | string |
| streamingCategory | string Enum: "Streaming" "Local" "Radio" Streaming category |
| customUrl | string Custom URL |
| note | string Note |
{- "streamingCategory": "Streaming",
- "note": "Additional information about the streaming"
}{- "meta": { },
- "data": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "streamingPartnerId": "123e4567-e89b-12d3-a456-426614174000",
- "streamingPartner": {
- "id": "string",
- "domain": "netflix.com",
- "name": "Netflix",
- "brandId": "idtEghWGp4",
- "isActive": true
}, - "streamingCategory": "Streaming",
- "note": "Additional information about the streaming",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Deletes a streaming information entry by team ID and streaming partner ID. User must be a member of the team.
| teamId required | string |
| streamingPartnerId required | string |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Searches theme nights by profile for typeahead functionality. Returns list of matching theme nights for the specified team.
| teamId required | string |
| query required | string >= 2 characters Example: query=Lakers Search query string (minimum 2 characters) |
[- {
- "id": "string",
- "profile": "string",
- "sponsorId": "string",
- "sponsor": {
- "id": "string",
- "teamId": "string",
- "sponsorPartnerId": "string",
- "sponsorPartner": {
- "id": "string",
- "domain": "nike.com",
- "name": "Nike",
- "shortName": "NKE",
- "industries": [
- "Apparel",
- "Sports Equipment",
- "Footwear"
], - "brandId": "idtEghWGp4",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "logo": { },
- "effectiveLogo": { },
- "roles": [
- {
- "key": "string",
- "title": "string",
- "description": "string",
- "isActive": true
}
], - "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "description": "string",
- "teamId": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]Create a new theme night for the team
| teamId required | string |
| profile required | string Theme night profile (unique per team) |
| sponsorId required | string Sponsor ID associated with this theme night |
| description required | string Description of the theme night |
{- "profile": "Lakers Pride Night",
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000",
- "description": "A special night celebrating Lakers pride with exclusive merchandise and activities"
}{- "id": "string",
- "profile": "string",
- "sponsorId": "string",
- "sponsor": {
- "id": "string",
- "teamId": "string",
- "sponsorPartnerId": "string",
- "sponsorPartner": {
- "id": "string",
- "domain": "nike.com",
- "name": "Nike",
- "shortName": "NKE",
- "industries": [
- "Apparel",
- "Sports Equipment",
- "Footwear"
], - "brandId": "idtEghWGp4",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "logo": { },
- "effectiveLogo": { },
- "roles": [
- {
- "key": "string",
- "title": "string",
- "description": "string",
- "isActive": true
}
], - "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "description": "string",
- "teamId": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update an existing theme night
| teamId required | string |
| themeNightId required | string |
| profile | string Theme night profile (unique per team) |
| sponsorId | string Sponsor ID associated with this theme night |
| description | string Description of the theme night |
{- "profile": "Lakers Pride Night",
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000",
- "description": "A special night celebrating Lakers pride with exclusive merchandise and activities"
}{- "id": "string",
- "profile": "string",
- "sponsorId": "string",
- "sponsor": {
- "id": "string",
- "teamId": "string",
- "sponsorPartnerId": "string",
- "sponsorPartner": {
- "id": "string",
- "domain": "nike.com",
- "name": "Nike",
- "shortName": "NKE",
- "industries": [
- "Apparel",
- "Sports Equipment",
- "Footwear"
], - "brandId": "idtEghWGp4",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "logo": { },
- "effectiveLogo": { },
- "roles": [
- {
- "key": "string",
- "title": "string",
- "description": "string",
- "isActive": true
}
], - "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "description": "string",
- "teamId": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a theme night
| teamId required | string |
| themeNightId required | string |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Searches hosts by name for typeahead functionality. Returns list of matching hosts for the specified team. Empty query returns all hosts.
| teamId required | string |
| query | string Example: query=John Optional search query string (no minimum length; empty returns all hosts) |
| limit | number [ 1 .. 100 ] Example: limit=10 Maximum number of results to return (default: 20, max: 100) |
[- {
- "id": "string",
- "name": "string",
- "title": "string",
- "avatar": "string",
- "teamId": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]Create a new host for the team
| teamId required | string |
| name required | string Host name |
| title required | string Host title/role |
| avatar | string Host avatar image URL |
{- "name": "John Smith",
- "title": "Senior Announcer",
}{- "id": "string",
- "name": "string",
- "title": "string",
- "avatar": "string",
- "teamId": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update an existing host
| teamId required | string |
| hostId required | string |
| name | string Host name |
| title | string Host title/role |
| avatar | string Host avatar image URL |
{- "name": "John Smith",
- "title": "Senior Announcer",
}{- "id": "string",
- "name": "string",
- "title": "string",
- "avatar": "string",
- "teamId": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a host
| teamId required | string |
| hostId required | string |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Get marketing content including hashtags, images, and videos for a team
| teamId required | string |
{- "id": "string",
- "teamId": "string",
- "hashtags": [
- "#basketball",
- "#teamspirit",
- "#victory"
], - "images": [
- {
- "id": "string",
- "imageUrl": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "videos": [
- {
- "id": "string",
- "videoUrl": "string",
- "title": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Add an image to team marketing content (moves from temporary to permanent storage)
| teamId required | string |
| imageUrl required | string Temporary image URL from upload service |
{- "id": "string",
- "teamId": "string",
- "hashtags": [
- "#basketball",
- "#teamspirit",
- "#victory"
], - "images": [
- {
- "id": "string",
- "imageUrl": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "videos": [
- {
- "id": "string",
- "videoUrl": "string",
- "title": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Add a video to team marketing content (moves from temporary to permanent storage)
| teamId required | string |
| videoUrl required | string Temporary video URL from upload service |
| title | string Video title |
{- "title": "Championship Highlights"
}{- "id": "string",
- "teamId": "string",
- "hashtags": [
- "#basketball",
- "#teamspirit",
- "#victory"
], - "images": [
- {
- "id": "string",
- "imageUrl": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "videos": [
- {
- "id": "string",
- "videoUrl": "string",
- "title": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete an image from team marketing content
| teamId required | string |
| imageId required | string |
{- "id": "string",
- "teamId": "string",
- "hashtags": [
- "#basketball",
- "#teamspirit",
- "#victory"
], - "images": [
- {
- "id": "string",
- "imageUrl": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "videos": [
- {
- "id": "string",
- "videoUrl": "string",
- "title": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a video from team marketing content
| teamId required | string |
| videoId required | string |
{- "id": "string",
- "teamId": "string",
- "hashtags": [
- "#basketball",
- "#teamspirit",
- "#victory"
], - "images": [
- {
- "id": "string",
- "imageUrl": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "videos": [
- {
- "id": "string",
- "videoUrl": "string",
- "title": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Public endpoint to get available widget definitions with complete config schemas for frontend
| category | string Filter by widget category (MOMENT_CALENDAR, MOMENT_OPTIONAL, etc.) |
| supportedEntityTypes | string Filter by supported entity types (comma-separated, e.g., "moment,campaign"). Returns widgets that support any of the specified entity types. |
[- {
- "type": "SPONSOR",
- "title": "Sponsor",
- "category": "MOMENT_OPTIONAL",
- "configSchema": {
- "type": "single-select",
- "inputs": [
- {
- "key": "sponsorId",
- "label": "Select Sponsor",
- "type": "dropdown",
- "required": true,
- "options": {
- "endpoint": "/teams/{teamId}/sponsors",
- "valueField": "id",
- "labelField": "name"
}, - "validation": {
- "required": true
}
}
]
}
}
]Retrieves all policies for a specific team and category. Category is required to separate venue and ticketing policies. If query parameter is provided (minimum 2 characters), searches policies by title or description within the category. Otherwise, returns all policies for the category.
| teamId required | string |
| category required | string Enum: "venue" "ticketing" Policy category (required) - venue or ticketing |
| query | string >= 2 characters Example: query=conduct Optional search query string (minimum 2 characters). If provided, searches in title and description. |
{- "meta": { },
- "data": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "category": "venue",
- "title": "Code of Conduct",
- "description": "This policy outlines the expected behavior for all team members...",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Creates a new policy for a team
| teamId required | string |
| category required | string Enum: "venue" "ticketing" Policy category |
| title required | string <= 500 characters Policy title (single line) |
| description | string Policy description (text area) |
{- "category": "venue",
- "title": "Code of Conduct",
- "description": "This policy outlines the expected behavior for all team members..."
}{- "meta": { },
- "data": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "category": "venue",
- "title": "Code of Conduct",
- "description": "This policy outlines the expected behavior for all team members...",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Retrieves a specific policy by its ID for a team
| teamId required | string |
| policyId required | string |
{- "meta": { },
- "data": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "category": "venue",
- "title": "Code of Conduct",
- "description": "This policy outlines the expected behavior for all team members...",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Updates an existing policy for a team
| teamId required | string |
| policyId required | string |
| title | string <= 500 characters Policy title (single line) |
| description | string Policy description (text area) |
{- "title": "Code of Conduct",
- "description": "This policy outlines the expected behavior for all team members..."
}{- "meta": { },
- "data": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "category": "venue",
- "title": "Code of Conduct",
- "description": "This policy outlines the expected behavior for all team members...",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}{- "type": "Full Season Membership",
- "ticketingPartner": {
- "key": "string",
- "name": "string",
- "ticketingUrl": { },
- "isActive": true
}, - "vipTicketInfo": "VIP packages include premium seating and exclusive access",
- "phone": "123-456-7890",
- "email": "example@example.com"
}| teamId required | string |
| type required | string Enum: "Single Game" "Full Season Membership" "Half Season Membership" "VIP" Ticket type |
| ticketingUrl required | string Ticketing URL for the team |
| ticketingPartner required | string Ticketing partner key |
| vipTicketInfo | object VIP ticket information |
| phone | string Phone number for ticket inquiries |
string Email address for ticket inquiries |
{- "type": "Full Season Membership",
- "ticketingPartner": "ticketmaster",
- "vipTicketInfo": "VIP packages include premium seating and exclusive access",
- "phone": "+1-312-455-4000",
- "email": "tickets@chicagobulls.com"
}{- "type": "Full Season Membership",
- "ticketingPartner": {
- "key": "string",
- "name": "string",
- "ticketingUrl": { },
- "isActive": true
}, - "vipTicketInfo": "VIP packages include premium seating and exclusive access",
- "phone": "123-456-7890",
- "email": "example@example.com"
}Creates a new campaign for moments or a moments-list. The user must have access to the team.
Campaign creation data
| momentIds | Array of strings Associated moment IDs (required for MOMENT type campaigns) |
| listId | string Associated moment list ID (required for LIST type campaigns) |
| teamId required | string Associated team ID |
| type required | string Enum: "moment" "list" "team" Campaign type |
| channel required | string Enum: "facebook" "instagram" "tiktok" "email" "web" "in_stadium" "other" Campaign channel |
| objective | string Enum: "sell_merch" "sell_tickets" "drive_streaming" "create_awareness" "engage_fans" "promote_event" "other" Campaign objective |
{- "momentIds": [
- "moment-uuid-1",
- "moment-uuid-2"
], - "listId": "list-uuid",
- "teamId": "team-uuid",
- "type": "moment",
- "channel": "facebook",
- "objective": "sell_tickets"
}{- "id": "uuid-string",
- "name": "Lakers vs Warriors - Facebook",
- "status": "draft",
- "isDefault": true,
- "teamId": "team-uuid",
- "listId": "list-uuid",
- "type": "moment",
- "channel": "facebook",
- "objective": "sell_tickets",
- "publishedAt": "2024-10-18T00:00:00.000Z"
}Search and filter campaigns associated with a specific moment
| momentId required | string Example: uuid-string Moment ID |
| status | string Enum: "draft" "published" "active" "paused" "completed" "cancelled" Filter by campaign status |
| channel | string Enum: "facebook" "instagram" "tiktok" "email" "web" "in_stadium" "other" Filter by campaign channel |
| tags | string Example: tags=nba,home-game Comma-separated tags to filter by (e.g., nba,home-game) |
| query | string Example: query=Lakers vs Warriors Search text to match against campaign name |
[- {
- "id": "uuid-string",
- "name": "Lakers vs Warriors - Facebook",
- "status": "draft",
- "isDefault": true,
- "teamId": "team-uuid",
- "listId": "list-uuid",
- "type": "moment",
- "channel": "facebook",
- "objective": "sell_tickets",
- "publishedAt": "2024-10-18T00:00:00.000Z"
}
]Search and filter campaigns associated with a specific list
| listId required | string Example: uuid-string List ID |
| status | string Enum: "draft" "published" "active" "paused" "completed" "cancelled" Filter by campaign status |
| channel | string Enum: "facebook" "instagram" "tiktok" "email" "web" "in_stadium" "other" Filter by campaign channel |
| tags | string Example: tags=nba,home-game Comma-separated tags to filter by (e.g., nba,home-game) |
| query | string Example: query=Lakers vs Warriors Search text to match against campaign name |
[- {
- "id": "uuid-string",
- "name": "Lakers vs Warriors - Facebook",
- "status": "draft",
- "isDefault": true,
- "teamId": "team-uuid",
- "listId": "list-uuid",
- "type": "moment",
- "channel": "facebook",
- "objective": "sell_tickets",
- "publishedAt": "2024-10-18T00:00:00.000Z"
}
]Search and filter campaigns associated with a specific team
| teamId required | string Example: uuid-string Team ID |
| status | string Enum: "draft" "published" "active" "paused" "completed" "cancelled" Filter by campaign status |
| channel | string Enum: "facebook" "instagram" "tiktok" "email" "web" "in_stadium" "other" Filter by campaign channel |
| tags | string Example: tags=nba,home-game Comma-separated tags to filter by (e.g., nba,home-game) |
| query | string Example: query=Lakers vs Warriors Search text to match against campaign name |
[- {
- "id": "uuid-string",
- "name": "Lakers vs Warriors - Facebook",
- "status": "draft",
- "isDefault": true,
- "teamId": "team-uuid",
- "listId": "list-uuid",
- "type": "moment",
- "channel": "facebook",
- "objective": "sell_tickets",
- "publishedAt": "2024-10-18T00:00:00.000Z"
}
]Returns campaign entity without nested details (moments, moments-lists, tags)
| id required | string Example: uuid-string Campaign ID |
{- "id": "uuid-string",
- "name": "Lakers vs Warriors - Facebook",
- "status": "draft",
- "isDefault": true,
- "teamId": "team-uuid",
- "listId": "list-uuid",
- "type": "moment",
- "channel": "facebook",
- "objective": "sell_tickets",
- "publishedAt": "2024-10-18T00:00:00.000Z"
}Retrieves all moments associated with a specific campaign. Works for both MOMENT type campaigns (direct moment associations) and LIST type campaigns (moments from the associated list). Optionally includes tags if include=tags is specified.
| campaignId required | string Example: uuid-string Campaign ID |
| include | string Example: include=tags Comma-separated list of related resources to include. Currently supports: "tags" |
[- {
- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "status": "draft",
- "isArchived": false,
- "teamId": "string",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "isFeatured": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "defaultCampaignId": "string",
- "isCompleted": false
}
]Returns the existing short URL if it exists, or creates a new one if it does not. The user must have access to the campaign.
| id required | string Example: uuid-string Campaign ID |
{- "campaignId": "uuid-string",
}Update only the status of a campaign with status transition validation
| id required | string Example: uuid-string Campaign ID |
UpdateCampaignStatusDto - Status update data
| status required | string Enum: "draft" "published" "active" "paused" "completed" "cancelled" Status of the campaign |
| userId | string User ID for internal endpoints. Optional, defaults to system user if not provided. |
{- "status": "published",
- "userId": "string"
}{- "id": "uuid-string",
- "name": "Lakers vs Warriors - Facebook",
- "status": "draft",
- "isDefault": true,
- "teamId": "team-uuid",
- "listId": "list-uuid",
- "type": "moment",
- "channel": "facebook",
- "objective": "sell_tickets",
- "publishedAt": "2024-10-18T00:00:00.000Z"
}Search campaigns for a specific team with filters (name, status, channel, type, objective, dates). Returns full campaign entities with cursor-based pagination. Requires team membership. Results sorted by createdAt DESC.
| teamId required | string Team ID |
| limit | number <= 100 Default: 20 Number of results per page |
| cursor | string Cursor for pagination (base64 encoded JSON with sort fields) |
| direction | string Default: "forward" Enum: "forward" "backward" Pagination direction |
| query | string Full-text search query (searches in campaign name) |
| status | string Enum: "draft" "published" "active" "paused" "completed" "cancelled" Filter by campaign status |
| channel | string Enum: "facebook" "instagram" "tiktok" "email" "web" "in_stadium" "other" Filter by campaign channel |
| type | string Enum: "moment" "list" "team" Filter by campaign type |
| objective | string Enum: "sell_merch" "sell_tickets" "drive_streaming" "create_awareness" "engage_fans" "promote_event" "other" Filter by campaign objective |
| startDate | string Filter by publishedAt start date |
| endDate | string Filter by publishedAt end date |
| isDefault | boolean Filter by whether campaign is default |
{- "limit": 20,
- "cursor": "eyJzdGFydERhdGUiOiIyMDI0LTAxLTE1VDAwOjAwOjAwWiIsImlkIjoiMTIzIn0=",
- "direction": "forward",
- "query": "Lakers vs Warriors",
- "status": "draft",
- "channel": "facebook",
- "type": "moment",
- "objective": "sell_merch",
- "startDate": "2024-01-01",
- "endDate": "2024-12-31",
- "isDefault": true
}{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}DEPRECATED: This endpoint will be removed soon. Use it only for one-time backfill of existing teams. New teams will automatically get campaigns created during setup.
Internal endpoint to create default campaigns for all teams that are missing a defaultCampaignId. This is a one-time operation to backfill existing teams.
{- "teamsProcessed": 0,
- "campaignsCreated": 0,
- "errors": 0
} Creates a moment within a team.
The user must be a member of the team. The DTO varies based on eventType.
Select an eventType to see the corresponding fields and example data.
| teamId required | string |
CreateMomentDto - Data for creating a new moment. The schema varies based on eventType. Select an example below to see the fields for each event type.
| title required | string <= 200 characters Short title for your moment |
| subHeader | string Subheader displayed after the title |
Array of objects (CreateMomentImageDto) Array of images for the moment | |
Array of objects (CreateMomentVideoDto) Array of videos for the moment | |
| description | string <= 2000 characters Description of the moment |
| customCalendarDescription | string Custom description for calendar events (overrides default description) |
| isOnlineEvent | boolean Default: false Whether this is an online event |
| onlineEventUrl | string Online event URL (required if isOnlineEvent is true) |
| venueOption | string or null Enum: "to_be_determined" "multiple_locations" "private" "to_be_announced" Venue option for offline events. When set to special values, venueId is not required. |
| venueId | string Venue ID for the moment. Optional when isOnlineEvent is false (can be null if venueOption is set). |
| timezone required | string Enum: "UTC" "EST" "CST" "MST" "PST" "GMT" "CET" "EET" "JST" "CST_CHINA" "AEDT" Timezone of the moment (short code). Must be one of the valid timezone keys. |
| startDate required | string Start date of the moment in YYYY-MM-DD format |
| endDate required | string End date of the moment in YYYY-MM-DD format. Must be >= startDate. |
| isAllDay required | boolean Default: false Whether this is an all-day event |
| startTime | string Start time in HH:mm or HH:mm:ss format. Required if isAllDay is false. |
| endTime | string End time in HH:mm or HH:mm:ss format. Required if isAllDay is false. |
| reminders | Array of strings Reminder settings for the moment (array of minute values) |
| tags | Array of strings Tags for the moment |
| hashTags | Array of strings Hashtags associated with the moment |
| eventUrl | string External event URL (e.g., ticket purchase link, event registration) |
| isFeatured | boolean Default: false Whether the moment is featured |
| featureTitle | string Feature title for featured moments. Can only be set if isFeatured is true. |
| featureCard | string Enum: "XL" "Medium" Feature card size for featured moments. Can only be set if isFeatured is true. |
Array of objects (WidgetDataDto) Widgets to attach to this moment. You can have multiple widgets of the same type (e.g., multiple SPONSOR widgets for multiple sponsors, or multiple STREAMING widgets for different platforms). Widgets are ordered by their position in the array. | |
| eventType required | string Event type must be Game |
| opponentTeamId | string Opponent team ID - references sports_teams.id (master sports team data). Optional - user must select opponent from sports_teams table. The opponent team's sportId must match the team's sportId. Opponent name and abbreviation will be automatically fetched from sports_teams table. |
| leagueContext | string League context - taxonomy ID from league.context.* namespace (e.g., league.context.home, league.context.away, league.context.neutral). Optional - must be a valid taxonomy ID from the league.context namespace. |
| stage | string Stage - taxonomy ID from systemwide.stage.* namespace (e.g., systemwide.stage.regular_season, systemwide.stage.playoffs, systemwide.stage.championship). Optional - must be a valid taxonomy ID from the systemwide.stage namespace. |
| streamingProviderIds | Array of strings Array of streaming provider IDs |
| jerseyId | string Deprecated Jersey ID from context store - @deprecated This field is deprecated and may be removed in a future version |
| themeNightProfileId | string Deprecated Theme night profile ID - @deprecated This field is deprecated and may be removed in a future version |
| specialEntertainment | string Deprecated Special entertainment information - @deprecated This field is deprecated and may be removed in a future version |
| demand | string Deprecated Enum: "Low" "Medium" "Sell-Out" Expected demand level for the game - @deprecated This field is deprecated and may be removed in a future version |
Example payload for a Game event with sponsor and streaming widgets
{- "title": "Lakers vs Warriors",
- "description": "Regular season game between Los Angeles Lakers and Golden State Warriors",
- "eventType": "Game",
- "isOnlineEvent": false,
- "venueId": "550e8400-e29b-41d4-a716-446655440000",
- "timezone": "America/Los_Angeles",
- "startDate": "2024-01-15",
- "endDate": "2024-01-15",
- "isAllDay": false,
- "startTime": "19:00",
- "endTime": "22:00",
- "opponentTeamId": "550e8400-e29b-41d4-a716-446655440001",
- "leagueContext": "league.context.home",
- "stage": "systemwide.stage.regular_season",
- "streamingProviderIds": [
- "550e8400-e29b-41d4-a716-446655440011"
], - "videos": [
- {
- "duration": 180,
- "contentType": "video/mp4"
}
], - "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440010"
}
}, - {
- "widgetType": "STREAMING_INFO",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "streamingId": "550e8400-e29b-41d4-a716-446655440011"
}
}
]
}{- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "isRecurring": true,
- "reminders": [
- "string"
], - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}, - {
- "id": "holiday.christmas",
- "displayName": "Christmas"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "eventUrl": "string",
- "externalId": "string",
- "status": "draft",
- "teamId": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "publishedAt": "2019-08-24T14:15:22Z",
- "publishDate": "string",
- "isOfficial": false,
- "isFeatured": false,
- "isCompleted": false,
- "isArchived": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "defaultCampaignId": "string",
- "hasUnpublishedChanges": false,
- "currentPublishedVersionId": "string"
}Retrieves all moments for the specified team with optional filtering using database-backed queries only. Supports include filter for archived moments and status filter for deleted moments. The user must be a member of the team.
| teamId required | string |
| page | number Default: 1 Example: page=1 Page number (starts from 1) |
| limit | number <= 100 Default: 20 Example: limit=20 Number of results per page |
| orderBy | string Example: orderBy=createdAt Field to order by (e.g., createdAt, updatedAt) |
| orderDirection | string Enum: "ASC" "DESC" Example: orderDirection=DESC Order direction |
| teamId | string Example: teamId=123e4567-e89b-12d3-a456-426614174000 Filter moments by team ID |
| scheduleId | string Example: scheduleId=123e4567-e89b-12d3-a456-426614174001 Filter moments by schedule ID |
| status | string Enum: "draft" "published" "postponed" "cancelled" "deleted" Example: status=published Filter moments by status(es). Can be a single status or multiple statuses. |
| eventTypes | Array of strings Items Enum: "Game" "Tournament" "Promotion" "Invitation" "Live Entertainment" "Entertainment" "Conference" "Fan Experience" "Merch Drops" Filter moments by event type(s). Can be a single event type or multiple event types. |
| featureCards | Array of strings Items Enum: "XL" "Medium" Filter featured moments by feature card size(s). Can be a single size or multiple sizes. |
| include | Array of strings Items Value: "isArchived" Example: include=isArchived Include archived moments. Accepts comma-separated values or array. Supported value: isArchived. |
| startDate | string Example: startDate=2024-01-01T00:00:00Z Filter moments where startDateTimeUtc >= this date (ISO 8601 UTC) |
| endDate | string Example: endDate=2024-12-31T23:59:59Z Filter moments where endDateTimeUtc <= this date (ISO 8601 UTC) |
[- {
- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "isRecurring": true,
- "reminders": [
- "string"
], - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}, - {
- "id": "holiday.christmas",
- "displayName": "Christmas"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "eventUrl": "string",
- "externalId": "string",
- "status": "draft",
- "teamId": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "publishedAt": "2019-08-24T14:15:22Z",
- "publishDate": "string",
- "isOfficial": false,
- "isFeatured": false,
- "isCompleted": false,
- "isArchived": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "defaultCampaignId": "string",
- "hasUnpublishedChanges": false,
- "currentPublishedVersionId": "string"
}
]Search moments for a specific team with filters (tags, text, status, dates, published). Returns full moment entities with cursor-based pagination. Requires team membership. Results sorted by startDateTimeUtc ASC.
| teamId required | string Team ID |
| limit | number <= 100 Default: 20 Number of results per page |
| cursor | string Cursor for pagination (base64 encoded JSON with sort fields) |
| direction | string Default: "forward" Enum: "forward" "backward" Pagination direction |
| query | string Full-text search query (searches in title, description, location) |
| teamId | string Filter by team ID |
| tags | Array of strings Filter by tags (all tags must match) |
| status | Array of strings Items Enum: "draft" "published" "postponed" "cancelled" "deleted" Filter by one or more moment statuses (OR logic). Accepts a single status string or an array of statuses. |
| eventTypes | Array of strings Items Enum: "Game" "Tournament" "Promotion" "Invitation" "Live Entertainment" "Entertainment" "Conference" "Fan Experience" "Merch Drops" Filter by event types (OR logic) |
| featureCards | Array of strings Items Enum: "XL" "Medium" Filter by featured card sizes (OR logic). When provided, only featured moments are returned. |
| startDate | string Filter by start date (earliest date the moment occurs) |
| endDate | string Filter by end date (latest date the moment occurs) |
| timezone | string Optional IANA timezone name (e.g., "America/New_York", "Europe/London") for time-based tag conversions. When provided, time-based tags like time.today, time.tomorrow will be calculated relative to this timezone. Should be obtained from browser Intl API or IANA timezone database. |
{- "limit": 20,
- "cursor": "eyJzdGFydERhdGUiOiIyMDI0LTAxLTE1VDAwOjAwOjAwWiIsImlkIjoiMTIzIn0=",
- "direction": "forward",
- "query": "basketball game",
- "teamId": "team-uuid-123",
- "tags": [
- "nba",
- "playoffs"
], - "status": [
- "draft"
], - "eventTypes": [
- "Game"
], - "featureCards": [
- "XL"
], - "startDate": "2024-01-01",
- "endDate": "2024-12-31",
- "timezone": "America/New_York"
}{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Returns the next upcoming moment for the team based on start time. Only returns PUBLISHED moments that are not completed. Returns null if no upcoming moments exist.
| teamId required | string Team ID |
| eventType | string Enum: "Game" "Tournament" "Promotion" "Invitation" "Live Entertainment" "Entertainment" "Conference" "Fan Experience" "Merch Drops" Example: eventType=Game Filter by event type |
{- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "isRecurring": true,
- "reminders": [
- "string"
], - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}, - {
- "id": "holiday.christmas",
- "displayName": "Christmas"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "eventUrl": "string",
- "externalId": "string",
- "status": "draft",
- "teamId": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "publishedAt": "2019-08-24T14:15:22Z",
- "publishDate": "string",
- "isOfficial": false,
- "isFeatured": false,
- "isCompleted": false,
- "isArchived": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "defaultCampaignId": "string",
- "hasUnpublishedChanges": false,
- "currentPublishedVersionId": "string"
}Retrieves a specific moment by its ID. The user must be a member of the team that owns the moment.
| teamId required | string |
| momentId required | string |
{- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "isRecurring": true,
- "reminders": [
- "string"
], - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}, - {
- "id": "holiday.christmas",
- "displayName": "Christmas"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "eventUrl": "string",
- "externalId": "string",
- "status": "draft",
- "teamId": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "publishedAt": "2019-08-24T14:15:22Z",
- "publishDate": "string",
- "isOfficial": false,
- "isFeatured": false,
- "isCompleted": false,
- "isArchived": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "defaultCampaignId": "string",
- "hasUnpublishedChanges": false,
- "currentPublishedVersionId": "string"
}Update a moment with status validation and campaign creation on publish
| teamId required | string |
| momentId required | string |
UpdateMomentDto - Data for updating an existing moment. The schema varies based on eventType.
| title | string <= 200 characters Short title for your moment |
| subHeader | string Subheader displayed after the title |
Array of objects (CreateMomentImageDto) Array of images for the moment | |
Array of objects (CreateMomentVideoDto) Array of videos for the moment | |
| description | string <= 2000 characters Description of the moment |
| customCalendarDescription | string Custom description for calendar events (overrides default description) |
| isOnlineEvent | boolean Default: false Whether this is an online event |
| onlineEventUrl | string Online event URL (required if isOnlineEvent is true) |
| venueOption | string or null Enum: "to_be_determined" "multiple_locations" "private" "to_be_announced" Venue option for offline events. When set to special values, venueId is not required. |
| venueId | string Venue ID for the moment. Optional when isOnlineEvent is false (can be null if venueOption is set). |
| timezone | string Enum: "UTC" "EST" "CST" "MST" "PST" "GMT" "CET" "EET" "JST" "CST_CHINA" "AEDT" Timezone of the moment (short code). Must be one of the valid timezone keys. |
| startDate | string Start date of the moment in YYYY-MM-DD format. If provided, endDate must also be provided. |
| endDate | string End date of the moment in YYYY-MM-DD format. Must be >= startDate. If provided, startDate must also be provided. |
| isAllDay | boolean Default: false Whether this is an all-day event |
| startTime | string Start time in HH:mm or HH:mm:ss format. Required if isAllDay is false. |
| endTime | string End time in HH:mm or HH:mm:ss format. Required if isAllDay is false. |
| reminders | Array of strings Reminder settings for the moment (array of minute values) |
| tags | Array of strings Tags for the moment |
| hashTags | Array of strings Hashtags associated with the moment |
| eventUrl | string External event URL (e.g., ticket purchase link, event registration) |
| externalId | string External ID from third-party systems (e.g., ESPN, Ticketmaster) |
| isOfficial | boolean Whether the moment is from an official source (e.g., official website, official API) |
| isFeatured | boolean Whether the moment is featured |
| featureTitle | string Feature title for featured moments. Can only be set if isFeatured is true. Will be set to null if isFeatured is false. |
| featureCard | string Enum: "XL" "Medium" Feature card size for featured moments. Can only be set if isFeatured is true. Will be set to null if isFeatured is false. |
Array of objects (WidgetDataDto) Widgets to attach to this moment | |
| opponentTeamId | string Opponent team ID - references sports_teams.id (master sports team data). If provided, should reference a valid sports team from the sports_teams table. Opponent name and abbreviation will be automatically fetched from sports_teams table. |
| leagueContext | string League context - taxonomy ID from league.context.* namespace (e.g., league.context.home, league.context.away, league.context.neutral). If provided, must be a valid taxonomy ID from the league.context namespace. |
| stage | string Stage - taxonomy ID from systemwide.stage.* namespace (e.g., systemwide.stage.regular_season, systemwide.stage.playoffs, systemwide.stage.championship). If provided, must be a valid taxonomy ID from the systemwide.stage namespace. |
| streamingProviderIds | Array of strings Array of streaming provider IDs |
| jerseyId | string Deprecated Jersey ID from context store - @deprecated This field is deprecated and may be removed in a future version |
| themeNightProfileId | string Deprecated Theme night profile ID - @deprecated This field is deprecated and may be removed in a future version |
| specialEntertainment | string Deprecated Special entertainment information - @deprecated This field is deprecated and may be removed in a future version |
| demand | string Deprecated Enum: "Low" "Medium" "Sell-Out" Expected demand level for the game - @deprecated This field is deprecated and may be removed in a future version |
{- "title": "Lakers vs Warriors",
- "subHeader": "Regular Season Game",
- "videos": [
- {
- "duration": 180,
- "contentType": "video/mp4"
}
], - "description": "Regular season game between Los Angeles Lakers and Golden State Warriors",
- "customCalendarDescription": "Join us for an exciting game! Doors open at 6 PM.",
- "isOnlineEvent": false,
- "venueOption": "to_be_determined",
- "venueId": "venue-uuid",
- "timezone": "EST",
- "startDate": "2024-01-15",
- "endDate": "2024-01-15",
- "isAllDay": true,
- "startTime": "19:00",
- "endTime": "22:00",
- "reminders": [
- 60,
- 1440
], - "tags": [
- "Watch Party",
- "Reg Season",
- "Playoffs"
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "externalId": "espn-game-401234567",
- "isOfficial": true,
- "isFeatured": false,
- "featureTitle": "Featured Game of the Week",
- "featureCard": "XL",
- "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "sponsor-uuid-123"
}
}, - {
- "widgetType": "STREAMING_INFO",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "streamingId": "streaming-uuid-456"
}
}
], - "opponentTeamId": "sports-team-uuid",
- "leagueContext": "league.context.home",
- "stage": "systemwide.stage.regular_season",
- "streamingProviderIds": [
- "provider-uuid-1",
- "provider-uuid-2"
], - "jerseyId": "jersey-uuid",
- "themeNightProfileId": "theme-night-profile-uuid",
- "specialEntertainment": "Live music performance by local band",
- "demand": "Medium",
- "eventType": "Game"
}{- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "isRecurring": true,
- "reminders": [
- "string"
], - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}, - {
- "id": "holiday.christmas",
- "displayName": "Christmas"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "eventUrl": "string",
- "externalId": "string",
- "status": "draft",
- "teamId": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "publishedAt": "2019-08-24T14:15:22Z",
- "publishDate": "string",
- "isOfficial": false,
- "isFeatured": false,
- "isCompleted": false,
- "isArchived": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "defaultCampaignId": "string",
- "hasUnpublishedChanges": false,
- "currentPublishedVersionId": "string"
}Update only the status of a moment with status validation and campaign creation on publish
| teamId required | string |
| momentId required | string |
UpdateMomentStatusDto - Status update data
| status required | string Enum: "draft" "published" "postponed" "cancelled" "deleted" Status of the moment |
| publishDate | string Publish date in YYYY-MM-DD format. Required when status is POSTPONED, especially when transitioning from DRAFT. This is the date when the moment should be published. |
| hardDelete | boolean Default: false When archiving a moment, if hardDelete=true, calls Consumer API delete with softDelete=false (hard delete). Only applies to ARCHIVED status. Default: no Consumer API call for ARCHIVED. |
| softDelete | boolean Default: true Soft delete flag when cancelling a moment. Optional, defaults to true. When false, calls Consumer API with softDelete=false (hard delete). Only applies to CANCELLED status. |
| userId | string User ID for internal endpoints. Optional, defaults to system user if not provided. |
{- "status": "published",
- "publishDate": "2024-02-15",
- "hardDelete": false,
- "softDelete": true,
- "userId": "string"
}{- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "isRecurring": true,
- "reminders": [
- "string"
], - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}, - {
- "id": "holiday.christmas",
- "displayName": "Christmas"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "eventUrl": "string",
- "externalId": "string",
- "status": "draft",
- "teamId": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "publishedAt": "2019-08-24T14:15:22Z",
- "publishDate": "string",
- "isOfficial": false,
- "isFeatured": false,
- "isCompleted": false,
- "isArchived": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "defaultCampaignId": "string",
- "hasUnpublishedChanges": false,
- "currentPublishedVersionId": "string"
}Archives a moment by setting isArchived=true. Once archived, a moment cannot be unarchived. Archived moments are excluded from feeds and studio search, but remain accessible via campaigns and lists (FE can badge/hide). Archived moments remain in user calendars.
| teamId required | string Team ID |
| momentId required | string Moment ID |
Archive status update
| isArchived required | boolean Set to true to archive the moment. Once archived, a moment cannot be unarchived. |
{- "isArchived": true
}{- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "isRecurring": true,
- "reminders": [
- "string"
], - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}, - {
- "id": "holiday.christmas",
- "displayName": "Christmas"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "eventUrl": "string",
- "externalId": "string",
- "status": "draft",
- "teamId": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "publishedAt": "2019-08-24T14:15:22Z",
- "publishDate": "string",
- "isOfficial": false,
- "isFeatured": false,
- "isCompleted": false,
- "isArchived": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "defaultCampaignId": "string",
- "hasUnpublishedChanges": false,
- "currentPublishedVersionId": "string"
}Saves the provided fields as a draft version (upsert). eventType is always taken from the moment (immutable). startDateTimeUtc/endDateTimeUtc are computed server-side. Moment must be in PUBLISHED status.
| teamId required | string Team ID |
| momentId required | string Moment ID |
| title required | string <= 200 characters Title |
| description | string |
| customCalendarDescription | string |
| startDate required | string Start date (YYYY-MM-DD) |
| endDate required | string End date (YYYY-MM-DD) |
| startTime | string Required when isAllDay is false |
| endTime | string Required when isAllDay is false |
| timezone required | string Enum: "UTC" "America/New_York" "America/Chicago" "America/Denver" "America/Los_Angeles" "Europe/London" "Europe/Paris" "Europe/Berlin" "Asia/Tokyo" "Asia/Shanghai" "Australia/Sydney" IANA timezone name |
| isAllDay required | boolean |
| isOnlineEvent required | boolean |
| onlineEventUrl | string Required when isOnlineEvent is true |
| eventUrl | string |
| venueId | string <uuid> Venue ID — server builds snapshot from it |
| eventData | object Event-type-specific data (e.g. opponent, scores) |
| changeNote | string Human-readable note about what changed |
| extras | object |
{- "title": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "startDate": "string",
- "endDate": "string",
- "startTime": "string",
- "endTime": "string",
- "timezone": "UTC",
- "isAllDay": true,
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "eventUrl": "string",
- "venueId": "ff212efe-8b09-4400-9323-a587c102bdd0",
- "eventData": { },
- "changeNote": "string",
- "extras": { }
}{- "id": "string",
- "momentId": "string",
- "versionNumber": null,
- "isDraft": true,
- "title": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "startDate": "string",
- "endDate": "string",
- "startTime": "string",
- "endTime": "string",
- "startDateTimeUtc": "string",
- "endDateTimeUtc": "string",
- "timezone": "string",
- "isAllDay": true,
- "venueSnapshot": { },
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "eventUrl": "string",
- "eventType": "string",
- "eventData": { },
- "publishedBy": null,
- "publishedAt": null,
- "changeNote": "string",
- "createdAt": "string",
- "isCurrent": true
}Returns all versions for a moment. The draft version (if any) appears first with isDraft: true and versionNumber: null. Published versions follow, ordered by versionNumber DESC.
| teamId required | string Team ID |
| momentId required | string Moment ID |
[- {
- "id": "string",
- "versionNumber": null,
- "isDraft": true,
- "publishedBy": { },
- "publishedAt": { },
- "changeNote": "string",
- "isCurrent": true
}
]Promotes a draft version to a published snapshot. Assigns a version number, updates the moments table, and notifies subscribers.
| teamId required | string Team ID |
| momentId required | string Moment ID |
| versionId required | string Draft version ID to publish |
{- "id": "string",
- "momentId": "string",
- "versionNumber": null,
- "isDraft": true,
- "title": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "startDate": "string",
- "endDate": "string",
- "startTime": "string",
- "endTime": "string",
- "startDateTimeUtc": "string",
- "endDateTimeUtc": "string",
- "timezone": "string",
- "isAllDay": true,
- "venueSnapshot": { },
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "eventUrl": "string",
- "eventType": "string",
- "eventData": { },
- "publishedBy": null,
- "publishedAt": null,
- "changeNote": "string",
- "createdAt": "string",
- "isCurrent": true
}Returns the latest published (non-draft) version for a moment.
| teamId required | string Team ID |
| momentId required | string Moment ID |
{- "id": "string",
- "momentId": "string",
- "versionNumber": null,
- "isDraft": true,
- "title": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "startDate": "string",
- "endDate": "string",
- "startTime": "string",
- "endTime": "string",
- "startDateTimeUtc": "string",
- "endDateTimeUtc": "string",
- "timezone": "string",
- "isAllDay": true,
- "venueSnapshot": { },
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "eventUrl": "string",
- "eventType": "string",
- "eventData": { },
- "publishedBy": null,
- "publishedAt": null,
- "changeNote": "string",
- "createdAt": "string",
- "isCurrent": true
}Returns the full snapshot of a specific published version.
| teamId required | string Team ID |
| momentId required | string Moment ID |
| versionId required | string Version ID |
{- "id": "string",
- "momentId": "string",
- "versionNumber": null,
- "isDraft": true,
- "title": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "startDate": "string",
- "endDate": "string",
- "startTime": "string",
- "endTime": "string",
- "startDateTimeUtc": "string",
- "endDateTimeUtc": "string",
- "timezone": "string",
- "isAllDay": true,
- "venueSnapshot": { },
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "eventUrl": "string",
- "eventType": "string",
- "eventData": { },
- "publishedBy": null,
- "publishedAt": null,
- "changeNote": "string",
- "createdAt": "string",
- "isCurrent": true
}Submits a CSV/Excel file URL to the parser service for processing. Returns a job ID to track the parsing progress.
| teamId required | string Team ID |
| url required | string URL of the CSV/Excel file to parse |
| filename | string Original filename (optional) |
{- "filename": "schedule.csv"
}{- "jobId": "550e8400-e29b-41d4-a716-446655440000",
- "status": "processing"
}| teamId required | string Team ID |
| jobId required | string Parsing job ID |
{- "jobId": "550e8400-e29b-41d4-a716-446655440000",
- "status": "processing",
- "parsedMomentsCount": 10,
- "createdMomentsCount": 8,
- "skippedMomentsCount": 2,
- "skippedMomentIds": [
- "550e8400-e29b-41d4-a716-446655440002"
], - "erroredMomentsCount": 3,
- "errorMessages": [
- "Row 1: opponentTeamId is required",
- "Row 2: Invalid date format"
], - "momentIds": [
- "550e8400-e29b-41d4-a716-446655440000"
], - "venueIds": [
- "550e8400-e29b-41d4-a716-446655440001"
], - "errorMessage": "Invalid file format",
- "createdAt": "2024-01-01T00:00:00.000Z",
- "updatedAt": "2024-01-01T00:00:00.000Z"
}Updates only the schedules in parsedData, preserving existing metadata (file, summary, validation). Only allowed when status is PENDING or PARSED.
| teamId required | string Team ID |
| jobId required | string Parsing job ID |
required | Array of objects (ParsedScheduleDto) Array of schedules with moments to update |
{- "schedules": [
- {
- "schedule_id": "string",
- "moments": [
- {
- "row_number": 0,
- "moment_id": "string",
- "required": {
- "title": "string",
- "event_type": "string",
- "start_date": "string",
- "end_date": "string",
- "start_time": "string",
- "is_all_day": true,
- "location": {
- "venue_name": "string",
- "address": "string",
- "full_address": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "opponent": "string"
}, - "optional": {
- "end_time": "string",
- "timezone": "string",
- "description": "string",
- "calendar_description": "string",
- "sub_header": "string",
- "opponent_abbreviation": "string",
- "season_stage": "string",
- "is_home": true,
- "home_team": "string",
- "event_url": "string",
- "is_featured": true,
- "hash_tags": [
- "string"
], - "reminders": [
- 0
], - "tags": [
- "string"
], - "demand": "Medium",
- "opponent_team_id": "d72b1d7d-70b1-43b6-8fae-baefb5bd67d4",
- "is_online_event": true,
- "online_event_url": "string"
}
}
]
}
]
}{- "jobId": "550e8400-e29b-41d4-a716-446655440000",
- "status": "processing",
- "parsedMomentsCount": 10,
- "createdMomentsCount": 8,
- "skippedMomentsCount": 2,
- "skippedMomentIds": [
- "550e8400-e29b-41d4-a716-446655440002"
], - "erroredMomentsCount": 3,
- "errorMessages": [
- "Row 1: opponentTeamId is required",
- "Row 2: Invalid date format"
], - "momentIds": [
- "550e8400-e29b-41d4-a716-446655440000"
], - "venueIds": [
- "550e8400-e29b-41d4-a716-446655440001"
], - "errorMessage": "Invalid file format",
- "createdAt": "2024-01-01T00:00:00.000Z",
- "updatedAt": "2024-01-01T00:00:00.000Z"
}Triggers Cloud Run Job to create moments from parsed data. Fetches latest data from parser API if needed. Job must be in PARSED status or have parsed data available.
| teamId required | string Team ID |
| jobId required | string Parsing job ID |
{- "jobId": "550e8400-e29b-41d4-a716-446655440000",
- "status": "processing",
- "parsedMomentsCount": 10,
- "createdMomentsCount": 8,
- "skippedMomentsCount": 2,
- "skippedMomentIds": [
- "550e8400-e29b-41d4-a716-446655440002"
], - "erroredMomentsCount": 3,
- "errorMessages": [
- "Row 1: opponentTeamId is required",
- "Row 2: Invalid date format"
], - "momentIds": [
- "550e8400-e29b-41d4-a716-446655440000"
], - "venueIds": [
- "550e8400-e29b-41d4-a716-446655440001"
], - "errorMessage": "Invalid file format",
- "createdAt": "2024-01-01T00:00:00.000Z",
- "updatedAt": "2024-01-01T00:00:00.000Z"
}Internal endpoint to create a moment without user authentication. For system use only. Accepts event-specific fields based on eventType.
Moment creation data. Can include event-specific fields (opponent, price, url, etc.) based on eventType.
| title required | string <= 200 characters Short title for your moment |
| subHeader | string Subheader displayed after the title |
Array of objects (CreateMomentImageDto) Array of images for the moment | |
Array of objects (CreateMomentVideoDto) Array of videos for the moment | |
| description | string <= 2000 characters Description of the moment |
| customCalendarDescription | string Custom description for calendar events (overrides default description) |
| eventType required | string Enum: "Game" "Tournament" "Promotion" "Invitation" "Live Entertainment" "Entertainment" "Conference" "Fan Experience" "Merch Drops"
|
| isOnlineEvent | boolean Default: false Whether this is an online event |
| onlineEventUrl | string Online event URL (required if isOnlineEvent is true) |
| venueOption | string or null Enum: "to_be_determined" "multiple_locations" "private" "to_be_announced" Venue option for offline events. When set to special values, venueId is not required. |
| venueId | string Venue ID for the moment. Optional when isOnlineEvent is false (can be null if venueOption is set). |
| timezone required | string Enum: "UTC" "EST" "CST" "MST" "PST" "GMT" "CET" "EET" "JST" "CST_CHINA" "AEDT" Timezone of the moment (short code). Must be one of the valid timezone keys. |
| startDate required | string Start date of the moment in YYYY-MM-DD format |
| endDate required | string End date of the moment in YYYY-MM-DD format. Must be >= startDate. |
| isAllDay required | boolean Default: false Whether this is an all-day event |
| startTime | string Start time in HH:mm or HH:mm:ss format. Required if isAllDay is false. |
| endTime | string End time in HH:mm or HH:mm:ss format. Required if isAllDay is false. |
| reminders | Array of strings Reminder settings for the moment (array of minute values) |
| tags | Array of strings Tags for the moment |
| hashTags | Array of strings Hashtags associated with the moment |
| eventUrl | string External event URL (e.g., ticket purchase link, event registration) |
| isFeatured | boolean Default: false Whether the moment is featured |
| featureTitle | string Feature title for featured moments. Can only be set if isFeatured is true. |
| featureCard | string Enum: "XL" "Medium" Feature card size for featured moments. Can only be set if isFeatured is true. |
Array of objects (WidgetDataDto) Widgets to attach to this moment. You can have multiple widgets of the same type (e.g., multiple SPONSOR widgets for multiple sponsors, or multiple STREAMING widgets for different platforms). Widgets are ordered by their position in the array. | |
| teamId required | string Team ID that the moment belongs to |
| scheduleId | string Schedule ID that the moment belongs to (optional) |
| createdBy | string User ID who is creating the moment (UUID). Optional for automated syncs. |
| externalId | string External ID from third-party systems (e.g., ESPN, Ticketmaster) |
| externalSource | string External source system that provided this moment (e.g., aggregator, espn) |
| isOfficial | boolean Default: false Whether the moment is from an official source (e.g., official website, official API) |
| fixtureChecksum | string MD5 checksum of fixture data for change detection (used by fixture sync) |
{- "title": "Lakers vs Warriors",
- "subHeader": "Regular Season Game",
- "videos": [
- {
- "duration": 180,
- "contentType": "video/mp4"
}
], - "description": "Regular season game between Los Angeles Lakers and Golden State Warriors",
- "customCalendarDescription": "Join us for an exciting game! Doors open at 6 PM.",
- "eventType": "Game",
- "isOnlineEvent": false,
- "venueOption": "to_be_determined",
- "venueId": "venue-uuid",
- "timezone": "UTC",
- "startDate": "2024-01-15",
- "endDate": "2024-01-15",
- "isAllDay": true,
- "startTime": "19:00",
- "endTime": "22:00",
- "reminders": [
- 60,
- 1440
], - "tags": [
- "Watch Party",
- "Reg Season",
- "Playoffs"
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "isFeatured": false,
- "featureTitle": "Featured Game of the Week",
- "featureCard": "XL",
- "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "sponsor-uuid-123"
}
}, - {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "sponsor-uuid-456"
}
}, - {
- "widgetType": "STREAMING_INFO",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "streamingId": "streaming-uuid-789"
}
}
], - "teamId": "550e8400-e29b-41d4-a716-446655440000",
- "scheduleId": "660e8400-e29b-41d4-a716-446655440001",
- "createdBy": "550e8400-e29b-41d4-a716-446655440000",
- "externalId": "espn-game-401234567",
- "externalSource": "aggregator",
- "isOfficial": true,
- "fixtureChecksum": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
}{- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "isRecurring": true,
- "reminders": [
- "string"
], - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}, - {
- "id": "holiday.christmas",
- "displayName": "Christmas"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "eventUrl": "string",
- "externalId": "string",
- "status": "draft",
- "teamId": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "publishedAt": "2019-08-24T14:15:22Z",
- "publishDate": "string",
- "isOfficial": false,
- "isFeatured": false,
- "isCompleted": false,
- "isArchived": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "defaultCampaignId": "string",
- "hasUnpublishedChanges": false,
- "currentPublishedVersionId": "string"
}Internal endpoint to get moment data by IDs. Returns type-specific response DTO based on eventType, same format as /api/v1/internal/moments/by-slug/{momentSlug}.
| ids required | Array of strings Array of entity IDs |
{- "ids": [
- "uuid-1",
- "uuid-2",
- "uuid-3"
]
}[- {
- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "isRecurring": true,
- "reminders": [
- "string"
], - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}, - {
- "id": "holiday.christmas",
- "displayName": "Christmas"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "eventUrl": "string",
- "externalId": "string",
- "status": "draft",
- "teamId": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "publishedAt": "2019-08-24T14:15:22Z",
- "publishDate": "string",
- "isOfficial": false,
- "isFeatured": false,
- "isCompleted": false,
- "isArchived": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "defaultCampaignId": "string",
- "hasUnpublishedChanges": false,
- "currentPublishedVersionId": "string"
}
]Internal endpoint to update a moment without user authentication. For system use only.
| momentId required | string |
UpdateMomentDto - Data for updating an existing moment
| title | string <= 200 characters Short title for your moment |
| subHeader | string Subheader displayed after the title |
Array of objects (CreateMomentImageDto) Array of images for the moment | |
Array of objects (CreateMomentVideoDto) Array of videos for the moment | |
| description | string <= 2000 characters Description of the moment |
| customCalendarDescription | string Custom description for calendar events (overrides default description) |
| isOnlineEvent | boolean Default: false Whether this is an online event |
| onlineEventUrl | string Online event URL (required if isOnlineEvent is true) |
| venueOption | string or null Enum: "to_be_determined" "multiple_locations" "private" "to_be_announced" Venue option for offline events. When set to special values, venueId is not required. |
| venueId | string Venue ID for the moment. Optional when isOnlineEvent is false (can be null if venueOption is set). |
| timezone | string Enum: "UTC" "EST" "CST" "MST" "PST" "GMT" "CET" "EET" "JST" "CST_CHINA" "AEDT" Timezone of the moment (short code). Must be one of the valid timezone keys. |
| startDate | string Start date of the moment in YYYY-MM-DD format. If provided, endDate must also be provided. |
| endDate | string End date of the moment in YYYY-MM-DD format. Must be >= startDate. If provided, startDate must also be provided. |
| isAllDay | boolean Default: false Whether this is an all-day event |
| startTime | string Start time in HH:mm or HH:mm:ss format. Required if isAllDay is false. |
| endTime | string End time in HH:mm or HH:mm:ss format. Required if isAllDay is false. |
| reminders | Array of strings Reminder settings for the moment (array of minute values) |
| tags | Array of strings Tags for the moment |
| hashTags | Array of strings Hashtags associated with the moment |
| eventUrl | string External event URL (e.g., ticket purchase link, event registration) |
| externalId | string External ID from third-party systems (e.g., ESPN, Ticketmaster) |
| isOfficial | boolean Whether the moment is from an official source (e.g., official website, official API) |
| isFeatured | boolean Whether the moment is featured |
| featureTitle | string Feature title for featured moments. Can only be set if isFeatured is true. Will be set to null if isFeatured is false. |
| featureCard | string Enum: "XL" "Medium" Feature card size for featured moments. Can only be set if isFeatured is true. Will be set to null if isFeatured is false. |
Array of objects (WidgetDataDto) Widgets to attach to this moment |
{- "title": "Lakers vs Warriors",
- "subHeader": "Regular Season Game",
- "videos": [
- {
- "duration": 180,
- "contentType": "video/mp4"
}
], - "description": "Regular season game between Los Angeles Lakers and Golden State Warriors",
- "customCalendarDescription": "Join us for an exciting game! Doors open at 6 PM.",
- "isOnlineEvent": false,
- "venueOption": "to_be_determined",
- "venueId": "venue-uuid",
- "timezone": "EST",
- "startDate": "2024-01-15",
- "endDate": "2024-01-15",
- "isAllDay": true,
- "startTime": "19:00",
- "endTime": "22:00",
- "reminders": [
- 60,
- 1440
], - "tags": [
- "Watch Party",
- "Reg Season",
- "Playoffs"
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "externalId": "espn-game-401234567",
- "isOfficial": true,
- "isFeatured": false,
- "featureTitle": "Featured Game of the Week",
- "featureCard": "XL",
- "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "sponsor-uuid-123"
}
}, - {
- "widgetType": "STREAMING_INFO",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "streamingId": "streaming-uuid-456"
}
}
]
}{- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "isRecurring": true,
- "reminders": [
- "string"
], - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}, - {
- "id": "holiday.christmas",
- "displayName": "Christmas"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "eventUrl": "string",
- "externalId": "string",
- "status": "draft",
- "teamId": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "publishedAt": "2019-08-24T14:15:22Z",
- "publishDate": "string",
- "isOfficial": false,
- "isFeatured": false,
- "isCompleted": false,
- "isArchived": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "defaultCampaignId": "string",
- "hasUnpublishedChanges": false,
- "currentPublishedVersionId": "string"
}Internal endpoint to update moment status without user authentication. For system use only.
| momentId required | string |
UpdateMomentStatusDto - Status update data
| status required | string Enum: "draft" "published" "postponed" "cancelled" "deleted" Status of the moment |
| publishDate | string Publish date in YYYY-MM-DD format. Required when status is POSTPONED, especially when transitioning from DRAFT. This is the date when the moment should be published. |
| hardDelete | boolean Default: false When archiving a moment, if hardDelete=true, calls Consumer API delete with softDelete=false (hard delete). Only applies to ARCHIVED status. Default: no Consumer API call for ARCHIVED. |
| softDelete | boolean Default: true Soft delete flag when cancelling a moment. Optional, defaults to true. When false, calls Consumer API with softDelete=false (hard delete). Only applies to CANCELLED status. |
| userId | string User ID for internal endpoints. Optional, defaults to system user if not provided. |
{- "status": "published",
- "publishDate": "2024-02-15",
- "hardDelete": false,
- "softDelete": true,
- "userId": "string"
}{- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "isRecurring": true,
- "reminders": [
- "string"
], - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}, - {
- "id": "holiday.christmas",
- "displayName": "Christmas"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "eventUrl": "string",
- "externalId": "string",
- "status": "draft",
- "teamId": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "publishedAt": "2019-08-24T14:15:22Z",
- "publishDate": "string",
- "isOfficial": false,
- "isFeatured": false,
- "isCompleted": false,
- "isArchived": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "defaultCampaignId": "string",
- "hasUnpublishedChanges": false,
- "currentPublishedVersionId": "string"
}Internal endpoint to get a moment by its team slug and the team slug. Uses teamSlug (team slug) and momentSlug (moment teamSlug). Returns type-specific response DTO based on eventType.
| teamSlug required | string Example: lakers Team slug |
| momentSlug required | string Example: lakers-vs-warriors Moment team slug (teamSlug field) |
{- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "isRecurring": true,
- "reminders": [
- "string"
], - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}, - {
- "id": "holiday.christmas",
- "displayName": "Christmas"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "eventUrl": "string",
- "externalId": "string",
- "status": "draft",
- "teamId": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "publishedAt": "2019-08-24T14:15:22Z",
- "publishDate": "string",
- "isOfficial": false,
- "isFeatured": false,
- "isCompleted": false,
- "isArchived": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "defaultCampaignId": "string",
- "hasUnpublishedChanges": false,
- "currentPublishedVersionId": "string"
}Internal endpoint to get a moment by its unique global slug. The slug is unique across all teams and always includes the full date (YYYY-MM-DD). Returns type-specific response DTO based on eventType.
| momentSlug required | string Example: 2024-03-15-lakers-vs-warriors-1234 Moment global slug (unique across all teams) |
{- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "isRecurring": true,
- "reminders": [
- "string"
], - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}, - {
- "id": "holiday.christmas",
- "displayName": "Christmas"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "eventUrl": "string",
- "externalId": "string",
- "status": "draft",
- "teamId": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "publishedAt": "2019-08-24T14:15:22Z",
- "publishDate": "string",
- "isOfficial": false,
- "isFeatured": false,
- "isCompleted": false,
- "isArchived": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "defaultCampaignId": "string",
- "hasUnpublishedChanges": false,
- "currentPublishedVersionId": "string"
}Internal endpoint to automatically publish POSTPONED moments where publishDate is less than or equal to today. Uses the publisherId saved when the moment was postponed. Returns the number of moments updated.
{- "updated": 5,
- "momentIds": [
- "123e4567-e89b-12d3-a456-426614174000",
- "123e4567-e89b-12d3-a456-426614174001"
]
}Internal endpoint to automatically publish POSTPONED moments whose scheduled publish datetime (publishedAt) is due within the provided windowMinutes (default 1). Includes overdue moments.
| windowMinutes | number Example: windowMinutes=1 How many minutes ahead to publish (default: 1) |
{- "checked": 3,
- "published": 2,
- "momentIds": [
- "123e4567-e89b-12d3-a456-426614174000",
- "123e4567-e89b-12d3-a456-426614174001"
]
}Internal endpoint to automatically mark PUBLISHED moments as completed when their endDateTimeUtc + bufferHours has passed. Default buffer is 6 hours.
| bufferHours | number Example: bufferHours=6 Buffer time in hours after endDateTimeUtc (default: 6) |
{- "checked": 10,
- "marked": 8,
- "momentIds": [
- "123e4567-e89b-12d3-a456-426614174000",
- "123e4567-e89b-12d3-a456-426614174001"
]
}Internal endpoint to automatically archive PUBLISHED and DRAFT moments when their endDateTimeUtc + bufferDays has passed. Default buffer is 14 days.
| bufferDays | number Example: bufferDays=14 Buffer time in days after endDateTimeUtc (default: 14) |
{- "checked": 10,
- "archived": 8,
- "momentIds": [
- "123e4567-e89b-12d3-a456-426614174000",
- "123e4567-e89b-12d3-a456-426614174001"
], - "skipped": [
- {
- "momentId": "string",
- "reason": "string"
}
]
}Internal helper endpoint to set Moment.publishedAt while status is POSTPONED. Intended for scheduler/integration/testing setup.
| momentId required | string |
| scheduledPublishAt required | string Scheduled publish datetime in ISO8601 (UTC recommended), e.g. 2026-01-01T00:02:00.000Z |
| userId | string User ID to attribute the schedule action to (optional; defaults to system user if not provided). |
{- "scheduledPublishAt": "2026-01-01T00:02:00.000Z",
- "userId": "string"
}{- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "isRecurring": true,
- "reminders": [
- "string"
], - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}, - {
- "id": "holiday.christmas",
- "displayName": "Christmas"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "eventUrl": "string",
- "externalId": "string",
- "status": "draft",
- "teamId": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "publishedAt": "2019-08-24T14:15:22Z",
- "publishDate": "string",
- "isOfficial": false,
- "isFeatured": false,
- "isCompleted": false,
- "isArchived": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "defaultCampaignId": "string",
- "hasUnpublishedChanges": false,
- "currentPublishedVersionId": "string"
}Internal endpoint to search moments for a specific team with filters (tags, text, status, dates, published). Use /by-team/:teamId/search for team ID (UUID) or /by-team-slug/:teamSlug/search for team slug. Returns full moment entities with cursor-based pagination. No authentication required. Results sorted by startDateTimeUtc ASC.
| teamId | string Team ID (UUID) - used when calling /by-team/:teamId/search |
| teamSlug | string Team Slug - used when calling /by-team-slug/:teamSlug/search |
| limit | number <= 100 Default: 20 Number of results per page |
| cursor | string Cursor for pagination (base64 encoded JSON with sort fields) |
| direction | string Default: "forward" Enum: "forward" "backward" Pagination direction |
| query | string Full-text search query (searches in title, description, location) |
| teamId | string Filter by team ID |
| tags | Array of strings Filter by tags (all tags must match) |
| status | Array of strings Items Enum: "draft" "published" "postponed" "cancelled" "deleted" Filter by one or more moment statuses (OR logic). Accepts a single status string or an array of statuses. |
| eventTypes | Array of strings Items Enum: "Game" "Tournament" "Promotion" "Invitation" "Live Entertainment" "Entertainment" "Conference" "Fan Experience" "Merch Drops" Filter by event types (OR logic) |
| featureCards | Array of strings Items Enum: "XL" "Medium" Filter by featured card sizes (OR logic). When provided, only featured moments are returned. |
| startDate | string Filter by start date (earliest date the moment occurs) |
| endDate | string Filter by end date (latest date the moment occurs) |
| timezone | string Optional IANA timezone name (e.g., "America/New_York", "Europe/London") for time-based tag conversions. When provided, time-based tags like time.today, time.tomorrow will be calculated relative to this timezone. Should be obtained from browser Intl API or IANA timezone database. |
{- "limit": 20,
- "cursor": "eyJzdGFydERhdGUiOiIyMDI0LTAxLTE1VDAwOjAwOjAwWiIsImlkIjoiMTIzIn0=",
- "direction": "forward",
- "query": "basketball game",
- "teamId": "team-uuid-123",
- "tags": [
- "nba",
- "playoffs"
], - "status": [
- "draft"
], - "eventTypes": [
- "Game"
], - "featureCards": [
- "XL"
], - "startDate": "2024-01-01",
- "endDate": "2024-12-31",
- "timezone": "America/New_York"
}{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Creates a new moments list
| teamId required | string |
| type required | string Enum: "schedule" "collection" "playlist" Type of the list (Schedule, Collection, or Playlist) |
| title required | string <= 200 characters Title of the list |
| subTitle | string <= 150 characters Sub-heading of the list |
| description | string <= 2000 characters Short, snappy description of the list |
| hashTags | Array of strings Hashtags associated with the list |
{- "type": "schedule",
- "title": "2024-2025 Regular Season Schedule",
- "subTitle": "Enter a sub-heading",
- "description": "Write a short, snappy description.",
- "hashTags": [
- "#Lakers",
- "#Schedule",
- "#Basketball"
]
}{- "meta": { },
- "data": {
- "id": "string",
- "teamId": "string",
- "title": "string",
- "subTitle": "string",
- "description": "string",
- "slug": "string",
- "images": [
- "string"
], - "videos": [
- "string"
], - "type": "schedule",
- "status": "draft",
- "startDate": "2019-08-24T14:15:22Z",
- "endDate": "2019-08-24T14:15:22Z",
- "timezone": "string",
- "metadata": { },
- "publishedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "tags": [
- "basketball",
- "nba",
- "regular-season"
], - "hashTags": [
- "#Lakers",
- "#Schedule",
- "#Basketball"
], - "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "moments": [
- {
- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "status": "draft",
- "isArchived": false,
- "teamId": "string",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "isFeatured": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "defaultCampaignId": "string",
- "isCompleted": false
}
], - "defaultCampaignId": "string",
- "isOfficial": false
}
}Retrieves all lists for a specific team with tags
| teamId required | string |
[- {
- "id": "string",
- "teamId": "string",
- "title": "string",
- "subTitle": "string",
- "description": "string",
- "slug": "string",
- "images": [
- "string"
], - "videos": [
- "string"
], - "type": "schedule",
- "status": "draft",
- "startDate": "2019-08-24T14:15:22Z",
- "endDate": "2019-08-24T14:15:22Z",
- "timezone": "string",
- "metadata": { },
- "publishedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "tags": [
- "basketball",
- "nba",
- "regular-season"
], - "hashTags": [
- "#Lakers",
- "#Schedule",
- "#Basketball"
], - "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "moments": [
- {
- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "status": "draft",
- "isArchived": false,
- "teamId": "string",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "isFeatured": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "defaultCampaignId": "string",
- "isCompleted": false
}
], - "defaultCampaignId": "string",
- "isOfficial": false
}
]Update a list with status validation and campaign creation on publish
| teamId required | string |
| listId required | string |
List update data
| type | string Enum: "schedule" "collection" "playlist" Type of the list (Schedule, Collection, or Playlist) |
| title | string <= 200 characters Title of the list |
| subTitle | string <= 150 characters Sub-heading of the list |
| description | string <= 2000 characters Short, snappy description of the list |
| hashTags | Array of strings Hashtags associated with the list |
| images | Array of strings Array of image URLs for the list |
| videos | Array of strings Array of video URLs for the list |
| tags | Array of strings Array of tag names to associate with the list |
Array of objects (WidgetDataDto) Widgets to attach to this list. You can have multiple widgets of the same type (e.g., multiple SPONSOR widgets for multiple sponsors, or multiple STREAMING widgets for different platforms). Widgets are ordered by their position in the array. |
{- "type": "schedule",
- "title": "2024-2025 Regular Season Schedule",
- "subTitle": "Enter a sub-heading",
- "description": "Write a short, snappy description.",
- "hashTags": [
- "#Lakers",
- "#Schedule",
- "#Basketball"
], - "tags": [
- "basketball",
- "nba",
- "regular-season"
], - "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "sponsor-uuid-123"
}
}, - {
- "widgetType": "STREAMING_INFO",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "streamingId": "streaming-uuid-789"
}
}
]
}{- "id": "string",
- "teamId": "string",
- "title": "string",
- "subTitle": "string",
- "description": "string",
- "slug": "string",
- "images": [
- "string"
], - "videos": [
- "string"
], - "type": "schedule",
- "status": "draft",
- "startDate": "2019-08-24T14:15:22Z",
- "endDate": "2019-08-24T14:15:22Z",
- "timezone": "string",
- "metadata": { },
- "publishedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "tags": [
- "basketball",
- "nba",
- "regular-season"
], - "hashTags": [
- "#Lakers",
- "#Schedule",
- "#Basketball"
], - "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "moments": [
- {
- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "status": "draft",
- "isArchived": false,
- "teamId": "string",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "isFeatured": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "defaultCampaignId": "string",
- "isCompleted": false
}
], - "defaultCampaignId": "string",
- "isOfficial": false
}Retrieves a specific list by its ID
| teamId required | string |
| listId required | string |
{- "id": "string",
- "teamId": "string",
- "title": "string",
- "subTitle": "string",
- "description": "string",
- "slug": "string",
- "images": [
- "string"
], - "videos": [
- "string"
], - "type": "schedule",
- "status": "draft",
- "startDate": "2019-08-24T14:15:22Z",
- "endDate": "2019-08-24T14:15:22Z",
- "timezone": "string",
- "metadata": { },
- "publishedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "tags": [
- "basketball",
- "nba",
- "regular-season"
], - "hashTags": [
- "#Lakers",
- "#Schedule",
- "#Basketball"
], - "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "moments": [
- {
- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "status": "draft",
- "isArchived": false,
- "teamId": "string",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "isFeatured": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "defaultCampaignId": "string",
- "isCompleted": false
}
], - "defaultCampaignId": "string",
- "isOfficial": false
}Update the status of a list
| teamId required | string |
| listId required | string |
List status update data
| status required | string Enum: "draft" "published" "postponed" "archived" Status of the list |
| publishDatetime | string Publish datetime in ISO 8601 format (e.g., 2024-02-15T10:00:00Z or 2024-02-15T10:00:00.000Z). Required when status is POSTPONED, especially when transitioning from DRAFT. This is the datetime when the list should be published. |
{- "status": "published",
- "publishDatetime": "2024-02-15T10:00:00Z"
}{- "id": "string",
- "teamId": "string",
- "title": "string",
- "subTitle": "string",
- "description": "string",
- "slug": "string",
- "images": [
- "string"
], - "videos": [
- "string"
], - "type": "schedule",
- "status": "draft",
- "startDate": "2019-08-24T14:15:22Z",
- "endDate": "2019-08-24T14:15:22Z",
- "timezone": "string",
- "metadata": { },
- "publishedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "tags": [
- "basketball",
- "nba",
- "regular-season"
], - "hashTags": [
- "#Lakers",
- "#Schedule",
- "#Basketball"
], - "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "moments": [
- {
- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "status": "draft",
- "isArchived": false,
- "teamId": "string",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "isFeatured": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "defaultCampaignId": "string",
- "isCompleted": false
}
], - "defaultCampaignId": "string",
- "isOfficial": false
}Adds one or more moments to an existing list
| teamId required | string |
| listId required | string |
| momentIds required | Array of strings Array of moment IDs to add to the list |
{- "momentIds": [
- "550e8400-e29b-41d4-a716-446655440000",
- "660e8400-e29b-41d4-a716-446655440001"
]
}{- "id": "string",
- "teamId": "string",
- "title": "string",
- "subTitle": "string",
- "description": "string",
- "slug": "string",
- "images": [
- "string"
], - "videos": [
- "string"
], - "type": "schedule",
- "status": "draft",
- "startDate": "2019-08-24T14:15:22Z",
- "endDate": "2019-08-24T14:15:22Z",
- "timezone": "string",
- "metadata": { },
- "publishedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "tags": [
- "basketball",
- "nba",
- "regular-season"
], - "hashTags": [
- "#Lakers",
- "#Schedule",
- "#Basketball"
], - "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "moments": [
- {
- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "status": "draft",
- "isArchived": false,
- "teamId": "string",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "isFeatured": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "defaultCampaignId": "string",
- "isCompleted": false
}
], - "defaultCampaignId": "string",
- "isOfficial": false
}Retrieves all moments in a list with basic information. Optionally includes tags if include=tags is specified.
| teamId required | string |
| listId required | string |
| include | string Example: include=tags Comma-separated list of related resources to include. Currently supports: "tags" |
[- {
- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "status": "draft",
- "isArchived": false,
- "teamId": "string",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "isFeatured": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "defaultCampaignId": "string",
- "isCompleted": false
}
]Hard deletes the association between a moment and a list. The moment itself is not deleted, only the association.
| teamId required | string |
| listId required | string |
| momentId required | string |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Internal endpoint to retrieve a paginated list of lists. Optionally filter by teamId. Results are ordered by createdAt DESC by default.
| page | number Default: 1 Example: page=1 Page number (default: 1) |
| limit | number <= 100 Default: 20 Example: limit=20 Number of items per page (default: 20, max: 100) |
| orderBy | string Example: orderBy=createdAt Field to order by (default: createdAt) |
| orderDirection | string Enum: "ASC" "DESC" Order direction (default: DESC) |
| teamId | string Example: teamId=123e4567-e89b-12d3-a456-426614174000 Filter lists by team ID |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Internal endpoint to create a list without user authentication. For system use only.
| type required | string Enum: "schedule" "collection" "playlist" Type of the list (Schedule, Collection, or Playlist) |
| title required | string <= 200 characters Title of the list |
| subTitle | string <= 150 characters Sub-heading of the list |
| description | string <= 2000 characters Short, snappy description of the list |
| hashTags | Array of strings Hashtags associated with the list |
| teamId required | string Team ID that the schedule belongs to |
| createdBy required | string User ID who is creating the schedule (UUID) |
{- "type": "schedule",
- "title": "2024-2025 Regular Season Schedule",
- "subTitle": "Enter a sub-heading",
- "description": "Write a short, snappy description.",
- "hashTags": [
- "#Lakers",
- "#Schedule",
- "#Basketball"
], - "teamId": "550e8400-e29b-41d4-a716-446655440000",
- "createdBy": "550e8400-e29b-41d4-a716-446655440000"
}{- "id": "string",
- "teamId": "string",
- "title": "string",
- "subTitle": "string",
- "description": "string",
- "slug": "string",
- "images": [
- "string"
], - "videos": [
- "string"
], - "type": "schedule",
- "status": "draft",
- "startDate": "2019-08-24T14:15:22Z",
- "endDate": "2019-08-24T14:15:22Z",
- "timezone": "string",
- "metadata": { },
- "publishedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "tags": [
- "basketball",
- "nba",
- "regular-season"
], - "hashTags": [
- "#Lakers",
- "#Schedule",
- "#Basketball"
], - "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "moments": [
- {
- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "status": "draft",
- "isArchived": false,
- "teamId": "string",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "isFeatured": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "defaultCampaignId": "string",
- "isCompleted": false
}
], - "defaultCampaignId": "string",
- "isOfficial": false
}Internal endpoint to get a list by its team slug and the team slug. Uses teamSlug (team slug) and listSlug (list teamSlug). Returns list response DTO with tags and widgets. Optionally includes moments if include=moments is specified.
| teamSlug required | string Example: lakers Team slug |
| listSlug required | string Example: regular-season-2024 List team slug (teamSlug field) |
| include | string Example: include=moments Comma-separated list of related resources to include. Currently supports: "moments" |
{- "id": "string",
- "teamId": "string",
- "title": "string",
- "subTitle": "string",
- "description": "string",
- "slug": "string",
- "images": [
- "string"
], - "videos": [
- "string"
], - "type": "schedule",
- "status": "draft",
- "startDate": "2019-08-24T14:15:22Z",
- "endDate": "2019-08-24T14:15:22Z",
- "timezone": "string",
- "metadata": { },
- "publishedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "tags": [
- "basketball",
- "nba",
- "regular-season"
], - "hashTags": [
- "#Lakers",
- "#Schedule",
- "#Basketball"
], - "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "moments": [
- {
- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "status": "draft",
- "isArchived": false,
- "teamId": "string",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "isFeatured": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "defaultCampaignId": "string",
- "isCompleted": false
}
], - "defaultCampaignId": "string",
- "isOfficial": false
}Internal endpoint to get a list by its unique global slug. The slug is unique across all teams. Returns list response DTO with tags and widgets. Optionally includes moments if include=moments is specified.
| listSlug required | string Example: lakers-regular-season-2024 List global slug (unique across all teams) |
| include | string Example: include=moments Comma-separated list of related resources to include. Currently supports: "moments" |
{- "id": "string",
- "teamId": "string",
- "title": "string",
- "subTitle": "string",
- "description": "string",
- "slug": "string",
- "images": [
- "string"
], - "videos": [
- "string"
], - "type": "schedule",
- "status": "draft",
- "startDate": "2019-08-24T14:15:22Z",
- "endDate": "2019-08-24T14:15:22Z",
- "timezone": "string",
- "metadata": { },
- "publishedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "tags": [
- "basketball",
- "nba",
- "regular-season"
], - "hashTags": [
- "#Lakers",
- "#Schedule",
- "#Basketball"
], - "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "moments": [
- {
- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "status": "draft",
- "isArchived": false,
- "teamId": "string",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "isFeatured": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "defaultCampaignId": "string",
- "isCompleted": false
}
], - "defaultCampaignId": "string",
- "isOfficial": false
}Internal endpoint to get a list by its unique ID. Returns list response DTO with tags and widgets. Optionally includes moments if include=moments is specified.
| listId required | string Example: 123e4567-e89b-12d3-a456-426614174000 List ID (UUID) |
| include | string Example: include=moments Comma-separated list of related resources to include. Currently supports: "moments" |
{- "id": "string",
- "teamId": "string",
- "title": "string",
- "subTitle": "string",
- "description": "string",
- "slug": "string",
- "images": [
- "string"
], - "videos": [
- "string"
], - "type": "schedule",
- "status": "draft",
- "startDate": "2019-08-24T14:15:22Z",
- "endDate": "2019-08-24T14:15:22Z",
- "timezone": "string",
- "metadata": { },
- "publishedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "tags": [
- "basketball",
- "nba",
- "regular-season"
], - "hashTags": [
- "#Lakers",
- "#Schedule",
- "#Basketball"
], - "widgets": [
- {
- "widgetType": "SPONSOR",
- "category": "MOMENT_OPTIONAL",
- "widgetData": {
- "sponsorId": "550e8400-e29b-41d4-a716-446655440000"
}, - "data": {
- "sponsor": {
- "id": "sponsor-uuid-123",
- "name": "Nike",
- "sponsorType": "Equipment Sponsor",
- "businessCategories": [
- "Sports",
- "Equipment"
]
}
}
}
], - "moments": [
- {
- "id": "string",
- "title": "string",
- "subHeader": "string",
- "slug": "string",
- "teamSlug": "string",
- "description": "string",
- "customCalendarDescription": "string",
- "eventType": "Game",
- "startDate": "string",
- "endDate": "string",
- "isAllDay": true,
- "startTime": "string",
- "endTime": "string",
- "timezone": "string",
- "startDateTimeUtc": "2024-01-15T12:00:00.000Z",
- "endDateTimeUtc": "2024-01-15T15:00:00.000Z",
- "status": "draft",
- "isArchived": false,
- "teamId": "string",
- "isOnlineEvent": true,
- "onlineEventUrl": "string",
- "venueId": "string",
- "venueOption": "to_be_determined",
- "venue": {
- "id": "string",
- "googlePlaceId": "ChIJhRwB-yFawokR5Phil-QQ3zM",
- "officialName": "Madison Square Garden",
- "shortName": "MSG",
- "aliases": [
- "The Garden",
- "MSG"
], - "latitude": 40.7505,
- "longitude": -73.9934,
- "location": "Downtown Manhattan",
- "address": "4 Pennsylvania Plaza",
- "city": "New York",
- "state": "NY",
- "zip": "10001",
- "doorsOpenOffset": 90,
- "doorsOpenTime": "17:00:00",
- "timezone": "America/New_York",
- "parkingOptions": [
- {
- "name": "Main Parking Lot",
- "price": "$25",
- "distance": "0.2 miles"
}
], - "parking": "The venue has 939 on-site parking spaces, including the P2 garage and valet parking.",
- "publicTransportation": "Kaseya Center is accessible via multiple public transportation options.",
- "bagPolicy": "Bags must be smaller than 12\" x 12\" x 6\"",
- "prohibitedItems": "Weapons, outside food and beverages, large bags",
- "reentryAllowed": "Not allowed",
- "reentryDetails": "Re-entry allowed with valid ticket stub and hand stamp",
- "adaAvailable": true,
- "wheelchairAccess": "Full wheelchair access available at all entrances and seating areas",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "externalId": "sr-venue-12345",
- "dataSource": "sportsradar",
- "parentId": "123e4567-e89b-12d3-a456-426614174000",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "tags": [
- {
- "id": "event_type.game",
- "displayName": "Game"
}, - {
- "id": "theme.vip",
- "displayName": "VIP / Premium"
}
], - "hashTags": [
- "#Lakers",
- "#GameDay",
- "#Basketball"
], - "isFeatured": false,
- "featureTitle": "string",
- "featureCard": "XL",
- "defaultCampaignId": "string",
- "isCompleted": false
}
], - "defaultCampaignId": "string",
- "isOfficial": false
}Internal endpoint to automatically publish POSTPONED lists whose scheduled publish datetime (publishedAt) is due within the provided windowMinutes (default 1). Includes overdue lists. Keeps strict validation that blocks publish if any child moments are not published.
| windowMinutes | number Example: windowMinutes=1 How many minutes ahead to publish (default: 1) |
{- "checked": 3,
- "published": 2,
- "listIds": [
- "123e4567-e89b-12d3-a456-426614174000",
- "123e4567-e89b-12d3-a456-426614174001"
], - "skipped": [
- {
- "listId": "string",
- "reason": "string"
}
]
}Returns counts of unique moments and lists that were in each state at any point during the specified date range. This includes entities that: (1) entered the state during the range, (2) were already in the state before the range started, or (3) exited the state during the range. An entity is counted if it was in the target state for any portion of the date range.
| teamId required | string Team ID |
| startDate required | string Example: startDate=2024-01-01 Start date (YYYY-MM-DD) |
| endDate required | string Example: endDate=2024-01-31 End date (YYYY-MM-DD) |
| entityType | string Enum: "moment" "list" Filter by entity type (moment or list) |
| targetState | string Example: targetState=published Filter by target state (e.g., published, draft). Returns only counts for this specific state. |
{- "success": true,
- "data": {
- "counts": {
- "moment": {
- "published": 15,
- "draft": 8
}, - "list": {
- "published": 3,
- "draft": 2
}
}, - "dateRange": {
- "from": "2024-01-01",
- "to": "2024-01-31"
}
}
}Searches streaming partners by name (case-insensitive) for typeahead functionality. Returns list of matching streaming partners. If query is not provided, returns all streaming partners.
| query | string >= 2 characters Example: query=Netflix Optional search query string (minimum 2 characters if provided). If not provided, returns all streaming partners. |
{- "meta": { },
- "data": [
- {
- "id": "string",
- "domain": "netflix.com",
- "name": "Netflix",
- "brandId": "idtEghWGp4",
- "isActive": true
}
]
}Retrieves a specific streaming partner by its unique identifier
| id required | string |
{- "meta": { },
- "data": {
- "id": "string",
- "domain": "netflix.com",
- "name": "Netflix",
- "brandId": "idtEghWGp4",
- "isActive": true
}
}Internal endpoint to retrieve a paginated list of streaming partners. No authentication required.
| page | number Default: 1 Example: page=1 Page number (default: 1) |
| limit | number <= 100 Default: 20 Example: limit=20 Number of items per page (default: 20, max: 100) |
| orderBy | string Example: orderBy=name Field to order by (default: name) |
| orderDirection | string Enum: "ASC" "DESC" Order direction (default: ASC) |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Internal API - Creates a new streaming partner. Domain and brandId must be unique. and coming from BRANDFETCH API.
| domain required | string <= 255 characters Website domain |
| website | string <= 512 characters Website URL (defaults to domain if not provided) |
| name required | string <= 255 characters Streaming partner name |
| icon | string <= 512 characters URL to the streaming partner icon |
| brandId | string <= 255 characters Brand ID from external source (e.g., Brandfetch) |
{- "domain": "netflix.com",
- "name": "Netflix",
- "brandId": "idtEghWGp4"
}{- "meta": { },
- "data": {
- "id": "string",
- "domain": "netflix.com",
- "name": "Netflix",
- "brandId": "idtEghWGp4",
- "isActive": true
}
}Internal API - Updates an existing streaming partner. Can update isActive status.
| id required | string |
| isActive | boolean Whether the streaming partner is active |
{- "isActive": false
}{- "meta": { },
- "data": {
- "id": "string",
- "domain": "netflix.com",
- "name": "Netflix",
- "brandId": "idtEghWGp4",
- "isActive": true
}
}Searches sponsor roles by title or key (case-insensitive) for typeahead functionality. Returns list of matching sponsor roles (only active roles). If query is not provided, returns all active sponsor roles.
| query | string >= 2 characters Example: query=Official Optional search query string (minimum 2 characters if provided). If not provided, returns all active sponsor roles. |
{- "meta": { },
- "data": [
- {
- "key": "string",
- "title": "string",
- "description": "string",
- "isActive": true
}
]
}Get sponsor roles. Default behavior (isActive=true) returns only active roles. Set isActive=false to get all roles (both active and inactive).
| isActive | boolean Example: isActive=true Filter by active status. Default: true (only active roles). Set to false to get all roles (active and inactive). |
[- {
- "key": "string",
- "title": "string",
- "description": "string",
- "isActive": true
}
]Internal API - Creates a new sponsor role. Key must be unique and lowercase alphanumeric with underscores only.
| key required | string <= 100 characters Unique key for the sponsor role (lowercase, underscores allowed) |
| title required | string <= 100 characters Role title |
| description | string Role description |
| isActive required | boolean Default: true Whether the role is active |
{- "key": "primary",
- "title": "Primary Sponsor",
- "description": "Primary sponsor with exclusive branding rights",
- "isActive": true
}{- "meta": { },
- "data": {
- "key": "string",
- "title": "string",
- "description": "string",
- "isActive": true
}
}Internal API - Updates an existing sponsor role. Can update title, description, and isActive status.
| key required | string |
| title | string <= 100 characters Role title |
| description | string Role description |
| isActive | boolean Whether the role is active |
{- "title": "Primary Sponsor",
- "description": "Primary sponsor with exclusive branding rights",
- "isActive": false
}{- "meta": { },
- "data": {
- "key": "string",
- "title": "string",
- "description": "string",
- "isActive": true
}
}Searches sponsor partners by name or shortName (case-insensitive) for typeahead functionality. Returns list of matching sponsor partners. If query is not provided, returns all sponsor partners.
| query | string >= 2 characters Example: query=Nike Optional search query string (minimum 2 characters if provided). If not provided, returns all sponsor partners. |
{- "meta": { },
- "data": [
- {
- "id": "string",
- "domain": "nike.com",
- "name": "Nike",
- "shortName": "NKE",
- "industries": [
- "Apparel",
- "Sports Equipment",
- "Footwear"
], - "brandId": "idtEghWGp4",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Internal endpoint to retrieve a paginated list of sponsor partners. No authentication required.
| page | number Default: 1 Example: page=1 Page number (default: 1) |
| limit | number <= 100 Default: 20 Example: limit=20 Number of items per page (default: 20, max: 100) |
| orderBy | string Example: orderBy=name Field to order by (default: name) |
| orderDirection | string Enum: "ASC" "DESC" Order direction (default: ASC) |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Internal API - Creates a new sponsor partner if domain doesn't exist, or updates existing one (upsert). If logo is not provided, attempts to fetch from Brandfetch API.
| domain required | string <= 255 characters Website domain (unique identifier) |
| name required | string <= 255 characters Sponsor partner name |
| website | string <= 512 characters Website URL |
| shortName | string <= 100 characters Short name/abbreviation |
| industries | Array of strings Industries (array of strings) |
| logo | string <= 512 characters Logo URL (if not provided, will attempt to fetch from Brandfetch) |
| icon | string <= 512 characters Icon URL |
| brandId | string <= 255 characters Brand ID from Brandfetch |
{- "domain": "nike.com",
- "name": "Nike, Inc.",
- "shortName": "Nike",
- "industries": [
- "string"
], - "brandId": "idtEghWGp4"
}{- "meta": { },
- "data": {
- "id": "string",
- "domain": "nike.com",
- "name": "Nike",
- "shortName": "NKE",
- "industries": [
- "Apparel",
- "Sports Equipment",
- "Footwear"
], - "brandId": "idtEghWGp4",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Internal API - Updates an existing sponsor partner. Can update isActive status, website, shortName, industries, logo, and icon.
| id required | string |
| isActive | boolean Whether the sponsor partner is active |
| website | string <= 512 characters Website URL |
| shortName | string <= 100 characters Short name or abbreviation |
| industries | Array of strings Industries the sponsor operates in |
| logo | string <= 512 characters URL to the sponsor partner logo |
| icon | string <= 512 characters URL to the sponsor partner icon |
{- "isActive": false,
- "shortName": "NKE",
- "industries": [
- "Apparel",
- "Sports Equipment",
- "Footwear"
],
}{- "meta": { },
- "data": {
- "id": "string",
- "domain": "nike.com",
- "name": "Nike",
- "shortName": "NKE",
- "industries": [
- "Apparel",
- "Sports Equipment",
- "Footwear"
], - "brandId": "idtEghWGp4",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}If query parameter is provided, searches ticketing partners by name (case-insensitive). Otherwise, returns list of all active ticketing partners.
| query | string >= 2 characters Example: query=Ticketmaster Search query string (minimum 2 characters). If provided, performs search. Otherwise, returns list. |
{- "meta": { },
- "data": [
- {
- "key": "string",
- "name": "string",
- "ticketingUrl": { },
- "isActive": true
}
]
}Internal endpoint to retrieve a paginated list of ticketing partners. No authentication required.
| page | number Default: 1 Example: page=1 Page number (default: 1) |
| limit | number <= 100 Default: 20 Example: limit=20 Number of items per page (default: 20, max: 100) |
| orderBy | string Example: orderBy=name Field to order by (default: name) |
| orderDirection | string Enum: "ASC" "DESC" Order direction (default: ASC) |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Internal API - Creates a new ticketing partner. Key must be unique.
| key required | string <= 100 characters Unique key for the ticketing partner (lowercase, underscores allowed) |
| name required | string <= 100 characters Ticketing partner name |
| ticketingUrl | object <= 255 characters Partner ticketing URL |
{- "key": "ticketmaster",
- "name": "Ticketmaster",
}{- "meta": { },
- "data": {
- "key": "string",
- "name": "string",
- "ticketingUrl": { },
- "isActive": true
}
}Internal API - Updates an existing ticketing partner. Can update name, ticketingUrl, and isActive status.
| key required | string |
| name | string <= 100 characters Ticketing partner name |
| ticketingUrl | object <= 255 characters Partner ticketing URL |
| isActive | boolean Whether the ticketing partner is active |
{- "name": "Ticketmaster",
- "isActive": true
}{- "meta": { },
- "data": {
- "key": "string",
- "name": "string",
- "ticketingUrl": { },
- "isActive": true
}
}Searches leagues by name (case-insensitive) for typeahead functionality. Can optionally filter by sportId. Returns list of matching leagues. If query is not provided, returns all leagues (optionally filtered by sportId).
| query | string >= 2 characters Example: query=NBA Search query for league name (minimum 2 characters). If not provided, returns all leagues. |
| sportId | string Example: sportId=systemwide.sport.basketball Filter by sport ID (taxonomy.id from systemwide.sport.*) |
{- "meta": { },
- "data": [
- {
- "id": "string",
- "name": "National Basketball Association",
- "abbreviation": "NBA",
- "sportId": "systemwide.sport.basketball",
- "countryOrRegion": "United States/Canada",
- "level": "Major",
- "gender": "Men",
- "leagueType": "League",
- "notes": "Not fully professional; included for completeness",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Retrieves a specific league by its unique identifier
| id required | string |
{- "meta": { },
- "data": {
- "id": "string",
- "name": "National Basketball Association",
- "abbreviation": "NBA",
- "sportId": "systemwide.sport.basketball",
- "countryOrRegion": "United States/Canada",
- "level": "Major",
- "gender": "Men",
- "leagueType": "League",
- "notes": "Not fully professional; included for completeness",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Internal API - Creates a new league. Abbreviation must be unique. sportId must reference a valid taxonomy entry (systemwide.sport.*).
| name required | string <= 255 characters League name |
| abbreviation required | string <= 50 characters League abbreviation (unique) |
| sportId required | string <= 200 characters Sport ID - references taxonomy.id (systemwide.sport.*) |
| countryOrRegion | string <= 100 characters Country or region |
| level | string Enum: "Major" "Top-tier" "Tier 2" "Tier 3" "Development" "Premier" "Affiliated pro" "Elite" "Premier T20" "Professional 100-ball" "Elite amateur" "Pro" "Pro circuit" League level |
| gender | string Enum: "Men" "Women" "Mixed" League gender |
| leagueType | string Enum: "League" "Tour" "Series" "Promotion" "Continental competition" "Season/tour" "Tour/League" League type |
| notes | string Additional notes |
{- "name": "National Basketball Association",
- "abbreviation": "NBA",
- "sportId": "systemwide.sport.basketball",
- "countryOrRegion": "United States/Canada",
- "level": "Major",
- "gender": "Men",
- "leagueType": "League",
- "notes": "Not fully professional; included for completeness"
}{- "meta": { },
- "data": {
- "id": "string",
- "name": "National Basketball Association",
- "abbreviation": "NBA",
- "sportId": "systemwide.sport.basketball",
- "countryOrRegion": "United States/Canada",
- "level": "Major",
- "gender": "Men",
- "leagueType": "League",
- "notes": "Not fully professional; included for completeness",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Internal API - Updates an existing league. Can update all fields including sportId (must reference valid taxonomy).
| id required | string |
| name | string <= 255 characters League name |
| abbreviation | string <= 50 characters League abbreviation |
| sportId | string <= 200 characters Sport ID - references taxonomy.id (systemwide.sport.*) |
| countryOrRegion | string <= 100 characters Country or region |
| level | string Enum: "Major" "Top-tier" "Tier 2" "Tier 3" "Development" "Premier" "Affiliated pro" "Elite" "Premier T20" "Professional 100-ball" "Elite amateur" "Pro" "Pro circuit" League level |
| gender | string Enum: "Men" "Women" "Mixed" League gender |
| leagueType | string Enum: "League" "Tour" "Series" "Promotion" "Continental competition" "Season/tour" "Tour/League" League type |
| notes | string Additional notes |
| isActive | boolean Whether the league is active |
{- "name": "National Basketball Association",
- "abbreviation": "NBA",
- "sportId": "systemwide.sport.basketball",
- "countryOrRegion": "United States/Canada",
- "level": "Major",
- "gender": "Men",
- "leagueType": "League",
- "notes": "Not fully professional; included for completeness",
- "isActive": true
}{- "meta": { },
- "data": {
- "id": "string",
- "name": "National Basketball Association",
- "abbreviation": "NBA",
- "sportId": "systemwide.sport.basketball",
- "countryOrRegion": "United States/Canada",
- "level": "Major",
- "gender": "Men",
- "leagueType": "League",
- "notes": "Not fully professional; included for completeness",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Internal API - Retrieves a specific league by its unique identifier
| id required | string |
{- "meta": { },
- "data": {
- "id": "string",
- "name": "National Basketball Association",
- "abbreviation": "NBA",
- "sportId": "systemwide.sport.basketball",
- "countryOrRegion": "United States/Canada",
- "level": "Major",
- "gender": "Men",
- "leagueType": "League",
- "notes": "Not fully professional; included for completeness",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Searches sports teams by name (case-insensitive) for typeahead functionality. Can optionally filter by leagueId or sportId (taxonomy.id from systemwide.sport.*). Returns list of matching sports teams. If query is not provided, returns all teams (optionally filtered by leagueId or sportId).
| query | string >= 2 characters Example: query=Phoenix Search query for team name (minimum 2 characters). If not provided, returns all teams. |
| leagueId | string Example: leagueId=uuid-of-league Filter by league ID |
| sportId | string <= 200 characters Example: sportId=systemwide.sport.basketball Filter by sport ID - references taxonomy.id (systemwide.sport.*). Returns only teams matching the specified sport. |
{- "meta": { },
- "data": [
- {
- "id": "string",
- "name": "Phoenix Suns",
- "abbreviation": "PHX",
- "location": "Phoenix, AZ",
- "externalId": "sportsradar-team-123",
- "foundedYear": 1968,
- "venueId": "venue-uuid",
- "conference": "Western Conference",
- "division": "Pacific Division",
- "nickname": "Suns",
- "sportId": "systemwide.sport.basketball",
- "country": "US",
- "timezone": "America/Phoenix",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Retrieves a specific sports team by its unique identifier
| id required | string |
{- "meta": { },
- "data": {
- "id": "string",
- "name": "Phoenix Suns",
- "abbreviation": "PHX",
- "location": "Phoenix, AZ",
- "externalId": "sportsradar-team-123",
- "foundedYear": 1968,
- "venueId": "venue-uuid",
- "conference": "Western Conference",
- "division": "Pacific Division",
- "nickname": "Suns",
- "sportId": "systemwide.sport.basketball",
- "country": "US",
- "timezone": "America/Phoenix",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Internal API - Creates a new sports team (master data). Separate from the platform 'teams' table which stores user accounts.
| name required | string <= 255 characters Team name |
| abbreviation | string <= 50 characters Team abbreviation |
| location | string <= 255 characters Team location (city, state/country) |
| logoUrl | string <= 512 characters URL to team logo |
| externalId | string <= 255 characters External ID for syncing with external APIs |
| foundedYear | number [ 1800 .. 2100 ] Year team was founded |
| venueId | string Home venue ID (references venues table) |
| conference | string <= 100 characters Conference name |
| division | string <= 100 characters Division name |
| website | string <= 512 characters Official team website URL |
| socialMedia | object Social media handles/links (JSON object) |
| nickname | string <= 100 characters Team nickname/mascot |
| sportId | string <= 200 characters Sport ID - references taxonomy.id (systemwide.sport.*). If team only plays one sport. |
| country | string <= 2 characters Country code (ISO 3166-1 alpha-2) |
| timezone | string <= 50 characters Team's timezone |
{- "name": "Phoenix Suns",
- "abbreviation": "PHX",
- "location": "Phoenix, AZ",
- "externalId": "sportsradar-team-123",
- "foundedYear": 1968,
- "venueId": "venue-uuid",
- "conference": "Western Conference",
- "division": "Pacific Division",
- "socialMedia": {
}, - "nickname": "Suns",
- "sportId": "systemwide.sport.basketball",
- "country": "US",
- "timezone": "America/Phoenix"
}{- "meta": { },
- "data": {
- "id": "string",
- "name": "Phoenix Suns",
- "abbreviation": "PHX",
- "location": "Phoenix, AZ",
- "externalId": "sportsradar-team-123",
- "foundedYear": 1968,
- "venueId": "venue-uuid",
- "conference": "Western Conference",
- "division": "Pacific Division",
- "nickname": "Suns",
- "sportId": "systemwide.sport.basketball",
- "country": "US",
- "timezone": "America/Phoenix",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Internal API - Updates an existing sports team. Can update all fields.
| id required | string |
| name | string <= 255 characters Team name |
| abbreviation | string <= 50 characters Team abbreviation |
| location | string <= 255 characters Team location (city, state/country) |
| logoUrl | string <= 512 characters URL to team logo |
| externalId | string <= 255 characters External ID for syncing with external APIs |
| foundedYear | number [ 1800 .. 2100 ] Year team was founded |
| venueId | string Home venue ID (references venues table) |
| conference | string <= 100 characters Conference name |
| division | string <= 100 characters Division name |
| website | string <= 512 characters Official team website URL |
| socialMedia | object Social media handles/links (JSON object) |
| nickname | string <= 100 characters Team nickname/mascot |
| sportId | string <= 200 characters Sport ID - references taxonomy.id (systemwide.sport.*). If team only plays one sport. |
| country | string <= 2 characters Country code (ISO 3166-1 alpha-2) |
| timezone | string <= 50 characters Team's timezone |
| isActive | boolean Whether the team is active |
{- "name": "Phoenix Suns",
- "abbreviation": "PHX",
- "location": "Phoenix, AZ",
- "externalId": "sportsradar-team-123",
- "foundedYear": 1968,
- "venueId": "venue-uuid",
- "conference": "Western Conference",
- "division": "Pacific Division",
- "socialMedia": {
}, - "nickname": "Suns",
- "sportId": "systemwide.sport.basketball",
- "country": "US",
- "timezone": "America/Phoenix",
- "isActive": true
}{- "meta": { },
- "data": {
- "id": "string",
- "name": "Phoenix Suns",
- "abbreviation": "PHX",
- "location": "Phoenix, AZ",
- "externalId": "sportsradar-team-123",
- "foundedYear": 1968,
- "venueId": "venue-uuid",
- "conference": "Western Conference",
- "division": "Pacific Division",
- "nickname": "Suns",
- "sportId": "systemwide.sport.basketball",
- "country": "US",
- "timezone": "America/Phoenix",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Internal API - Retrieves a specific sports team by its unique identifier
| id required | string |
{- "meta": { },
- "data": {
- "id": "string",
- "name": "Phoenix Suns",
- "abbreviation": "PHX",
- "location": "Phoenix, AZ",
- "externalId": "sportsradar-team-123",
- "foundedYear": 1968,
- "venueId": "venue-uuid",
- "conference": "Western Conference",
- "division": "Pacific Division",
- "nickname": "Suns",
- "sportId": "systemwide.sport.basketball",
- "country": "US",
- "timezone": "America/Phoenix",
- "isActive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Creates a shortened URL for any given full URL
URL to shorten
| url required | string Full URL to shorten |
{
}Authenticates user with Firebase ID token and returns JWT tokens
| idToken required | string Firebase ID token for authentication |
{- "idToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ..."
}{- "meta": { },
- "data": {
- "accessToken": "string",
- "refreshToken": "string"
}
}Generate new access and refresh tokens using a valid refresh token
| refreshToken required | string JWT refresh token |
{- "refreshToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ..."
}{- "meta": { },
- "data": {
- "accessToken": "string",
- "refreshToken": "string"
}
}Returns the current authenticated user's information from the JWT token
{- "meta": { },
- "data": {
- "id": "string",
- "firebaseUid": "string",
- "email": "string",
- "firstName": "string",
- "lastName": "string",
- "displayName": "string",
- "photoURL": "string",
- "isActive": true,
- "emailVerified": true,
- "role": "PUBLISHER",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Returns user details, associated teams, and progress tracker. If teamId is provided, progress tracker is calculated for that specific team.
| teamId | string Example: teamId=123e4567-e89b-12d3-a456-426614174000 Team ID to get progress tracker for (optional). If not provided, uses first team. |
{- "meta": { },
- "data": {
- "user": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "firebaseUid": "firebase-uid-123",
- "email": "user@example.com",
- "displayName": "John Doe",
- "isActive": true
}, - "teams": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "team": "Los Angeles Lakers",
- "slug": "lakers",
- "logos": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "role": "primary"
}
]
}
], - "progressTracker": {
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "flowName": "onboarding",
- "statusDetail": [
- {
- "step": "brand_info",
- "status": "completed"
}, - {
- "step": "team_details",
- "status": "skipped"
}, - {
- "step": "ticket_info",
- "status": "completed"
}, - {
- "step": "team_store",
- "status": "pending"
}
], - "lastStep": "connect_account",
- "progressPercentage": 75
}
}
}Retrieves the progress tracker for a specific team and flow
| teamId required | string Example: 123e4567-e89b-12d3-a456-426614174000 Team ID |
| flowName required | string Enum: "onboarding" "demo" Flow name (onboarding, demo) |
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "flowName": "onboarding",
- "statusDetail": [
- {
- "step": "brand_info",
- "status": "completed"
}, - {
- "step": "team_details",
- "status": "skipped"
}, - {
- "step": "ticket_info",
- "status": "completed"
}, - {
- "step": "team_store",
- "status": "pending"
}
], - "lastStep": "connect_account",
- "createdAt": "2023-01-01T00:00:00.000Z",
- "updatedAt": "2023-01-01T00:00:00.000Z",
- "progressPercentage": 75
}Updates the status of a specific step in the progress tracker
| teamId required | string Example: 123e4567-e89b-12d3-a456-426614174000 Team ID |
| flowName required | string Enum: "onboarding" "demo" Flow name (onboarding, demo) |
| step required | string Enum: "welcome" "brand_info" "team_details" "ticket_info" "team_store" "create_schedule" "create_moment" Step to update |
| status required | string Enum: "pending" "completed" "skipped" Status of the step |
{- "step": "brand_info",
- "status": "completed"
}{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "flowName": "onboarding",
- "statusDetail": [
- {
- "step": "brand_info",
- "status": "completed"
}, - {
- "step": "team_details",
- "status": "skipped"
}, - {
- "step": "ticket_info",
- "status": "completed"
}, - {
- "step": "team_store",
- "status": "pending"
}
], - "lastStep": "connect_account",
- "createdAt": "2023-01-01T00:00:00.000Z",
- "updatedAt": "2023-01-01T00:00:00.000Z",
- "progressPercentage": 75
}Skips all remaining steps in the progress tracker
| teamId required | string Example: 123e4567-e89b-12d3-a456-426614174000 Team ID |
| flowName required | string Enum: "onboarding" "demo" Flow name (onboarding, demo) |
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "teamId": "123e4567-e89b-12d3-a456-426614174000",
- "flowName": "onboarding",
- "statusDetail": [
- {
- "step": "brand_info",
- "status": "completed"
}, - {
- "step": "team_details",
- "status": "skipped"
}, - {
- "step": "ticket_info",
- "status": "completed"
}, - {
- "step": "team_store",
- "status": "pending"
}
], - "lastStep": "connect_account",
- "createdAt": "2023-01-01T00:00:00.000Z",
- "updatedAt": "2023-01-01T00:00:00.000Z",
- "progressPercentage": 75
}Retrieves a user preference by context
| context required | string (PreferenceContext) Value: "table.moment.columns" Context of the preference |
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "userId": "123e4567-e89b-12d3-a456-426614174000",
- "context": "table.moment.columns",
- "preference": {
- "columns": [
- "name",
- "email",
- "status"
], - "sortBy": "name",
- "sortOrder": "asc"
}, - "createdAt": "2023-01-01T00:00:00.000Z",
- "updatedAt": "2023-01-01T00:00:00.000Z"
}Updates an existing preference by context or creates a new one if not found
| context required | string (PreferenceContext) Value: "table.moment.columns" Context of the preference |
| preference required | object Preference data as JSON object |
{- "preference": {
- "columns": [
- "name",
- "email",
- "status"
], - "sortBy": "name",
- "sortOrder": "asc"
}
}{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "userId": "123e4567-e89b-12d3-a456-426614174000",
- "context": "table.moment.columns",
- "preference": {
- "columns": [
- "name",
- "email",
- "status"
], - "sortBy": "name",
- "sortOrder": "asc"
}, - "createdAt": "2023-01-01T00:00:00.000Z",
- "updatedAt": "2023-01-01T00:00:00.000Z"
}Deletes a user preference by context
| context required | string (PreferenceContext) Value: "table.moment.columns" Context of the preference |
{- "error": {
- "statusCode": 400,
- "message": "Validation failed",
- "localizedMessage": "Validation failed",
- "errorName": "ValidationError",
- "details": {
- "field": "email",
- "reason": "Invalid format"
}, - "path": "/api/users/123",
- "requestId": "req_1234567890abcdef",
- "timestamp": "2024-01-15T10:30:45.123Z"
}
}Retrieves all preferences for the authenticated user
[- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "userId": "123e4567-e89b-12d3-a456-426614174000",
- "context": "table.moment.columns",
- "preference": {
- "columns": [
- "name",
- "email",
- "status"
], - "sortBy": "name",
- "sortOrder": "asc"
}, - "createdAt": "2023-01-01T00:00:00.000Z",
- "updatedAt": "2023-01-01T00:00:00.000Z"
}
]Triggers async fixture sync for all eligible sports teams. Called by Cloud Scheduler on a schedule or manually for testing.
| sport | string Enum: "football" "basketball" Filter by sport type |
| forceUpdate | boolean Default: false Force update existing moments even if unchanged |
| teamId | string Sync only a specific team (for testing) |
| limit | number [ 1 .. 1000 ] Maximum number of teams to process (for testing) |
{ }Triggers async fixture sync for sports teams and auto-maps missing aggregator team IDs via search.
| sport | string Enum: "football" "basketball" Filter by sport type |
| forceUpdate | boolean Default: false Force update existing moments even if unchanged |
| teamId | string Sync only a specific team by ID |
| limit | number [ 1 .. 1000 ] Maximum number of teams to process (for testing) |
{ }Looks up the team by slug, ensures aggregator team mapping exists (searches and sets if missing), then triggers fixture sync for that team.
| slug required | string The team slug (e.g., "lakers") |
| forceUpdate | boolean Force update existing moments even if unchanged |
{ }Sends email invitations to the given addresses. Re-inviting the same email auto-cancels the previous pending invite and creates a fresh one. Rate limited to 10 invitations per sender per hour (auto-cancelled invites are excluded from the count) and 50 pending invitations per team. Returns per-email results with partial success support.
| teamId required | string Example: c91c90d2-2abf-419e-917d-a33959c0a2dc UUID of the team to invite the user to |
| emails required | Array of strings Email addresses to invite |
string Single email address to invite (backward-compatible) | |
| role | string Default: "member" Enum: "owner" "member" Role to assign to the invited users |
{- "emails": [
- "user@example.com"
], - "email": "user@example.com",
- "role": "owner"
}{- "results": [
- {
- "email": "user@example.com",
- "status": "sent",
- "invitation": {
- "id": "3f2dd051-2f31-49eb-ad3b-1de965031d10",
- "teamId": "c91c90d2-2abf-419e-917d-a33959c0a2dc",
- "teamName": "Miami Heat",
- "teamSlug": "miami-heat-52",
- "inviterDisplayName": "Shahad Ishraq",
- "invitedEmail": "newmember@example.com",
- "role": "member",
- "status": "pending",
- "expiresAt": "2026-03-03T14:06:27.489Z",
- "createdAt": "2026-02-24T14:06:27.489Z"
}, - "error": "This user is already a member of the team"
}
], - "summary": {
- "sent": 2,
- "failed": 1
}
}| teamId required | string Example: c91c90d2-2abf-419e-917d-a33959c0a2dc UUID of the team |
| page | number Example: page=1 Page number |
| limit | number Example: limit=20 Items per page |
{- "invitations": [
- {
- "id": "3f2dd051-2f31-49eb-ad3b-1de965031d10",
- "teamId": "c91c90d2-2abf-419e-917d-a33959c0a2dc",
- "teamName": "Miami Heat",
- "teamSlug": "miami-heat-52",
- "inviterDisplayName": "Shahad Ishraq",
- "invitedEmail": "newmember@example.com",
- "role": "member",
- "status": "pending",
- "expiresAt": "2026-03-03T14:06:27.489Z",
- "createdAt": "2026-02-24T14:06:27.489Z"
}
], - "total": 12
}Public endpoint — no authentication required.
| token required | string Example: rZtHLdX8hVWrvYPtkxgoLkOrULGw2xEUq4Ks148QdbY Raw invitation token from the email link (256-bit base64url-encoded) |
{- "id": "3f2dd051-2f31-49eb-ad3b-1de965031d10",
- "teamId": "c91c90d2-2abf-419e-917d-a33959c0a2dc",
- "teamName": "Miami Heat",
- "teamSlug": "miami-heat-52",
- "inviterDisplayName": "Shahad Ishraq",
- "invitedEmail": "newmember@example.com",
- "role": "member",
- "status": "pending",
- "expiresAt": "2026-03-03T14:06:27.489Z",
- "createdAt": "2026-02-24T14:06:27.489Z"
}| token required | string Example: rZtHLdX8hVWrvYPtkxgoLkOrULGw2xEUq4Ks148QdbY Raw invitation token from the email link (256-bit base64url-encoded) |
{- "teamId": "c91c90d2-2abf-419e-917d-a33959c0a2dc",
- "teamName": "Miami Heat",
- "teamSlug": "miami-heat-52"
}| teamId required | string Example: c91c90d2-2abf-419e-917d-a33959c0a2dc UUID of the team |
| invitationId required | string Example: 858d198b-6348-45ae-a8ac-572979e86f9e UUID of the invitation to cancel |
{- "message": "Invitation cancelled successfully"
}