@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
TypeScript
/**
* 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;
}