Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
2c61857
Added DD Spreadsheet, Command Line option, and parser
darnjo Apr 13, 2020
4baaa8e
Initial check-in of DD generator and generated .feature files for 1.7…
darnjo Apr 15, 2020
c8da669
Added file naming and header info to the generated files, regenerated…
darnjo Apr 15, 2020
57f76cc
Changed generator templates
darnjo Apr 15, 2020
b45cf5f
Added support for additional DD resources and updated generator
darnjo Apr 16, 2020
694de55
Added new Commander build
darnjo Apr 16, 2020
ec34cd4
Merge branch 'master' into dd-test-generator
darnjo Apr 16, 2020
6cd04b0
Changed templates
darnjo Apr 18, 2020
66919cd
Refactored generator and changed DD templates
darnjo Apr 19, 2020
23f165b
Refactored WorksheetProcessor into base class
darnjo Apr 20, 2020
9f6648e
Added EDMX Generator
darnjo Apr 20, 2020
8416eee
Added better EDMX generation
darnjo Apr 20, 2020
86a735f
Intermediate check-in for EDMX processor
darnjo Apr 20, 2020
a211983
Merge master
darnjo May 9, 2020
0a1e6e2
Added dependency injection of test containers, changed from Java8 Lam…
darnjo May 10, 2020
290968c
Added skip logic and resource tags to generators
darnjo May 10, 2020
dd3bb8e
Generated new tests and improved skipped test messaging
darnjo May 10, 2020
58d0f1b
Corrected Test Template
darnjo May 10, 2020
44f2858
Finished first round of DD tests: field presence
darnjo May 10, 2020
05552ff
Expanded field map to include all resources rather than just the one …
darnjo May 13, 2020
d0467ce
DD test generator intermediate check-in
darnjo May 29, 2020
8ace984
EDMX Generator build enumerations generator
darnjo Jun 2, 2020
66e1fc8
EDMX generator can generate valid EDMX files. See: /src/main/resources
darnjo Jun 2, 2020
5a7daf5
Re-generated EDMX and BDD Tests from sanitized spreadsheet
darnjo Jun 10, 2020
6c69d9d
Issue #30 - Convert Web API Server tests to Core, and remove Date Par…
darnjo Jun 12, 2020
9633ab8
Merge Issue #30 Code
darnjo Jun 12, 2020
f19c6b2
Updated DD BDD test format
darnjo Jun 12, 2020
bfed8c5
Wrapped up test templates and generated new BDD acceptance tests
darnjo Jun 16, 2020
a80aec0
Cleaned up EDMX generation
darnjo Jun 16, 2020
2892751
Wrapped up first round of EDMX generation using Key (but not KeyNumer…
darnjo Jun 16, 2020
3ad6748
Updated EDMX generator with Single and Multiple Enumerations
darnjo Jun 17, 2020
810212d
Updated reference XSLX, generated new EDMX and BDD Tests
darnjo Jun 18, 2020
8384dc1
Added updated BDD generators with improved tags and addedcomments wit…
darnjo Jun 19, 2020
c169029
Added generation of comments for both Standard Fields and Standard En…
darnjo Jun 23, 2020
e98a04b
Updated reference EDMX and BDD test generators to use Collections of …
darnjo Jun 24, 2020
ee20f18
Added the ability to generate Standard Relationships into NavigationP…
darnjo Jul 16, 2020
c96f63b
Added updated reference EDMX document
darnjo Jul 16, 2020
03e7499
Updated Standard Relationships and re-generated EDMX and Open API def…
darnjo Jul 23, 2020
f3eaa37
Removed Partner Property Definitions and extra info logging
darnjo Jul 23, 2020
d3ea40d
Added Data Dictionary tests for Collections, TODO: README and non-col…
darnjo Sep 30, 2020
15f62fe
Issue #37 - added support for multiple enumerations that use IsFlags=…
darnjo Sep 30, 2020
571916a
Issue #37 - added better reporting
darnjo Sep 30, 2020
8e775ed
Issue #37 - Allow Edm.Double in addition to Edm.Decimal as per Cert g…
darnjo Oct 2, 2020
8721f1d
Issue #37 - added Gradle task to generate minimal 'pretty' reports.
darnjo Oct 10, 2020
fad4606
Issue #37 - added updated .JAR and updated build.gradle
darnjo Oct 10, 2020
989a94c
Issue #37 - Added additional error information to test results
darnjo Oct 11, 2020
fa82e23
Issue #37 - Added BDD generation for Lookups and stubs for testing. P…
darnjo Oct 13, 2020
26dda91
Issue #37 - committing new BDD tests
darnjo Oct 13, 2020
6ba5643
Issue #37 - Added enumeration MAY and MUST support
darnjo Oct 13, 2020
c9eac05
Issue #37 - Added field-level synonyms checking and fixed invalid syn…
darnjo Oct 14, 2020
a219f94
Issue #37 - added test to check that closed enumerations only have st…
darnjo Oct 14, 2020
3ed16a8
Issue #37 - added better logging, including more info about standard …
darnjo Oct 15, 2020
7db4166
Issue #37 - further improvement of OData type error messages
darnjo Oct 15, 2020
b679754
Issue #37 - Added fuzzy matching of enumerations using Levenshtein di…
darnjo Oct 15, 2020
58485cc
Issue #37 - Improved Edit Distance behavior, added IgnoredItem and ig…
darnjo Oct 23, 2020
e3ce8e2
Issue #37 - Added better error messages, --strict=true for strict tes…
darnjo Nov 10, 2020
52babfe
Issue #37 - Added auto-generating output directory as well as a gener…
darnjo Nov 11, 2020
6fa1a6d
Issue #37 - Added better error message formatting and handling, and h…
darnjo Nov 11, 2020
384eb01
Issue #37 - updated README and fixed some of the existing Web API Com…
darnjo Nov 16, 2020
fc2556d
Update README.md
darnjo Nov 16, 2020
a59f001
Issue #37 - Cleaned up some items in the README and message output
darnjo Nov 16, 2020
9d6fc53
Issue #37 - Fixed some merge conflicts for PR
darnjo Nov 16, 2020
699128d
Update README.md
darnjo Nov 16, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .run/Commander Acceptance Tests.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Commander Acceptance Tests" type="CucumberJavaRunConfigurationType" factoryName="Cucumber java">
<option name="CUCUMBER_CORE_VERSION" value="4.5" />
<option name="FILE_PATH" value="$PROJECT_DIR$/src/test/java/org/reso/commander/test/features" />
<option name="GLUE" value="org.reso.commander.test.stepdefs" />
<option name="MAIN_CLASS_NAME" value="io.cucumber.core.cli.Main" />
<module name="web-api-commander.test" />
<option name="PROGRAM_PARAMETERS" value=" --plugin org.jetbrains.plugins.cucumber.java.run.CucumberJvm4SMFormatter --strict" />
<option name="SUGGESTED_NAME" value="Feature: web-api-server-1.0.2" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="io.cucumber.core.cli.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
<option name="Gradle.BeforeRunTask" enabled="true" tasks="testDataDictionaryReferenceMetadata_1_7" externalProjectPath="$PROJECT_DIR$" vmOptions="" scriptParameters="" />
</method>
</configuration>
</component>
21 changes: 21 additions & 0 deletions .run/Feature_ DataDictionary 1.7 - Local Metadata.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Feature: DataDictionary 1.7 - Local Metadata" type="CucumberJavaRunConfigurationType" factoryName="Cucumber java">
<option name="CUCUMBER_CORE_VERSION" value="4.5" />
<option name="FILE_PATH" value="$PROJECT_DIR$/src/main/java/org/reso/certification/features/data-dictionary/v1-7-0/" />
<option name="GLUE" value="org.reso.certification.stepdefs" />
<option name="MAIN_CLASS_NAME" value="io.cucumber.core.cli.Main" />
<module name="web-api-commander.main" />
<option name="PROGRAM_PARAMETERS" value=" --plugin org.jetbrains.plugins.cucumber.java.run.CucumberJvm4SMFormatter --strict" />
<option name="SUGGESTED_NAME" value="Feature: web-api-server-1.0.2" />
<option name="VM_PARAMETERS" value="-DpathToMetadata=$PROJECT_DIR$/src/main/resources/RESODataDictionary-1.7.edmx -Dcucumber.filter.tags=&quot;&quot;" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="io.cucumber.core.cli.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
</component>
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM gradle:jdk8 AS builder
FROM gradle:6.2.1-jdk8 AS builder

WORKDIR /home/gradle/project

Expand Down
680 changes: 329 additions & 351 deletions README.md

Large diffs are not rendered by default.

5,155 changes: 0 additions & 5,155 deletions V4-CSDL-to-OpenAPI.xslt

This file was deleted.

125 changes: 121 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import java.text.DateFormat
import java.text.SimpleDateFormat

plugins {
// Apply the java plugin to add support for Java
id 'java'
Expand All @@ -20,6 +23,7 @@ repositories {

dependencies {
compile 'com.google.guava:guava:28.2-jre'
compile 'com.google.inject:guice:4.0'

compile 'commons-cli:commons-cli:1.4'

Expand All @@ -32,16 +36,25 @@ dependencies {
compile 'org.apache.olingo:odata-commons-core:4.7.1'
compile 'org.apache.olingo:odata-client-core:4.7.1'

compile 'org.apache.poi:poi:3.9'
compile 'org.apache.poi:poi-ooxml:3.9'


compile 'io.rest-assured:rest-assured:4.2.0'
compile 'io.rest-assured:json-path:4.2.0'
compile 'io.rest-assured:json-schema-validator:4.2.0'

compile 'io.cucumber:cucumber-java8:5.4.0'
compile 'io.cucumber:cucumber-java:5.4.0'
compile 'io.cucumber:cucumber-junit:5.4.0'
compile 'io.cucumber:cucumber-guice:5.4.0'
compile 'io.cucumber:cucumber-core:5.4.0'

compile 'net.masterthought:cucumber-reporting:5.1.1'

compile 'com.networknt:json-schema-validator:1.0.35'
compile 'com.google.code.gson:gson:2.8.6'
compile 'org.apache.commons:commons-text:1.9'

implementation 'org.mockito:mockito-core:3.3.3'
}
Expand Down Expand Up @@ -74,6 +87,11 @@ tasks.withType(JavaCompile) {

// task for Web API Server 1.0.2 Core Testing
task testWebApiServer_1_0_2_Core() {
group = 'RESO Certification'
description = 'Runs Web API Core 1.0.2 Automated Acceptance Tests.' +
'\n Example: ' +
'\n $ ./gradlew testWebApiServer_1_0_2_Core -DpathToRESOScript=/path/to/web-api-core-1.0.2.resoscript -DshowResponses=true\n'

dependsOn jar
doLast {
javaexec {
Expand All @@ -96,13 +114,112 @@ task testWebApiServer_1_0_2_Core() {
}
}

//used for internal Commander testing
test {
dependsOn assemble, compileTestJava
String pathToMetadata = null,
pathToRESOScript = null,
certFileName = null,
certOutputDir = null,
certJsonPath = null

// task for Data Dictionary 1.7
task testDataDictionary_1_7() {
group = 'RESO Certification'
description = 'Runs Data Dictionary 1.7 Automated Acceptance Tests and generates a "raw" report.' +
'\n RESOScript Example:' +
'\n ./gradlew testDataDictionary_1_7 -DpathToRESOScript=/path/to/dd17.resoscript -DshowResponses=true -Dcucumber.filter.tags=""' +
'\n Metadata File Example:' +
'\n ./gradlew testDataDictionary_1_7 -DpathToMetadata=/path/to/RESODataDictionary-1.7.edmx -Dcucumber.filter.tags=""' +
'\n To enable strict mode, pass -Dstrict=true. All applicants MUST pass strict mode tests to be certified.\n'

dependsOn jar
doLast {
javaexec {
main = 'io.cucumber.core.cli.Main'
classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
systemProperties = System.getProperties()

pathToMetadata = System.getProperty('pathToMetadata', null)
pathToRESOScript = System.getProperty('pathToRESOScript', null)

if (pathToMetadata != null) {
certFileName = pathToMetadata
.substring(Math.max(pathToMetadata.lastIndexOf(File.separator)+1, 0), pathToMetadata.lastIndexOf('.'))
} else if (pathToRESOScript != null) {
certFileName = pathToRESOScript
.substring(Math.max(pathToRESOScript.lastIndexOf(File.separator)+1, 0), pathToRESOScript.lastIndexOf('.'))
}

DateFormat df = new SimpleDateFormat("yyyyMMddHHMMssS")
certOutputDir = 'DD1.7-results' + (certFileName != null ? '-' + certFileName : '') + '-' + df.format(new Date())
certJsonPath = certOutputDir + '/data-dictionary-1.7.json'

args = [
'--strict',
'--plugin',
'pretty',
'--plugin',
'json:' + certJsonPath,
'--plugin',
'html:' + certOutputDir + '/data-dictionary-1.7.html',
'--glue',
'org.reso.certification.stepdefs#DataDictionary',
'src/main/java/org/reso/certification/features/data-dictionary/v1-7-0',
'--tags',
(systemProperties.get('cucumber.filter.tags', '').toString().trim().length() > 0
? systemProperties.get('cucumber.filter.tags') : '')
]
}
}
}

task generateCertificationReport_DD_1_7() {
group = 'RESO Certification'
description = 'Runs Data Dictionary 1.7 tests and creates a certification report' +
'\n RESOScript Example:' +
'\n ./gradlew generateCertificationReport_DD_1_7 -DpathToRESOScript=/path/to/dd17.resoscript -Dminimal=true -Dstrict=true' +
'\n Metadata File Example:' +
'\n ./gradlew generateCertificationReport_DD_1_7 -DpathToMetadata=/path/to/RESODataDictionary-1.7.edmx -Dminimal=true -Dstrict=true' +
'\n To enable strict mode, pass -Dstrict=true. All applicants MUST pass strict mode tests to be certified.\n'

dependsOn testDataDictionary_1_7
doLast {
javaexec {
System.setProperty('pathToJsonResults', certJsonPath)
System.setProperty('reportDescription', 'RESO Data Dictionary 1.7 Certification Report')
systemProperties = System.getProperties()
classpath = sourceSets.main.runtimeClasspath
main = 'org.reso.certification.reporting.CertificationReportGenerator'
}
}
}

task testDataDictionaryReferenceMetadata_1_7() {
group = 'RESO Certification'
description = 'Runs Data Dictionary tests against reference metadata\n'

doLast {
javaexec {
main = "io.cucumber.core.cli.Main"
classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
System.setProperty('pathToMetadata', 'src/main/resources/RESODataDictionary-1.7.edmx')
systemProperties = System.getProperties()
args = [
'--strict',
'--plugin',
'pretty',
'--glue',
'org.reso.certification.stepdefs#DataDictionary',
'src/main/java/org/reso/certification/features/data-dictionary/v1-7-0'
]
}
}
}

//used for internal Commander Web API acceptance testing
test {
dependsOn assemble, compileTestJava, testDataDictionaryReferenceMetadata_1_7
doLast {
javaexec {
main = "io.cucumber.core.cli.Main"
classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
args = ['--strict',
'--plugin',
Expand All @@ -113,4 +230,4 @@ test {
]
}
}
}
}
Binary file modified build/libs/web-api-commander.jar
Binary file not shown.
3 changes: 3 additions & 0 deletions odata-openapi/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
examples/*.zip
node_modules
temp
20 changes: 20 additions & 0 deletions odata-openapi/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<div>
<h2>Repository Contributions, Participation, and Public Access</h2>

<p><b>Who may Contribute?</b> Contributors to <a href="https://github.com/oasis-tcs/odata-openapi/">this repository</a> are expected to be <a href="https://www.oasis-open.org/policies-guidelines/tc-process#dMember">Members</a> of the
<a href="https://www.oasis-open.org/committees/odata/">OASIS Open Data Protocol (OData) Technical Committee</a>, for any
substantive contributions. Anyone wishing to <a href="https://www.oasis-open.org/org/faq#committee-participation">participate</a>
in the TC's technical activity is invited to <a href="https://www.oasis-open.org/committees/join">join</a> as a TC Member.
<i>Member</i> in this context means any TC role or office other than OASIS TC Observer, per
<a href="https://www.oasis-open.org/policies-guidelines/tc-process#membership">TC Process</a>
(Member, Voting Member, Persistent Non-Voting Member; Chair, Secretary...)</p>

<p>Persons who are not TC members are invited to open issues and provide comments using this repository's <a href="https://github.com/oasis-tcs/odata-openapi/issues/new">GitHub Issues</a> tracking facility or using the
TC's <a href="https://www.oasis-open.org/committees/comments/index.php?wg_abbrev=odata">comment list</a>. All such content created in GitHub Issues and/or posted to the TC's <a href="https://lists.oasis-open.org/archives/odata/">archived comment list</a> is governed by the terms of the <a href="https://www.oasis-open.org/policies-guidelines/ipr#appendixa">OASIS Feedback License</a>.</p>

<p><b>Use of Contributions</b>. As with all OASIS Technical Committee assets (TC <a href="https://wiki.oasis-open.org/">Wiki</a>, TC <a href="https://issues.oasis-open.org/secure/Dashboard.jspa">Issues Tracker</a>, TC <a href="https://lists.oasis-open.org/archives/">General Discussion List archives</a>, TC <a href="http://docs.oasis-open.org/">OASIS Library</a> assets), content placed into this GitHub repository is visible and publicly accessible. Subject to applicable <a href="https://github.com/oasis-tcs/odata-openapi/blob/master/LICENSE.md">licensing</a> rules, the repository content may be re-used freely, including the creation and publication of derivative works.</p>

<p><b>Cloning and forking</b>. May users clone and fork this repository? Yes. Just as versioned content maintained in any OASIS TC's <a href="https://tools.oasis-open.org/version-control/browse/">SVN/Subversion repository</a> may be checked out to a remote SVN repository and used by anyone, this GitHub repository may be forked or cloned for use by any party. Compare, <i>e.g.</i>, <tt>svn checkout https://tools.oasis-open.org/version-control/svn/dita/trunk/doctypes/ dita-doctypes</tt>.</p>

<p>Please see the <a href="https://github.com/oasis-tcs/odata-openapi/blob/master/README.md">README</a> for general description of this repository, and the <a href="https://github.com/oasis-tcs/odata-openapi/blob/master/LICENSE.md">LICENSE</a> file for licensing.</p>
</div>
7 changes: 7 additions & 0 deletions odata-openapi/LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<div>
<h2>License Terms</h2>

<p>Content in this GitHub code repository has been <a href="https://www.oasis-open.org/policies-guidelines/ipr#def-contribution">contributed</a> by OASIS TC Members, and is governed by the OASIS policies, including the <a href="https://www.oasis-open.org/policies-guidelines/ipr">Intellectual Property Rights (IPR) Policy</a>, the <a href="https://www.oasis-open.org/policies-guidelines/tc-process">Technical Committee (TC) Process</a>, <a href="https://www.oasis-open.org/policies-guidelines/bylaws">Bylaws</a>, and the Technical Committee's choice of <a href="https://www.oasis-open.org/policies-guidelines/ipr#def-ipr-mode">IPR Mode</a> (<i>viz</i>, <a href="https://www.oasis-open.org/policies-guidelines/ipr#RF-on-RAND-Mode">RF on RAND Mode</a>), including any applicable <a href="https://www.oasis-open.org/committees/odata/ipr.php">declarations</a>. Feedback from non-TC members, if any, is governed by the terms of the <a href="https://www.oasis-open.org/policies-guidelines/ipr#appendixa">OASIS Feedback License</a>.</p>

<p>Description of this repository is presented in the <a href="https://github.com/oasis-tcs/odata-openapi/blob/master/README.md">README</a> file, and guidelines for contribution/participation are given in the <a href="https://github.com/oasis-tcs/odata-openapi/blob/master/CONTRIBUTING.md">CONTRIBUTING</a> file.</p>
</div>
54 changes: 54 additions & 0 deletions odata-openapi/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<div>
<h2>README</h2>

<p>Members of the <a href="https://www.oasis-open.org/committees/odata/">OASIS Open Data Protocol (OData) Technical Committee</a> create and manage technical content in this TC GitHub repository ( <a href="https://github.com/oasis-tcs/odata-openapi">https://github.com/oasis-tcs/odata-openapi</a> ) as part of the TC's chartered work (<i>i.e.</i>, the program of work and deliverables described in its <a href="https://www.oasis-open.org/committees/odata/charter.php">charter</a>).</p>

<p>OASIS TC GitHub repositories, as described in <a href="https://www.oasis-open.org/resources/tcadmin/github-repositories-for-oasis-tc-members-chartered-work">GitHub Repositories for OASIS TC Members' Chartered Work</a>, are governed by the OASIS <a href="https://www.oasis-open.org/policies-guidelines/tc-process">TC Process</a>, <a href="https://www.oasis-open.org/policies-guidelines/ipr">IPR Policy</a>, and other policies, similar to TC Wikis, TC JIRA issues tracking instances, TC SVN/Subversion repositories, etc. While they make use of public GitHub repositories, these TC GitHub repositories are distinct from <a href="https://www.oasis-open.org/resources/open-repositories">OASIS Open Repositories</a>, which are used for development of open source <a href="https://www.oasis-open.org/resources/open-repositories/licenses">licensed</a> content.</p>
</div>

<div>
<h3>Description</h3>

<p>The purpose of this repository is to support development of tools for producing <a href="https://github.com/OAI/OpenAPI-Specification">OpenAPI</a> descriptions for OData services.</p>
<p>Planned work items include:
<ul>
<li>convert OData CSDL JSON or OData CSDL XML to OpenAPI JSON</li>
<li>example XML files</li>
<li>example openapi.json files</li>
<li>example files for the live odata.org services</li>
</ul></p>

</div>

<div>
<h3>Contributions</h3>
<p>As stated in this repository's <a href="https://github.com/oasis-tcs/odata-openapi/blob/master/CONTRIBUTING.md">CONTRIBUTING file</a>, contributors to this repository are expected to be Members of the OASIS OData TC, for any substantive change requests. Anyone wishing to contribute to this GitHub project and <a href="https://www.oasis-open.org/join/participation-instructions">participate</a> in the TC's technical activity is invited to join as an OASIS TC Member. Public feedback is also accepted, subject to the terms of the <a href="https://www.oasis-open.org/policies-guidelines/ipr#appendixa">OASIS Feedback License</a>.</p>
</div>

<div>
<h3>Licensing</h3>
<p>Please see the <a href="https://github.com/oasis-tcs/odata-openapi/blob/master/LICENSE.md">LICENSE</a> file for description of the license terms and OASIS policies applicable to the TC's work in this GitHub project. Content in this repository is intended to be part of the OData TC's permanent record of activity, visible and freely available for all to use, subject to applicable OASIS policies, as presented in the repository <a href="https://github.com/oasis-tcs/odata-openapi/blob/master/LICENSE.md">LICENSE</a> file.</p>
</div>


<h3>Further Description of this Repository</h3>

The OData TC has published the [OData to OpenAPI Mapping Version 1.0](http://docs.oasis-open.org/odata/odata-openapi/v1.0/odata-openapi-v1.0.html), a recommendation on how to create OpenAPI descriptions for OData services. This project contains two proof-of-concept implementations of that mapping, [one using JavaScript](lib), and [one using XSLT](tools).

The [`examples` folder](examples) contains [OpenAPI 3.0.2](https://github.com/OAI/OpenAPI-Specification) descriptions that have been created from the XML `$metadata` documents of live and example OData services with these proof-of-concept implementations.

The entity-relationship diagrams visualizing the resource models of each service are generated on-the-fly with [yUML](http://yuml.me/).

OpenAPI descriptions for live example OData services at [www.odata.org](http://www.odata.org/)
- [TripPin (read/write)](http://petstore.swagger.io/?url=https://raw.githubusercontent.com/oasis-tcs/odata-openapi/master/examples/TripPin.openapi3.json)
- [Simple read/write service](http://petstore.swagger.io/?url=https://raw.githubusercontent.com/oasis-tcs/odata-openapi/master/examples/example.openapi3.json)
- [Northwind (read)](http://petstore.swagger.io/?url=https://raw.githubusercontent.com/oasis-tcs/odata-openapi/master/examples/Northwind.openapi3.json)

OpenAPI descriptions for OData services that reference each other (cross-service references)
- [People](http://petstore.swagger.io/?url=https://raw.githubusercontent.com/oasis-tcs/odata-openapi/master/examples/People.openapi3.json)
- [Products](http://petstore.swagger.io/?url=https://raw.githubusercontent.com/oasis-tcs/odata-openapi/master/examples/Products.openapi3.json)

<div>
<h3>Contact</h3>
<p>Please send questions or comments about <a href="https://www.oasis-open.org/resources/tcadmin/github-repositories-for-oasis-tc-members-chartered-work">OASIS TC GitHub repositories</a> to the OASIS <a href="mailto:[email protected]">TC Administrator</a>. For questions about content in this repository, please contact the TC Chair or Co-Chairs as listed on the the OData TC's <a href="https://www.oasis-open.org/committees/odata/">home page</a>.</p>
</div>
Loading