analysis/webservice/apidocs/openapi.yml (951 lines of code) (raw):

# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. openapi: 3.0.3 info: description: The next generation cloud-based science data service platform. version: 1.1.0 title: Science Data Analytics Platform (SDAP) license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html tags: - name: Matchup description: Data Matchup API - name: Analytics description: Data Analytics API - name: Subsetting description: Data Subsetting API paths: /match_spark: get: summary: Execute matchup request (AWS insitu) operationId: matchup description: Endpoint to execute matchup request. If secondary dataset is insitu, use AWS insitu API. tags: - Matchup parameters: - in: query name: primary description: | The primary dataset used to find matches for. One of the satellite "shortName" as supplied by /domslist endpoint. required: true schema: type: string x-dspopulate: - satellite example: avhrr-l4-glob-v2-daily-ncei-ghrsst-sstblend-avhrr-oi-glob-v020-fv020 - in: query name: secondary description: | The dataset(s) being searched for measurements that match the measurements in primary. One or more (comma-separated) of the insitu or satellite "name" as supplied by https://doms.jpl.nasa.gov/domslist required: true schema: type: string x-dspopulate: - satellite - insitu example: icoads - in: query name: startTime description: | Starting time in format YYYY-MM-DDTHH:mm:ssZ or seconds since epoch required: true schema: type: string format: date-time example: '2012-09-25T00:00:00Z' - in: query name: endTime description: | Ending time in format YYYY-MM-DDTHH:mm:ssZ or seconds since epoch required: true schema: type: string format: date-time example: '2012-09-30T23:59:59Z' - in: query name: b description: | Minimum (Western) Longitude, Minimum (Southern) Latitude, Maximum (Eastern) Longitude, Maximum (Northern) Latitude required: true schema: type: string example: -45,15,-30,30 - $ref: '#/components/parameters/Platforms' - in: query name: depthMin description: | Minimum depth of measurements allowed to be considered for matchup required: false schema: type: integer example: 0 - in: query name: depthMax description: | Maximum depth of measurements allowed to be considered for matchup required: false schema: type: integer example: 5 - in: query name: tt description: | Tolerance in time (seconds) when comparing two measurements. required: false schema: type: integer default: 86400 example: 86400 - in: query name: rt description: | Tolerance in radius (meters) when comparing two measurements. required: false schema: type: number default: 1000.0 example: 1000.0 - in: query name: parameter description: | The parameter of interest used for the match up. This is only used for insitu measurements. See [/get_cdms_schema](https://doms.jpl.nasa.gov/insitu/1.0/cdms_schema) endpoint for a list of valid options. required: false schema: type: string default: sea_surface_temperature example: sea_surface_temperature - in: query name: matchOnce description: | True/False flag used to determine if more than one match per primary point is returned. If true, only the nearest point will be returned for each primary point. If false, all points within the tolerances will be returned for each primary point. required: false schema: type: boolean default: false example: false - in: query name: resultSizeLimit description: | Optional integer value that limits the number of results returned from the matchup. If the number of primary matches is greater than this limit, the service will respond with (HTTP 202 Accepted) and an empty response body. A value of 0 means return all results. required: false schema: type: integer default: 500 example: 500 - in: query name: prioritizeDistance description: | If true, prioritize distance over time when computing matches. If false, prioritize time over distance. This is only relevant if matchOnce=true, because otherwise all matches will be included so long as they fit within the user-provided tolerances. Default is true. required: false schema: type: boolean default: true example: true responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/MatchupResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Error' /match_spark_doms: get: summary: Execute matchup request (DOMS insitu) operationId: matchup_doms description: Endpoint to execute matchup request. If secondary dataset is insitu, use DOMS insitu API. tags: - Matchup parameters: - in: query name: primary description: | The primary dataset used to find matches for. One of the satellite "shortName" as supplied by /domslist endpoint. required: true schema: type: string x-dspopulate: - satellite example: avhrr-l4-glob-v2-daily-ncei-ghrsst-sstblend-avhrr-oi-glob-v020-fv020 - in: query name: secondary description: | The dataset(s) being searched for measurements that match the measurements in primary. One or more (comma-separated) of the insitu or satellite "name" as supplied by https://doms.jpl.nasa.gov/domslist required: true schema: type: string example: icoads - in: query name: startTime description: | Starting time in format YYYY-MM-DDTHH:mm:ssZ or seconds since epoch required: true schema: type: string format: date-time example: '2012-09-25T00:00:00Z' - in: query name: endTime description: | Ending time in format YYYY-MM-DDTHH:mm:ssZ or seconds since epoch required: true schema: type: string format: date-time example: '2012-09-30T23:59:59Z' - in: query name: b description: | Minimum (Western) Longitude, Minimum (Southern) Latitude, Maximum (Eastern) Longitude, Maximum (Northern) Latitude required: true schema: type: string example: -45,15,-30,30 - in: query name: platforms description: Platforms to include for matchup consideration required: true schema: type: string example: 1,2,3,4,5,6,7,8,9 - in: query name: depthMin description: | Minimum depth of measurements allowed to be considered for matchup required: false schema: type: integer example: 0 - in: query name: depthMax description: | Maximum depth of measurements allowed to be considered for matchup required: false schema: type: integer example: 5 - in: query name: tt description: | Tolerance in time (seconds) when comparing two measurements. required: false schema: type: integer default: 86400 example: 86400 - in: query name: rt description: | Tolerance in radius (meters) when comparing two measurements. required: false schema: type: number default: 1000.0 example: 1000.0 - in: query name: parameter description: | The parameter of interest used for the match up. required: false schema: type: string enum: ['sst', 'sss', 'wind'] default: sst example: sst - in: query name: matchOnce description: | True/False flag used to determine if more than one match per primary point is returned. If true, only the nearest point will be returned for each primary point. If false, all points within the tolerances will be returned for each primary point. required: false schema: type: boolean default: false example: false - in: query name: resultSizeLimit description: | Optional integer value that limits the number of results returned from the matchup. If the number of primary matches is greater than this limit, the service will respond with (HTTP 202 Accepted) and an empty response body. A value of 0 means return all results. required: false schema: type: integer default: 500 example: 500 responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/MatchupResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Error' /cdmssubset: get: summary: Subset CDMS sources given the search domain operationId: cdmssubset tags: - Subsetting parameters: - in: query name: dataset description: | The NEXUS dataset. *Optional but at least one of 'dataset' or 'insitu' are required required: false schema: type: string x-dspopulate: - satellite example: MAVHRR_OI_L4_GHRSST_NCEI - in: query name: insitu description: | The in situ source(s). *Optional but at least one of 'dataset' or 'insitu' are required required: false schema: type: string x-dspopulate: - insitu example: icoads,samos,spurs,spurs2 - in: query name: startTime description: | Starting time in format YYYY-MM-DDTHH:mm:ssZ or seconds since epoch required: true schema: type: string format: date-time example: '2013-10-21T00:00:00Z' - in: query name: endTime description: | Ending time in format YYYY-MM-DDTHH:mm:ssZ or seconds since epoch required: true schema: type: string format: date-time example: '2013-10-21T01:00:00Z' - in: query name: b description: | Minimum (Western) Longitude, Minimum (Southern) Latitude, Maximum (Eastern) Longitude, Maximum (Northern) Latitude required: true schema: type: string example: -30,15,-45,30 - in: query name: parameter description: | The parameter of interest. schema: type: string example: sea_surface_salinity - in: query name: depthMin description: | Minimum depth of measurements. Must be less than depthMax. required: false schema: type: integer example: 0 - in: query name: depthMax description: | Maximum depth of measurements. Must be greater than depthMin. required: false schema: type: integer example: 5 - $ref: '#/components/parameters/Platforms' - in: query name: output description: | Output type. Only 'ZIP' is currently supported required: true schema: type: string enum: ['ZIP'] default: ZIP example: ZIP responses: '200': description: Successful operation content: application/zip: schema: type: string format: binary '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Error' /version: get: summary: List the version of the API operationId: apiversion tags: - Matchup responses: '200': description: Successful operation content: text/plain: schema: type: string example: 1.6 '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Error' /cdmslist: get: summary: Provides a list of available data sets operationId: domslist tags: - Matchup responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/DomsList' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Error' /cdmsresults: get: summary: | Convert matchup result operationId: cdmsresults tags: - Matchup parameters: - in: query name: id description: | The ID of the matchup execution. This comes from the `executionId` field in matchup output. required: true schema: type: string example: dfc907ce-b8b4-453a-b0b6-d295572ba15e - in: query name: output description: | Format for output results. required: true schema: type: string enum: ['CSV', 'NETCDF', 'JSON'] example: CSV - in: query name: filename description: | Name of output file. Only works with CSV and NETCDF output types. Do not include file extension in this field. If this value is not provided, the filename will be `CDMS_[execution_id].[csv|nc]` required: false schema: type: string responses: '200': description: Successful operation content: text/csv: schema: type: string application/x-netcdf: schema: type: string format: binary '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Error' /stats: get: summary: | Computes time series statistics operationId: stats tags: - Analytics description: "NOTE: Only supports satellite datasets." parameters: - in: query name: ds description: | The dataset on which to generate the statistics required: true schema: type: string x-dspopulate: - satellite - insitu example: MUR25-JPL-L4-GLOB-v04.2 - in: query name: minLat description: | Minimum latitude on which to generate statistics required: true schema: type: string example: -90 - in: query name: maxLat description: | Maximum latitude on which to generate statistics required: true schema: type: string example: 90 - in: query name: minLon description: | Minimum longitude on which to generate statistics required: true schema: type: string example: -180 - in: query name: maxLon description: | Maximum longitude on which to generate statistics required: true schema: type: string example: 180 - in: query name: startTime description: | Starting time in format YYYY-MM-DDTHH:mm:ssZ or seconds since epoch required: true schema: type: string format: date-time example: '2013-10-21T00:00:00Z' - in: query name: endTime description: | Ending time in format YYYY-MM-DDTHH:mm:ssZ or seconds since epoch required: true schema: type: string format: date-time example: '2013-10-31T23:59:59Z' - in: query name: output description: | Data formatting for results. Default is ‘JSON’. Alternative is ‘CSV’ for comma-seperated values. required: false schema: type: string enum: ['JSON', 'CSV'] example: JSON responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/Stats' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Error' externalDocs: description: Documentation url: https://incubator-sdap-nexus.readthedocs.io/en/latest/index.html components: parameters: Platforms: in: query name: platforms description: | Platforms to include for matchup consideration. Platform depends on which insitu dataset is selected. Use platform ID in the matchup query. <details> <summary>Expand to see a list of valid platforms IDs:</summary> | Platform ID | Platform Name | Web Link | | ----------- | --------------------------------------- | ---------------------------------------------------------- | | 3B | autonomous surface water vehicle | [Link](http://vocab.nerc.ac.uk/collection/L06/current/3B/) | | 6A | glider | [Link](http://vocab.nerc.ac.uk/collection/L06/current/6A/) | | 0 | unknown | [Link](http://vocab.nerc.ac.uk/collection/L06/current/0/) | | 16 | offshore structure | [Link](http://vocab.nerc.ac.uk/collection/L06/current/16/) | | 17 | coastal structure | [Link](http://vocab.nerc.ac.uk/collection/L06/current/17/) | | 23 | towed unmanned submersible | [Link](http://vocab.nerc.ac.uk/collection/L06/current/23/) | | 30 | ship | [Link](http://vocab.nerc.ac.uk/collection/L06/current/30/) | | 31 | research vessel | [Link](http://vocab.nerc.ac.uk/collection/L06/current/31/) | | 41 | moored surface buoy | [Link](http://vocab.nerc.ac.uk/collection/L06/current/41/) | | 42 | drifting surface float | [Link](http://vocab.nerc.ac.uk/collection/L06/current/42/) | | 46 | drifting subsurface profiling float | [Link](http://vocab.nerc.ac.uk/collection/L06/current/46/) | | 48 | mooring | [Link](http://vocab.nerc.ac.uk/collection/L06/current/48/) | </details> required: true schema: type: array items: type: string enum: - 0 - 3B - 6A - 16 - 17 - 23 - 30 - 31 - 41 - 42 - 46 - 48 example: 30 explode: false schemas: DomsQueryResult: type: object properties: executionId: type: string format: uuid MatchupResponse: allOf: - $ref: '#/components/schemas/DomsQueryResult' - type: object properties: data: type: array items: $ref: '#/components/schemas/DomsPointPrimary' DomsPointPrimary: allOf: - $ref: '#/components/schemas/DomsPointBase' - type: object properties: matches: type: array items: $ref: '#/components/schemas/DomsPointSecondary' - type: object properties: primary: type: array items: $ref: '#/components/schemas/DomsDataPoint' DomsPointSecondary: allOf: - $ref: '#/components/schemas/DomsPointBase' - type: object properties: secondary: type: array items: $ref: '#/components/schemas/DomsDataPoint' DomsPointBase: type: object properties: platform: type: string device: type: string x: type: string y: type: string point: type: string format: wkt time: type: integer fileurl: type: string id: type: string source: type: string DomsDataPoint: type: object properties: variable_name: type: string cf_variable_name: type: string variable_value: type: number DomsList: allOf: - $ref: '#/components/schemas/DomsQueryResult' - type: object properties: data: type: object properties: satellite: type: array items: type: object properties: shortName: type: string title: type: string tileCount: type: integer metadata: type: string # TODO insitu: type: array items: type: object properties: name: type: string endpoint: type: string format: url metadata: type: string # TODO depths: type: string # TODO facets: type: array items: type: object properties: field: type: string values: type: array items: type: object properties: count: type: integer value: type: string params: type: string # TODO bounds: type: object # TODO count: type: integer details: type: string # TODO DomsValues: type: object allOf: - $ref: '#/components/schemas/DomsQueryResult' - type: object properties: data: type: array items: type: object properties: x: type: number y: type: number source: type: string time: type: number device: type: string nullable: true platform: type: string depth: type: number nullable: true Stats: type: object properties: meta: type: array items: type: object properties: shortname: type: string bounds: type: object properties: east: type: number west: type: number north: type: number south: type: number time: type: object properties: start: type: integer stop: type: integer iso_start: type: string format: date iso_stop: type: string format: date data: type: array items: type: object properties: min: type: number max: type: number mean: type: number cnt: type: integer std: type: number time: type: integer meanSeasonal: type: number minSeasonal: type: number maxSeasonal: type: number meanLowPass: type: number maxLowPass: type: number meanSeasonalLowPass: type: number minSeasonalLowPass: type: number maxSeasonalLowPass: type: number ds: type: integer stats: type: object properties: slope: type: number intercept: type: number r: type: number p: type: number err: type: string Error: type: object properties: error: type: string code: type: integer