diff --git a/src/it/java/io/github/jpmorganchase/fusion/packaging/DatasetOperationsIT.java b/src/it/java/io/github/jpmorganchase/fusion/packaging/DatasetOperationsIT.java index 27416a0..2bb87f8 100644 --- a/src/it/java/io/github/jpmorganchase/fusion/packaging/DatasetOperationsIT.java +++ b/src/it/java/io/github/jpmorganchase/fusion/packaging/DatasetOperationsIT.java @@ -2,6 +2,7 @@ import com.github.tomakehurst.wiremock.client.WireMock; import io.github.jpmorganchase.fusion.model.Dataset; +import io.github.jpmorganchase.fusion.model.Report; import io.github.jpmorganchase.fusion.test.TestUtils; import org.junit.jupiter.api.Test; import org.slf4j.Logger; @@ -115,6 +116,51 @@ public void testCreateDatasetOverrideDefaultCatalog() { //TODO :: Contract for response of dataset.create() needs to be decided } + @Test + public void testCreateDatasetOfTypeReport() { + // Given + wireMockRule.stubFor(WireMock.post(WireMock.urlEqualTo("/catalogs/common/datasets/SR0001")) + .withRequestBody(equalToJson(TestUtils.loadJsonForIt("dataset/dataset-report-SR0001-create-request.json"))) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withStatus(200) + .withBodyFile("dataset/dataset-create-response.json"))); + + Dataset dataset = getSdk().builders().dataset() + .identifier("SR0001") + .description("Sample report description 1") + .linkedEntity("SR0001/") + .title("Sample Report 1 | North America") + .frequency("Daily") + .varArg("category", listOf("Category 1")) + .varArg("createdDate", "2022-02-06") + .varArg("coverageStartDate", "2022-02-06") + .varArg("coverageEndDate", "2023-03-09") + .varArg("isThirdPartyData", Boolean.FALSE) + .varArg("isInternalOnlyDataset", Boolean.FALSE) + .varArg("language", "English") + .varArg("maintainer", "Maintainer 1") + .varArg("modifiedDate", "2023-03-09") + .varArg("publisher", "Publisher 1") + .varArg("region", listOf("North America")) + .varArg("source", listOf("Source System 1")) + .varArg("subCategory", listOf("Subcategory 1")) + .varArg("tag", listOf("Tag1")) + .varArg("isRestricted", Boolean.FALSE) + .varArg("isRawData", Boolean.FALSE) + .varArg("hasSample", Boolean.FALSE) + .type("Report") + .report(Report.builder().tier("Tier 1").build()) + .build(); + + // When + dataset.create(); + + + // Then Verify the response + //TODO :: Contract for response of dataset.create() needs to be decided + } + @Test public void testUpdateDataset() { // Given diff --git a/src/main/java/io/github/jpmorganchase/fusion/model/Dataset.java b/src/main/java/io/github/jpmorganchase/fusion/model/Dataset.java index 28c3c12..aa914fe 100644 --- a/src/main/java/io/github/jpmorganchase/fusion/model/Dataset.java +++ b/src/main/java/io/github/jpmorganchase/fusion/model/Dataset.java @@ -23,6 +23,8 @@ public class Dataset extends CatalogResource { String title; String frequency; + String type; + Report report; @Builder(toBuilder = true) public Dataset( @@ -34,12 +36,16 @@ public Dataset( String description, String linkedEntity, String title, - String frequency) { + String frequency, + String type, + Report report) { super(identifier, varArgs, apiManager, rootUrl, catalogIdentifier); this.description = description; this.linkedEntity = linkedEntity; this.title = title; this.frequency = frequency; + this.type = type; + this.report = report; } @Override diff --git a/src/main/java/io/github/jpmorganchase/fusion/model/Report.java b/src/main/java/io/github/jpmorganchase/fusion/model/Report.java new file mode 100644 index 0000000..0d77fa7 --- /dev/null +++ b/src/main/java/io/github/jpmorganchase/fusion/model/Report.java @@ -0,0 +1,15 @@ +package io.github.jpmorganchase.fusion.model; + +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import lombok.Value; + +@Builder +@Value +@EqualsAndHashCode() +@ToString() +public class Report { + + String tier; +} diff --git a/src/main/java/io/github/jpmorganchase/fusion/serializing/adapters/DatasetSerializer.java b/src/main/java/io/github/jpmorganchase/fusion/serializing/adapters/DatasetSerializer.java index 666c0d4..939d489 100644 --- a/src/main/java/io/github/jpmorganchase/fusion/serializing/adapters/DatasetSerializer.java +++ b/src/main/java/io/github/jpmorganchase/fusion/serializing/adapters/DatasetSerializer.java @@ -20,6 +20,8 @@ public JsonElement serialize(Dataset src, Type typeOfSrc, JsonSerializationConte jsonObject.add("title", context.serialize(src.getTitle())); jsonObject.add("frequency", context.serialize(src.getFrequency())); jsonObject.add("identifier", context.serialize(src.getIdentifier())); + jsonObject.add("type", context.serialize(src.getType())); + jsonObject.add("report", context.serialize(src.getReport())); Map varArgs = src.getVarArgs(); if (varArgs != null) { diff --git a/src/test/java/io/github/jpmorganchase/fusion/model/DatasetBuilderTest.java b/src/test/java/io/github/jpmorganchase/fusion/model/DatasetBuilderTest.java index aa67414..3a49109 100644 --- a/src/test/java/io/github/jpmorganchase/fusion/model/DatasetBuilderTest.java +++ b/src/test/java/io/github/jpmorganchase/fusion/model/DatasetBuilderTest.java @@ -15,6 +15,7 @@ public class DatasetBuilderTest { @Test void constructionWithBuilderCorrectlyPopulatesAllFields() { APIManager apiManager = Mockito.mock(APIManager.class); + Report report = Report.builder().tier("The tier").build(); Map varArgs = new HashMap<>(); varArgs.put("key1", "value1"); Dataset d = Dataset.builder() @@ -24,6 +25,8 @@ void constructionWithBuilderCorrectlyPopulatesAllFields() { .linkedEntity("The entity") .title("The title") .frequency("The frequency") + .type("The type") + .report(report) .rootUrl("http://foobar/api/v1/") .catalogIdentifier("foobar") .apiManager(apiManager) @@ -35,6 +38,8 @@ void constructionWithBuilderCorrectlyPopulatesAllFields() { assertThat(d.getLinkedEntity(), is(equalTo("The entity"))); assertThat(d.getTitle(), is(equalTo("The title"))); assertThat(d.getFrequency(), is(equalTo("The frequency"))); + assertThat(d.getType(), is(equalTo("The type"))); + assertThat(d.getReport(), is(equalTo(report))); assertThat(d.getRootUrl(), is(equalTo("http://foobar/api/v1/"))); assertThat(d.getCatalogIdentifier(), is(equalTo("foobar"))); assertThat(d.getApiManager(), is(equalTo(apiManager))); diff --git a/src/test/java/io/github/jpmorganchase/fusion/model/ReportTest.java b/src/test/java/io/github/jpmorganchase/fusion/model/ReportTest.java new file mode 100644 index 0000000..0975333 --- /dev/null +++ b/src/test/java/io/github/jpmorganchase/fusion/model/ReportTest.java @@ -0,0 +1,16 @@ +package io.github.jpmorganchase.fusion.model; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.is; + +import org.junit.jupiter.api.Test; + +public class ReportTest { + + @Test + void constructionWithBuilderCorrectlyPopulatesAllFields() { + Report report = Report.builder().tier("The tier").build(); + assertThat(report.getTier(), is(equalTo("The tier"))); + } +} diff --git a/src/test/java/io/github/jpmorganchase/fusion/parsing/GsonAPIResponseParserDatasetReportTest.java b/src/test/java/io/github/jpmorganchase/fusion/parsing/GsonAPIResponseParserDatasetReportTest.java new file mode 100644 index 0000000..89c2e3b --- /dev/null +++ b/src/test/java/io/github/jpmorganchase/fusion/parsing/GsonAPIResponseParserDatasetReportTest.java @@ -0,0 +1,157 @@ +package io.github.jpmorganchase.fusion.parsing; + +import static io.github.jpmorganchase.fusion.test.TestUtils.listOf; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.is; + +import io.github.jpmorganchase.fusion.api.APIManager; +import io.github.jpmorganchase.fusion.api.context.APIContext; +import io.github.jpmorganchase.fusion.model.Dataset; +import io.github.jpmorganchase.fusion.model.Report; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Map; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +public class GsonAPIResponseParserDatasetReportTest { + + private static final String singleDatasetJson = loadTestResource("single-dataset-report-response.json"); + private static final String multipleDatasetJson = loadTestResource("multiple-dataset-report-response.json"); + + private final Dataset testDataset = Dataset.builder() + .identifier("SR0001") + .description("Sample report description 1") + .linkedEntity("SR0001/") + .frequency("Daily") + .apiManager(apiContext.getApiManager()) + .rootUrl(apiContext.getRootUrl()) + .catalogIdentifier(apiContext.getDefaultCatalog()) + .title("Sample Report 1 | North America") + .varArg("category", listOf("Category 1")) + .varArg("createdDate", "2022-02-05") + .varArg("coverageStartDate", "2022-02-05") + .varArg("coverageEndDate", "2023-03-08") + .varArg("isThirdPartyData", Boolean.FALSE) + .varArg("isInternalOnlyDataset", Boolean.FALSE) + .varArg("language", "English") + .varArg("maintainer", "Maintainer 1") + .varArg("modifiedDate", "2023-03-08") + .varArg("publisher", "Publisher 1") + .varArg("region", listOf("North America")) + .varArg("source", listOf("Source System 1")) + .varArg("subCategory", listOf("Subcategory 1")) + .varArg("tag", listOf("Tag1")) + .varArg("isRestricted", Boolean.FALSE) + .varArg("isRawData", Boolean.FALSE) + .varArg("hasSample", Boolean.FALSE) + .type("Report") + .report(Report.builder().tier("Tier 1").build()) + .build(); + + private final Dataset testDataset2 = Dataset.builder() + .identifier("SR0002") + .description("Sample report description 2") + .linkedEntity("SR0002/") + .frequency("Daily") + .title("Sample Report 2 | North America") + .apiManager(apiContext.getApiManager()) + .rootUrl(apiContext.getRootUrl()) + .catalogIdentifier(apiContext.getDefaultCatalog()) + .varArg("category", listOf("Category 2")) + .varArg("createdDate", "2022-02-06") + .varArg("coverageStartDate", "2022-02-06") + .varArg("coverageEndDate", "2023-03-09") + .varArg("isThirdPartyData", Boolean.FALSE) + .varArg("isInternalOnlyDataset", Boolean.FALSE) + .varArg("language", "English") + .varArg("maintainer", "Maintainer 2") + .varArg("modifiedDate", "2023-03-09") + .varArg("publisher", "Publisher 2") + .varArg("region", listOf("North America")) + .varArg("source", listOf("Source System 2")) + .varArg("subCategory", listOf("Subcategory 2")) + .varArg("tag", listOf("Tag2")) + .varArg("isRestricted", Boolean.FALSE) + .varArg("isRawData", Boolean.FALSE) + .varArg("hasSample", Boolean.FALSE) + .type("Report") + .report(Report.builder().tier("Tier 2").build()) + .build(); + + private final Dataset testDataset3 = Dataset.builder() + .identifier("SR0003") + .description("Sample report description 3") + .linkedEntity("SR0003/") + .frequency("Daily") + .title("Sample Report 3 | North America") + .apiManager(apiContext.getApiManager()) + .rootUrl(apiContext.getRootUrl()) + .catalogIdentifier(apiContext.getDefaultCatalog()) + .varArg("category", listOf("Category 3")) + .varArg("createdDate", "2022-02-07") + .varArg("coverageStartDate", "2022-02-07") + .varArg("coverageEndDate", "2023-03-10") + .varArg("isThirdPartyData", Boolean.FALSE) + .varArg("isInternalOnlyDataset", Boolean.FALSE) + .varArg("language", "English") + .varArg("maintainer", "Maintainer 3") + .varArg("modifiedDate", "2023-03-10") + .varArg("publisher", "Publisher 3") + .varArg("region", listOf("North America")) + .varArg("source", listOf("Source System 3")) + .varArg("subCategory", listOf("Subcategory 3")) + .varArg("tag", listOf("Tag3")) + .varArg("isRestricted", Boolean.FALSE) + .varArg("isRawData", Boolean.FALSE) + .varArg("hasSample", Boolean.FALSE) + .type("Report") + .report(Report.builder().tier("Tier 3").build()) + .build(); + + private static final APIContext apiContext = APIContext.builder() + .apiManager(Mockito.mock(APIManager.class)) + .rootUrl("http://foobar/api/v1/") + .defaultCatalog("foobar") + .build(); + + private static final APIResponseParser responseParser = new GsonAPIResponseParser(apiContext); + + @Test + public void singleDatasetInResourcesParsesCorrectly() { + Map datasetMap = responseParser.parseDatasetResponse(singleDatasetJson); + assertThat(datasetMap.size(), is(1)); + + Dataset testDatasetResponse = datasetMap.get("SR0001"); + assertThat(testDatasetResponse, is(equalTo(testDataset))); + } + + @Test + public void multipleCatalogsInResourcesParseCorrectly() { + Map datasetMap = responseParser.parseDatasetResponse(multipleDatasetJson); + assertThat(datasetMap.size(), is(3)); + + Dataset testDatasetResponse = datasetMap.get("SR0001"); + assertThat(testDatasetResponse, is(equalTo(testDataset))); + + Dataset testDatasetResponse2 = datasetMap.get("SR0002"); + assertThat(testDatasetResponse2, is(equalTo(testDataset2))); + + Dataset testDatasetResponse3 = datasetMap.get("SR0003"); + assertThat(testDatasetResponse3, is(equalTo(testDataset3))); + } + + private static String loadTestResource(String resourceName) { + URL url = GsonAPIResponseParser.class.getResource(resourceName); + try { + Path path = Paths.get(url.toURI()); + return new String(Files.readAllBytes(path), StandardCharsets.UTF_8); + } catch (Exception e) { + throw new RuntimeException("Failed to load test data", e); + } + } +} diff --git a/src/test/java/io/github/jpmorganchase/fusion/serializing/GsonAPIRequestSerializerDatasetTest.java b/src/test/java/io/github/jpmorganchase/fusion/serializing/GsonAPIRequestSerializerDatasetTest.java index 748e26a..48da0e4 100644 --- a/src/test/java/io/github/jpmorganchase/fusion/serializing/GsonAPIRequestSerializerDatasetTest.java +++ b/src/test/java/io/github/jpmorganchase/fusion/serializing/GsonAPIRequestSerializerDatasetTest.java @@ -7,6 +7,7 @@ import io.github.jpmorganchase.fusion.api.APIManager; import io.github.jpmorganchase.fusion.model.Dataset; +import io.github.jpmorganchase.fusion.model.Report; import java.net.URL; import java.nio.charset.StandardCharsets; import java.nio.file.Files; @@ -43,6 +44,8 @@ public void testDatasetSerializesCorrectly() { .varArg("isRestricted", Boolean.FALSE) .varArg("isRawData", Boolean.FALSE) .varArg("hasSample", Boolean.FALSE) + .type("Report") + .report(Report.builder().tier("Tier 1").build()) .apiManager(Mockito.mock(APIManager.class)) .rootUrl("http://foo/bar") .catalogIdentifier("foobar") diff --git a/src/test/resources/__files/dataset/dataset-SD0002-create-request.json b/src/test/resources/__files/dataset/dataset-SD0002-create-request.json index 7200181..56629f1 100644 --- a/src/test/resources/__files/dataset/dataset-SD0002-create-request.json +++ b/src/test/resources/__files/dataset/dataset-SD0002-create-request.json @@ -1 +1,34 @@ -{"description":"Sample dataset description 2","@id":"SD0002/","title":"Sample Dataset 2 | North America","frequency":"Daily","identifier":"SD0002","subCategory":["Subcategory 2"],"isRawData":false,"isInternalOnlyDataset":false,"language":"English","source":["Source System 2"],"coverageEndDate":"2023-03-09","maintainer":"Maintainer 2","coverageStartDate":"2022-02-06","createdDate":"2022-02-06","isThirdPartyData":false,"modifiedDate":"2023-03-09","publisher":"Publisher 2","tag":["Tag2"],"category":["Category 2"],"region":["North America"],"hasSample":false,"isRestricted":false} \ No newline at end of file +{ + "description": "Sample dataset description 2", + "@id": "SD0002/", + "title": "Sample Dataset 2 | North America", + "frequency": "Daily", + "identifier": "SD0002", + "subCategory": [ + "Subcategory 2" + ], + "isRawData": false, + "isInternalOnlyDataset": false, + "language": "English", + "source": [ + "Source System 2" + ], + "coverageEndDate": "2023-03-09", + "maintainer": "Maintainer 2", + "coverageStartDate": "2022-02-06", + "createdDate": "2022-02-06", + "isThirdPartyData": false, + "modifiedDate": "2023-03-09", + "publisher": "Publisher 2", + "tag": [ + "Tag2" + ], + "category": [ + "Category 2" + ], + "region": [ + "North America" + ], + "hasSample": false, + "isRestricted": false +} \ No newline at end of file diff --git a/src/test/resources/__files/dataset/dataset-report-SR0001-create-request.json b/src/test/resources/__files/dataset/dataset-report-SR0001-create-request.json new file mode 100644 index 0000000..9ffb9e8 --- /dev/null +++ b/src/test/resources/__files/dataset/dataset-report-SR0001-create-request.json @@ -0,0 +1,38 @@ +{ + "description": "Sample report description 1", + "@id": "SR0001/", + "title": "Sample Report 1 | North America", + "frequency": "Daily", + "identifier": "SR0001", + "subCategory": [ + "Subcategory 1" + ], + "isRawData": false, + "isInternalOnlyDataset": false, + "language": "English", + "source": [ + "Source System 1" + ], + "coverageEndDate": "2023-03-09", + "maintainer": "Maintainer 1", + "coverageStartDate": "2022-02-06", + "createdDate": "2022-02-06", + "isThirdPartyData": false, + "modifiedDate": "2023-03-09", + "publisher": "Publisher 1", + "tag": [ + "Tag1" + ], + "category": [ + "Category 1" + ], + "region": [ + "North America" + ], + "hasSample": false, + "isRestricted": false, + "type": "Report", + "report": { + "tier": "Tier 1" + } +} \ No newline at end of file diff --git a/src/test/resources/io/github/jpmorganchase/fusion/parsing/multiple-dataset-report-response.json b/src/test/resources/io/github/jpmorganchase/fusion/parsing/multiple-dataset-report-response.json new file mode 100644 index 0000000..434405e --- /dev/null +++ b/src/test/resources/io/github/jpmorganchase/fusion/parsing/multiple-dataset-report-response.json @@ -0,0 +1,126 @@ +{ + "@context": { + "@vocab": "https://www.w3.org/ns/dcat3.jsonld", + "@base": "https://fusion-api.jpmorgan.com/fusion/v1/catalogs/test/" + }, + "@id": "datasets/", + "description": "A list of available datasets (for access or download in one or more formats)", + "identifier": "datasets", + "resources": [ + { + "category": [ + "Category 1" + ], + "createdDate": "2022-02-05", + "coverageStartDate": "2022-02-05", + "coverageEndDate": "2023-03-08", + "description": "Sample report description 1", + "frequency": "Daily", + "identifier": "SR0001", + "isThirdPartyData": false, + "isInternalOnlyDataset": false, + "language": "English", + "maintainer": "Maintainer 1", + "modifiedDate": "2023-03-08", + "publisher": "Publisher 1", + "region": [ + "North America" + ], + "source": [ + "Source System 1" + ], + "subCategory": [ + "Subcategory 1" + ], + "title": "Sample Report 1 | North America", + "tag": [ + "Tag1" + ], + "isRestricted": false, + "isRawData": false, + "hasSample": false, + "@id": "SR0001/", + "type": "Report", + "report": { + "tier": "Tier 1" + } + }, + { + "category": [ + "Category 2" + ], + "createdDate": "2022-02-06", + "coverageStartDate": "2022-02-06", + "coverageEndDate": "2023-03-09", + "description": "Sample report description 2", + "frequency": "Daily", + "identifier": "SR0002", + "isThirdPartyData": false, + "isInternalOnlyDataset": false, + "language": "English", + "maintainer": "Maintainer 2", + "modifiedDate": "2023-03-09", + "publisher": "Publisher 2", + "region": [ + "North America" + ], + "source": [ + "Source System 2" + ], + "subCategory": [ + "Subcategory 2" + ], + "title": "Sample Report 2 | North America", + "tag": [ + "Tag2" + ], + "isRestricted": false, + "isRawData": false, + "hasSample": false, + "@id": "SR0002/", + "type": "Report", + "report": { + "tier": "Tier 2" + } + }, + { + "category": [ + "Category 3" + ], + "createdDate": "2022-02-07", + "coverageStartDate": "2022-02-07", + "coverageEndDate": "2023-03-10", + "description": "Sample report description 3", + "frequency": "Daily", + "identifier": "SR0003", + "isThirdPartyData": false, + "isInternalOnlyDataset": false, + "language": "English", + "maintainer": "Maintainer 3", + "modifiedDate": "2023-03-10", + "publisher": "Publisher 3", + "region": [ + "North America" + ], + "source": [ + "Source System 3" + ], + "subCategory": [ + "Subcategory 3" + ], + "title": "Sample Report 3 | North America", + "tag": [ + "Tag3" + ], + "isRestricted": false, + "isRawData": false, + "hasSample": false, + "@id": "SR0003/", + "type": "Report", + "report": { + "tier": "Tier 3" + } + } + ], + "title": "Datasets" +} \ No newline at end of file diff --git a/src/test/resources/io/github/jpmorganchase/fusion/parsing/single-dataset-report-response.json b/src/test/resources/io/github/jpmorganchase/fusion/parsing/single-dataset-report-response.json new file mode 100644 index 0000000..4b16b72 --- /dev/null +++ b/src/test/resources/io/github/jpmorganchase/fusion/parsing/single-dataset-report-response.json @@ -0,0 +1,50 @@ +{ + "@context": { + "@vocab": "https://www.w3.org/ns/dcat3.jsonld", + "@base": "https://fusion-api.jpmorgan.com/fusion/v1/catalogs/test/" + }, + "@id": "datasets/", + "description": "A list of available datasets (for access or download in one or more formats)", + "identifier": "datasets", + "resources": [ + { + "category": [ + "Category 1" + ], + "createdDate": "2022-02-05", + "coverageStartDate": "2022-02-05", + "coverageEndDate": "2023-03-08", + "description": "Sample report description 1", + "frequency": "Daily", + "identifier": "SR0001", + "isThirdPartyData": false, + "isInternalOnlyDataset": false, + "language": "English", + "maintainer": "Maintainer 1", + "modifiedDate": "2023-03-08", + "publisher": "Publisher 1", + "region": [ + "North America" + ], + "source": [ + "Source System 1" + ], + "subCategory": [ + "Subcategory 1" + ], + "title": "Sample Report 1 | North America", + "tag": [ + "Tag1" + ], + "isRestricted": false, + "isRawData": false, + "hasSample": false, + "@id": "SR0001/", + "type": "Report", + "report": { + "tier": "Tier 1" + } + } + ], + "title": "Datasets" +} \ No newline at end of file diff --git a/src/test/resources/io/github/jpmorganchase/fusion/serializing/dataset-request.json b/src/test/resources/io/github/jpmorganchase/fusion/serializing/dataset-request.json index 19004fa..fce914d 100644 --- a/src/test/resources/io/github/jpmorganchase/fusion/serializing/dataset-request.json +++ b/src/test/resources/io/github/jpmorganchase/fusion/serializing/dataset-request.json @@ -1 +1 @@ -{"description":"Sample dataset description 1","@id":"SD0001/","title":"Sample Dataset 1 | North America","frequency":"Daily","identifier":"SD0001","subCategory":["Subcategory 1"],"isRawData":false,"isInternalOnlyDataset":false,"language":"English","source":["Source System 1"],"coverageEndDate":"2023-03-08","maintainer":"Maintainer 1","coverageStartDate":"2022-02-05","createdDate":"2022-02-05","isThirdPartyData":false,"modifiedDate":"2023-03-08","publisher":"Publisher 1","tag":["Tag1"],"category":["Category 1"],"region":["North America"],"hasSample":false,"isRestricted":false} \ No newline at end of file +{"description":"Sample dataset description 1","@id":"SD0001/","title":"Sample Dataset 1 | North America","frequency":"Daily","identifier":"SD0001","type":"Report","report":{"tier":"Tier 1"},"subCategory":["Subcategory 1"],"isRawData":false,"isInternalOnlyDataset":false,"language":"English","source":["Source System 1"],"coverageEndDate":"2023-03-08","maintainer":"Maintainer 1","coverageStartDate":"2022-02-05","createdDate":"2022-02-05","isThirdPartyData":false,"modifiedDate":"2023-03-08","publisher":"Publisher 1","tag":["Tag1"],"category":["Category 1"],"region":["North America"],"hasSample":false,"isRestricted":false} \ No newline at end of file