diff --git a/schemas/resources/schemas/service-entry/CHANGELOG.md b/schemas/resources/schemas/service-entry/CHANGELOG.md
deleted file mode 100644
index 42776faa48..0000000000
--- a/schemas/resources/schemas/service-entry/CHANGELOG.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Service-Entry schema change Log
-
-## [1.0.0]
-- 2022-??-??
-Initial release in the CMR.
-
-----
-
-Copyright © 2022-2022 United States Government as represented by the
-Administrator of the National Aeronautics and Space Administration. All Rights
-Reserved.
diff --git a/schemas/resources/schemas/service-entry/v1.0.0/config.json b/schemas/resources/schemas/service-entry/v1.0.0/config.json
deleted file mode 100644
index 50949c684a..0000000000
--- a/schemas/resources/schemas/service-entry/v1.0.0/config.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "MetadataSpecification": {
- "URL": "https://cdn.earthdata.nasa.gov/generic/config/v0.0.1",
- "Name": "Generic-Config",
- "Version": "0.0.1"
- },
- "Generic": {
- "Name": "Service Entry",
- "Version": "1.0.0"
- },
- "SubConceptType": "SE",
- "Indexes":
- [
- {
- "Description": "Name",
- "Field": ".Name",
- "Name": "Name",
- "Mapping": "string"
- }, {
- "Description": "Id - This is the old ECHO 10 GUID.",
- "Field": ".Id",
- "Name": "Id",
- "Mapping": "string"
- }
- ]
-}
diff --git a/schemas/resources/schemas/service-entry/v1.0.0/ingest.md b/schemas/resources/schemas/service-entry/v1.0.0/ingest.md
deleted file mode 100644
index b4640c1e2c..0000000000
--- a/schemas/resources/schemas/service-entry/v1.0.0/ingest.md
+++ /dev/null
@@ -1,85 +0,0 @@
-## Service Entry
-
-#### /providers/<provider-id>/service-entries/<native-id>
-
-### Create / Update a Service Entry
-
-Service Entry concepts can be created or updated by sending an HTTP PUT with the metadata to the URL `%CMR-ENDPOINT%/providers//service-entries/`. The response will include the [concept id](#concept-id) and the [revision id](#revision-id). The contents of the metadata is passed in the body of the request.
-
-```
- curl -XPOST \
- -H "Cmr-Pretty: true" \
- -H "Content-Type:application/vnd.nasa.cmr.umm+json" \
- -H "Authorization: Bearer XXXX" \
- "%CMR-ENDPOINT%/providers/PROV1/service-entries/sampleNativeId" \
- -d @sampleServiceentry.json
-```
-
-#### Successful Response in XML
-
-```
-
-
- SE1200000000-PROV1
- 1
-
-
-
-```
-
-Subsequent ingests to an Service Entry record will result in updates to it's metadata as well as increment the revision-id of the record.
-
-#### Successful Response in JSON
-
-By passing the option `-H "Accept: application/json"` to `curl`, one may
-get a JSON response:
-
-```
- {"concept-id":"SE1200000000-PROV1","revision-id":1,"warnings":null,"existing-errors":null}
-```
-
-### Delete a Service Entry
-
-Service Entry metadata can be deleted by sending an HTTP DELETE to the URL `%CMR-ENDPOINT%/providers//service-entries/`. The response will include the [concept id](#concept-id) and the [revision id](#revision-id) of the tombstone.
-
-```
- curl -XDELETE \
- -H "Cmr-Pretty: true" \
- -H "Authorization: Bearer XXXX" \
- %CMR-ENDPOINT%/providers/PROV1/service-entries/sampleNative23Id"
-```
-
-#### Successful Response in XML
-
-```
-
-
- SE1200000000-PROV1
- 1
-
-```
-
-#### Successful Response in JSON
-
-```
- {"concept-id":"SE1200000000-PROV1","revision-id":2,"warnings":null,"existing-errors":null}
-```
-
-Attempting to delete an already deleted Service Entry will return the following error message
-
-#### Unsuccessful Response in XML
-
-```
-
-
- Concept with native-id [sampleNative23Id] and concept-id [SE1200000000-PROV1] is already deleted.
-
-```
-
-#### Unsuccessful Response in JSON
-
-```
- "errors": [
- "Concept with native-id [sampleNative23Id] and concept-id [SE1200000000-PROV1] is already deleted."
- ]
-```
diff --git a/schemas/resources/schemas/service-entry/v1.0.0/metadata.json b/schemas/resources/schemas/service-entry/v1.0.0/metadata.json
deleted file mode 100644
index d8954ba788..0000000000
--- a/schemas/resources/schemas/service-entry/v1.0.0/metadata.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "Id": "0AF0BB4E-7455-FBB2-15C7-B5B7DE43AA6D",
- "Name": "Test Service",
- "Description": "Testing Service",
- "Type":"SERVICE_IMPLEMENTATION",
- "InterfaceName":"EOSIDS Service Interface",
- "URL":"www.example.com",
- "MetadataSpecification": {
- "Name": "Service Entry",
- "Version": "1.0.0",
- "URL": "https://cdn.earthdata.nasa.gov/generics/service-entry/v1.0.0"
- }
-}
diff --git a/schemas/resources/schemas/service-entry/v1.0.0/schema.json b/schemas/resources/schemas/service-entry/v1.0.0/schema.json
deleted file mode 100644
index 7d857f9eb4..0000000000
--- a/schemas/resources/schemas/service-entry/v1.0.0/schema.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "title": "Service Entry",
- "description": "This schema describes the information needed to describe a service provided by a data provider.",
- "additionalProperties": false,
- "type": "object",
- "properties": {
- "Id": {
- "description": "The identifier that was assigned to this record by an older system. It is in the schema to preserve search API functionality in order to store this identifier.",
- "type": "string"
- },
- "Name": {
- "description": "A short descriptive name for the service.",
- "type": "string",
- "minLength": 1,
- "maxLength": 255
- },
- "Description": {
- "description": "A human readable description of the service.",
- "type": "string",
- "minLength": 1,
- "maxLength": 4000
- },
- "URL": {
- "description": "The URL associated with the service.",
- "type": "string"
- },
- "Type": {
- "description": "The type of the service.",
- "type": "string",
- "enum": ["ADVERTISEMENT", "SERVICE_INTERFACE", "SERVICE_IMPLEMENTATION", "GRAPHICAL_USER_INTERFACE"]
- },
- "InterfaceName": {
- "description": "The name of the service interface.",
- "type": "string"
- },
- "TagIds" :{
- "description": "The IDs of all the tags associated with this service entry.",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "MetadataSpecification": {
- "description": "Requires the client, or user, to add in schema information into every service entry record. It includes the schema's name, version, and URL location. The information is controlled through enumerations at the end of this schema.",
- "$ref": "#/definitions/MetadataSpecificationType"
- }
- },
- "required": ["Name", "Description", "URL", "Type", "InterfaceName", "MetadataSpecification"],
-
- "definitions": {
- "MetadataSpecificationType": {
- "type": "object",
- "additionalProperties": false,
- "description": "This object requires any metadata record that is validated by this schema to provide information about the schema.",
- "properties": {
- "URL": {
- "description": "This element represents the URL where the schema lives. The schema can be downloaded.",
- "type": "string",
- "enum": ["https://cdn.earthdata.nasa.gov/generics/service-entry/v1.0.0"]
- },
- "Name": {
- "description": "This element represents the name of the schema.",
- "type": "string",
- "enum": ["Service Entry"]
- },
- "Version": {
- "description": "This element represents the version of the schema.",
- "type": "string",
- "enum": ["1.0.0"]
- }
- },
- "required": ["URL", "Name", "Version"]
- }
- }
-}
diff --git a/schemas/resources/schemas/service-entry/v1.0.0/search.md b/schemas/resources/schemas/service-entry/v1.0.0/search.md
deleted file mode 100644
index 5aeab84197..0000000000
--- a/schemas/resources/schemas/service-entry/v1.0.0/search.md
+++ /dev/null
@@ -1,220 +0,0 @@
-### Service Entry
-
-Service entries describe services provided by a data provider. Service Entry metadata is stored in the JSON format[UMM-Service-entry Schema](https://git.earthdata.nasa.gov/projects/EMFD/repos/otherschemas/browse/service-entry).
-
-#### Searching for Service Entries
-
-Service Entries can be searched for by sending a request to `%CMR-ENDPOINT%/service-entries`. XML reference, JSON and UMM JSON response formats are supported for Service Entries search.
-
-Service Entry search results are paged. See [Paging Details](#paging-details) for more information on how to page through Service Entry search results.
-
-##### Service Entry Search Parameters
-
-The following parameters are supported when searching for Service Entries.
-
-##### Standard Parameters
-
-* page\_size
-* page\_num
-* pretty
-
-##### Service Entry Matching Parameters
-
-These parameters will match fields within a Service Entry. They are case insensitive by default. They support options specified. They also support searching with multiple values in the style of `name[]=key1&name[]=key2`. The values are bitwise ORed together.
-
-* name - options: pattern, ignore\_case
-* provider - options: pattern, ignore\_case
-* native\_id - options: pattern, ignore\_case
-* concept\_id
-* id
-
-```
- curl "%CMR-ENDPOINT%/service-entries?concept_id=SE1200000000-PROV1"
-```
-
-##### Service Entry Search Response
-
-##### XML Reference
-
-The XML reference response format is used for returning references to search results. It consists of the following fields:
-
-| Field | Description |
-| ---------- | -------------------------------------------------- |
-| hits | the number of results matching the search query |
-| took | time in milliseconds it took to perform the search |
-| references | identifying information about each search result |
-
-The `references` field may contain multiple `reference` entries, each consisting of the following fields:
-
-| Field | Description |
-| ----------- | ------------------------------------------------------------------ |
-| name | the value of the Name field in the Service Entry metadata. |
-| id | the CMR identifier for the result |
-| location | the URL at which the full metadata for the result can be retrieved |
-| revision-id | the internal CMR version number for the result |
-
-__Example__
-
-```
- curl -H "Cmr-Pretty: true" "%CMR-ENDPOINT%/service-entries.xml"
-```
-
-__Sample response__
-
-```
-
-
- 1
- 13
-
-
- Serviceentry-name-v1
- SE1200000000-PROV1
- %CMR-ENDPOINT%/concepts/SE1200000000-PROV1/4
- 1
-
-
-
-```
-
-##### JSON
-
-The JSON response includes the following fields.
-
-* hits - How many total Service Entries were found.
-* took - How long the search took in milliseconds
-* items - a list of the current page of Service Entries with the following fields
- * concept\_id
- * revision\_id
- * provider\_id
- * native\_id
- * name
-
-__Example__
-
-```
- curl -H "Cmr-Pretty: true" "%CMR-ENDPOINT%/service-entries.json?name="Serviceentry-name-v1"
-```
-
-__Sample response__
-
-```
- {
- "hits": 1,
- "took": 10,
- "items": [
- {
- "concept\_id": "SE1200000000-PROV1",
- "revision\_id": 4,
- "provider\_id": "PROV1",
- "native\_id": "sampleNative-Id",
- "name": "Serviceentry-name-v1"
- "id": "0AF0BB4E-7455-FBB2-15C7-B5B7DE43AA6D"
- }
- ]
- }
-```
-
-##### UMM JSON
-
-The UMM JSON response contains meta-metadata of the Service Entry, the UMM fields and the associations field if applicable. [To search over specific versions of UMM](#umm-json).
-
-__Example__
-
-```
- curl -H "Cmr-Pretty: true" "%CMR-ENDPOINT%/service-entries.umm_json?name=Serviceentry-name-v1"
-```
-
-__Sample response__
-
-```
- {
- "hits" : 1,
- "took" : 31,
- "items" : [ {
- "meta" : {
- "revision-id" : 1,
- "deleted" : false,
- "provider-id" : "PROV1",
- "user-id" : "ECHO_SYS",
- "native-id" : "serviceEntryNativeid",
- "concept-id" : "SE1200000007-PROV1",
- "revision-date" : "2022-10-27T20:44:34.249Z",
- "concept-type" : "service-entry"
- },
- "umm" : {
- "Id" : "0AF0BB4E-7455-FBB2-15C7-B5B7DE43AA6D",
- "Name" : "Serviceentry-name-v1",
- "Description" : "Testing Service",
- "Type" : "SERVICE_IMPLEMENTATION",
- "InterfaceName" : "EOSIDS Service Interface",
- "URL" : "www.example.com",
- "MetadataSpecification" : {
- "Name" : "Service Entry",
- "Version" : "1.0.0",
- "URL" : "https://cdn.earthdata.nasa.gov/generics/service-entry/v1.0.0"
- }
- }
- } ]
- }
-```
-
-#### Retrieving All Revisions of a Service Entry
-
-In addition to retrieving the latest revision for a Service Entry parameter search, it is possible to return all revisions, including tombstone (deletion marker) revisions, by passing in `all_revisions=true` with the URL parameters. The reference, JSON, and UMM JSON response formats are supported for all revision searches merely change to 'umm_json' and 'json' respectively. References to tombstone revisions do not include the `location` tag and include an additional tag, `deleted`, which always has content of "true". Service Entries with only 1 revision will of course, return only one result.
-
-__Example__
-
-```
- curl -H "Cmr-Pretty: true" \
- "%CMR-ENDPOINT%/service-entries.xml?concept_id=SE1200000006-PROV1&all_revisions=true"
-```
-
-__Sample response__
-
-```
-
-
- 3
- 67
-
-
- Test Service
- SE1200000006-PROV1
- %CMR-ENDPOINT%/concepts/SE1200000006-PROV1/1
- 1
-
-
- Test Service-v2
- SE1200000006-PROV1
- %CMR-ENDPOINT%/concepts/SE1200000006-PROV1/2
- 2
-
-
- Test Service-v3
- SE1200000006-PROV1
- %CMR-ENDPOINT%/concepts/SE1200000006-PROV1/3
- 3
-
-
-
-```
-
-#### Sorting Service Entry Results
-
-By default, Service Entry results are sorted by name, then provider-id.
-
-One or more sort keys can be specified using the sort_key[] parameter. The order used impacts searching. Fields can be prepended with a - to sort in descending order. Ascending order is the default but + (Note: + must be URL encoded as %2B) can be used to explicitly request ascending.
-
-##### Valid Service Entry Sort Keys
-
-* name
-* provider
-* revision_date
-
-Examples of sorting by name in descending (reverse alphabetical) and ascending orders (Note: the `+` must be escaped with %2B):
-
-```
- curl "%CMR-ENDPOINT%/service-entries?sort_key\[\]=-name"
- curl "%CMR-ENDPOINT%/service-entries?sort_key\[\]=%2Bname"
-```
diff --git a/schemas/resources/schemas/service-option/CHANGELOG.md b/schemas/resources/schemas/service-option/CHANGELOG.md
deleted file mode 100644
index ad8c6ae56a..0000000000
--- a/schemas/resources/schemas/service-option/CHANGELOG.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Service-Option schema change Log
-
-## [1.0.0]
-- 2022-??-??
-Initial release in the CMR.
-
-----
-
-Copyright © 2022-2022 United States Government as represented by the
-Administrator of the National Aeronautics and Space Administration. All Rights
-Reserved.
diff --git a/schemas/resources/schemas/service-option/v1.0.0/config.json b/schemas/resources/schemas/service-option/v1.0.0/config.json
deleted file mode 100644
index 83d1f26ce7..0000000000
--- a/schemas/resources/schemas/service-option/v1.0.0/config.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "MetadataSpecification": {
- "URL": "https://cdn.earthdata.nasa.gov/generic/config/v0.0.1",
- "Name": "Generic-Config",
- "Version": "0.0.1"
- },
- "Generic": {
- "Name": "Service Option",
- "Version": "1.0.0"
- },
- "SubConceptType": "SO",
- "Indexes":
- [
- {
- "Description": "Name",
- "Field": ".Name",
- "Name": "Name",
- "Mapping": "string"
- }, {
- "Description": "Id - This is the old ECHO 10 GUID.",
- "Field": ".Id",
- "Name": "Id",
- "Mapping": "string"
- }
- ]
-}
diff --git a/schemas/resources/schemas/service-option/v1.0.0/ingest.md b/schemas/resources/schemas/service-option/v1.0.0/ingest.md
deleted file mode 100644
index 8f92dce14c..0000000000
--- a/schemas/resources/schemas/service-option/v1.0.0/ingest.md
+++ /dev/null
@@ -1,85 +0,0 @@
-## Service Option
-
-#### /providers/<provider-id>/service-options/<native-id>
-
-### Create / Update a Service Option
-
-Service Option concepts can be created or updated by sending an HTTP PUT with the metadata to the URL `%CMR-ENDPOINT%/providers//service-options/`. The response will include the [concept id](#concept-id) and the [revision id](#revision-id). The contents of the metadata is passed in the body of the request.
-
-```
- curl -XPOST \
- -H "Cmr-Pretty: true" \
- -H "Content-Type:application/vnd.nasa.cmr.umm+json" \
- -H "Authorization: Bearer XXXX" \
- "%CMR-ENDPOINT%/providers/PROV1/service-options/sampleNativeId" \
- -d @sampleServiceoptions.json
-```
-
-#### Successful Response in XML
-
-```
-
-
- SO1200000000-PROV1
- 1
-
-
-
-```
-
-Subsequent ingests to an Service Option record will result in updates to it's metadata as well as increment the revision-id of the record.
-
-#### Successful Response in JSON
-
-By passing the option `-H "Accept: application/json"` to `curl`, one may
-get a JSON response:
-
-```
- {"concept-id":"SO1200000000-PROV1","revision-id":1,"warnings":null,"existing-errors":null}
-```
-
-### Delete a Service Option
-
-Service Option metadata can be deleted by sending an HTTP DELETE to the URL `%CMR-ENDPOINT%/providers//service-options/`. The response will include the [concept id](#concept-id) and the [revision id](#revision-id) of the tombstone.
-
-```
- curl -XDELETE \
- -H "Cmr-Pretty: true" \
- -H "Authorization: Bearer XXXX" \
- %CMR-ENDPOINT%/providers/PROV1/service-options/sampleNative23Id"
-```
-
-#### Successful Response in XML
-
-```
-
-
- SO1200000000-PROV1
- 2
-
-```
-
-#### Successful Response in JSON
-
-```
- {"concept-id":"SO1200000000-PROV1","revision-id":2,"warnings":null,"existing-errors":null}
-```
-
-Attempting to delete an already deleted Service Option will return the following error message
-
-#### Unsuccessful Response in XML
-
-```
-
-
- Concept with native-id [sampleNative23Id] and concept-id [SO1200000000-PROV1] is already deleted.
-
-```
-
-#### Unsuccessful Response in JSON
-
-```
- "errors": [
- "Concept with native-id [sampleNative23Id] and concept-id [SO1200000000-PROV1] is already deleted."
- ]
-```
diff --git a/schemas/resources/schemas/service-option/v1.0.0/metadata.json b/schemas/resources/schemas/service-option/v1.0.0/metadata.json
deleted file mode 100644
index 375071b38b..0000000000
--- a/schemas/resources/schemas/service-option/v1.0.0/metadata.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "Id": "1B41335E-82DD-8AAB-B8A9-546CC6DE6CBD",
- "Name": "RangeSliderTest",
- "Description": "Testing range slider - updated DEMO_PROV",
- "Form": "",
- "MetadataSpecification": {
- "Name": "Service Option",
- "Version": "1.0.0",
- "URL": "https://cdn.earthdata.nasa.gov/generics/service-option/v1.0.0"
- }
-}
diff --git a/schemas/resources/schemas/service-option/v1.0.0/schema.json b/schemas/resources/schemas/service-option/v1.0.0/schema.json
deleted file mode 100644
index 0aee2cd6ef..0000000000
--- a/schemas/resources/schemas/service-option/v1.0.0/schema.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "title": "Service Option",
- "description": "This schema describes service options. Service options are options that a service can provide when servicing orders, such as how data can be accessed/distrbuted from the providers. These options are written in an XML format that must conform to the ECHO forms schema. The form will be used to send the ordering options to the service.",
- "additionalProperties": false,
- "type": "object",
- "properties": {
- "Id": {
- "description": "The identifier that was assigned to this record by an older system. It is in the schema to preserve search API functionality in order to store this identifier.",
- "type": "string"
- },
- "Name": {
- "description": "The user supplied name of the service tag group.",
- "type": "string",
- "minLength": 1,
- "maxLength": 255
- },
- "Description": {
- "description": "The description is a longer, human-readable description of the order option type or contents, intended for client display. A description of the service tag group.",
- "type": "string",
- "minLength": 1,
- "maxLength": 4000
- },
- "Form": {
- "description": "Contents must conform to ECHO Forms schema. See the ECHO Forms Specification for more information.",
- "type": "string"
- },
- "MetadataSpecification": {
- "description": "Requires the client, or user, to add in schema information into every service option record. It includes the schema's name, version, and URL location. The information is controlled through enumerations at the end of this schema.",
- "$ref": "#/definitions/MetadataSpecificationType"
- }
- },
- "required": ["Id", "Name", "Description", "Form", "MetadataSpecification"],
-
- "definitions": {
- "MetadataSpecificationType": {
- "type": "object",
- "additionalProperties": false,
- "description": "This object requires any metadata record that is validated by this schema to provide information about the schema.",
- "properties": {
- "URL": {
- "description": "This element represents the URL where the schema lives. The schema can be downloaded.",
- "type": "string",
- "enum": ["https://cdn.earthdata.nasa.gov/generics/service-option/v1.0.0"]
- },
- "Name": {
- "description": "This element represents the name of the schema.",
- "type": "string",
- "enum": ["Service Option"]
- },
- "Version": {
- "description": "This element represents the version of the schema.",
- "type": "string",
- "enum": ["1.0.0"]
- }
- },
- "required": ["URL", "Name", "Version"]
- }
- }
-}
diff --git a/schemas/resources/schemas/service-option/v1.0.0/search.md b/schemas/resources/schemas/service-option/v1.0.0/search.md
deleted file mode 100644
index c89286f89c..0000000000
--- a/schemas/resources/schemas/service-option/v1.0.0/search.md
+++ /dev/null
@@ -1,219 +0,0 @@
-### Service Option
-
-Service Options describe options that are available within the ordering service and are linked to service entries defined by a provider. Service Option metadata is stored in the JSON format[UMM-Service-option Schema](https://git.earthdata.nasa.gov/projects/EMFD/repos/otherschemas/browse/service-option).
-
-#### Searching for Service Options
-
-Service Options can be searched for by sending a request to `%CMR-ENDPOINT%/service-options`. XML reference, JSON and UMM JSON response formats are supported for Service Options search.
-
-Service option search results are paged. See [Paging Details](#paging-details) for more information on how to page through service-option search results.
-
-##### Service Option Search Parameters
-
-The following parameters are supported when searching for Service Options.
-
-##### Standard Parameters
-
-* page\_size
-* page\_num
-* pretty
-
-##### Service Option Matching Parameters
-
-These parameters will match fields within a Service Option. They are case insensitive by default. They support options specified. They also support searching with multiple values in the style of `name[]=key1&name[]=key2`. The values are bitwise ORed together.
-
-* name - options: pattern, ignore\_case
-* provider - options: pattern, ignore\_case
-* native\_id - options: pattern, ignore\_case
-* concept\_id
-* id
-
-```
- curl "%CMR-ENDPOINT%/service-options?concept_id=SO1200000000-PROV1"
-```
-
-##### Service Option Search Response
-
-##### XML Reference
-
-The XML reference response format is used for returning references to search results. It consists of the following fields:
-
-| Field | Description |
-| ---------- | -------------------------------------------------- |
-| hits | the number of results matching the search query |
-| took | time in milliseconds it took to perform the search |
-| references | identifying information about each search result |
-
-The `references` field may contain multiple `reference` entries, each consisting of the following fields:
-
-| Field | Description |
-| ----------- | ------------------------------------------------------------------ |
-| name | the value of the Name field in the Service Option metadata. |
-| id | the CMR identifier for the result |
-| location | the URL at which the full metadata for the result can be retrieved |
-| revision-id | the internal CMR version number for the result |
-
-__Example__
-
-```
- curl -H "Cmr-Pretty: true" "%CMR-ENDPOINT%/service-options.xml?name=Serviceoption-name-v1"
-```
-
-__Sample response__
-
-```
-
-
- 1
- 13
-
-
- Serviceoption-name-v1
- SO1200000000-PROV1
- %CMR-ENDPOINT%/concepts/SO1200000000-PROV1/4
- 4
-
-
-
-```
-
-##### JSON
-
-The JSON response includes the following fields.
-
-* hits - How many total Service Options were found.
-* took - How long the search took in milliseconds
-* items - a list of the current page of Service Options with the following fields
- * concept\_id
- * revision\_id
- * provider\_id
- * native\_id
- * name
-
-__Example__
-
-```
- curl -H "Cmr-Pretty: true" "%CMR-ENDPOINT%/service-options.json?name=Serviceoption-name-v1"
-```
-
-__Sample response__
-
-```
- {
- "hits": 1,
- "took": 10,
- "items": [
- {
- "concept_id": "SO1200000000-PROV1",
- "revision_id": 4,
- "provider_id": "PROV-1",
- "native_id": "sampleNative-Id",
- "name": "Serviceoption-name-v1"
- }
- ]
- }
-```
-
-##### UMM JSON
-
-The UMM JSON response contains meta-metadata of the Service Option, the UMM fields and the associations field if applicable. [To search over specific versions of UMM](#umm-json).
-
-__Example__
-
-```
- curl -H "Cmr-Pretty: true" "%CMR-ENDPOINT%/service-options.umm_json?name=Serviceoption-name-v1"
-```
-
-__Sample response__
-
-```
- {
- "hits": 2,
- "took": 17,
- "items": [
- {
- "meta": {
- "revision-id": 1,
- "deleted": false,
- "provider-id": "PROV1",
- "user-id": "exampleuser",
- "native-id": "sampleNative-Id",
- "concept-id": "SO1200000000-PROV1",
- "revision-date": "2022-09-19T15:05:30.755Z",
- "concept-type": "service-option"
- },
- "umm": {
- "Id": "1B41335E-82DD-8AAB-B8A9-546CC6DE6CBD",
- "Name": "Serviceoption-name-v1",
- "Description": "Testing range slider",
- "Form": "",
- "MetadataSpecification": {
- "Name": "Service Option",
- "Version": "1.0.0",
- "URL": "https://cdn.earthdata.nasa.gov/generics/service-option/v1.0.0"
- }
- }
- }
- ]
- }
-```
-
-#### Retrieving All Revisions of a Service Option
-
-In addition to retrieving the latest revision for a Service Option parameter search, it is possible to return all revisions, including tombstone (deletion marker) revisions, by passing in `all_revisions=true` with the URL parameters. The reference, JSON, and UMM JSON response formats are supported for all revision searches merely change to 'umm_json' and 'json' respectively. References to tombstone revisions do not include the `location` tag and include an additional tag, `deleted`, which always has content of "true". Service Option with only 1 revision will of course, return only one result.
-
-__Example__
-
-```
- curl -H "Cmr-Pretty: true" \
- "%CMR-ENDPOINT%/service-options.xml?concept_id=SO1200000000-PROV1&all_revisions=true"
-```
-
-__Sample response__
-
-```
-
-
- 4
- 80
-
-
- Serviceoption-name-v1
- SO1200000000-PROV1
- true
- 1
-
-
- Serviceoption-name-v2
- SO1200000000-PROV1V
- %CMR-ENDPOINT%/concepts/SO1200000000-PROV1/3
- 2
-
-
- Serviceoption-name-v3
- SO1200000000-PROV1
- %CMR-ENDPOINT%/concepts/SO1200000000-PROV1/4
- 3
-
-
-
-```
-
-#### Sorting Service Option Results
-
-By default, Service Option results are sorted by name, then provider-id.
-
-One or more sort keys can be specified using the sort_key[] parameter. The order used impacts searching. Fields can be prepended with a - to sort in descending order. Ascending order is the default but + (Note: + must be URL encoded as %2B) can be used to explicitly request ascending.
-
-##### Valid Service Option Sort Keys
-
-* name
-* provider
-* revision_date
-
-Examples of sorting by name in descending (reverse alphabetical) and ascending orders (Note: the `+` must be escaped with %2B):
-
-```
- curl "%CMR-ENDPOINT%/service-options?sort_key\[\]=-name"
- curl "%CMR-ENDPOINT%/service-options?sort_key\[\]=%2Bname"
-```
diff --git a/system-validation-test/Gemfile b/system-validation-test/Gemfile
deleted file mode 100644
index 17758f7391..0000000000
--- a/system-validation-test/Gemfile
+++ /dev/null
@@ -1,12 +0,0 @@
-# frozen_string_literal: true
-
-source 'https://rubygems.org'
-
-group :test do
- gem 'cucumber', '~> 9.2.1'
- gem 'httparty'
- gem 'jsonpath'
- gem 'nokogiri', "1.18.9"
- gem 'rspec'
- gem 'ffi', '~> 1.16.3'
-end
diff --git a/system-validation-test/Gemfile.lock b/system-validation-test/Gemfile.lock
deleted file mode 100644
index 28326606ef..0000000000
--- a/system-validation-test/Gemfile.lock
+++ /dev/null
@@ -1,90 +0,0 @@
-GEM
- remote: https://rubygems.org/
- specs:
- bigdecimal (3.1.9)
- bigdecimal (3.1.9-java)
- builder (3.3.0)
- csv (3.3.5)
- cucumber (9.2.1)
- builder (~> 3.2)
- cucumber-ci-environment (> 9, < 11)
- cucumber-core (> 13, < 14)
- cucumber-cucumber-expressions (~> 17.0)
- cucumber-gherkin (> 24, < 28)
- cucumber-html-formatter (> 20.3, < 22)
- cucumber-messages (> 19, < 25)
- diff-lcs (~> 1.5)
- mini_mime (~> 1.1)
- multi_test (~> 1.1)
- sys-uname (~> 1.2)
- cucumber-ci-environment (10.0.1)
- cucumber-core (13.0.3)
- cucumber-gherkin (>= 27, < 28)
- cucumber-messages (>= 20, < 23)
- cucumber-tag-expressions (> 5, < 7)
- cucumber-cucumber-expressions (17.1.0)
- bigdecimal
- cucumber-gherkin (27.0.0)
- cucumber-messages (>= 19.1.4, < 23)
- cucumber-html-formatter (21.9.0)
- cucumber-messages (> 19, < 28)
- cucumber-messages (22.0.0)
- cucumber-tag-expressions (6.1.2)
- diff-lcs (1.5.1)
- ffi (1.16.3)
- ffi (1.16.3-java)
- httparty (0.24.0)
- csv
- mini_mime (>= 1.0.0)
- multi_xml (>= 0.5.2)
- jsonpath (1.1.5)
- multi_json
- mini_mime (1.1.5)
- multi_json (1.15.0)
- multi_test (1.1.0)
- multi_xml (0.8.0)
- bigdecimal (>= 3.1, < 5)
- nokogiri (1.18.9-arm64-darwin)
- racc (~> 1.4)
- nokogiri (1.18.9-java)
- racc (~> 1.4)
- nokogiri (1.18.9-x86_64-darwin)
- racc (~> 1.4)
- nokogiri (1.18.9-x86_64-linux-gnu)
- racc (~> 1.4)
- racc (1.8.1)
- racc (1.8.1-java)
- rspec (3.13.0)
- rspec-core (~> 3.13.0)
- rspec-expectations (~> 3.13.0)
- rspec-mocks (~> 3.13.0)
- rspec-core (3.13.0)
- rspec-support (~> 3.13.0)
- rspec-expectations (3.13.0)
- diff-lcs (>= 1.2.0, < 2.0)
- rspec-support (~> 3.13.0)
- rspec-mocks (3.13.1)
- diff-lcs (>= 1.2.0, < 2.0)
- rspec-support (~> 3.13.0)
- rspec-support (3.13.1)
- sys-uname (1.3.1)
- ffi (~> 1.1)
-
-PLATFORMS
- arm64-darwin-21
- arm64-darwin-23
- universal-java-17
- x86_64-darwin-22
- x86_64-darwin-23
- x86_64-linux
-
-DEPENDENCIES
- cucumber (~> 9.2.1)
- ffi (~> 1.16.3)
- httparty
- jsonpath
- nokogiri (= 1.18.9)
- rspec
-
-BUNDLED WITH
- 2.3.26
diff --git a/system-validation-test/README.md b/system-validation-test/README.md
deleted file mode 100644
index 5573bddb6a..0000000000
--- a/system-validation-test/README.md
+++ /dev/null
@@ -1,56 +0,0 @@
-# CMR::Validation
-
-This is the repository for the Common Metadata Repository Client Validation Gem. This gem is intended to be a suite of tests to provide validation of a CMR instance for common queries and functions of the CMR. The tests within use only the existing outwardly facing CMR APIs
-
-## Prerequisites
-
-* Ruby
- * as of 2023-12-04 - Ruby 3.2.2 under rbenv worked
-
-## Installation
-
-And then execute:
-
- $ bundle install
-
-## Usage
-
-| Variable | Description | Required |
-|----------|-------------|----------|
-| CMR_ROOT | The URL of the base CMR instance | yes |
-| CMR_TOKEN | The token string to use as authorization. This may be an EDL token or Echo-Token (Echo-Tokens are being deprecated) | yes |
-| CMR_USER | A username to check certain queries with | no |
-
-To run all tests invoke cucumber with the following
-
- $ cucumber CMR_ROOT=https://cmr.my-instance.com CMR_TOKEN=$MY_CMR_EDL_TOKEN CMR_USER=$MY_EDL_USERNAME CMR_TEST_PROV=$MY_CMR_TEST_PROV
-
-
-To perform a limited test use the `@quick` tag as shown below
-
- $ cucumber CMR_ROOT=https://cmr.my-instance.com CMR_TOKEN=$MY_CMR_EDL_TOKEN --tags @quick
-
-
-When running the suite against a newly instantiated instance of CMR, use the `@quick` tag as other tests may make assumptions about data being present.
-
-When running @ingest tests, it's required to configure $MY_CMR_EDL_TOKEN in environment or cucumber profile to a
-provider that exists in the test environment.
-
-### Tags
-
-Cucumber supports tagging of tests to allow for targeted runs of certain areas of functionality. Some basic broad categories included are the following
-
-* @quick - No internal data required
-* @search - Related to search operations
-* @ingest - Related to ingest operations
-* @acls - Related to access-control operations
-
-## Test Construction Philosophy
-
-Tests should be constructed such that only externally facing APIs are used. No access to dev-system or side-api is invoked, nor direct access to the database or Elasticsearch cluster.
-
-Tests should follow the Given-When-Then syntax.
-
-Tests that create data should clean up after themselves and not leave any artifacts.
-
-Use tags judiciously. Only tests that can function without data in the CMR instance should use the `@quick` tag. Do not create tags that are overly specific.
diff --git a/system-validation-test/cucumber.yml b/system-validation-test/cucumber.yml
deleted file mode 100644
index fea5edc10a..0000000000
--- a/system-validation-test/cucumber.yml
+++ /dev/null
@@ -1 +0,0 @@
-default: --publish-quiet
diff --git a/system-validation-test/features/acls.feature b/system-validation-test/features/acls.feature
deleted file mode 100644
index 08990f58a2..0000000000
--- a/system-validation-test/features/acls.feature
+++ /dev/null
@@ -1,45 +0,0 @@
-Feature: ACL
-
- Background:
- Given I use the authorization token from environment variable "CMR_TOKEN"
-
- @acls
- Scenario: Searching for ACLs
- Given I am searching for "acls"
- When I submit a "GET" request
- Then the response status code is 200
-
- @acls
- Scenario: Searching for permissions without any discriminator yields an error
- Given I am searching for "permissions"
- When I submit a "GET" request
- Then the response status code is 400
-
- @acls
- Scenario: Searching for permissions with user_id and concept_id
- Given I am searching for "collections"
- And I want "json"
- And I submit a "GET" request
- And I save the "first" result "id" as "my collection ID"
-
- When I am searching for "permissions"
- And I reset the extension
- And I clear the query
- And I add query param "user_id" using environment variable "CMR_USER"
- And I add query param "concept_id" using saved value "my collection ID"
- And I submit a "GET" request
- Then the response status code is 200
- And the response body contains one of "read, update, delete, order"
-
- @acls
- Scenario: Searching for s3-buckets without any discriminator yields an error
- Given I am searching for "s3-buckets"
- When I submit a "GET" request
- Then the response status code is 400
-
- @acls
- Scenario: Searching for s3-buckets
- Given I am searching for "s3-buckets"
- And I add query param "user_id" using environment variable "CMR_USER"
- When I submit a "GET" request
- Then the response status code is 200
diff --git a/system-validation-test/features/healthchecks.feature b/system-validation-test/features/healthchecks.feature
deleted file mode 100644
index 5b1dc71160..0000000000
--- a/system-validation-test/features/healthchecks.feature
+++ /dev/null
@@ -1,14 +0,0 @@
-Feature: Service Health Checks
- CMR provides healthcheck endpoints for the various exposed components.
- These should return a 200 status and information about the service when successful.
-
- @quick
- Scenario: Check status endpoints
- When I send a "GET" request to
- Then the response status code is 200
- And the response Content-Type is
- Examples:
- | health-check-endpoint | content-type |
- | "/search/health" | "application/json" |
- | "/access-control/health" | "application/json" |
- | "/ingest/health" | "application/json" |
diff --git a/system-validation-test/features/ingest_basic.feature b/system-validation-test/features/ingest_basic.feature
deleted file mode 100644
index 504499725f..0000000000
--- a/system-validation-test/features/ingest_basic.feature
+++ /dev/null
@@ -1,85 +0,0 @@
-Feature: Basic Ingest API calls
- Ingest collections for various formats
-
- Background:
- Given I use the authorization token from environment variable "CMR_TOKEN"
- And the provider from environment variable "CMR_TEST_PROV" exists
-
- And set body to the following XML "TestCollection001Version011999-12-31T19:00:00-05:001999-12-31T19:00:00-05:002025-05-23T22:30:59TestCollection001LongNameTestCollection001IdA minimal valid collectiontruetrue"
-
- @ingest
- Scenario: Using an invalid Bearer token value
- Given I am ingesting a "Collection"
- And I clear headers
- And I use the "providers" endpoint
- And I add the environment variable "CMR_TEST_PROV" to the url path
- And I add url path "/collections/TestCollection001"
- And I add header "Content-type=application/echo10+xml"
- And I add header "Authorization=Bearer INVALID_TOKEN"
- When I submit a "PUT" request
- Then the response status code is 401
- And the response body contains "is not a valid Launchpad or URS token"
-
- @ingest
- Scenario: Ingest of a Collection
- Given I am ingesting a "Collection"
- And I use the "providers" endpoint
- And I add the environment variable "CMR_TEST_PROV" to the url path
- And I add url path "/collections/TestCollection001"
- And I add header "Content-type=application/echo10+xml"
- When I submit a "PUT" request
- Then the response status code is in "200,201"
-
- @ingest
- Scenario: Searching for ingested Collection
- Given I am ingesting a "Collection"
- And I use the "providers" endpoint
- And I add the environment variable "CMR_TEST_PROV" to the url path
- And I add url path "/collections/TestCollection001"
- And I add header "Content-type=application/echo10+xml"
- When I submit a "PUT" request
- And I wait "2.25" seconds for ingest to complete
- Given I am searching for "collections"
- And I clear the extension
- And I clear the url path
- And I clear headers
- And I clear the body
- And I use the authorization token from environment variable "CMR_TOKEN"
- And I want "json"
- And I add a query param "short_name" of "TestCollection001"
- When I submit a "GET" request
- Then the response status code is 200
- And the response body contains one of "data_center"
-
- @ingest
- Scenario: Deleting ingested Collection
- Given I am ingesting a "Collection"
- And I use the "providers" endpoint
- And I add the environment variable "CMR_TEST_PROV" to the url path
- And I add url path "/collections/TestCollection001"
- And I add header "Content-type=application/echo10+xml"
- When I submit a "PUT" request
- And I wait "2.25" seconds for ingest to complete
- Given I am deleting on "ingest"
- And I clear the extension
- And I clear the url path
- And I clear headers
- And I clear the body
- And I use the authorization token from environment variable "CMR_TOKEN"
- And I use the "providers" endpoint
- And I add the environment variable "CMR_TEST_PROV" to the url path
- And I add url path "/collections/TestCollection001"
- When I submit a "DELETE" request
- Then the response status code is 200
- And I wait "2.25" seconds for deletion to complete
- Given I am searching for "collections"
- And I clear the extension
- And I clear the url path
- And I clear headers
- And I clear the body
- And I use the authorization token from environment variable "CMR_TOKEN"
- And I want "json"
- And I add a query param "short_name" of "TestCollection001"
- When I submit a "GET" request
- Then the response status code is 200
- And the response body is empty
diff --git a/system-validation-test/features/search_basic.feature b/system-validation-test/features/search_basic.feature
deleted file mode 100644
index a33861bfb9..0000000000
--- a/system-validation-test/features/search_basic.feature
+++ /dev/null
@@ -1,110 +0,0 @@
-Feature: Basic Search API Calls
- Search for various types of concepts with CMR for different formats
- Check basic search restrictions
-
- Background:
- Given I use the authorization token from environment variable "CMR_TOKEN"
-
- @search
- Scenario: Concept Search
- Given I am searching for ""
- When I submit a "GET" request
- Then the response status code is 200
- Examples:
- | concept-type |
- | collections |
- | tools |
- | services |
-
- @search
- Scenario: Collection search using basic operators that are commonly used
- Given I am searching for "collections"
- And I want "json"
- When I submit a "GET" request
- And I add search param "science_keyword=ice"
- And I add search param "include_granule_count=true"
- Then the response status code is 200
- And the response "entry" count is at least 1
-
- @search
- Scenario: Concept Search but anonymous
- Given I am not logged in
- And I am searching for ""
- When I submit a "GET" request
- Then the response status code is 200
- Examples:
- | concept-type |
- | collections |
- | tools |
- | services |
-
- @search
- Scenario: Granule searches are not allowed with no parameters
- Given I am searching for "granules"
- When I submit a "GET" request
- Then the response status code is 400
- And the response body contains "The CMR does not allow querying across granules in all collections."
-
- @search
- Scenario: Granule with parameters are allowed
- Given I am searching for "granules"
- And I add a query param "collection_concept_id" of "C1711961296-LPCLOUD"
- When I submit a "GET" request
- Then the response status code is 200
-
- @search
- Scenario: Searching collections by format returns the correct mime-type
- Given I am searching for "collections"
- And I use extension
- When I submit a "GET" request
- Then the response Content-Type is
- Examples:
- | extension | mime-type |
- | ".atom" | "application/atom+xml" |
- | ".dif" | "application/dif+xml" |
- | ".dif10" | "application/dif10+xml" |
- | ".echo10" | "application/echo10+xml" |
- | ".iso" | "application/iso19115+xml" |
- | ".iso19115" | "application/iso19115+xml" |
- | ".json" | "application/json" |
- | ".native" | "application/metadata+xml" |
- | ".umm_json" | "application/vnd.nasa.cmr.umm_results+json" |
- | ".umm-json" | "application/vnd.nasa.cmr.legacy_umm_results+json" |
- | ".xml" | "application/xml" |
-
- @search
- Scenario: Expected headers are returned
- Given I am searching for "collections"
- When I submit a "GET" request
- Then the response header contains an entry for ""
- Examples:
- |header |
- |CMR-Took |
- |CMR-request-id |
- |CMR-Hits |
-
- @search
- Scenario: Paging using page_num defaults to page 1 when not specified
- Given I am searching for "collections"
- And I want "json"
- When I submit a "GET" request
- And I save the results as "first_page"
- And I add query param "page_num=1"
- And I submit another "GET" request
- And I save the results as "page_1"
- Then saved value "first_page" is equal to saved value "page_1"
-
- @search
- Scenario: Paging using page_num and changing pages changes results
- Given I am searching for "collections"
- And I want "json"
- When I submit a "GET" request
- And I save the results as "first_page"
- And I set query param "page_num=2"
- And I submit a "GET" request
- And I save the results as "page_2"
- And I set query param "page_num=1"
- And I submit a "GET" request
- And I save the results as "page_1"
- Then saved value "first_page" does not equal saved value "page_2"
- And saved value "first_page" is equal to saved value "page_1"
diff --git a/system-validation-test/features/search_by_params.feature b/system-validation-test/features/search_by_params.feature
deleted file mode 100644
index 42a0cfd8b1..0000000000
--- a/system-validation-test/features/search_by_params.feature
+++ /dev/null
@@ -1,29 +0,0 @@
-Feature: CMR Search Parameters
- CMR supports many parameters to support complex queries to retrieve concepts
-
- Background:
- Given I use the authorization token from environment variable "CMR_TOKEN"
- And I want "json"
-
- @search
- Scenario: Searching for collections using has_granules=false
- Given I am searching for "collections"
- When I add query param "has_granules="
- And I submit a "GET" request
- And I save the "first" result "id" as "my collection ID"
- And I clear the query
- And I am searching for "granules"
- And I add query term "collection_concept_id" using saved value "my collection ID"
- And I submit a "GET" request
- Then the response header "CMR-Hits"
- Examples:
- | has_granules | result |
- | false | is "0" |
- | true | is not "0" |
-
- @Search
- Scenario: I am mimicking the EDSC search
- Given I am searching for "collections"
- When I add query param "has_granules_or_cwic=true"
- And I submit a "GET" request
- Then the response status code is 200
diff --git a/system-validation-test/features/search_spatial.feature b/system-validation-test/features/search_spatial.feature
deleted file mode 100644
index 881e1e95a3..0000000000
--- a/system-validation-test/features/search_spatial.feature
+++ /dev/null
@@ -1,38 +0,0 @@
-Feature: Find concepts by Spatial Search
- Spatial Search is a core feature of the CMR and several search mechanisms are supported
-
- Background:
- Given I use the authorization token from environment variable "CMR_TOKEN"
- And I am searching for "collections"
- And I want "json"
-
- @search @spatial
- Scenario: Collection Spatial Search using a single polygon
- Given I add a search param "polygon=10,10,30,10,30,20,10,20,10,10"
- When I submit a "GET" request
- Then the response status code is 200
- And the response "entry" count is at least 1
-
- @search @spatial
- Scenario: Collection Spatial Search using multiple polygons
- Given I add a search param "polygon[]=10,10,30,10,30,20,10,20,10,10"
- And I add a search param "polygon[]=11,11,31,11,31,21,11,21,11,11"
- When I submit a "GET" request
- Then the response status code is 200
- And the response "entry" count is at least 1
-
- @search @spatial
- Scenario: Collection Spatial Search using a single bounding box
- Given I add a search param "bounding_box[]=-10,-5,10,5"
- When I submit a "GET" request
- Then the response status code is 200
- And the response "entry" count is at least 1
-
- @search @spatial
- Scenario: Collection Spatial Search using a multiple bounding boxes
- Given I add a search param "bounding_box[]=-10,-5,10,5"
- And I add a search param "bounding_box[]=-11,-6,11,6"
- And I add a search param "options[bounding_box][or]=true"
- When I submit a "GET" request
- Then the response status code is 200
- And the response "entry" count is at least 1
diff --git a/system-validation-test/features/search_with_authorizations.feature b/system-validation-test/features/search_with_authorizations.feature
deleted file mode 100644
index 12021c078a..0000000000
--- a/system-validation-test/features/search_with_authorizations.feature
+++ /dev/null
@@ -1,24 +0,0 @@
-Feature: CMR limits access to certain concepts and data to users with proper credentials
-
- @search
- Scenario: Using an invalid Bearer token value
- Given I am searching for "collections"
- And I set header "Authorization=Bearer INVALID_TOKEN"
- When I submit a "GET" request
- Then the response status code is 401
- And the response body contains "Token does not exist"
-
- @search
- Scenario: Using Authorization header
- Given I am searching for "collections"
- And I use the authorization token from environment variable "CMR_TOKEN"
- When I submit a "GET" request
- Then the response status code is 200
-
- @search
- Scenario: Using an invalid Authorization header value
- Given I am searching for "collections"
- And I set header "Authorization=invalid"
- When I submit a "GET" request
- Then the response status code is 401
- And the response body contains "Token does not exist"
diff --git a/system-validation-test/features/step_definitions/data_comparison_steps.rb b/system-validation-test/features/step_definitions/data_comparison_steps.rb
deleted file mode 100644
index 418b91aedf..0000000000
--- a/system-validation-test/features/step_definitions/data_comparison_steps.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-# frozen_string_literal: true
-
-require 'json'
-require 'jsonpath'
-
-Then('the response header {string} is {string}') do |header, value|
- raise 'Blank or empty values not allowed' if value.empty?
-
- expect(@response.headers[header]).to eq(value)
-end
-
-Then('the response header {string} is not {string}') do |header, value|
- raise 'Blank or empty values not allowed' if value.empty?
-
- expect(@response.headers[header]).not_to eq(value)
-end
-
-Then('the response header contains an entry for {string}') do |header|
- expect(@response.headers).to have_key(header.downcase)
-end
-
-Then('the response body is {string}') do |body|
- expect(@response.body).to eq(body)
-end
-
-Then('the response body contains/includes {string}') do |body|
- expect(@response.body).to include(body)
-end
-
-Then('the response body is empty') do
- pending('Need to set response type to json') unless @response_type == 'json'
- json = JSON.parse(@response.body)
- expect(json['feed']['entry'].length.zero?)
-end
-
-Then('saved value {string} is equal to saved value {string}') do |a, b|
- expect(@stashes[a]).to eq(@stashes[b])
-end
-
-Then('the response {string} count is at least {int}') do |json_key, length|
- path = JsonPath.new("$..#{json_key}")
- data = JSON.parse(@response.body)
- values = path.on(data)
- expect(values.length).to be >= length
-end
-
-Then(/^saved value "([\w\d\-_ ]+)" (does not equal|is not equal to) saved value "([\w\d\-_ ]+)"$/) do |a, _, b|
- expect(@stashes[a]).not_to eq(@stashes[b])
-end
-
-Then('the response body contains one of {string}') do |value|
- terms = value.split(',').map(&:strip)
-
- expect(@response.body).to satisfy do |body|
- terms.reduce(false) { |found, term| found || body.include?(term) }
- end
-end
diff --git a/system-validation-test/features/step_definitions/data_parsing_steps.rb b/system-validation-test/features/step_definitions/data_parsing_steps.rb
deleted file mode 100644
index f75a014512..0000000000
--- a/system-validation-test/features/step_definitions/data_parsing_steps.rb
+++ /dev/null
@@ -1,77 +0,0 @@
-# frozen_string_literal: true
-
-require 'json'
-require 'jsonpath'
-require 'nokogiri'
-
-# Parse CMR response bodies to extract meaningful data
-module CmrResultHandling
- # Pull results from response bodies by result mime-type
- def extract_results(mime_type, data)
- mime_type_handlers = { 'application/json' => ->(d) { JsonPath.new('$..entry[*]').on(d) },
- 'application/vnd.nasa.cmr.umm_results+json' => ->(d) { JsonPath.new('$..items[*]').on(d) },
- 'application/vnd.nasa.cmr.legacy_umm_results+json' => ->(d) { JsonPath.new('$..items[*]').on(d) },
- 'application/xml' => ->(d) { Nokogiri::XML(d).xpath('//results/references/reference') },
- 'application/iso19115+xml' => ->(d) { Nokogiri::XML(d).xpath('//results/result') },
- 'application/echo10+xml' => ->(d) { Nokogiri::XML(d).xpath('//results/result') },
- 'application/dif+xml' => ->(d) { Nokogiri::XML(d).xpath('//results/result') },
- 'application/dif10+xml' => ->(d) { Nokogiri::XML(d).xpath('//results/result') },
- 'application/metadata+xml' => ->(d) { Nokogiri::XML(d).xpath('//results/result') },
- 'application/atom+xml' => ->(d) { Nokogiri::XML(d).xpath('//feed/entry') } }
-
- raise "No result extractor found for #{mime_type} found" unless mime_type_handlers.key?(mime_type)
-
- mime_type_handlers[mime_type].call(data)
- end
-end
-World CmrResultHandling
-
-When(/^(I )?save the response body as "(.*)"/) do |_, save_as|
- @stashes ||= {}
-
- mime_type = @response.headers['Content-Type'].split(';')[0]
- mime_type.strip!
-
- data = if mime_type.match?(%r{^application/(.*\+)?json$})
- JSON.parse(@response.body)
- else
- @response.body
- end
-
- @stashes = @stashes.merge({ save_as => data })
-end
-
-When(/I save the results as "(.*)"/) do |save_as|
- @stashes ||= {}
-
- mime_type = @response.headers['Content-Type'].split(';')[0]
- mime_type.strip!
-
- data = extract_results(mime_type, @response.body)
- @stashes = @stashes.merge({ save_as => data })
-end
-
-When('I save/saved the {string} result {string} as {string}') do |nth, key, save_as|
- mime_type = @response.headers['Content-Type'].split(';')[0]
- mime_type.strip!
-
- index = case nth.downcase
- when 'first'
- 0
- when 'second'
- 1
- when 'last'
- -1
- when /\d+/
- Integer(nth)
- else
- raise "Cardinality index #{nth} not supported, first, second, and last supported or specify number"
- end
-
- concept = extract_results(mime_type, @response.body)[index]
-
- raise "No entry found for #{key} on concept #{@response.body}" unless concept.key?(key)
-
- @stashes ||= {}
- @stashes = @stashes.merge({ save_as => concept[key] })
-end
diff --git a/system-validation-test/features/step_definitions/rest_steps.rb b/system-validation-test/features/step_definitions/rest_steps.rb
deleted file mode 100644
index 559efa119a..0000000000
--- a/system-validation-test/features/step_definitions/rest_steps.rb
+++ /dev/null
@@ -1,315 +0,0 @@
-# frozen_string_literal: true
-
-require 'httparty'
-require 'json'
-require 'jsonpath'
-
-cmr_root ||= ENV['CMR_ROOT']
-
-# Module to help build CMR queries
-module CmrRestfulHelper
- # Appends new values to the query map,
- # if already present the entry will be converted to an array
- def append_query(query, key, value)
- query ||= {}
-
- # HTTParty supports array of parameters but automatically adds square braces
- key = key[0..-3] if key.match?(/\[\]$/)
-
- if query.key?(key)
- query[key] = [query[key]] unless query[key].is_a?(Array)
- query[key] << value
- else
- query[key] = value
- end
-
- query
- end
-
- # Appends new values to the query map,
- # if already present the entry will be overwritten
- def update_query(query, key, value)
- query ||= {}
-
- # HTTParty supports array of parameters but automatically adds square braces
- key = key[0..-3] if key.match?(/\[\]$/)
- query[key] = value
-
- query
- end
-
- # Send the query
- def submit_query(method, url, options)
- resource_uri = URI(url)
- case method.upcase
- when 'GET'
- response = HTTParty.get(resource_uri, options)
- when 'PUT'
- response = HTTParty.put(url, options)
- when 'DELETE'
- response = HTTParty.delete(resource_uri, options)
- else
- raise "#{method} is not supported yet"
- end
-
- response
- end
-
- def check_provider(provider_name, cmr_root)
- url = "#{get_url('ingest', cmr_root)}providers"
- response = HTTParty.get(url)
- response.body.include? provider_name
- end
-end
-
-# Module to help build correct cmr_root urls
-module CmrUrlHelper
- # Get correct URL for current environment
- def get_url(concept_type, cmr_root)
- case concept_type.downcase
- when /^acls?$/
- cmr_root == 'http://localhost' ? "#{cmr_root}:3011/#{concept_type}" : "#{cmr_root}/access-control/acls"
- when /^groups?$/
- cmr_root == 'http://localhost' ? "#{cmr_root}:3011/#{concept_type}" : "#{cmr_root}/access-control/groups"
- when /^permissions?$/
- cmr_root == 'http://localhost' ? "#{cmr_root}:3011/#{concept_type}" : "#{cmr_root}/access-control/permissions"
- when /^s3-buckets?$/
- cmr_root == 'http://localhost' ? "#{cmr_root}:3011/#{concept_type}" : "#{cmr_root}/access-control/s3-buckets"
- when /^(concept|collection|granule|service|tool|variable)s?$/
- cmr_root == 'http://localhost' ? "#{cmr_root}:3003/#{concept_type}" : "#{cmr_root}/search/#{concept_type}"
- when /^(ingest)s?$/
- cmr_root == 'http://localhost' ? "#{cmr_root}:3002/" : "#{cmr_root}/ingest/"
- else
- raise "#{concept_type} searching is not available in CMR"
- end
- end
-end
-
-World CmrUrlHelper
-World CmrRestfulHelper
-
-Given('I use/set the authorization token from/with/using environment variable/value {string}') do |variable|
- token = ENV[variable]
-
- raise "No Token string found in environment using #{variable}" if token.to_s.empty?
-
- token = if token.start_with?('EDL')
- "Bearer #{token}"
- else
- token
- end
-
- @headers ||= {}
- @headers = @headers.merge({ 'Authorization' => token })
-end
-
-Given('I use/set the authorization token to {string}') do |token|
- @headers ||= {}
- @headers = @headers.merge({ 'Authorization' => token }) unless @token.to_s.empty?
-end
-
-Given('I am not logged in') do
- @token = nil
-
- @headers ||= {}
- @headers.delete('Authorization')
-end
-
-Given(/^set body to the following XML "(.+)"$/) do |xml|
- @body = xml
-end
-
-Given(/^I clear the body$/) do
- @body = nil
-end
-
-Given(/^I am ingesting (a )?"([\w\d\-_ ]+)"$/) do |_, ingest_type|
- @resource_url = get_url('ingest', cmr_root)
- @ingest_type = ingest_type
-end
-
-Given(/^the provider from environment variable "([\w\d\-_ ]+)" exists$/) do |provider_name|
- pending("Need to set #{provider_name} in environment or cucumber profile") unless ENV[provider_name]
- pending("Need to create Provider #{provider_name}.") unless check_provider(ENV[provider_name], cmr_root)
-end
-
-Given(/^I am deleting on "([\w\d\-_ ]+)"$/) do |concept_type|
- @resource_url = get_url(concept_type, cmr_root)
-end
-
-Given(/^I am (searching|querying|looking) for (an? )?"([\w\d\-_ ]+)"$/) do |_, _, concept_type|
- @resource_url = get_url(concept_type, cmr_root)
-end
-
-Given('I clear/reset/remove/delete the extension') do
- @url_extension = nil
-end
-
-Given('I clear/reset/remove/delete the url path') do
- @url_path = nil
-end
-
-Given('I use/add extension {string}') do |extension|
- @url_extension = extension
-end
-
-Given('I use url path {string}') do |path|
- @url_path = path
-end
-
-Given('I add url path {string}') do |path|
- @url_path ||= ''
- @url_path = @url_path.concat(path)
-end
-
-Given('I use the {string} endpoint') do |endpoint|
- case endpoint
- when 'provider', 'providers'
- @url_path = 'providers/'.dup
- when 'collection', 'collections'
- @url_path = 'collections/'.dup
- when 'subscription', 'subscriptions'
- @url_path = 'subscriptions/'.dup
- end
-end
-
-Given('I add the environment variable {string} to the url path') do |variable|
- environmentVariable = ENV[variable]
- @url_path = @url_path.concat(environmentVariable)
-end
-
-Given(/^I (want|ask for|request) (an? )?"(\w+)"( (response|returned))?$/) do |_, _, format, _|
- @url_extension = case format.downcase
- when 'json', 'xml', 'dif', 'dif10', 'echo10', 'atom', 'native', 'iso', 'iso19115'
- @response_type = format.downcase
- ".#{format}"
- when 'umm_json', 'umm'
- @response_type = format.downcase
- # modern umm
- '.umm_json'
- when 'umm-json', 'legacy-umm-json', 'legacy-umm'
- @response_type = format.downcase
- # legacy umm
- '.umm-json'
- else
- raise "#{format} does not have a mapping to an extension yet"
- end
-end
-
-Given(/^I (set|add) header "([\w\d\-_+]+)=(.*)"$/) do |_, header, value|
- @headers ||= {}
- @headers[header] = value
-end
-
-Given(/^I wait "(\d+.?\d+?)" second(s)?(.*)$/) do |time, _, _|
- sleep(time.to_i)
-end
-
-Given(/^I clear headers$/) do
- @headers = {}
-end
-
-Given(/^I (set|add) header "([\w\d\-_+]+)" using environment ((variable|value) )?"(.*)"$/) do |_, header, _, env_key|
- pending("Need to set #{env_key} in environment or cucumber profile") unless ENV[env_key]
-
- @headers ||= {}
- @headers[header] = ENV[env_key]
-end
-
-Given(/^I (set|add) header "([\w\d\-_+]+)" using stored value "(.*)"$/) do |_, header, stored_value_key|
- pending("Need to save a value for #{store_value_key} first") unless @stashes[stored_value_key]
-
- @headers ||= {}
- @headers[header] = @stashes[stored_value_key]
-end
-
-Given('I reset/clear/delete/remove the query') do
- @query = nil
-end
-
-Given(/^I (set|add) (a )?(search|query) (param(eter)?|term) "([\w\d\-_+\[\]]+)=(.*)"$/) do |op, _, _, _, key, value|
- @query = if op == 'add'
- append_query(@query, key, value)
- else
- update_query(@query, key, value)
- end
-end
-
-Given(/^I (set|add) (a )?(search|query) (param(eter)?|term) "([\w\d\-_+\[\]]+)" (of|to) "(.*)"$/) do |op, _, _, _, key, _, value|
- @query = if op == 'add'
- append_query(@query, key, value)
- else
- update_query(@query, key, value)
- end
-end
-
-Given(/^I (set|add) (a )?(search|query) (param(eter)?|term) "([\w\d\-_+\[\]]+)" using saved value "(.*)"$/) do |op, _, _, _, key, saved_value_key|
- raise "No value for #{env_key} in stored values" unless @stashes[saved_value_key]
-
- @query = if op == 'add'
- append_query(@query, key, @stashes[saved_value_key])
- else
- update_query(@query, key, @stashes[saved_value_key])
- end
-end
-
-Given(/^I (set|add) (a )?(search|query) (param(eter)?|term) "([\w\d\-_+\[\]]+)" using environment (value|variable) "(.*)"$/) do |op, _, _, _, key, _, env_key|
- pending("Need to set #{env_key} in environment or cucumber profile") unless ENV[env_key]
-
- @query = if op == 'add'
- append_query(@query, key, ENV[env_key])
- else
- update_query(@query, key, ENV[env_key])
- end
-end
-
-When(/^I (submit|send) (a|another) "(\w+)" request to "(.*)"$/) do |_, _, method, url|
- url = "#{cmr_root}#{url}#{@url_extension}#{@url_path}"
- options = { query: @query,
- headers: @headers }
- @response = submit_query(method, url, options)
-end
-
-When(/^I (submit|send) (a|another) "(\w+)" request$/) do |_, _, method|
- url = "#{@resource_url}#{@url_extension}#{@url_path}"
- # puts url
- options = { query: @query,
- body: @body,
- headers: @headers }
-
- @response = submit_query(method, url, options)
-end
-
-Then(/^the response (status( code)?) is (\d+)$/) do |_, status_code|
- expect(@response.code).to eq(status_code)
-end
-
-Then(/^the response (status( code)?) is in "((\d+,?(\d+)?))+"$/) do |_, status_codes|
- values = status_codes.split(',')
- expect((values.include? @response.code))
-end
-
-Then('the response Content-Type is {string}') do |content_type|
- actual_type = @response.headers['Content-Type'].split(';')
- expect(actual_type[0]).to eq(content_type)
-end
-
-When(/^I save the response (as|into) "(\w[\w\d\-_ ]+)"$/) do |_, name|
- @stashes ||= {}
- @stashes = @stashes.merge({ name => @response })
-end
-
-When(/^I save the response body (as|into) "(\w[\w\d\-_ ]+)"$/) do |_, name|
- @stashes ||= {}
- @stashes = @stashes.merge({ name => @response.body })
-end
-
-When(/^I save the response headers (as|into) "(\w[\w\d\-_ ]+)"$/) do |_, name|
- @stashes ||= {}
- @stashes = @stashes.merge({ name => @response.headers })
-end
-
-When(/^I save the response header "(\w+)" (as|into) "(\w[\w\d\-_ ]+)"$/) do |header, _, name|
- @stashes ||= {}
- @stashes = @stashes.merge({ name => @response.headers[header] })
-end
diff --git a/system-validation-test/features/support/env.rb b/system-validation-test/features/support/env.rb
deleted file mode 100644
index 8e9b8f90fa..0000000000
--- a/system-validation-test/features/support/env.rb
+++ /dev/null
@@ -1 +0,0 @@
-# frozen_string_literal: true
diff --git a/system-validation-test/features/support/parameter_types.rb b/system-validation-test/features/support/parameter_types.rb
deleted file mode 100644
index 8e9b8f90fa..0000000000
--- a/system-validation-test/features/support/parameter_types.rb
+++ /dev/null
@@ -1 +0,0 @@
-# frozen_string_literal: true