UNPKG

@swimmable/sdk

Version:

Official JavaScript/TypeScript SDK for the Swimmable API - Real-time swimming conditions and water quality data

205 lines 4.75 kB
/** * Swimmable API SDK Types * Official TypeScript definitions for the Swimmable API */ export interface SwimmableConfig { /** Your Swimmable API key */ apiKey?: string; /** Base URL for the API (defaults to https://api.swimmable.app) */ baseUrl?: string; /** Request timeout in milliseconds (defaults to 10000) */ timeout?: number; /** Custom headers to include with requests */ headers?: Record<string, string>; } export interface Coordinates { /** Latitude coordinate */ lat: number; /** Longitude coordinate */ lon: number; } export interface BasicConditions { /** Air temperature in Celsius */ airTemperature: number; /** Water temperature in Celsius */ waterTemperature: number; /** Weather description */ weatherDescription: string; /** UV index */ uvIndex: number; /** Wind speed in km/h */ windSpeed: number; /** Wave height in meters */ waveHeight: number; /** Timestamp of data */ timestamp: string; /** Indicates if this is demo data */ _demo?: boolean; /** Additional notes about the data */ _note?: string; } export interface WaterConditions { temperature: { value: number; unit: string; }; ph: number; turbidity: string; bacteria: { enterococcus: number; threshold: number; status: string; }; } export interface OceanConditions { waveHeight: { value: number; unit: string; }; wavePeriod: { value: number; unit: string; }; currentSpeed: { value: number; unit: string; }; ripRisk: string; tideStatus: string; } export interface WeatherConditions { airTemp: { value: number; unit: string; }; windSpeed: { value: number; unit: string; }; windDirection: string; uvIndex: number; visibility: { value: number; unit: string; }; cloudCover: number; precipitation: string; } export interface Subscores { temperature: number; waterQuality: number; surfHazard: number; meteorology: number; } export interface EnhancedConditions { /** Overall swimmability score (1-10) */ swimmabilityScore: number; /** Location information */ location: { name: string; lat: number; lon: number; timezone: string; }; /** Timestamp of data */ timestamp: string; /** Breakdown of safety scores */ subscores: Subscores; /** Detailed conditions */ conditions: { water: WaterConditions; ocean: OceanConditions; weather: WeatherConditions; }; /** Any safety warnings */ warnings: string[]; /** Age of data sources in minutes */ dataAge: { NDBC: number; EPA: number; weather: number; }; /** Indicates if this is demo data */ _demo?: boolean; /** Additional notes about the data */ _note?: string; } export interface SpotInfo { id: number; name: string; lat: number; lon: number; description: string; region: string; nearestNOAAStation?: string; } export interface SpotsResponse { spots: SpotInfo[]; count: number; note?: string; } export interface ApiError { error: string; message: string; path?: string; signup?: string; docs?: string; } export interface RequestOptions { /** Request timeout in milliseconds */ timeout?: number; /** Additional headers for this request */ headers?: Record<string, string>; } export interface ApiResponse<T> { data: T; status: number; headers: Record<string, string>; } export interface HealthStatus { status: string; timestamp: string; service: string; version: string; environment: string; database: string; cache: string; } export interface UsageStats { total_requests: number; successful_requests: number; error_requests: number; avg_response_time: number; top_endpoints: Array<{ endpoint: string; count: number; }>; } export interface ApiKeyInfo { id: string; name: string; key_prefix: string; description?: string; permissions: { endpoints: string[]; rate_limit: number; }; is_active: boolean; last_used_at?: string; expires_at?: string; created_at: string; } export interface CreateApiKeyRequest { name: string; description?: string; permissions?: { endpoints: string[]; rate_limit: number; }; expires_in_days?: number; } export interface CreateApiKeyResponse { api_key: string; api_key_record: ApiKeyInfo; } //# sourceMappingURL=types.d.ts.map