object

open_id_discovery

OpenID Provider discovery metadata helpers.

Availability:
logtalk_load(open_id(loader))
Author: Paulo Moura
Version: 1:0:0
Date: 2026-07-08
Compilation flags:
static, context_switching_calls
Imports:
Uses:
Remarks:
(none)

Public predicates

discovery_url/2

Builds the discovery metadata URL for an issuer.

Compilation flags:
static
Template:
discovery_url(Issuer,URL)
Mode and number of proofs:
discovery_url(+atom,-atom) - one_or_error
Exceptions:
Issuer is a variable:
instantiation_error
Issuer is not an absolute issuer URL:
domain_error(open_id_issuer,Issuer)

provider/3

Builds validated provider metadata from discovery JSON using default options.

Compilation flags:
static
Template:
provider(ExpectedIssuer,JSON,Provider)
Mode and number of proofs:
provider(+atom,+term,-compound) - one_or_error
Exceptions:
The discovered issuer does not match ExpectedIssuer:
domain_error(open_id_issuer,Issuer)
A provider metadata URL is not secure:
domain_error(open_id_provider_metadata_url,URL)

provider/4

Builds validated provider metadata from discovery JSON using the given options.

Compilation flags:
static
Template:
provider(ExpectedIssuer,JSON,Provider,Options)
Mode and number of proofs:
provider(+atom,+term,-compound,+list(compound)) - one_or_error
Exceptions:
Options is a variable or a partial list:
instantiation_error
Options is neither a variable nor a list:
type_error(list,Options)
An element Option of the list Options is neither a variable nor a compound term:
type_error(compound,Option)
An element Option of the list Options is a compound term but not a valid option:
domain_error(option,Option)
The discovered issuer does not match ExpectedIssuer:
domain_error(open_id_issuer,Issuer)
A provider metadata URL is not secure:
domain_error(open_id_provider_metadata_url,URL)

property/3

Looks up a property in validated provider metadata.

Compilation flags:
static
Template:
property(Provider,Name,Value)
Mode and number of proofs:
property(+compound,+atom,-term) - zero_or_one

Protected predicates

(no local declarations; see entity ancestors if any)

Private predicates

(no local declarations; see entity ancestors if any)

Operators

(none)