PrPackregister
How it worksPrinciples

For data & BI teams

Sync your packaging register into your data warehouse

The sync API (/api/v1) exposes a workspace's packaging register so an integrator can load it incrementally into a warehouse with standard ELT tooling. We ship no bespoke per-warehouse connector — you wire one together in your own tool from the recipes below. A register:write-scoped key also opens the other direction: upserting item types, items and attributes back in from your ERP or PLM, keyed by your own external reference.

The same /api/v1 also powers an MCP server, so Claude or any other MCP-capable agent can read and write your register directly — see connecting an agent.

What syncs

Eight read-only GET resources, one per register entity, sharing an identical query, pagination and error contract.

GET /item-typesPackaging item types (e.g. Box, Pallet) with embedded external refs.
GET /attributesAttribute definitions, incl. select options, with external refs.
GET /itemsPackaging items, with external refs. Accepts ?q= to find one by name or article number.
GET /item-attribute-valuesOne row per (item, attribute) pair; select choices in selectedOptions.
GET /item-attribute-scoped-valuesPer-selection sub-attribute values (e.g. weight per chosen material).
GET /bom-linesBill-of-materials lines: component quantity within a parent item.
GET /external-referencesThe flat, authoritative external-reference join table to your ERP/PLM.
GET /complianceMaterialized per-(item, profile) compliance status, incl. which requirements are open.

Every record carries the full audit set (createdAt, updatedAt, deletedAt and their …By counterparts). A register:write-scoped key additionally unlocks a growing set of upsert endpoints — see the OpenAPI document for the complete, authoritative field inventory.

Built for incremental loads

Workspace API key

A workspace admin or owner creates a key under Workspace settings → "API access", scoped to register:read. The key resolves its own workspace — there is no tenant parameter to widen it.

Cursor + watermark

Page with an opaque nextCursor until hasMore is false, then resume future runs from the response watermark — not your own max updatedAt — passed back as updated_since.

Writing back

A register:write-scoped key unlocks upsert-by-external-reference endpoints: idempotent, keyed by your own reference rather than a Packregister id, so a repeated call never creates a duplicate.

PUT /item-types/external/{system}/{identifierType}/{externalId}Upsert an item type keyed by your own external reference. Once linked, further calls are a partial update.
PUT /items/external/{system}/{identifierType}/{externalId}Upsert an item; its item type is resolved via that item type’s own external reference, not an internal id.
PUT /attributes/external/{system}/{identifierType}/{externalId}Upsert an attribute definition.
PUT /attribute-options/external/{system}/{identifierType}/{externalId}Upsert a select option on an existing attribute.
PUT /items/{id}/attribute-valuesSet attribute values on an item by our internal id — no external reference needed.

For an initial load of 1,000-10,000+ items, use POST /items/bulk instead of one request per item — up to 20,000 entries per call. It answers 202 Accepted immediately with a jobId, then processes each item as its own background job. Poll GET /items/bulk/{jobId} for the aggregate counts and a per-item ok / retrying / failed / pending result — a job is never all-or-nothing, and a permanently failed item stays visible rather than silently dropped.

Pick your tool

Each recipe is copy-pasteable and requires only a register:read key.

Airbyte

A declarative Connector Builder manifest — paste it in as-is, or commit it as a low-code connector. Uses DatetimeBasedCursor with a lookback window to approximate the watermark model.

version: 6.44.0
type: DeclarativeSource

check:
  type: CheckStream
  stream_names:
    - items

dlt

A rest_api pipeline definition covering all eight resources, cursored on updatedAt with a 30-second safety lag, merging by id into any dlt destination.

RESOURCE_PATHS = [
    "item-types",
    "attributes",
    "items",
    "item-attribute-values",
    "item-attribute-scoped-values",
    "bom-lines",
    "external-references",
    "compliance",
]

Azure Data Factory / Fabric

REST Copy Activity pagination rules, plus a Web-activity pattern to capture the watermark a Copy Activity itself never exposes.

"paginationRules": {
  "QueryParameters.cursor": "$.nextCursor",
  "EndCondition:$.hasMore": "Const:false"
}

Power BI

The recommended route is a report off the warehouse a prior recipe already loaded, not the API directly — incremental state and cursor paging are ELT-tool work, not Power Query work.

Packregister /api/v1  --(Airbyte | dlt | ADF/Fabric)-->  Warehouse  --> Power BI
     register:read key                                  (Fabric,      (DirectQuery
                                                          Snowflake,     or Import)
                                                          BigQuery, ...)

Explore the full contract

Every endpoint, field and error shape, browsable — served without auth so a tool can read it before a key is configured.

PrPackregister

One reliable packaging catalog, with the evidence attached.

ProductHow it worksPrinciplesSector packagesWhat is a packaging register?Sync APISign in
LegalPrivacyTerms

Packregister is a product of AiPOX. Questions? [email protected]

Packregister stores no order lines, customers, prices or volumes. Those stay in the ERP and DWH of your own organisation.

One more read-only endpoint answers a different kind of question: GET /item-types/{id}/attribute-schema returns everything about one item type's attributes — type, unit, valid select options, sub-attribute relations — in a single call, instead of joining /item-types and /attributes yourself to know how to fill one in.

Tombstones, upserted by id

Deletes are soft: pass include_deleted=true on incremental runs and drop rows with a set deletedAt. Delivery is at-least-once, so always upsert by id, never blind-insert.

Page size defaults to 100, max 1000. Rate limit is 600 requests per 60-second window per key — sequence the eight resources rather than syncing them in parallel. external-references is the join key back to your ERP or PLM: package- and API-sourced references are unique per workspace and safe to join on; hand-made ones are not.

For an item that was never linked to an external reference at all — one created by hand in the register, or one you just found with ?q= — PUT /items/{id}/attribute-values sets its attribute values by that internal id instead. It's a full desired-set write, not a merge, so read the item's current values first and send the whole set back with your change included. Every write through this path lands the item in Draft status, with its prior state saved so it can be rolled back — the same review step as an edit made by hand.