Comments (5)
Hi Sam,
No, it doesn’t. We assumed that only OData-aware clients would use the service document and metadata document, and these clients wouldn’t be interested in the OpenAPI document as it contains less information than $metadata.
Do you have situations where OpenAPI clients would be interested in the service or metadata document?
Thanks in advance
Ralf
from odata-openapi.
Hi @ralfhandl, in our use case, we publish the API's on Azure API Management, which will refuse any operation that is not currently defined on the interface. If we try to utilize any of the api's on a SAPUI5/UI5 frontend, those could require the $metadata operation, as the frontend could utilize it on startup.
from odata-openapi.
refuse any operation that is not currently defined on the interface
Well, then you've got a problem: the OpenAPI files are intentionally incomplete and only show the most prominent paths, they don't attempt to show all possible paths - given that OData's path syntax is recursive and based on the service's resource model, showing all possible paths is unreasonable.
The containment
example shows a potentially endless recursion, and you can reach the contained folders only via their - potentially unlimited - chain of parent folders:
odata-openapi/examples/containment.xml
Lines 98 to 105 in 15220b9
The generated OpenAPI file stops after five levels:
odata-openapi/examples/containment.openapi3.json
Line 4704 in 15220b9
Would Azure API Management allow to go deeper because paths for level 15 start with a documented prefix, or would it prevent accessing anything below level 5?
from odata-openapi.
Yep, it's a current a limitation from Azure API Management in general, but so far we haven't had to go deeper than a few levels.
from odata-openapi.
Recursion - API Management doesn't support definitions defined recursively (for example, schemas referring to themselves).
So this will be problematic:
odata-openapi/examples/containment.openapi3.json
Lines 4894 to 4910 in 15220b9
Seems like you will have to design your services carefully to match the limitations of your API Management solution, and you'll have to tweak the OpenAPI files or fork this generator to suit its specific needs.
from odata-openapi.
Related Issues (20)
- Specific OData XML file cannot be converted, only .tmp file is created HOT 2
- Error: spawnSync java ENOENT HOT 3
- Unexpected Token Error HOT 3
- Edm.Int64 PrimitiveType translated to anyOf["string", "integer"] HOT 2
- Support for /$count operation HOT 4
- Openapi specification only documents DELETE and PATCH for single entity URLs HOT 6
- SAP R3 FunctionImport: Documentation Tag in Parameter fails the generation HOT 4
- Property sap:label is not handled HOT 2
- <Key> in Schema creates errors HOT 1
- Empty output while converting `https://graph.microsoft.com/beta/$metadata` HOT 6
- FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory HOT 5
- More than two annotation target path segments HOT 5
- Unexpected node HOT 4
- Error in Conversion .edmx to OpenAPI format HOT 1
- documentation item HOT 2
- Could it be possible to generate for a part of the odataModel ? HOT 31
- Support annotation Core.ComputedDefaultValue
- TypeError: model.element(...).find is not a function HOT 4
- Missing cli feature: Add $metadata operation and root HOT 4
- Covert XMl to open api failes HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from odata-openapi.