| Did you know ... | Search Documentation: |
| Pack logtalk -- logtalk-3.101.0/docs/apis/_sources/open_api_0.rst.txt |
.. index:: single: open_api .. _open_api/0:
.. rst-class:: right
object
open_api
OpenAPI 3.1.0 document derivation, parsing, generation, and validation built on top of the json and json_schema libraries.
| Availability:
| logtalk_load(open_api(loader))
| Author: Paulo Moura | Version: 1:0:1 | Date: 2026-06-26
| Compilation flags:
| static, context_switching_calls
| Imports:
| public :ref:`http_json_term_helpers <http_json_term_helpers/0>`
| Uses:
| :ref:`http_core <http_core/0>`
| :ref:`json <json/0>`
| :ref:`json_schema <json_schema/0>`
| :ref:`list <list/0>`
| :ref:`url(Representation) <url/1>`
| :ref:`user <user/0>`
| Remarks: | (none)
| Inherited public predicates: | (none)
.. contents:: :local: :backlinks: top
.. index:: document/2 .. _open_api/0::document/2:
document/2 ^^^^^^^^^^^^^^
Derives an OpenAPI 3.1.0 document in the repository-standard JSON term representation from an object implementing the open_api_provider_protocol protocol. When the provider also implements the application_protocol protocol, missing description and license info fields may be backfilled from application metadata and homepage/1 may be mapped to the top-level externalDocs object. Top-level security defaults declared by security/1 are emitted under the root security field. Reusable security schemes declared by security_scheme/2 are emitted under components.securitySchemes and referenced scheme names and OAuth flow scopes are validated against those declarations when locally available.
| Compilation flags:
| static
| Template:
| document(Provider,Document)
| Mode and number of proofs:
| document(+object_identifier,-compound) - one
.. index:: parse/2 .. _open_api/0::parse/2:
parse/2 ^^^^^^^^^^^
Parses an OpenAPI document from the given source (file(Path), stream(Stream), codes(List), chars(List), or atom(Atom)) into the JSON term representation used by the json library.
| Compilation flags:
| static
| Template:
| parse(Source,Document)
| Mode and number of proofs:
| parse(++compound,--term) - one_or_error
| Exceptions:
| Source is a variable:
| instantiation_error
| Source is neither a variable nor a valid JSON source term or does not contain parsable JSON by the implementation:
| domain_error(json_source,Source)
.. index:: generate/2 .. _open_api/0::generate/2:
generate/2 ^^^^^^^^^^^^^^
Generates the representation specified in the first argument (file(Path), stream(Stream), codes(List), chars(List), or atom(Atom)) for an OpenAPI document term using JSON serialization.
| Compilation flags:
| static
| Template:
| generate(Sink,Document)
| Mode and number of proofs:
| generate(+compound,++term) - one_or_error
| Exceptions:
| Sink is a variable:
| instantiation_error
| Sink is neither a variable nor a valid JSON sink term:
| domain_error(json_sink,Sink)
| A JSON version of Document cannot be generated by the implementation:
| domain_error(json_sink,Document)
.. index:: validate_document/1 .. _open_api/0::validate_document/1:
validate_document/1 ^^^^^^^^^^^^^^^^^^^^^^^
Succeeds if the given OpenAPI document term is valid according to the phase-1 OpenAPI validation schema.
| Compilation flags:
| static
| Template:
| validate_document(Document)
| Mode and number of proofs:
| validate_document(+term) - zero_or_one
.. index:: validate_document/2 .. _open_api/0::validate_document/2:
validate_document/2 ^^^^^^^^^^^^^^^^^^^^^^^
Validates an OpenAPI document term and returns a list of validation errors (empty list if valid).
| Compilation flags:
| static
| Template:
| validate_document(Document,Errors)
| Mode and number of proofs:
| validate_document(+term,--list) - one
.. index:: operation/3 .. _open_api/0::operation/3:
operation/3 ^^^^^^^^^^^^^^^
Resolves an operation descriptor exposed by a provider object using its operationId atom.
| Compilation flags:
| static
| Template:
| operation(Provider,OperationId,Operation)
| Mode and number of proofs:
| operation(+object_identifier,+atom,-compound) - one_or_error
| Exceptions:
| Provider does not expose the requested operationId:
| existence_error(open_api_operation,OperationId)
| Provider exposes duplicated operationId values:
| domain_error(open_api_operation_id,duplicate(Id))
.. index:: validate_request/3 .. _open_api/0::validate_request/3:
validate_request/3 ^^^^^^^^^^^^^^^^^^^^^^
Succeeds when the given normalized HTTP request term or object implementing the http_request_protocol protocol conforms to the provider operation descriptor identified by the given operationId.
| Compilation flags:
| static
| Template:
| validate_request(Provider,OperationId,Request)
| Mode and number of proofs:
| validate_request(+object_identifier,+atom,++term) - zero_or_one
.. index:: validate_request/4 .. _open_api/0::validate_request/4:
validate_request/4 ^^^^^^^^^^^^^^^^^^^^^^
Validates a normalized HTTP request term or an object implementing the http_request_protocol protocol against the provider operation descriptor identified by the given operationId and returns any contract errors.
| Compilation flags:
| static
| Template:
| validate_request(Provider,OperationId,Request,Errors)
| Mode and number of proofs:
| validate_request(+object_identifier,+atom,++term,--list) - one
.. index:: validate_http_request/3 .. _open_api/0::validate_http_request/3:
validate_http_request/3 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
Succeeds when an HTTP request wire source parsed by the http_core library conforms to the provider operation descriptor identified by the given operationId.
| Compilation flags:
| static
| Template:
| validate_http_request(Provider,OperationId,Source)
| Mode and number of proofs:
| validate_http_request(+object_identifier,+atom,++compound) - zero_or_one
.. index:: validate_http_request/4 .. _open_api/0::validate_http_request/4:
validate_http_request/4 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
Parses an HTTP request wire source using the http_core library and validates the resulting normalized request against the provider operation descriptor identified by the given operationId.
| Compilation flags:
| static
| Template:
| validate_http_request(Provider,OperationId,Source,Errors)
| Mode and number of proofs:
| validate_http_request(+object_identifier,+atom,++compound,--list) - one
.. index:: validate_response/3 .. _open_api/0::validate_response/3:
validate_response/3 ^^^^^^^^^^^^^^^^^^^^^^^
Succeeds when the given normalized HTTP response term or object implementing the http_response_protocol protocol conforms to the provider operation descriptor identified by the given operationId.
| Compilation flags:
| static
| Template:
| validate_response(Provider,OperationId,Response)
| Mode and number of proofs:
| validate_response(+object_identifier,+atom,++term) - zero_or_one
.. index:: validate_response/4 .. _open_api/0::validate_response/4:
validate_response/4 ^^^^^^^^^^^^^^^^^^^^^^^
Validates a normalized HTTP response term or an object implementing the http_response_protocol protocol against the provider operation descriptor identified by the given operationId and returns any contract errors.
| Compilation flags:
| static
| Template:
| validate_response(Provider,OperationId,Response,Errors)
| Mode and number of proofs:
| validate_response(+object_identifier,+atom,++term,--list) - one
.. index:: validate_http_response/3 .. _open_api/0::validate_http_response/3:
validate_http_response/3 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Succeeds when an HTTP response wire source parsed by the http_core library conforms to the provider operation descriptor identified by the given operationId.
| Compilation flags:
| static
| Template:
| validate_http_response(Provider,OperationId,Source)
| Mode and number of proofs:
| validate_http_response(+object_identifier,+atom,++compound) - zero_or_one
.. index:: validate_http_response/4 .. _open_api/0::validate_http_response/4:
validate_http_response/4 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Parses an HTTP response wire source using the http_core library and validates the resulting normalized response against the provider operation descriptor identified by the given operationId.
| Compilation flags:
| static
| Template:
| validate_http_response(Provider,OperationId,Source,Errors)
| Mode and number of proofs:
| validate_http_response(+object_identifier,+atom,++compound,--list) - one
.. index:: json_media_descriptor/2 .. _open_api/0::json_media_descriptor/2:
json_media_descriptor/2 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
Constructs an OpenAPI JSON media descriptor using the default application/json media type.
| Compilation flags:
| static
| Template:
| json_media_descriptor(Schema,MediaDescriptor)
| Mode and number of proofs:
| json_media_descriptor(++term,-compound) - one_or_error
| Exceptions:
| Schema is a variable:
| instantiation_error
| Schema is neither a boolean schema nor a JSON object schema term nor a schema_ref/1 term:
| domain_error(open_api_json_schema_term,Schema)
.. index:: json_media_descriptor/3 .. _open_api/0::json_media_descriptor/3:
json_media_descriptor/3 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
Constructs an OpenAPI JSON media descriptor using the given media type.
| Compilation flags:
| static
| Template:
| json_media_descriptor(MediaType,Schema,MediaDescriptor)
| Mode and number of proofs:
| json_media_descriptor(+atom,++term,-compound) - one_or_error
| Exceptions:
| MediaType is a variable:
| instantiation_error
| MediaType is neither a variable nor a JSON-compatible HTTP media type atom:
| domain_error(open_api_media_type,MediaType)
| Schema is a variable:
| instantiation_error
| Schema is neither a boolean schema nor a JSON object schema term nor a schema_ref/1 term:
| domain_error(open_api_json_schema_term,Schema)
.. index:: json_request_body_descriptor/4 .. _open_api/0::json_request_body_descriptor/4:
json_request_body_descriptor/4 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Constructs an OpenAPI request-body descriptor using the default application/json media type.
| Compilation flags:
| static
| Template:
| json_request_body_descriptor(Description,Required,Schema,RequestBody)
| Mode and number of proofs:
| json_request_body_descriptor(+atom,+boolean,++term,-compound) - one_or_error
| Exceptions:
| Description is a variable:
| instantiation_error
| Description is neither a variable nor an atom:
| domain_error(open_api_description,Description)
| Required is a variable:
| instantiation_error
| Required is neither a variable nor a boolean:
| domain_error(open_api_boolean,Required)
| Schema is a variable:
| instantiation_error
| Schema is neither a boolean schema nor a JSON object schema term nor a schema_ref/1 term:
| domain_error(open_api_json_schema_term,Schema)
.. index:: json_request_body_descriptor/5 .. _open_api/0::json_request_body_descriptor/5:
json_request_body_descriptor/5 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Constructs an OpenAPI request-body descriptor using the given media type.
| Compilation flags:
| static
| Template:
| json_request_body_descriptor(MediaType,Description,Required,Schema,RequestBody)
| Mode and number of proofs:
| json_request_body_descriptor(+atom,+atom,+boolean,++term,-compound) - one_or_error
| Exceptions:
| MediaType is a variable:
| instantiation_error
| MediaType is neither a variable nor a JSON-compatible HTTP media type atom:
| domain_error(open_api_media_type,MediaType)
| Description is a variable:
| instantiation_error
| Description is neither a variable nor an atom:
| domain_error(open_api_description,Description)
| Required is a variable:
| instantiation_error
| Required is neither a variable nor a boolean:
| domain_error(open_api_boolean,Required)
| Schema is a variable:
| instantiation_error
| Schema is neither a boolean schema nor a JSON object schema term nor a schema_ref/1 term:
| domain_error(open_api_json_schema_term,Schema)
.. index:: json_response_descriptor/4 .. _open_api/0::json_response_descriptor/4:
json_response_descriptor/4 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Constructs an OpenAPI response descriptor using the default application/json media type.
| Compilation flags:
| static
| Template:
| json_response_descriptor(Status,Description,Schema,ResponseDescriptor)
| Mode and number of proofs:
| json_response_descriptor(++term,+atom,++term,-compound) - one_or_error
| Exceptions:
| Status is a variable:
| instantiation_error
| Status is neither a variable nor default nor an integer in the 100..599 range nor a wildcard status atom such as '2XX':
| domain_error(open_api_response_status,Status)
| Description is a variable:
| instantiation_error
| Description is neither a variable nor an atom:
| domain_error(open_api_description,Description)
| Schema is a variable:
| instantiation_error
| Schema is neither a boolean schema nor a JSON object schema term nor a schema_ref/1 term:
| domain_error(open_api_json_schema_term,Schema)
.. index:: json_response_descriptor/5 .. _open_api/0::json_response_descriptor/5:
json_response_descriptor/5 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Constructs an OpenAPI response descriptor using the given media type.
| Compilation flags:
| static
| Template:
| json_response_descriptor(Status,Description,MediaType,Schema,ResponseDescriptor)
| Mode and number of proofs:
| json_response_descriptor(++term,+atom,+atom,++term,-compound) - one_or_error
| Exceptions:
| Status is a variable:
| instantiation_error
| Status is neither a variable nor default nor an integer in the 100..599 range nor a wildcard status atom such as '2XX':
| domain_error(open_api_response_status,Status)
| Description is a variable:
| instantiation_error
| Description is neither a variable nor an atom:
| domain_error(open_api_description,Description)
| MediaType is a variable:
| instantiation_error
| MediaType is neither a variable nor a JSON-compatible HTTP media type atom:
| domain_error(open_api_media_type,MediaType)
| Schema is a variable:
| instantiation_error
| Schema is neither a boolean schema nor a JSON object schema term nor a schema_ref/1 term:
| domain_error(open_api_json_schema_term,Schema)
.. index:: problem_json_schema/1 .. _open_api/0::problem_json_schema/1:
problem_json_schema/1 ^^^^^^^^^^^^^^^^^^^^^^^^^
Returns an inline RFC 7807-compatible JSON schema for problem responses.
| Compilation flags:
| static
| Template:
| problem_json_schema(Schema)
| Mode and number of proofs:
| problem_json_schema(-term) - one
.. index:: problem_response_descriptor/3 .. _open_api/0::problem_response_descriptor/3:
problem_response_descriptor/3 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Constructs an OpenAPI problem-response descriptor using the application/problem+json media type and the default problem schema.
| Compilation flags:
| static
| Template:
| problem_response_descriptor(Status,Description,ResponseDescriptor)
| Mode and number of proofs:
| problem_response_descriptor(++term,+atom,-compound) - one_or_error
| Exceptions:
| Status is a variable:
| instantiation_error
| Status is neither a variable nor default nor an integer in the 100..599 range nor a wildcard status atom such as '2XX':
| domain_error(open_api_response_status,Status)
| Description is a variable:
| instantiation_error
| Description is neither a variable nor an atom:
| domain_error(open_api_description,Description)
(no local declarations; see entity ancestors if any)
(no local declarations; see entity ancestors if any)
(none)
.. seealso::
:ref:`json <json/0>`, :ref:`json_schema <json_schema/0>`, :ref:`application_protocol <application_protocol/0>`, :ref:`open_api_provider_protocol <open_api_provider_protocol/0>`