From 093aef618d66d510f40af89e3dfd12575fc26e47 Mon Sep 17 00:00:00 2001 From: "M. Allan Neilson" Date: Thu, 15 Feb 2024 11:50:44 -0800 Subject: [PATCH 01/14] Initial openapi design. --- .vscode/settings.json | 5 +++++ source/dds-http.yaml | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 source/dds-http.yaml diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ec77c1d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "yaml.schemas": { + "openapi:v3": "file:///home/mike/project/dcs_standards/source/dds-http.yaml" + } +} \ No newline at end of file diff --git a/source/dds-http.yaml b/source/dds-http.yaml new file mode 100644 index 0000000..6300ee8 --- /dev/null +++ b/source/dds-http.yaml @@ -0,0 +1,38 @@ +openapi: '3.0.2' +info: + title: DDS over HTTP + version: '1.0' +servers: + - url: http://localhost + +components: + responses: + '500': + description: This will be returned on server error. It is up to the client to decide how to try connecting again. + '503': + description: Inform clients that the system is shutting down or other-wise not ready yet. + headers: + retry-after: + description: When to try connecting again. + required: false + type: string + schemas: + criteria: + type: object + properties: + medium-id-mask: + type: string + description: Regular expression to identify what transport medium messages to include +paths: + /feed: + get: + responses: + '200': + description: Reponse includes any data available. + '204': + description: No new data available, request again. + '500': + $ref: '#/components/responses/500' + '503': + $ref: '#/components/responses/503' + description: Retrieve message for the given, or all if none provided, criteria. This uses HTTP long-polling. After 9 seconds, if no new data is available from the server a 204 Response is sent to the client to indicate the client should connect again to wait for more data. From 1847a26fd368bb3a58d4113a96cb173162bf284b Mon Sep 17 00:00:00 2001 From: "M. Allan Neilson" Date: Fri, 16 Feb 2024 08:11:14 -0800 Subject: [PATCH 02/14] Additional work. --- .gitignore | 3 ++- .vscode/settings.json | 5 ----- source/dds-http.yaml | 34 +++++++++++++++++++++++++++++++--- 3 files changed, 33 insertions(+), 9 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.gitignore b/.gitignore index c795b05..1899660 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -build \ No newline at end of file +build +.vscode \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index ec77c1d..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "yaml.schemas": { - "openapi:v3": "file:///home/mike/project/dcs_standards/source/dds-http.yaml" - } -} \ No newline at end of file diff --git a/source/dds-http.yaml b/source/dds-http.yaml index 6300ee8..98765f0 100644 --- a/source/dds-http.yaml +++ b/source/dds-http.yaml @@ -13,9 +13,10 @@ components: description: Inform clients that the system is shutting down or other-wise not ready yet. headers: retry-after: - description: When to try connecting again. + description: When to try connecting again. Sending this header to clients is optional. required: false - type: string + schema: + type: string schemas: criteria: type: object @@ -24,8 +25,17 @@ components: type: string description: Regular expression to identify what transport medium messages to include paths: - /feed: + /data: get: + summary: Retrieve DCS data + parameters: + - name: criteria + in: query + description: Name of previously provided criteria to use + required: false + schema: + type: string + description: Alphanumeric string given when the critirea was saved. responses: '200': description: Reponse includes any data available. @@ -36,3 +46,21 @@ paths: '503': $ref: '#/components/responses/503' description: Retrieve message for the given, or all if none provided, criteria. This uses HTTP long-polling. After 9 seconds, if no new data is available from the server a 204 Response is sent to the client to indicate the client should connect again to wait for more data. + /criteria: + post: + summary: Provide creteria for limiting data returned. + description: Allows the client to inform the system exactly which data should be returned. + responses: + '201': + description: "Sucessfully stored." + '400': + description: "Error saving criteria." + '500': + $ref: '#/components/responses/500' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/criteria' + From 986463a5b1014fece6c6dd0f62372b851c0c6208 Mon Sep 17 00:00:00 2001 From: Mike Neilson Date: Tue, 23 Jul 2024 16:11:51 +0000 Subject: [PATCH 03/14] Additional concepts from recent test implementation. --- source/dds-http.yaml | 87 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 78 insertions(+), 9 deletions(-) diff --git a/source/dds-http.yaml b/source/dds-http.yaml index 98765f0..d7367c9 100644 --- a/source/dds-http.yaml +++ b/source/dds-http.yaml @@ -1,7 +1,8 @@ openapi: '3.0.2' info: title: DDS over HTTP - version: '1.0' + version: '1.0.0' + description: Defines bare minimum requirements for exchanging servers: - url: http://localhost @@ -24,8 +25,60 @@ components: medium-id-mask: type: string description: Regular expression to identify what transport medium messages to include + since: + type: string + until: + type: string + dcpMessage: + type: object + properties: + receiveTime: + type: string + format: date-time + dataSource: + $ref: "#/components/schemas/dataSource" + data: + description: Base64 encoded version of the data. May be text or binary. Messages should + be processed based on the type + type: string + format: byte + dcpMessages: + type: object + properties: + total: + type: integer + description: Number of messages contained in this result + messages: + type: array + items: + $ref: '#/components/schemas/dcpMessage' + dataSource: + description: Source of data that this system retrieves messages from. + A given source has a name and type and may provide additional properties as appropriate. + type: object + properties: + name: + type: string + type: + $ref: "#/components/schemas/dataSourceType" + required: + - name + - type + additionalProperties: true + knownSourceTypes: + type: string + enum: ["GOES", "Iridium", "Network Dcp", "HRIT", "DRGS", "LRGS", "NOAPORT", "WEB"] + customSourceType: + type: string + dataSourceType: + description: An LRGS generally processes data from specific known sources; however it is possible + for a given installation to retrieve data from custom sources. + oneOf: + - $ref: '#/components/schemas/knownSourceTypes' + - $ref: '#/components/schemas/customSourceType' + paths: - /data: + /dds/data/next: get: summary: Retrieve DCS data parameters: @@ -35,10 +88,14 @@ paths: required: false schema: type: string - description: Alphanumeric string given when the critirea was saved. + description: Alphanumeric string given when the criteria was provided to the server. responses: '200': - description: Reponse includes any data available. + description: Response includes any data available. + content: + application/json: + schema: + $ref: '#/components/schemas/dcpMessages' '204': description: No new data available, request again. '500': @@ -46,15 +103,15 @@ paths: '503': $ref: '#/components/responses/503' description: Retrieve message for the given, or all if none provided, criteria. This uses HTTP long-polling. After 9 seconds, if no new data is available from the server a 204 Response is sent to the client to indicate the client should connect again to wait for more data. - /criteria: + /dds/data/search: post: - summary: Provide creteria for limiting data returned. + summary: Provide criteria for limiting data returned. description: Allows the client to inform the system exactly which data should be returned. responses: '201': - description: "Sucessfully stored." + description: "Successfully stored." '400': - description: "Error saving criteria." + description: "Provided criteria is invalid." '500': $ref: '#/components/responses/500' requestBody: @@ -63,4 +120,16 @@ paths: application/json: schema: $ref: '#/components/schemas/criteria' - + /dds/sources: + get: + summary: Provide information about data sources available from this instance + description: Allow client to know what data sources are available + responses: + '200': + description: Sources successfully sent to user + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/dataSource" From eb341e5b9a645620537a13d9f44ba6716f317f98 Mon Sep 17 00:00:00 2001 From: Mike Neilson Date: Thu, 5 Jun 2025 12:51:04 -0700 Subject: [PATCH 04/14] Add support for datasource to define various "selection" and grouping. --- source/dds-http.yaml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/source/dds-http.yaml b/source/dds-http.yaml index d7367c9..29eee77 100644 --- a/source/dds-http.yaml +++ b/source/dds-http.yaml @@ -61,10 +61,23 @@ components: type: string type: $ref: "#/components/schemas/dataSourceType" + groupingKeys: + $ref: "#/components/schemas/groupingKey" required: - name - - type + - type additionalProperties: true + groupingKey: + type: object + description: Data Source message element that can be used to organize the the display page. + properties: + name: + type: string + description: + type: string + required: + - name + - description knownSourceTypes: type: string enum: ["GOES", "Iridium", "Network Dcp", "HRIT", "DRGS", "LRGS", "NOAPORT", "WEB"] From da3929580924e67be3755d66a6aa1d18ffaf9f18 Mon Sep 17 00:00:00 2001 From: Mike Neilson Date: Thu, 5 Jun 2025 13:15:15 -0700 Subject: [PATCH 05/14] update search criteria. --- source/dds-http.yaml | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/source/dds-http.yaml b/source/dds-http.yaml index 29eee77..da0b48e 100644 --- a/source/dds-http.yaml +++ b/source/dds-http.yaml @@ -19,16 +19,34 @@ components: schema: type: string schemas: - criteria: + searchCriteria: + description: Search criteria to use for retrieving messages type: object properties: - medium-id-mask: + addresses: + type: array + items: + type: string + address-mask: type: string - description: Regular expression to identify what transport medium messages to include + description: Regular expression to identify messages by address field if available + name-mask: + type: string + description: Regular expression to identiify message by name field by available + names: + types: array + items: + type: string since: type: string until: type: string + data-sources: + type: array + items: + type: string + description: Which data sources to retrieve data for. (defaults to all data sources) + additionalProperties: true dcpMessage: type: object properties: @@ -123,6 +141,7 @@ paths: responses: '201': description: "Successfully stored." + # NOTE: return an identifier '400': description: "Provided criteria is invalid." '500': @@ -132,7 +151,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/criteria' + $ref: '#/components/schemas/searchCriteria' /dds/sources: get: summary: Provide information about data sources available from this instance From 4fc4d226515ebbab11381d6fc7230c6617bf4170 Mon Sep 17 00:00:00 2001 From: Charles Graham SWT Date: Fri, 27 Jun 2025 16:01:04 -0500 Subject: [PATCH 06/14] Add tweaks to existing schema and new paths --- source/dds-http.yaml | 338 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 296 insertions(+), 42 deletions(-) diff --git a/source/dds-http.yaml b/source/dds-http.yaml index da0b48e..e794d4e 100644 --- a/source/dds-http.yaml +++ b/source/dds-http.yaml @@ -4,7 +4,8 @@ info: version: '1.0.0' description: Defines bare minimum requirements for exchanging servers: - - url: http://localhost + - url: https://lrgs.usace.army.mil/api + description: USACE LRGS DDS Server components: responses: @@ -19,9 +20,47 @@ components: schema: type: string schemas: + dataSource: + description: Source of data that this system retrieves messages from. + A given source has a name and type and may provide additional properties as appropriate. + type: object + properties: + name: + type: string + type: + $ref: "#/components/schemas/dataSourceType" + groupingKeys: + $ref: "#/components/schemas/groupingKey" + required: + - name + - type + additionalProperties: true + knownSourceTypes: + type: string + enum: ["GOES", "Iridium", "Network Dcp", "HRIT", "DRGS", "LRGS", "NOAPORT", "WEB"] + customSourceType: + type: string + dataSourceType: + description: An LRGS generally processes data from specific known sources; however it is possible + for a given installation to retrieve data from custom sources. + oneOf: + - $ref: '#/components/schemas/knownSourceTypes' + - $ref: '#/components/schemas/customSourceType' + groupingKey: + type: object + description: Data Source message element that can be used to organize the the display page. + properties: + name: + type: string + description: + type: string + required: + - name + - description searchCriteria: description: Search criteria to use for retrieving messages type: object + additionalProperties: true properties: addresses: type: array @@ -34,7 +73,7 @@ components: type: string description: Regular expression to identiify message by name field by available names: - types: array + type: array items: type: string since: @@ -46,20 +85,104 @@ components: items: type: string description: Which data sources to retrieve data for. (defaults to all data sources) - additionalProperties: true - dcpMessage: + goesMessage: type: object + description: Represents a single message received from a DCP (Data Collection Platform), + including metadata about signal quality, source, and encoded data. properties: receiveTime: type: string format: date-time + description: Timestamp when the message was received (in UTC). dataSource: $ref: "#/components/schemas/dataSource" + cType: + type: string + description: Carrier type code (e.g., 'g-s-t'). + arm: + type: string + description: Antenna receive mode indicator - Type Message - G=Good,?=Parity Error (Any other is from DAPS) + eirp: + type: string + description: Signal strength, in dB (32-57) - Effective Isotropic Radiated Power (EIRP) value. Good 50 to 38dB. + frequency: + type: string + description: Frequency offset used by the transmitter. +/-X in 50Hz increments (+/-A indicates 500Hz). + modulation: + type: string + description: Modulation type used. High, Normal, Low (H=? 70°, N=60°+/-5°, L=? 50°) + quality: + type: string + description: Data signal quality indicator. Normal, Fair, Poor (Error N<10^-6, Fair>10^-6 to 10^-4, Poor>10^-4) + channel: + type: string + description: Channel number used for transmission (e.g., '162W'). Goes East or West Satellite. + downlink: + type: string + description: Down link status - Hexadecimal coded. + charlen: + type: integer + description: Number of characters in message (includes EOT + FW but not ID). data: - description: Base64 encoded version of the data. May be text or binary. Messages should - be processed based on the type type: string - format: byte + description: Raw DCP data payload in plain text format. + + iridiumMessage: + type: object + description: Message received via Iridium satellite including transmission metadata and DCP payload. + properties: + receiveTime: + type: string + format: date-time + description: Time the message was received by the system (in UTC). + dataSource: + $ref: "#/components/schemas/dataSource" + imei: + type: string + description: IMEI identifier extracted from the `ID=` field. + timestampOffset: + type: string + description: Encoded timestamp from `TIME=` field. + status: + type: string + description: Status flag from `STAT=` field. + mobileOriginated: + type: string + description: Message count for mobile-originated packets (MO=). + mobileTerminated: + type: string + description: Message count for mobile-terminated packets (MT=). + cdrReference: + type: string + description: Reference code from `CDR=`. + latitude: + type: number + format: float + description: Latitude from `LAT=`. + longitude: + type: number + format: float + description: Longitude from `LON=`. + radius: + type: integer + description: Accuracy or coverage radius from `RAD=`. + payloadFormat: + type: string + description: Raw header line preceding DCP payload (e.g. `IE:0200D0`) + data: + type: string + description: DCP data content that follows the header. + + dcpMessage: + oneOf: + - $ref: '#/components/schemas/goesMessage' + - $ref: '#/components/schemas/iridiumMessage' + discriminator: + propertyName: dataSource.type + mapping: + GOES: '#/components/schemas/goesMessage' + Iridium: '#/components/schemas/iridiumMessage' + dcpMessages: type: object properties: @@ -70,44 +193,66 @@ components: type: array items: $ref: '#/components/schemas/dcpMessage' - dataSource: - description: Source of data that this system retrieves messages from. - A given source has a name and type and may provide additional properties as appropriate. - type: object - properties: - name: - type: string - type: - $ref: "#/components/schemas/dataSourceType" - groupingKeys: - $ref: "#/components/schemas/groupingKey" - required: - - name - - type - additionalProperties: true - groupingKey: + dataSource: + $ref: '#/components/schemas/dataSource' + groupingKey: + $ref: '#/components/schemas/groupingKey' + knownSourceTypes: + $ref: '#/components/schemas/knownSourceTypes' + customSourceType: + $ref: '#/components/schemas/customSourceType' + dataSourceType: + $ref: '#/components/schemas/dataSourceType' + + statusGroupSummary: type: object - description: Data Source message element that can be used to organize the the display page. + description: Summary of DCP statuses for a group of locations properties: - name: - type: string - description: + timestamp: type: string - required: - - name - - description - knownSourceTypes: - type: string - enum: ["GOES", "Iridium", "Network Dcp", "HRIT", "DRGS", "LRGS", "NOAPORT", "WEB"] - customSourceType: - type: string - dataSourceType: - description: An LRGS generally processes data from specific known sources; however it is possible - for a given installation to retrieve data from custom sources. - oneOf: - - $ref: '#/components/schemas/knownSourceTypes' - - $ref: '#/components/schemas/customSourceType' - + format: date-time + durationHours: + type: integer + description: Duration in hours that the status covers (e.g. 24) + counts: + type: object + properties: + missing: + type: integer + partial: + type: integer + parity: + type: integer + complete: + type: integer + reservoir: + type: integer + lowBatteryAddresses: + type: array + items: + type: string + description: List of DCP addresses with low battery status + locations: + type: object + additionalProperties: + type: object + properties: + shefId: + type: string + nessId: + type: string + status: + type: string + enum: [missing, partial, parity, complete] + messageTotal: + type: integer + description: Number of messages received + parityCount: + type: integer + description: Number of parity message issues + lowBattery: + type: boolean + paths: /dds/data/next: get: @@ -165,3 +310,112 @@ paths: type: array items: $ref: "#/components/schemas/dataSource" + '500': + $ref: '#/components/responses/500' + tags: + - sources + /dds/data/query: + get: + summary: Query DCP messages on the fly + description: | + Allows direct querying of DCP messages using search criteria fields passed as query parameters. + Equivalent to providing a temporary criteria file. + parameters: + - name: dcpName + in: query + description: Specific DCP name(s) to filter + schema: + type: array + items: + type: string + style: form + explode: true + - name: dcpAddress + in: query + description: Specific DCP address(es) to filter + schema: + type: array + items: + type: string + style: form + explode: true + - name: since + in: query + description: Lower bound of receive time (UTC) + schema: + type: string + format: date-time + - name: until + in: query + description: Upper bound of receive time (UTC) + schema: + type: string + format: date-time + - name: ascending + in: query + description: Return results in ascending time + schema: + type: boolean + - name: spacecraft + in: query + description: Satellite selection ('E', 'W', or 'A') + schema: + type: string + enum: [E, W, A] + - name: source + in: query + description: Filter by source types (e.g., GOES, Iridium) + schema: + type: array + items: + type: string + style: form + explode: true + - name: single + in: query + description: Whether to only return a single message + schema: + type: boolean + responses: + '200': + description: Matched messages + content: + application/json: + schema: + $ref: '#/components/schemas/dcpMessages' + '204': + description: No messages found matching query. + '400': + description: Invalid parameters + '500': + $ref: '#/components/responses/500' + '503': + $ref: '#/components/responses/503' + /dds/data/summary: + get: + summary: Retrieve status summary for a group + description: | + Returns a summarized status report for a group of DCP locations, including message counts, + parity errors, and battery health. + parameters: + - name: group + in: query + required: true + description: The name of the group to summarize (e.g., "SWT") + schema: + type: string + responses: + '200': + description: Status summary for the group + content: + application/json: + schema: + $ref: '#/components/schemas/statusGroupSummary' + '400': + description: Missing or invalid group parameter + '404': + description: Group not implemented or found + '500': + $ref: '#/components/responses/500' + '503': + $ref: '#/components/responses/503' From f0fcc8b07bd6c1b0e9b881f83be824c77ffab384 Mon Sep 17 00:00:00 2001 From: Charles Graham SWT Date: Thu, 10 Jul 2025 08:36:22 -0500 Subject: [PATCH 07/14] * Remove FQDN + /dds * Remove lowBattery and keep it in the additional properties for location --- source/dds-http.yaml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/source/dds-http.yaml b/source/dds-http.yaml index e794d4e..e1efb0f 100644 --- a/source/dds-http.yaml +++ b/source/dds-http.yaml @@ -4,7 +4,7 @@ info: version: '1.0.0' description: Defines bare minimum requirements for exchanging servers: - - url: https://lrgs.usace.army.mil/api + - url: /api/dds description: USACE LRGS DDS Server components: @@ -207,6 +207,7 @@ components: statusGroupSummary: type: object description: Summary of DCP statuses for a group of locations + additionalProperties: true properties: timestamp: type: string @@ -225,13 +226,6 @@ components: type: integer complete: type: integer - reservoir: - type: integer - lowBatteryAddresses: - type: array - items: - type: string - description: List of DCP addresses with low battery status locations: type: object additionalProperties: @@ -251,6 +245,7 @@ components: type: integer description: Number of parity message issues lowBattery: + description: List of DCP addresses with low battery status type: boolean paths: From 9f7a7fb30b1268bd7cc83c2a7501395bcc837348 Mon Sep 17 00:00:00 2001 From: Charles Graham SWT Date: Thu, 10 Jul 2025 08:48:02 -0500 Subject: [PATCH 08/14] Add description to the summary timestamp. Would be useful to have this for server side cache reasons when the client wants to know wehn the status group was updated (if for example it's not read on the fly) --- source/dds-http.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/source/dds-http.yaml b/source/dds-http.yaml index e1efb0f..65092b2 100644 --- a/source/dds-http.yaml +++ b/source/dds-http.yaml @@ -212,6 +212,7 @@ components: timestamp: type: string format: date-time + description: Timestamp the summary was generated (in UTC). durationHours: type: integer description: Duration in hours that the status covers (e.g. 24) From 76e8311c153b5b3226461b006f365962efbb6495 Mon Sep 17 00:00:00 2001 From: Charles Graham SWT Date: Thu, 10 Jul 2025 08:51:16 -0500 Subject: [PATCH 09/14] Correct URL for server --- source/dds-http.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dds-http.yaml b/source/dds-http.yaml index 65092b2..48d37a9 100644 --- a/source/dds-http.yaml +++ b/source/dds-http.yaml @@ -4,7 +4,7 @@ info: version: '1.0.0' description: Defines bare minimum requirements for exchanging servers: - - url: /api/dds + - url: /dds description: USACE LRGS DDS Server components: From 7fe457b0e0fe2f43af0e8d82eff1096d1d926671 Mon Sep 17 00:00:00 2001 From: Charles Graham SWT Date: Thu, 10 Jul 2025 08:51:32 -0500 Subject: [PATCH 10/14] Correct server description --- source/dds-http.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dds-http.yaml b/source/dds-http.yaml index 48d37a9..3d058e0 100644 --- a/source/dds-http.yaml +++ b/source/dds-http.yaml @@ -5,7 +5,7 @@ info: description: Defines bare minimum requirements for exchanging servers: - url: /dds - description: USACE LRGS DDS Server + description: Data Dissemination Service over HTTP components: responses: From dca032421eda42db251e5039cf956d7a1c1c501e Mon Sep 17 00:00:00 2001 From: Charles Graham SWT Date: Thu, 10 Jul 2025 08:52:04 -0500 Subject: [PATCH 11/14] Remove duplicate DDS after server url update --- source/dds-http.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/dds-http.yaml b/source/dds-http.yaml index 3d058e0..efd5b19 100644 --- a/source/dds-http.yaml +++ b/source/dds-http.yaml @@ -250,7 +250,7 @@ components: type: boolean paths: - /dds/data/next: + /data/next: get: summary: Retrieve DCS data parameters: @@ -275,7 +275,7 @@ paths: '503': $ref: '#/components/responses/503' description: Retrieve message for the given, or all if none provided, criteria. This uses HTTP long-polling. After 9 seconds, if no new data is available from the server a 204 Response is sent to the client to indicate the client should connect again to wait for more data. - /dds/data/search: + /data/search: post: summary: Provide criteria for limiting data returned. description: Allows the client to inform the system exactly which data should be returned. @@ -293,7 +293,7 @@ paths: application/json: schema: $ref: '#/components/schemas/searchCriteria' - /dds/sources: + /sources: get: summary: Provide information about data sources available from this instance description: Allow client to know what data sources are available @@ -310,7 +310,7 @@ paths: $ref: '#/components/responses/500' tags: - sources - /dds/data/query: + /data/query: get: summary: Query DCP messages on the fly description: | @@ -387,7 +387,7 @@ paths: $ref: '#/components/responses/500' '503': $ref: '#/components/responses/503' - /dds/data/summary: + /data/summary: get: summary: Retrieve status summary for a group description: | From 93c8c0cf28d28779d430b8684a28edfa14e27536 Mon Sep 17 00:00:00 2001 From: Charles Graham SWT Date: Tue, 15 Jul 2025 10:29:57 -0500 Subject: [PATCH 12/14] Set additional properties true --- source/dds-http.yaml | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/source/dds-http.yaml b/source/dds-http.yaml index efd5b19..b744d6e 100644 --- a/source/dds-http.yaml +++ b/source/dds-http.yaml @@ -229,25 +229,24 @@ components: type: integer locations: type: object - additionalProperties: - type: object - properties: - shefId: - type: string - nessId: - type: string - status: - type: string - enum: [missing, partial, parity, complete] - messageTotal: - type: integer - description: Number of messages received - parityCount: - type: integer - description: Number of parity message issues - lowBattery: - description: List of DCP addresses with low battery status - type: boolean + additionalProperties: true + properties: + shefId: + type: string + nessId: + type: string + status: + type: string + enum: [missing, partial, parity, complete] + messageTotal: + type: integer + description: Number of messages received + parityCount: + type: integer + description: Number of parity message issues + lowBattery: + description: List of DCP addresses with low battery status + type: boolean paths: /data/next: From b4c6577eb32431eca23eb5c83a7265e6adc7951c Mon Sep 17 00:00:00 2001 From: Mike Neilson Date: Sun, 7 Dec 2025 09:13:29 -0800 Subject: [PATCH 13/14] Update dds-http.yaml --- source/dds-http.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/dds-http.yaml b/source/dds-http.yaml index b744d6e..af92174 100644 --- a/source/dds-http.yaml +++ b/source/dds-http.yaml @@ -388,12 +388,12 @@ paths: $ref: '#/components/responses/503' /data/summary: get: - summary: Retrieve status summary for a group + summary: Retrieve status summary for a group DCPs description: | Returns a summarized status report for a group of DCP locations, including message counts, parity errors, and battery health. parameters: - - name: group + - name: data-group in: query required: true description: The name of the group to summarize (e.g., "SWT") From 650e1c3652e57d332e97454b5e8134722c28a6f7 Mon Sep 17 00:00:00 2001 From: Mike Neilson Date: Wed, 10 Dec 2025 17:02:43 -0800 Subject: [PATCH 14/14] Apply suggestion from @ktarbet Co-authored-by: Karl Tarbet --- source/dds-http.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/dds-http.yaml b/source/dds-http.yaml index af92174..6af615c 100644 --- a/source/dds-http.yaml +++ b/source/dds-http.yaml @@ -2,7 +2,10 @@ openapi: '3.0.2' info: title: DDS over HTTP version: '1.0.0' - description: Defines bare minimum requirements for exchanging + description: | + **DCP Data Service (DDS) over HTTP** + + This API defines the minimum URL requirements for exchanging Data Collection Platform (DCP) messages over HTTP. It defines access to telemetry data collected from multiple sources including GOES and Iridium satellites, and other data collection systems. servers: - url: /dds description: Data Dissemination Service over HTTP