openapi: 3.1.0 info: title: PANGAEA Data Download Services DOI Filter Search API description: 'REST services for retrieving geoscientific data from PANGAEA''s archive. Two complementary services are provided: a DOI-based filter service for retrieving tabular data from specific datasets, and a geo-parameter service for cross-dataset retrieval filtered by geographic bounding box, temporal range, and depth constraints. ' version: 1.0.0 contact: name: PANGAEA Technical Support email: tech@pangaea.de license: name: CC-BY 3.0 url: https://creativecommons.org/licenses/by/3.0/ x-humanURL: https://www.pangaea.de/about/services.php servers: - url: https://ws.pangaea.de description: PANGAEA Web Services Production Server tags: - name: Search description: Full-text and faceted dataset search paths: /panmd/_search: get: operationId: searchDatasets summary: Search PANGAEA Datasets (GET) description: 'Search PANGAEA''s metadata index of 445,000+ geoscientific datasets using Elasticsearch query DSL via GET request. Supports full-text search, bounding box filters, temporal range filters, and faceted aggregations. ' tags: - Search parameters: - name: q in: query description: Elasticsearch query string (Lucene syntax supported) required: false schema: type: string example: ocean temperature - name: size in: query description: Number of results to return (max 10000) required: false schema: type: integer default: 10 minimum: 1 maximum: 10000 - name: from in: query description: Offset for pagination required: false schema: type: integer default: 0 - name: pretty in: query description: Pretty-print the JSON response required: false schema: type: boolean responses: '200': description: Successful search response content: application/json: schema: $ref: '#/components/schemas/SearchResponse' example: took: 12 timed_out: false _shards: total: 5 successful: 5 skipped: 0 failed: 0 hits: total: 445000 max_score: 1.0 hits: - _index: pangaea _type: panmd _id: '833575' _score: 1.0 _source: URI: https://doi.pangaea.de/10.1594/PANGAEA.833575 agg-author: - Smith, J - Jones, M agg-campaign: SO234 minDateTime: '2014-03-01T00:00:00Z' maxDateTime: '2014-03-15T00:00:00Z' northBoundLatitude: 55.5 southBoundLatitude: 50.2 eastBoundLongitude: 10.1 westBoundLongitude: 5.3 nDataPoints: 1250 post: operationId: searchDatasetsPost summary: Search PANGAEA Datasets (POST) description: 'Search PANGAEA''s metadata index using a full Elasticsearch query DSL body. This allows complex queries including boolean logic, geo-bounding box filters, temporal range filters, aggregations, and sorting. ' tags: - Search parameters: - name: pretty in: query description: Pretty-print the JSON response required: false schema: type: boolean requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SearchRequest' examples: bboxSearch: summary: Bounding box search example value: query: bool: must: - match_all: {} filter: - geo_bounding_box: meanPosition: top_left: lat: 60.0 lon: -10.0 bottom_right: lat: 45.0 lon: 20.0 temporalSearch: summary: Temporal range search example value: query: bool: filter: - range: minDateTime: gte: '2010-01-01' lte: '2020-12-31' size: 20 from: 0 responses: '200': description: Successful search response content: application/json: schema: $ref: '#/components/schemas/SearchResponse' components: schemas: DatasetHit: type: object properties: _index: type: string _type: type: string _id: type: string _score: type: number format: float _source: $ref: '#/components/schemas/DatasetMetadata' DatasetMetadata: type: object description: PANGAEA dataset metadata document properties: URI: type: string format: uri description: DOI URI of the dataset parentURI: type: string format: uri description: URI of the parent dataset (for datasets in a collection) agg-author: type: array items: type: string description: Dataset authors agg-campaign: type: string description: Scientific expedition/campaign name agg-method: type: string description: Methods used for data collection agg-location: type: string description: Geographic location name agg-basis: type: string description: Vessel or platform name agg-pubYear: type: integer description: Publication year minDateTime: type: string format: date-time description: Start date/time of data collection maxDateTime: type: string format: date-time description: End date/time of data collection northBoundLatitude: type: number format: float description: Northern latitude boundary of dataset coverage southBoundLatitude: type: number format: float description: Southern latitude boundary of dataset coverage eastBoundLongitude: type: number format: float description: Eastern longitude boundary of dataset coverage westBoundLongitude: type: number format: float description: Western longitude boundary of dataset coverage meanPosition: $ref: '#/components/schemas/GeoPoint' geoCoverage: type: object description: GeoJSON envelope of geographic coverage nDataPoints: type: integer description: Number of data points in the dataset techKeyword: type: array items: type: string description: Technical keywords for classification oaiSet: type: array items: type: string description: OAI-PMH set memberships SearchResponse: type: object properties: took: type: integer description: Query execution time in milliseconds timed_out: type: boolean description: Whether the query timed out _shards: $ref: '#/components/schemas/ShardsInfo' hits: $ref: '#/components/schemas/HitsContainer' SearchRequest: type: object description: Elasticsearch query DSL request body properties: query: type: object description: Elasticsearch query object (match, bool, range, geo_bounding_box, etc.) size: type: integer description: Number of results to return default: 10 minimum: 1 maximum: 10000 from: type: integer description: Starting offset for pagination default: 0 sort: type: array description: Sort criteria items: type: object aggs: type: object description: Aggregation definitions _source: oneOf: - type: boolean - type: array items: type: string description: Fields to include in source ShardsInfo: type: object properties: total: type: integer successful: type: integer skipped: type: integer failed: type: integer GeoPoint: type: object description: Geographic coordinate point properties: lat: type: number format: float description: Latitude in decimal degrees lon: type: number format: float description: Longitude in decimal degrees HitsContainer: type: object properties: total: type: integer description: Total number of matching documents max_score: type: number format: float description: Maximum relevance score hits: type: array items: $ref: '#/components/schemas/DatasetHit'