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

Public predicates

.. 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)


Protected predicates

(no local declarations; see entity ancestors if any)

Private predicates

(no local declarations; see entity ancestors if any)

Operators

(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>`