@firmenakte/api-client 2.1.1 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client.d.ts +3664 -732
- package/client.d.ts.map +1 -1
- package/client.js +297 -7
- package/index.d.ts +304 -34
- package/index.d.ts.map +1 -1
- package/index.js +1 -0
- package/keyfigure-labels.d.ts +14 -0
- package/keyfigure-labels.d.ts.map +1 -0
- package/keyfigure-labels.js +66 -0
- package/keyfigures.d.ts +0 -4
- package/keyfigures.d.ts.map +1 -1
- package/keyfigures.js +0 -15
- package/package.json +1 -1
package/client.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* ---------------------------------------------------------------
|
|
12
12
|
*/
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.Api = exports.HttpClient = exports.ContentType = exports.ChangeType = void 0;
|
|
14
|
+
exports.Api = exports.HttpClient = exports.ContentType = exports.BusinessExportFormat = exports.ChangeType = void 0;
|
|
15
15
|
/** Which register a change came from, and therefore which typed feed and payload it belongs to: "business" the Firmenbuch, "document" a newly filed document, "edikt" the Ediktsdatei, "gisa" the trade register, "scheinunternehmen" the BMF list. "unknown" is a change we could not classify. */
|
|
16
16
|
var ChangeType;
|
|
17
17
|
(function (ChangeType) {
|
|
@@ -22,6 +22,12 @@ var ChangeType;
|
|
|
22
22
|
ChangeType["Scheinunternehmen"] = "scheinunternehmen";
|
|
23
23
|
ChangeType["Unknown"] = "unknown";
|
|
24
24
|
})(ChangeType || (exports.ChangeType = ChangeType = {}));
|
|
25
|
+
/** The two files an export can produce. Same columns, same rows — only the serialiser differs. */
|
|
26
|
+
var BusinessExportFormat;
|
|
27
|
+
(function (BusinessExportFormat) {
|
|
28
|
+
BusinessExportFormat["Csv"] = "Csv";
|
|
29
|
+
BusinessExportFormat["Xlsx"] = "Xlsx";
|
|
30
|
+
})(BusinessExportFormat || (exports.BusinessExportFormat = BusinessExportFormat = {}));
|
|
25
31
|
var ContentType;
|
|
26
32
|
(function (ContentType) {
|
|
27
33
|
ContentType["Json"] = "application/json";
|
|
@@ -191,6 +197,222 @@ class Api extends HttpClient {
|
|
|
191
197
|
constructor() {
|
|
192
198
|
super(...arguments);
|
|
193
199
|
this.api = {
|
|
200
|
+
/**
|
|
201
|
+
* @description Every saved Abfrage of the calling account, newest first.
|
|
202
|
+
*
|
|
203
|
+
* @tags Queries
|
|
204
|
+
* @name V1QueriesList
|
|
205
|
+
* @summary Your Abfragen
|
|
206
|
+
* @request GET:/api/v1/queries
|
|
207
|
+
* @secure
|
|
208
|
+
*/
|
|
209
|
+
v1QueriesList: (params = {}) => this.request({
|
|
210
|
+
path: `/api/v1/queries`,
|
|
211
|
+
method: "GET",
|
|
212
|
+
secure: true,
|
|
213
|
+
format: "json",
|
|
214
|
+
...params,
|
|
215
|
+
}),
|
|
216
|
+
/**
|
|
217
|
+
* @description Keeps a filter set. A save whose filters match an Abfrage the account already has updates that one instead of adding a second — pass updateId to pin the row being edited.
|
|
218
|
+
*
|
|
219
|
+
* @tags Queries
|
|
220
|
+
* @name V1QueriesCreate
|
|
221
|
+
* @summary Save an Abfrage
|
|
222
|
+
* @request POST:/api/v1/queries
|
|
223
|
+
* @secure
|
|
224
|
+
*/
|
|
225
|
+
v1QueriesCreate: (data, params = {}) => this.request({
|
|
226
|
+
path: `/api/v1/queries`,
|
|
227
|
+
method: "POST",
|
|
228
|
+
body: data,
|
|
229
|
+
secure: true,
|
|
230
|
+
type: ContentType.Json,
|
|
231
|
+
format: "json",
|
|
232
|
+
...params,
|
|
233
|
+
}),
|
|
234
|
+
/**
|
|
235
|
+
* @description The saved Abfrage with this id, when it belongs to the calling account.
|
|
236
|
+
*
|
|
237
|
+
* @tags Queries
|
|
238
|
+
* @name V1QueriesDetail
|
|
239
|
+
* @summary One Abfrage
|
|
240
|
+
* @request GET:/api/v1/queries/{id}
|
|
241
|
+
* @secure
|
|
242
|
+
*/
|
|
243
|
+
v1QueriesDetail: (id, params = {}) => this.request({
|
|
244
|
+
path: `/api/v1/queries/${id}`,
|
|
245
|
+
method: "GET",
|
|
246
|
+
secure: true,
|
|
247
|
+
format: "json",
|
|
248
|
+
...params,
|
|
249
|
+
}),
|
|
250
|
+
/**
|
|
251
|
+
* @description Removes one saved Abfrage from the Suchverlauf.
|
|
252
|
+
*
|
|
253
|
+
* @tags Queries
|
|
254
|
+
* @name V1QueriesDelete
|
|
255
|
+
* @summary Delete an Abfrage
|
|
256
|
+
* @request DELETE:/api/v1/queries/{id}
|
|
257
|
+
* @secure
|
|
258
|
+
*/
|
|
259
|
+
v1QueriesDelete: (id, params = {}) => this.request({
|
|
260
|
+
path: `/api/v1/queries/${id}`,
|
|
261
|
+
method: "DELETE",
|
|
262
|
+
secure: true,
|
|
263
|
+
...params,
|
|
264
|
+
}),
|
|
265
|
+
/**
|
|
266
|
+
* @description Deletes every saved Abfrage of the calling account.
|
|
267
|
+
*
|
|
268
|
+
* @tags Queries
|
|
269
|
+
* @name V1QueriesAllDelete
|
|
270
|
+
* @summary Clear the Suchverlauf
|
|
271
|
+
* @request DELETE:/api/v1/queries/all
|
|
272
|
+
* @secure
|
|
273
|
+
*/
|
|
274
|
+
v1QueriesAllDelete: (params = {}) => this.request({
|
|
275
|
+
path: `/api/v1/queries/all`,
|
|
276
|
+
method: "DELETE",
|
|
277
|
+
secure: true,
|
|
278
|
+
...params,
|
|
279
|
+
}),
|
|
280
|
+
/**
|
|
281
|
+
* @description Every Liste of the calling account, oldest first.
|
|
282
|
+
*
|
|
283
|
+
* @tags Lists
|
|
284
|
+
* @name V1ListsList
|
|
285
|
+
* @summary Your Listen
|
|
286
|
+
* @request GET:/api/v1/lists
|
|
287
|
+
* @secure
|
|
288
|
+
*/
|
|
289
|
+
v1ListsList: (params = {}) => this.request({
|
|
290
|
+
path: `/api/v1/lists`,
|
|
291
|
+
method: "GET",
|
|
292
|
+
secure: true,
|
|
293
|
+
format: "json",
|
|
294
|
+
...params,
|
|
295
|
+
}),
|
|
296
|
+
/**
|
|
297
|
+
* @description Creates an empty Liste, or one already holding the companies you pass.
|
|
298
|
+
*
|
|
299
|
+
* @tags Lists
|
|
300
|
+
* @name V1ListsCreate
|
|
301
|
+
* @summary Create a Liste
|
|
302
|
+
* @request POST:/api/v1/lists
|
|
303
|
+
* @secure
|
|
304
|
+
*/
|
|
305
|
+
v1ListsCreate: (data, params = {}) => this.request({
|
|
306
|
+
path: `/api/v1/lists`,
|
|
307
|
+
method: "POST",
|
|
308
|
+
body: data,
|
|
309
|
+
secure: true,
|
|
310
|
+
type: ContentType.Json,
|
|
311
|
+
format: "json",
|
|
312
|
+
...params,
|
|
313
|
+
}),
|
|
314
|
+
/**
|
|
315
|
+
* @description The Liste with this id, when it belongs to the calling account.
|
|
316
|
+
*
|
|
317
|
+
* @tags Lists
|
|
318
|
+
* @name V1ListsDetail
|
|
319
|
+
* @summary One Liste
|
|
320
|
+
* @request GET:/api/v1/lists/{id}
|
|
321
|
+
* @secure
|
|
322
|
+
*/
|
|
323
|
+
v1ListsDetail: (id, params = {}) => this.request({
|
|
324
|
+
path: `/api/v1/lists/${id}`,
|
|
325
|
+
method: "GET",
|
|
326
|
+
secure: true,
|
|
327
|
+
format: "json",
|
|
328
|
+
...params,
|
|
329
|
+
}),
|
|
330
|
+
/**
|
|
331
|
+
* @description A partial update: only the fields the body carries are written, and settings are merged into the stored ones rather than replacing them.
|
|
332
|
+
*
|
|
333
|
+
* @tags Lists
|
|
334
|
+
* @name V1ListsPartialUpdate
|
|
335
|
+
* @summary Update a Liste
|
|
336
|
+
* @request PATCH:/api/v1/lists/{id}
|
|
337
|
+
* @secure
|
|
338
|
+
*/
|
|
339
|
+
v1ListsPartialUpdate: (id, data, params = {}) => this.request({
|
|
340
|
+
path: `/api/v1/lists/${id}`,
|
|
341
|
+
method: "PATCH",
|
|
342
|
+
body: data,
|
|
343
|
+
secure: true,
|
|
344
|
+
type: ContentType.Json,
|
|
345
|
+
format: "json",
|
|
346
|
+
...params,
|
|
347
|
+
}),
|
|
348
|
+
/**
|
|
349
|
+
* @description Deletes the Liste. The companies on it are not touched anywhere else.
|
|
350
|
+
*
|
|
351
|
+
* @tags Lists
|
|
352
|
+
* @name V1ListsDelete
|
|
353
|
+
* @summary Delete a Liste
|
|
354
|
+
* @request DELETE:/api/v1/lists/{id}
|
|
355
|
+
* @secure
|
|
356
|
+
*/
|
|
357
|
+
v1ListsDelete: (id, params = {}) => this.request({
|
|
358
|
+
path: `/api/v1/lists/${id}`,
|
|
359
|
+
method: "DELETE",
|
|
360
|
+
secure: true,
|
|
361
|
+
...params,
|
|
362
|
+
}),
|
|
363
|
+
/**
|
|
364
|
+
* @description Appends the companies that are not on it yet, keeping the order of the ones that are. A company that had been taken off comes back off the removed set.
|
|
365
|
+
*
|
|
366
|
+
* @tags Lists
|
|
367
|
+
* @name V1ListsAddCreate
|
|
368
|
+
* @summary Add companies to a Liste
|
|
369
|
+
* @request POST:/api/v1/lists/{id}/add
|
|
370
|
+
* @secure
|
|
371
|
+
*/
|
|
372
|
+
v1ListsAddCreate: (id, data, params = {}) => this.request({
|
|
373
|
+
path: `/api/v1/lists/${id}/add`,
|
|
374
|
+
method: "POST",
|
|
375
|
+
body: data,
|
|
376
|
+
secure: true,
|
|
377
|
+
type: ContentType.Json,
|
|
378
|
+
format: "json",
|
|
379
|
+
...params,
|
|
380
|
+
}),
|
|
381
|
+
/**
|
|
382
|
+
* @description Takes the companies off the Liste and records them as removed.
|
|
383
|
+
*
|
|
384
|
+
* @tags Lists
|
|
385
|
+
* @name V1ListsRemoveCreate
|
|
386
|
+
* @summary Remove companies from a Liste
|
|
387
|
+
* @request POST:/api/v1/lists/{id}/remove
|
|
388
|
+
* @secure
|
|
389
|
+
*/
|
|
390
|
+
v1ListsRemoveCreate: (id, data, params = {}) => this.request({
|
|
391
|
+
path: `/api/v1/lists/${id}/remove`,
|
|
392
|
+
method: "POST",
|
|
393
|
+
body: data,
|
|
394
|
+
secure: true,
|
|
395
|
+
type: ContentType.Json,
|
|
396
|
+
format: "json",
|
|
397
|
+
...params,
|
|
398
|
+
}),
|
|
399
|
+
/**
|
|
400
|
+
* @description Builds a CSV or an Excel workbook over the companies you name: an explicit set of FNRs, a Liste, or a saved Abfrage. Nothing is stored and no link is handed back: the CSV is written out as it is produced, the workbook is built in memory first. One export carries at most 1000 companies: a set of FNRs or a Liste that holds more is refused with a 400 rather than cut short, and a saved Abfrage exports its first 1000 matches. An export that would hold no rows answers 204 rather than an empty file.
|
|
401
|
+
*
|
|
402
|
+
* @tags Exports
|
|
403
|
+
* @name V1ExportsBusinessesCreate
|
|
404
|
+
* @summary Export companies
|
|
405
|
+
* @request POST:/api/v1/exports/businesses
|
|
406
|
+
* @secure
|
|
407
|
+
*/
|
|
408
|
+
v1ExportsBusinessesCreate: (data, params = {}) => this.request({
|
|
409
|
+
path: `/api/v1/exports/businesses`,
|
|
410
|
+
method: "POST",
|
|
411
|
+
body: data,
|
|
412
|
+
secure: true,
|
|
413
|
+
type: ContentType.Json,
|
|
414
|
+
...params,
|
|
415
|
+
}),
|
|
194
416
|
/**
|
|
195
417
|
* @description Downloads the signed GISA PDF extract for a license (GISA-Zahl). Language defaults to German (De).
|
|
196
418
|
*
|
|
@@ -274,7 +496,7 @@ class Api extends HttpClient {
|
|
|
274
496
|
...params,
|
|
275
497
|
}),
|
|
276
498
|
/**
|
|
277
|
-
* @description Feed of GISA changes — one entry per change to a company's trade licences. Ordered by ascending id, and that id is the cursor: request with sinceId set to the highest id you have stored, walk page=1,2,… at a fixed pageSize until a page comes back with fewer than pageSize rows, keep the highest id you saw, and start the next poll from it. sinceId is exclusive, so nothing is delivered twice, and a new change always takes a higher id than every change already in the feed, so it appends to the end and never shifts a page you have already read. since is inclusive, filters on when we recorded the change rather than on changedDate, and applies together with sinceId when both are sent. Paging without sinceId is not a reliable feed: an offset is not a watermark, and page stops at 1000. Under concurrent writes a change can become visible just after a higher id, so a consumer that must not miss one resumes from the previous poll's watermark and de-duplicates by id. fnr is normalised before matching — trimmed, spaces and leading zeros removed, case left alone — so 034853 f and 34853f are the same company, exactly as on GET /businesses.
|
|
499
|
+
* @description Feed of GISA changes — one entry per change to a company's trade licences. Ordered by ascending id, and that id is the cursor: request with sinceId set to the highest id you have stored, walk page=1,2,… at a fixed pageSize until a page comes back with fewer than pageSize rows, keep the highest id you saw, and start the next poll from it. sinceId is exclusive, so nothing is delivered twice, and a new change always takes a higher id than every change already in the feed, so it appends to the end and never shifts a page you have already read. since is inclusive, filters on when we recorded the change rather than on changedDate, and applies together with sinceId when both are sent. Paging without sinceId is not a reliable feed: an offset is not a watermark, and page stops at 1000. totalRecords stops there too — it is counted only as far as page 1000 reaches, so it caps at 1000 × pageSize and means "at least this many" once it is that; stop on a short page, not on a count. Under concurrent writes a change can become visible just after a higher id, so a consumer that must not miss one resumes from the previous poll's watermark and de-duplicates by id. fnr is normalised before matching — trimmed, spaces and leading zeros removed, case left alone — so 034853 f and 34853f are the same company, exactly as on GET /businesses.
|
|
278
500
|
*
|
|
279
501
|
* @tags Trades
|
|
280
502
|
* @name V1TradesChangesList
|
|
@@ -290,6 +512,23 @@ class Api extends HttpClient {
|
|
|
290
512
|
format: "json",
|
|
291
513
|
...params,
|
|
292
514
|
}),
|
|
515
|
+
/**
|
|
516
|
+
* @description The autocomplete read: /businesses and /people for one term, ranked together, so a search field costs one request per keystroke rather than two and does not have to merge two orders itself. Each row carries either business or person, whichever type names. Ordered by where the term sits in the name, then by the shorter name, then companies before people. pageSize is per side, so the answer holds up to twice as many rows. An empty search answers an empty list; use /businesses to page through the whole dataset.
|
|
517
|
+
*
|
|
518
|
+
* @tags Search
|
|
519
|
+
* @name V1SearchList
|
|
520
|
+
* @summary Companies and people in one ranked list
|
|
521
|
+
* @request GET:/api/v1/search
|
|
522
|
+
* @secure
|
|
523
|
+
*/
|
|
524
|
+
v1SearchList: (query, params = {}) => this.request({
|
|
525
|
+
path: `/api/v1/search`,
|
|
526
|
+
method: "GET",
|
|
527
|
+
query: query,
|
|
528
|
+
secure: true,
|
|
529
|
+
format: "json",
|
|
530
|
+
...params,
|
|
531
|
+
}),
|
|
293
532
|
/**
|
|
294
533
|
* @description Returns (id, name) pairs for all people with at least one business assignment. For client-side name index.
|
|
295
534
|
*
|
|
@@ -374,7 +613,7 @@ class Api extends HttpClient {
|
|
|
374
613
|
...params,
|
|
375
614
|
}),
|
|
376
615
|
/**
|
|
377
|
-
* @description Returns the graph (nodes and edges) within 2 hops of the start entity. Exactly one of personId or fnr must be provided. The network of people and companies around one starting point — who sits on which board with whom. nodes are people ("person") and companies ("business"), each carrying the id you would pass to /people/{personId} or /businesses/{fnr}; edges are source/target pairs of those ids whose relationshipType is "assignment", a person holding a function in a company.
|
|
616
|
+
* @description Returns the graph (nodes and edges) within 2 hops of the start entity. Exactly one of personId or fnr must be provided. The network of people and companies around one starting point — who sits on which board with whom. nodes are people ("person") and companies ("business"), each carrying the id you would pass to /people/{personId} or /businesses/{fnr}; edges are source/target pairs of those ids whose relationshipType is "assignment", a person holding a function in a company. Two further edge types the deployment can enable: "address", two companies registered at the same street address, and "ownership", a company holding shares in another — source is the shareholder, target the company it holds, and capitalAmount, currency and sharePercent carry the stake where the register gives one. Ownership edges are drawn only for companies crawled since the shareholder mapping went live, so a company not yet re-crawled reports none rather than implying it has none. The traversal depth is fixed at 2 hops and is not a parameter — a node with further connections outside that boundary carries hasMore=true, and isCentralNode marks the entity you started from. personId and fnr are mutually exclusive, not combinable: supplying both, or neither, is a 400, and an id that exists in neither register is a 404.
|
|
378
617
|
*
|
|
379
618
|
* @tags Graph
|
|
380
619
|
* @name V1GraphList
|
|
@@ -391,7 +630,7 @@ class Api extends HttpClient {
|
|
|
391
630
|
...params,
|
|
392
631
|
}),
|
|
393
632
|
/**
|
|
394
|
-
* @description The single feed of every change across all registers — Firmenbuch, GISA, Ediktsdatei and the BMF Scheinunternehmen list — as lightweight reference rows. Each row carries only id, fnr, changeType and the dates; fetch the payload with GET /globalchanges/{id}, or poll one register's typed feed instead (/businesses/changes, /documents/changes, /edikte/changes, /trades/changes). Ordered by ascending id, and that id is the cursor: request with sinceId set to the highest id you have stored, walk page=1,2,… at a fixed pageSize until a page comes back with fewer than pageSize rows, keep the highest id you saw, and start the next poll from it. sinceId is exclusive, so nothing is delivered twice, and a new change always takes a higher id than every change already in the feed, so it appends to the end and never shifts a page you have already read. since is inclusive, filters on when we recorded the change rather than on changedDate, and applies together with sinceId when both are sent. Paging without sinceId is not a reliable feed: an offset is not a watermark, and page stops at 1000. Under concurrent writes a change can become visible just after a higher id, so a consumer that must not miss one resumes from the previous poll's watermark and de-duplicates by id.
|
|
633
|
+
* @description The single feed of every change across all registers — Firmenbuch, GISA, Ediktsdatei and the BMF Scheinunternehmen list — as lightweight reference rows. Each row carries only id, fnr, changeType and the dates; fetch the payload with GET /globalchanges/{id}, or poll one register's typed feed instead (/businesses/changes, /documents/changes, /edikte/changes, /trades/changes). Ordered by ascending id, and that id is the cursor: request with sinceId set to the highest id you have stored, walk page=1,2,… at a fixed pageSize until a page comes back with fewer than pageSize rows, keep the highest id you saw, and start the next poll from it. sinceId is exclusive, so nothing is delivered twice, and a new change always takes a higher id than every change already in the feed, so it appends to the end and never shifts a page you have already read. since is inclusive, filters on when we recorded the change rather than on changedDate, and applies together with sinceId when both are sent. Paging without sinceId is not a reliable feed: an offset is not a watermark, and page stops at 1000. totalRecords stops there too — it is counted only as far as page 1000 reaches, so it caps at 1000 × pageSize and means "at least this many" once it is that; stop on a short page, not on a count. Under concurrent writes a change can become visible just after a higher id, so a consumer that must not miss one resumes from the previous poll's watermark and de-duplicates by id.
|
|
395
634
|
*
|
|
396
635
|
* @tags GlobalChanges
|
|
397
636
|
* @name V1GlobalchangesList
|
|
@@ -457,7 +696,7 @@ class Api extends HttpClient {
|
|
|
457
696
|
...params,
|
|
458
697
|
}),
|
|
459
698
|
/**
|
|
460
|
-
* @description Feed of Ediktsdatei changes — insolvency and other court notices published about a company or a person. Ordered by ascending id, and that id is the cursor: request with sinceId set to the highest id you have stored, walk page=1,2,… at a fixed pageSize until a page comes back with fewer than pageSize rows, keep the highest id you saw, and start the next poll from it. sinceId is exclusive, so nothing is delivered twice, and a new change always takes a higher id than every change already in the feed, so it appends to the end and never shifts a page you have already read. since is inclusive, filters on when we recorded the change rather than on the publication date, and applies together with sinceId when both are sent. Paging without sinceId is not a reliable feed: an offset is not a watermark, and page stops at 1000. Under concurrent writes a change can become visible just after a higher id, so a consumer that must not miss an insolvency notice resumes from the previous poll's watermark and de-duplicates by id. fnr is normalised before matching — trimmed, spaces and leading zeros removed, case left alone — so 034853 f and 34853f are the same company, exactly as on GET /businesses.
|
|
699
|
+
* @description Feed of Ediktsdatei changes — insolvency and other court notices published about a company or a person. Ordered by ascending id, and that id is the cursor: request with sinceId set to the highest id you have stored, walk page=1,2,… at a fixed pageSize until a page comes back with fewer than pageSize rows, keep the highest id you saw, and start the next poll from it. sinceId is exclusive, so nothing is delivered twice, and a new change always takes a higher id than every change already in the feed, so it appends to the end and never shifts a page you have already read. since is inclusive, filters on when we recorded the change rather than on the publication date, and applies together with sinceId when both are sent. Paging without sinceId is not a reliable feed: an offset is not a watermark, and page stops at 1000. totalRecords stops there too — it is counted only as far as page 1000 reaches, so it caps at 1000 × pageSize and means "at least this many" once it is that; stop on a short page, not on a count. Under concurrent writes a change can become visible just after a higher id, so a consumer that must not miss an insolvency notice resumes from the previous poll's watermark and de-duplicates by id. fnr is normalised before matching — trimmed, spaces and leading zeros removed, case left alone — so 034853 f and 34853f are the same company, exactly as on GET /businesses.
|
|
461
700
|
*
|
|
462
701
|
* @tags Edikte
|
|
463
702
|
* @name V1EdikteChangesList
|
|
@@ -505,7 +744,7 @@ class Api extends HttpClient {
|
|
|
505
744
|
...params,
|
|
506
745
|
}),
|
|
507
746
|
/**
|
|
508
|
-
* @description Feed of newly filed Firmenbuch documents — this is how you learn that a company has published a new Jahresabschluss. Each entry names a documentKey; fetch the file itself with GET /documents/download/{documentKey}. Ordered by ascending id, and that id is the cursor: request with sinceId set to the highest id you have stored, walk page=1,2,… at a fixed pageSize until a page comes back with fewer than pageSize rows, keep the highest id you saw, and start the next poll from it. sinceId is exclusive, so nothing is delivered twice, and a new change always takes a higher id than every change already in the feed, so it appends to the end and never shifts a page you have already read. since is inclusive, filters on when we recorded the change rather than on the document date, and applies together with sinceId when both are sent. Paging without sinceId is not a reliable feed: an offset is not a watermark, and page stops at 1000. Under concurrent writes a change can become visible just after a higher id, so a consumer that must not miss one resumes from the previous poll's watermark and de-duplicates by id. fnr is normalised before matching — trimmed, spaces and leading zeros removed, case left alone — so 034853 f and 34853f are the same company, exactly as on GET /businesses.
|
|
747
|
+
* @description Feed of newly filed Firmenbuch documents — this is how you learn that a company has published a new Jahresabschluss. Each entry names a documentKey; fetch the file itself with GET /documents/download/{documentKey}. Ordered by ascending id, and that id is the cursor: request with sinceId set to the highest id you have stored, walk page=1,2,… at a fixed pageSize until a page comes back with fewer than pageSize rows, keep the highest id you saw, and start the next poll from it. sinceId is exclusive, so nothing is delivered twice, and a new change always takes a higher id than every change already in the feed, so it appends to the end and never shifts a page you have already read. since is inclusive, filters on when we recorded the change rather than on the document date, and applies together with sinceId when both are sent. Paging without sinceId is not a reliable feed: an offset is not a watermark, and page stops at 1000. totalRecords stops there too — it is counted only as far as page 1000 reaches, so it caps at 1000 × pageSize and means "at least this many" once it is that; stop on a short page, not on a count. Under concurrent writes a change can become visible just after a higher id, so a consumer that must not miss one resumes from the previous poll's watermark and de-duplicates by id. fnr is normalised before matching — trimmed, spaces and leading zeros removed, case left alone — so 034853 f and 34853f are the same company, exactly as on GET /businesses.
|
|
509
748
|
*
|
|
510
749
|
* @tags Documents
|
|
511
750
|
* @name V1DocumentsChangesList
|
|
@@ -622,6 +861,40 @@ class Api extends HttpClient {
|
|
|
622
861
|
format: "json",
|
|
623
862
|
...params,
|
|
624
863
|
}),
|
|
864
|
+
/**
|
|
865
|
+
* @description Counts for every value of every filter group at once — what a filter builder puts on its chips. Takes the same filters as GET /businesses and means them the same way; page, pageSize, orderBy, orderByDescending and countOnly are ignored. Faceted semantics: a group is counted with all *other* active filters applied but its own lifted, so a value's count answers "how many results if I also select this", and selecting one never empties its own group. totalRecords is the current result count, with every filter applied. Each group returns its top values (top, default 10) plus every value the request already filters on, marked selected — a "Mehr" expander is a second call for that one group with a larger top, e.g. ?groups=city&top=50. city and zipCode count a business once per distinct value, so those counts can sum above totalRecords. One caveat worth knowing before wiring a chip up: the city filter matches a substring, while a city facet key is a whole city name, so selecting "Wien" also keeps "Wien-Umgebung" and can return more than the chip promised. Every other group matches its key exactly. Every group costs its own count, so ask for the groups you are rendering rather than all ten; the answer is cacheable for a day and varies on the whole query string.
|
|
866
|
+
*
|
|
867
|
+
* @tags Businesses
|
|
868
|
+
* @name V1BusinessesFacetsList
|
|
869
|
+
* @summary Filter-builder facet counts
|
|
870
|
+
* @request GET:/api/v1/businesses/facets
|
|
871
|
+
* @secure
|
|
872
|
+
*/
|
|
873
|
+
v1BusinessesFacetsList: (query, params = {}) => this.request({
|
|
874
|
+
path: `/api/v1/businesses/facets`,
|
|
875
|
+
method: "GET",
|
|
876
|
+
query: query,
|
|
877
|
+
secure: true,
|
|
878
|
+
format: "json",
|
|
879
|
+
...params,
|
|
880
|
+
}),
|
|
881
|
+
/**
|
|
882
|
+
* @description The single largest company of every place in the viewport, by one metric — what a map draws as one pin per place instead of every dot in the box. groupBy picks the place: state (the nine Bundesländer, the default) or city (the towns in view). metric is one of detailViews (Aufrufe), bilanzSumme or employees (Mitarbeiter). minLat, maxLat, minLng and maxLng are required for groupBy=city and ignored for groupBy=state: the nine Bundesländer are the same nine wherever the map is looking, so that call takes no viewport at all — which is what lets one URL serve every pan and actually be cached, here and in the browser. Every /businesses filter additionally applies and means exactly what it means there; page, pageSize, orderBy, orderByDescending and countOnly are ignored. groupLabel is the place's name — "Tirol", "Innsbruck" — and is what the pin's card is headed with. A company carrying no value for the metric is skipped rather than counted as 0, so a place holding only such companies — like an empty one — returns nothing at all and the array is shorter than the number of places. Each item carries everything a popover card shows, so no second call per pin is needed. groupBy=city answers at most 16 pins, the biggest of the towns in view; the rest is what zooming in is for. Bundesländer are derived from the PLZ of the Geschäftsanschrift, the same rule the state filter on GET /businesses uses, because the Firmenbuch carries no Land. A company that is the biggest of two places in view wins both, each pin carrying an address that is actually on screen and in the town it won. Cached for an hour rather than the day GET /businesses gets: view counts move.
|
|
883
|
+
*
|
|
884
|
+
* @tags Businesses
|
|
885
|
+
* @name V1BusinessesMapTopList
|
|
886
|
+
* @summary Top company per Bundesland or city
|
|
887
|
+
* @request GET:/api/v1/businesses/map-top
|
|
888
|
+
* @secure
|
|
889
|
+
*/
|
|
890
|
+
v1BusinessesMapTopList: (query, params = {}) => this.request({
|
|
891
|
+
path: `/api/v1/businesses/map-top`,
|
|
892
|
+
method: "GET",
|
|
893
|
+
query: query,
|
|
894
|
+
secure: true,
|
|
895
|
+
format: "json",
|
|
896
|
+
...params,
|
|
897
|
+
}),
|
|
625
898
|
/**
|
|
626
899
|
* @description Active businesses similar to the given one (same OeNACE branch, same region preferred).
|
|
627
900
|
*
|
|
@@ -671,7 +944,7 @@ class Api extends HttpClient {
|
|
|
671
944
|
...params,
|
|
672
945
|
}),
|
|
673
946
|
/**
|
|
674
|
-
* @description Feed of Firmenbuch changes — one entry per new legal record (Eintragung). Ordered by ascending id, and that id is the cursor: request with sinceId set to the highest id you have stored, walk page=1,2,… at a fixed pageSize until a page comes back with fewer than pageSize rows, keep the highest id you saw, and start the next poll from it. sinceId is exclusive, so nothing is delivered twice, and a new change always takes a higher id than every change already in the feed, so it appends to the end and never shifts a page you have already read. since is inclusive, filters on when we recorded the change rather than on changedDate — so a back-dated entry is not missed — and applies together with sinceId when both are sent. Paging without sinceId is not a reliable feed: an offset is not a watermark, and page stops at 1000. Under concurrent writes a change can become visible just after a higher id, so a consumer that must not miss one resumes from the previous poll's watermark and de-duplicates by id. fnr is normalised before matching — trimmed, spaces and leading zeros removed, case left alone — so 034853 f and 34853f are the same company, exactly as on GET /businesses. Use GET /globalchanges for the same feed across all four registers.
|
|
947
|
+
* @description Feed of Firmenbuch changes — one entry per new legal record (Eintragung). Ordered by ascending id, and that id is the cursor: request with sinceId set to the highest id you have stored, walk page=1,2,… at a fixed pageSize until a page comes back with fewer than pageSize rows, keep the highest id you saw, and start the next poll from it. sinceId is exclusive, so nothing is delivered twice, and a new change always takes a higher id than every change already in the feed, so it appends to the end and never shifts a page you have already read. since is inclusive, filters on when we recorded the change rather than on changedDate — so a back-dated entry is not missed — and applies together with sinceId when both are sent. Paging without sinceId is not a reliable feed: an offset is not a watermark, and page stops at 1000. totalRecords stops there too — it is counted only as far as page 1000 reaches, so it caps at 1000 × pageSize and means "at least this many" once it is that; stop on a short page, not on a count. Under concurrent writes a change can become visible just after a higher id, so a consumer that must not miss one resumes from the previous poll's watermark and de-duplicates by id. fnr is normalised before matching — trimmed, spaces and leading zeros removed, case left alone — so 034853 f and 34853f are the same company, exactly as on GET /businesses. Use GET /globalchanges for the same feed across all four registers.
|
|
675
948
|
*
|
|
676
949
|
* @tags Businesses
|
|
677
950
|
* @name V1BusinessesChangesList
|
|
@@ -737,6 +1010,23 @@ class Api extends HttpClient {
|
|
|
737
1010
|
format: "json",
|
|
738
1011
|
...params,
|
|
739
1012
|
}),
|
|
1013
|
+
/**
|
|
1014
|
+
* @description Ranks cities and City+ZipCode combinations against one term and answers the best few of both, as one ranking split into two lists — what a location filter's type-ahead needs, where /addresses/locations and /addresses/cities are the paged catalogues behind it. Ordered by where the term sits in the label, then by the shorter label, then by company count, so "wien" answers Wien before Wiener Neustadt and before every 1xxx ZIP that carries it. A term shorter than two characters is ignored and the biggest groups come back instead. top caps both lists together, not each.
|
|
1015
|
+
*
|
|
1016
|
+
* @tags Addresses
|
|
1017
|
+
* @name V1AddressesSuggestList
|
|
1018
|
+
* @summary Location autocomplete
|
|
1019
|
+
* @request GET:/api/v1/addresses/suggest
|
|
1020
|
+
* @secure
|
|
1021
|
+
*/
|
|
1022
|
+
v1AddressesSuggestList: (query, params = {}) => this.request({
|
|
1023
|
+
path: `/api/v1/addresses/suggest`,
|
|
1024
|
+
method: "GET",
|
|
1025
|
+
query: query,
|
|
1026
|
+
secure: true,
|
|
1027
|
+
format: "json",
|
|
1028
|
+
...params,
|
|
1029
|
+
}),
|
|
740
1030
|
/**
|
|
741
1031
|
* @description Returns unique zip codes from addresses with pagination and optional search.
|
|
742
1032
|
*
|