NAME
OpenAPI - A high-level implementation of the OpenAPI specification
DESCRIPTION
This module's functionality is entirely in potentiam, which means I've not written it yet.
The immediate purpose of it is to make sure there's something sensible in the top-level namespace on the CPAN itself.
PLAN
- Create a set of classes that represent the types that the specification lays out.
- Create a validator that will validate an OpenAPI schema against the OpenAPI specification.
- Create a validator that will validate a Perl data structure against a (valid) schema.
- Create a system to produce a schema or set of schemata in a manner agnostic to the URI schema, or lack thereof, on which the schema is served.
- Somehow understand the URIs in the document, especially with regards to the templated paths, such that the URI schema can be introspected, allowing for integration with the various frameworks.
- Understand hyperlinks within a third-party schema and denormalise, or lazily fetch referenced schemata as required.
- Conversely, have hyperlinks within a local schema that don't actually have URIs associated with them yet.
The idea is to be able to either parse or produce OpenAPI schemata and then validate documents against it. When the OpenAPI schema is parsed it should look the same as if it had been created locally, modulo lazy fetching of references. That means that when a parsed schema is rendered out to JSON, it should look the same as the original document.
Probably the sane way to do this would be to have the API object be a level above the schemata themselves, as a sort of collection object, holding sufficient information to reconstruct URIs absolutely, or resolve them relatively.