UNPKG

@lineai/municipal-intel

Version:

AI-first municipal data API providing natural language descriptions of building permits and planning applications from major US cities

98 lines (97 loc) 2.54 kB
/** * Socrata API client for municipal data * Used by San Francisco, NYC, Oakland, Sacramento */ import { MunicipalProject, MunicipalSearchParams, MunicipalSearchResponse } from '../../types/projects'; import { BaseClientConfig, BaseMunicipalClient, HealthCheck } from '../base-client'; /** * Socrata-specific configuration */ export interface SocrataClientConfig extends BaseClientConfig { appToken?: string; userAgent?: string; } /** * SoQL query parameters */ export interface SoQLQuery { $select?: string; $where?: string; $order?: string; $limit?: number; $offset?: number; $q?: string; } /** * Socrata API client */ export declare class SocrataClient extends BaseMunicipalClient { private readonly api; private readonly appToken?; private readonly resetTime; private readonly datasetConfig; private readonly params; constructor(config: SocrataClientConfig, params: MunicipalSearchParams); /** * Execute a SoQL query against a dataset */ private query; /** * Search for municipal projects */ search(): Promise<MunicipalSearchResponse>; /** * Get a project by its URL */ getByUrl(url: string): Promise<MunicipalProject | null>; /** * Extract project ID from a municipal-intel URL */ private extractIdFromUrl; /** * Get a specific project by ID */ getProject(id: string): Promise<MunicipalProject | null>; /** * Get available project types */ getAvailableTypes(): Promise<string[]>; /** * Check if the data source is healthy */ healthCheck(): Promise<HealthCheck>; /** * Build SoQL query from search parameters */ private buildSoQLQuery; /** * Clean query parameters (remove undefined values) */ private cleanParams; /** * Build ORDER BY clause */ private buildOrderClause; /** * Get field mapping for this source (returns null if missing) */ private getFieldMapping; private getIdField; private getTypeField; private getDateField; private getValueField; private getStatusField; private getAddressField; /** * Normalize raw data to MunicipalProject using dataset-specific description */ private normalizeProject; /** * Generate a project URL for accessing full details */ private generateProjectUrl; /** * Validate that date parameter is a proper Date object */ private validateDateParameter; }