EInnsyn API 的脚本 SDK
目录
安装
通过 npm 安装软件包 :
npm install https://github.com/felleslosninger/einnsyn-sdk-typescript
导入并在您的 TypeScript 项目中使用 :
import { EInnsynClient } from 'einnsyn-sdk';
测试
运行测试套件 :
npm test
编写覆盖报告:
npm run test:coverage
认证
SDK支持多种认证方法:
- 日本
- 用户名/名词
- API 密钥
使用量
创建客户端实例
// Client set-up (all options are optional)
const client = new EInnsynClient({
baseUrl: 'https://api.einnsyn.no',
appInfo: 'My eInnsyn client',
username: '[email protected]',
password: 'myPassword',
jwtToken: '...',
apiKey: 'secret_apikey',
});
使用 JWT 认证
在通过Ansattporten认证为组织时,您会提供这样的JWT:
const authenticatedClient = new EInnsynClient({
jwt: '...',
});
正在使用 eInnsyn 用户名/ 密码进行认证
const authenticatedClient = new EInnsynClient({
username: '[email protected]',
password: '...',
});
正在使用 API 密钥认证
const authenticatedClient = new EInnsynClient({
apiKey: 'secret_...',
});
获取内容
// Get a saksmappe
const saksmappe = await client.saksmappe.get('sm_...');
console.log(saksmappe.offentligTittel);
// Get all journalposts in the saksmappe
const journalpostList = await client.saksmappe.getJournalpost('sm_...');
// Iterate over all journalposts
for await (const journalpost of client.iterate(journalpostList)) {
console.log(`${journalpost.offentligTittel}`);
}
重复列出的清单
您可以自动在这样的 pagnizing 列表上显示:
const journalpostList = await client.saksmappe.getJournalpost('sm_...');
// Iterate over all journalposts
for await (const journalpost of client.iterate(journalpostList)) {
console.log(`${journalpost.offentligTittel}`);
}
扩展字段
您可以在查询中扩展字段以包括相关实体:
// Non-expanded:
const saksmappe = await client.saksmappe.get('sm_...');
console.log(saksmappe);
// Example output:
// {
// entity: 'Saksmappe',
// id: 'sm_...',
// offentligTittel: 'Saksmappe title',
// offentligTittelSensitiv: 'Saksmappe title with sensitive data',
// saksaar: 2025,
// sakssekvensnummer: 1,
// journalpost: ['jp_...'],
// }
// Expanded:
const expandedSaksmappe = await client.saksmappe.get('sm_...', { expand: ['journalpost'] });
console.log(expandedSaksmappe);
// Example output:
// {
// entity: 'Saksmappe',
// id: 'sm_...',
// offentligTittel: 'Saksmappe title',
// offentligTittelSensitiv: 'Saksmappe title with sensitive data',
// saksaar: 2025,
// sakssekvensnummer: 1,
// journalpost: [{
// offentligTittel: 'Journalpost title',
// offentligTittelSensitiv: 'Journalpost title with sensitive data',
// journalaar: 2025,
// journalsekvensnummer: 1,
// journalpostnummer: 1,
// journalposttype: 'inngaaende_dokument',
// journaldato: '2025-01-01',
// }],
// }
添加/ 更新内容
// Create a containing Arkiv
const arkiv = await client.arkiv.add({
tittel: 'Arkiv title',
});
// Create a containing Arkivdel
const arkivdel = await client.arkiv.addArkivdel(arkiv.id, {
tittel: 'Arkivdel title'
});
// Create a saksmappe with a Journalpost
const saksmappe = await client.arkivdel.addSaksmappe(arkivdel.id, {
offentligTittel: 'Saksmappe title',
offentligTittelSensitiv: 'Saksmappe title with sensitive data',
saksaar: 2025,
sakssekvensnummer: 1,
journalpost: [{
offentligTittel: 'Journalpost title',
offentligTittelSensitiv: 'Journalpost title with sensitive data',
journalaar: 2025,
journalsekvensnummer: 1,
journalpostnummer: 1,
journalposttype: 'inngaaende_dokument',
journaldato: '2025-01-01',
}]
});
// Add a Journalpost with a Dokumentbeskrivelse to an existing Saksmappe
const journalpost = await client.saksmappe.addJournalpost(saksmappe.id, {
offentligTittel: 'Second Journalpost',
offentligTittelSensitiv: 'Second Journalpost title with sensitive data',
journalaar: 2025,
journalsekvensnummer: 2,
journalpostnummer: 2,
journalposttype: 'inngaaende_dokument',
journaldato: '2025-01-03',
dokumentbeskrivelse: [{
tittel: 'Dokumentbeskrivelse title',
tittelSensitiv: 'Title with sensitive data',
dokumentnummer: 1,
tilknyttetRegistreringSom: 'vedlegg',
}]
});
// Update an existing Saksmappe
const updatedSaksmappe = await client.saksmappe.update(saksmappe.id, {
offentligTittel: 'Updated offentligTittel',
});
删除内容
const deletedSaksmappe = client.saksmappe.delete(saksmappe.id);
搜索
// Search for "robot"
const searchResultList = client.search({
query: 'robot',
});
// Iterate all results
for await (const searchResult of client.iterate(searchResultList)) {
if (isSaksmappe(result)) {
// This is a Saksmappe.
console.log(`Saksmappe: ${result.offentligTittel}`);
} else if (isJournalpost(result)) {
// This is a Journalpost.
console.log(`Journalpost - ${result.offentligTittel}`);
} else if (isMoetemappe(result)) {
// This is a Moetemappe.
console.log(`Moetemappe - ${result.offentligTittel}`);
} else if (isMoetesak(result)) {
// This is a Moetesak.
console.log(`Moetesak - ${result.offentligTittel}`);
} else {
// Unknown search result, should not happen.
console.log(`Unknown result type`);
}
}
// Search for "robot", in documents by a given enhet
const enhetsRobotList = client.search({
query: 'robot',
administrativEnhet: 'enh_...',
});
// Advanced search
const advancedSearch = client.search({
query: 'advanced query',
administrativEnhet: 'enh_...',
excludeAdministrativEnhet: 'enh_...',
sortBy: 'publisertDato',
sortOrder: 'asc',
});
API 文档
关于详细的API文件,请参见: eInnsyn API 规格。 。 。 .
许可证
该项目根据BSD 3-Clause许可证获得许可证。 见 自由主义 详细文件.