@open-operational-state/discovery
v0.3.0
Published
Discovery client for locating Open Operational State resources
Readme
@open-operational-state/discovery
Discovery client for Open Operational State. Find and validate operational-state endpoints using HTTP Link headers and well-known paths.
Installation
bun add @open-operational-state/discoveryAPI
discover( baseUrl, options? )
Discover operational-state resources following the priority hierarchy:
- Link-based discovery (HTTP
Linkheaders withrel="operational-state") - Well-known path (
/.well-known/operational-state)
import { discover } from '@open-operational-state/discovery';
const result = await discover( 'https://api.example.com' );
switch ( result.method ) {
case 'link-header':
console.log( 'Found via Link header:', result.links );
break;
case 'well-known':
console.log( 'Found via well-known:', result.document );
break;
case 'none':
console.log( 'No operational-state resources found' );
break;
}parseLinkHeaders( headers )
Parse HTTP Link headers and extract rel="operational-state" entries.
import { parseLinkHeaders } from '@open-operational-state/discovery';
const links = parseLinkHeaders(
'<https://api.example.com/health>; rel="operational-state"; profile="health"'
);
// [{ href: 'https://api.example.com/health', profile: 'health' }]fetchDiscoveryDocument( baseUrl )
Fetch and validate the discovery document from /.well-known/operational-state.
validateDiscoveryDocument( doc )
Validate the structure of a discovery document.
import { validateDiscoveryDocument } from '@open-operational-state/discovery';
const result = validateDiscoveryDocument( doc );
// { valid: true, errors: [], warnings: [] }Dependencies
@open-operational-state/types
