OptionalExpiresWhen this stops being valid.
The resolver renews on expiry rather than on failure, so a long run does not discover its token died by getting a 401 on record four hundred.
OptionalExtensionsAnything the driver's own fetcher needs that the generic shape cannot express.
OptionalHeadersHeaders to send — Authorization, Cookie, whatever the source expects.
OptionalOriginsThe origins this session may be presented to, as https://host[:port].
Unset means the origin of the source's own URL and nothing else. A source's items can live anywhere — an RSS feed links to every article site on the web — and a session that went to every item URL would hand an API key to all of them. A driver whose content is served from a different host than the source URL (an API, a CDN it controls) lists those hosts here.
OptionalQueryQuery parameters to append, for sources that authenticate in the URL.
An open session, in the only form the fetcher needs to care about.
Deliberately data rather than a live client object: it has to survive being cached, shared across every record in a run, and handed to a fetcher that knows nothing about how it was obtained.