# Datasets API Endpoints for managing and querying spatial datasets. ## List Datasets **Endpoint**: `GET /api/datasets/list.php` List all datasets accessible to the current user. ### Parameters - `has_geometry` (optional): Filter datasets with geometry (0 or 1) ### Response ```json { "success": true, "data": [ { "id": 123, "name": "Sample Dataset", "original_name": "sample.geojson", "file_type": "geojson", "metadata": { ... } } ] } ``` ### Example ```bash curl -X GET "https://example.com/api/datasets/list.php?has_geometry=1" \ -H "Cookie: PHPSESSID=..." ``` ## Get Dataset **Endpoint**: `GET /api/datasets/get.php` Get detailed information about a specific dataset. ### Parameters - `id` (required): Dataset ID ### Response ```json { "success": true, "data": { "id": 123, "name": "Sample Dataset", "original_name": "sample.geojson", "file_type": "geojson", "file_size": 1024000, "description": "Dataset description", "metadata": { "feature_count": 1000, "geometry_type": "Point", "bbox": [-180, -90, 180, 90] }, "uploaded_at": "2024-01-01T00:00:00Z", "updated_at": "2024-01-01T00:00:00Z" } } ``` ### Example ```bash curl -X GET "https://example.com/api/datasets/get.php?id=123" \ -H "Cookie: PHPSESSID=..." ``` ## Query Dataset **Endpoint**: `GET /api/basic/index.php/datasets/{id}/query` Query features from a dataset with filtering and pagination. ### Parameters - `page` (optional): Page number (default: 1) - `limit` (optional): Items per page (default: 100, max: 1000) - `bbox` (optional): Bounding box filter (minX,minY,maxX,maxY) - `properties` (optional): Property filters (JSON object) - `geometry_type` (optional): Filter by geometry type ### Response ```json { "success": true, "data": { "type": "FeatureCollection", "features": [ { "type": "Feature", "id": 1, "properties": { ... }, "geometry": { ... } } ], "pagination": { "page": 1, "limit": 100, "total": 1000, "pages": 10 } } } ``` ### Example ```bash curl -X GET "https://example.com/api/basic/index.php/datasets/123/query?page=1&limit=50&bbox=-180,-90,180,90" \ -H "Cookie: PHPSESSID=..." ``` ## Get Dataset Properties **Endpoint**: `GET /api/datasets/get_properties.php` Get all unique property keys from a dataset. ### Parameters - `id` (required): Dataset ID ### Response ```json { "success": true, "data": ["property1", "property2", "property3"] } ``` ## Get Property Values **Endpoint**: `GET /api/datasets/get_property_values.php` Get unique values for a specific property. ### Parameters - `id` (required): Dataset ID - `property` (required): Property name ### Response ```json { "success": true, "data": ["value1", "value2", "value3"] } ``` ## Dataset Filters **Endpoint**: `GET /api/datasets/filters.php` Get saved filters for a dataset. ### Parameters - `id` (required): Dataset ID ### Response ```json { "success": true, "data": { "filters": [ { "id": 1, "name": "Filter Name", "conditions": { ... } } ] } } ``` ## Save Dataset Filters **Endpoint**: `POST /api/datasets/save_filters.php` Save filter configuration for a dataset. ### Request Body ```json { "id": 123, "filters": [ { "name": "Filter Name", "conditions": { "property": "value", "operator": "equals" } } ] } ``` ### Response ```json { "success": true, "message": "Filters saved successfully" } ``` ## Dataset Legend **Endpoint**: `GET /api/datasets/legend.php` Get legend configuration for a dataset. ### Parameters - `id` (required): Dataset ID ### Response ```json { "success": true, "data": { "type": "graduated", "property": "value", "stops": [ { "value": 0, "color": "#0000ff" }, { "value": 100, "color": "#ff0000" } ] } } ``` ## Save Dataset Legend **Endpoint**: `POST /api/datasets/save_legend.php` Save legend configuration for a dataset. ### Request Body ```json { "id": 123, "legend": { "type": "graduated", "property": "value", "stops": [ ... ] } } ``` ### Response ```json { "success": true, "message": "Legend saved successfully" } ``` ## Update Dataset Name **Endpoint**: `POST /api/update_dataset_name.php` Update the display name of a dataset. ### Request Body ```json { "id": 123, "name": "New Dataset Name" } ``` ### Response ```json { "success": true, "message": "Dataset name updated" } ``` ## Background Jobs Dataset operations that may take time (imports, analysis) are processed as background jobs. See [Jobs API](jobs.md) for job management. ## Related Documentation - [Analysis Tools](../analysis-tools/index.md) - [Architecture Overview](../architecture.md)