cdli-api-client
Version:
A client for the CDLI REST API
157 lines (115 loc) • 5.89 kB
Markdown
# <img width="150" src="logo.png" /> Framework API Client
Client for CDLI framework API.
- [Install](#install)
- [Getting started](#getting-started)
- [Command-Line Interface](#command-line-interface)
- [Programming Interface](#programming-interface)
## Install
A prerequisite for this client is [Node.JS](https://nodejs.org/en/) and a package
manager like [npm](https://npmjs.com), which usually comes with it.
npm install -g cdli-api-client
Or install it locally into an existing project:
npm install cdli-api-client
Alternatively, the command can be run with [npx](https://www.npmjs.com/package/npx):
npx cdli-api-client --help
## Getting started
Right now, the client supports two basic operations:
- [exporting](#export) parts of the database as linked data (or specifically
N-Triples). The parts that can be chosen are the types of entities in the
catalogue, such as artifacts, materials, proveniences, inscriptions and periods.
- [searching](#search) artifacts in the database.
### Command-Line Interface
cdli [command]
Commands:
cdli export Export catalog and text data
cdli search Export catalog and text data
Options:
--version Show version number [boolean]
--host, -h Host URL to use for API calls
[string] [default: "https://cdli.earth/"]
--format, -f File format
[choices: "ndjson", "csv", "tsv", "ntriples", "bibtex", "atf"]
--output-file, -o Output file (outputs to stdout by default)
--help Show help [boolean]
#### Export
cdli export
Export catalog and text data
Options:
--version Show version number [boolean]
-h, --host Host URL to use for API calls
[string] [default: "https://cdli.earth/"]
-f, --format File format
[choices: "ndjson", "csv", "tsv", "ntriples", "ttl", "bibtex", "atf"]
-o, --output-file Output file (outputs to stdout by default)
--help Show help [boolean]
-e, --entities Which types of entities to fetch
[array] [choices: "abbreviations", "archives", "artifacts", "artifact-assets",
"artifacts-external-resources", "artifacts-materials",
"entities-external-resources", "entities-names", "authors", "collections",
"dynasties", "external-resources", "genres", "inscriptions", "journals",
"languages", "locations", "materials", "material-aspects", "material-colors",
"periods", "places", "proveniences", "publications", "regions", "rulers"]
[default: []]
-i, --index Which index(es) to fetch [array] [default: []]
So to export place-related entities from a locally-running framework instance you
could do this:
cdli export \
--host http://localhost:2354/ \
--entities archives proveniences regions \
--output-file places.nt
Fetching all artifacts from the live server could look like this:
cdli export \
--host https://cdli.earth/ \
--entities artifacts \
--format csv \
--output-file artifacts.csv
Export all linked data:
cdli export \
--host https://cdli.earth/ \
--entities abbreviations archives artifacts artifact-assets \
artifacts-external-resources artifacts-materials authors collections \
dynasties entities-external-resources entities-names external-resources \
genres inscriptions journals languages locations materials material-aspects \
material-colors periods places proveniences publications regions rulers \
--format ntriples \
--output-file all.nt
#### Search
cdli search
Search artifacts in the catalog
Simple search:
-q, --query Search query [array]
--queryCategory, --qc Search category
[array] [choices: "keyword", "publication", "collection", "provenience",
"period", "transliteration", "translation", "id"]
--queryOperator, --qo Search operator [array] [choices: "AND", "OR"]
Advanced search:
--advancedField, --af Search field [array]
--advancedQuery, --aq Search query [array]
Filter:
--filterField, --fk Filter by field [array]
--filterValue, --fv Filter by value [array]
Options:
--version Show version number [boolean]
-h, --host Host URL to use for API calls
[string] [default: "https://cdli.earth/"]
-f, --format File format
[choices: "ndjson", "csv", "tsv", "ntriples", "bibtex", "atf"]
-o, --output-file Output file (outputs to stdout by default)
--help Show help [boolean]
Example:
cdli search -q holland --fk genre --fv "Official or display" -f tsv
### Programming Interface
```js
const CDLI = require('cdli-api-client')
const client = new CDLI.Client('http://localhost:2354/')
// process logging
client.on('log', msg => process.stderr.write(msg))
client.export(['archives', 'proveniences', 'regions' ], 'places.nt')
.then(entities => {
for (const { status, reason } of entities) {
if (status === 'rejected') {
console.error(reason)
}
}
})
```