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:
`public` open_id_helpers
Uses:
list
Remarks:
(none)
Inherited public predicates:
check_option/1 check_options/1 default_option/1 default_options/1 option/2 option/3 valid_option/1 valid_options/1

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