0.0.7 • Published 3 months ago

@biblioteksentralen/bmd-search-client v0.0.7

Weekly downloads
-
License
MIT
Repository
-
Last release
3 months ago

@biblioteksentralen/bmd-search-client

Basic usage example

import { createCordataApiClient } from "@biblioteksentralen/bmd-search-client";

const cordata = createCordataApiClient({
  clientIdentifier: "My little library app (drift@elvesund.no)",
  catalogueId: "tonsberg",
});

const { data, error } = await cordata.searchWorks({
  query: "jo nesbø",
});
if (error) {
  console.error(error);
} else {
  console.log(`Fetched ${data.results.length} results:`);
  for (const result of data.results) {
    console.log(`- ${result.work.title.mainTitle}`);
  }
}

Options

API context

This package provides clients for two BMD APIs:

  • The Public Library API, based on the Public Library API Specification, in which the response models have been modelled to provide interoperability with other library systems with different data models. Metadata is simplified into a two-level model (Work-Publication) which is generally easier to work with, but cannot express every metadata aspect that a three-level model can provide.

    import { createPublicLibraryApiClient } from "@biblioteksentralen/bmd-search-client";
    
    const plas = createPublicLibraryApiClient({ clientIdentifier: "My little library app (drift@elvesund.no)" });
    const results = await plas.searchWorks({ query: "Jo Nesbø" });
  • The Cordata API, which uses the same request structure, but provides responses based on our internal Cordata metadata model, a three-level model (Work-Expression-Manifestation) which can be more suited for library professionals.

    import { createCordataApiClient } from "@biblioteksentralen/bmd-search-client";
    
    const cordata = createCordataApiClient({ clientIdentifier: "My little library app (drift@elvesund.no)" });
    const results = await cordata.searchWorks({ query: "Jo Nesbø" });

The two APIs are aligned as much as possible. Endpoints generally use the same request structure, but different response structure. Some APIs are only available in one or the other API, for instance the "Get Publications" endpoint is only available in the Public Library API.

Client identification policy

The API does not require authentication, but clients should identify themselves using a descriptive name and a contact address in the clientIdentifier string. We will only contact you about usage of the API.

Catalogue scope

Clients are initialized with a global scope by default. Construct the client with a catalogueId to scope it to a specific library catalogue. Note that catalogue scoping only guarantees that results are found in the given library catalogue, not that the library have active holdings. If the actual holdings have been weeded, the catalogue record may still be present.

const client = createCordataApiClient({
  catalogueId: "tonsberg",
  ...otherOptions,
});

Environment

The client connects to the production environment by default, but it can be constructed to use the staging environment instead:

const client = createCordataApiClient({
  environment: "staging",
  ...otherOptions,
});
0.0.7

3 months ago

0.0.5-beta.1

3 months ago

0.0.5-beta.2

3 months ago

0.0.5-beta.3

3 months ago

0.0.5-beta.4

3 months ago

0.0.5-beta.5

3 months ago

0.0.6

3 months ago

0.0.3

3 months ago

0.0.5

3 months ago

0.0.4

3 months ago

0.0.2

3 months ago

0.0.1-beta.2

3 months ago

0.0.1-beta.1

3 months ago