Skip to content

Kvipp deep links

Integrations can open Kvipp in the user’s browser with a person, asset type (equipment category), and/or specific asset already loaded. The user lands on the normal Kvipp home screen and can continue with training, competence checks, or scanning.

Environment URL
Production https://kvipp.it
Staging / test https://test.kvipp.io

All examples below use {base} as a placeholder for the correct host.

What you have Deep link
Registry UUID for a person /person/{uuid}
Registry UUID for an asset type /asset_type/{uuid}
Registry UUID for an asset /asset/{uuid}
Several Registry UUIDs at once /open?person_id=&asset_type_id=&asset_id=
Your system’s ID stored as a Registry external identifier /identifier/{identity}?source={source}
Kvipp 8-character ID /id/{id}
Brand and model only (no UUID yet) /create_asset_type?brand=&model=

After the link opens, Kvipp shows a short loading screen, fetches data from the Registry, stores the selection in the user’s session, and redirects to the home page. If the ID cannot be resolved, the user sees a friendly “not found” page.


Use these when your integration already works with the Registry API and you have stable id values for people, asset types, or assets.

Person

{base}/person/5574043f-4fc1-48d2-82a6-7dcf73418390

Asset type (brand/model category in Registry)

{base}/asset_type/6dd19106-3708-4fea-becc-45ae3c001a4f

Asset (serial-number instance; Kvipp also loads the linked asset type)

{base}/asset/22934840-6214-4b84-bfde-7b239c6d2e33

UUIDs must be valid Registry IDs. Unknown or malformed IDs show the not-found page.

When you want both a person and equipment type ready for training (common for LMS or portal “start training” buttons):

{base}/open?person_id=5574043f-4fc1-48d2-82a6-7dcf73418390&asset_type_id=6dd19106-3708-4fea-becc-45ae3c001a4f

Query parameters:

Parameter Required Description
person_id No* Registry person UUID
asset_type_id No* Registry asset type UUID
asset_id No* Registry asset UUID
reset No true clears existing person/equipment selections in the browser session before applying the link
source No Integrator slug for usage analytics (see Source parameter)

* At least one of person_id, asset_type_id, or asset_id must be present.

If you pass both asset_id and asset_type_id, the asset record determines the asset type.


Use this when your integration stores its own IDs rather than Registry UUIDs. First register the mapping in Registry as an external identifier (source + identity → person, asset type, or asset). Then open Kvipp with:

{base}/identifier/{your_id}?source={your_source_name}

Example — follow the identifiers example: person xyz123 in system xyz linked in Registry:

https://kvipp.it/identifier/xyz123?source=xyz

Another example — ERP person emp-8842 with source=acme_hr:

https://kvipp.it/identifier/emp-8842?source=acme_hr

The source string must match what you used when creating the identifier in Registry (Kvipp normalizes it to lowercase before lookup). Kvipp resolves the identifier and pre-fills person, asset type, or asset depending on what it points to.

If you already have Registry UUIDs from API sync, Registry UUID links are simpler and skip the identifier lookup. Identifiers are better when UUIDs may change (e.g. after merges) or when your product only knows its own IDs.

See External identifiers for the Registry side of this workflow.


For Kvipp’s own 8-character identifiers (e.g. on Kvipp ID QR codes):

{base}/id/abc12345

Equivalent QR URL form: https://kvipp.it/id/abc12345.

This replaces any previous person/equipment selection in the session with the scan result.


Add an optional source query parameter to tell Kvipp which system built the link. Kvipp always normalizes source to lowercase when the link is opened.

Route source
/person/{uuid} Optional
/asset_type/{uuid} Optional
/asset/{uuid} Optional
/open?… Optional
/create_asset_type?… Optional
/identifier/{identity}?… Required (Registry identifier source; also used for analytics)

Use a stable slug for your product or integration, for example stemplet, equipment_page, or your registered identifier source name (acme_hr). The parameter does not change how the link resolves — it is for usage measurement only (except on /identifier/…, where it is required for Registry lookup).

Examples:

{base}/person/5574043f-4fc1-48d2-82a6-7dcf73418390?source=stemplet
{base}/open?person_id=5574043f-4fc1-48d2-82a6-7dcf73418390&asset_type_id=6dd19106-3708-4fea-becc-45ae3c001a4f&source=equipment_page

We recommend lowercase slugs in your links; mixed case (e.g. source=Stemplet) is accepted and stored as stemplet.


Deprecation (from Q4 2026): The /create_asset_type endpoint will require special authentication from the fourth quarter of 2026. Integrations that rely on brand/model deep links should migrate to Registry UUID links (/asset_type/{uuid}) where possible. Contact support@digiquip.no for authentication details before the deadline.

When you do not have a Registry UUID yet, but you know manufacturer and model (e.g. from a machine nameplate or product catalogue):

{base}/create_asset_type?brand=Genie&model=S60X&source=equipment_page

URL-encode special characters in brand and model. Kvipp finds or creates the asset type in Registry and selects it for the session.

Prefer Registry UUID links when you already sync with the Registry — they avoid duplicate asset types from spelling variants.


Outcome User sees
Success Kvipp home (/) with session pre-filled
Unknown ID, invalid UUID, or Registry miss Not-found page (/somethings_off?topic=not_found)

Test against staging (test.kvipp.io + test-registry.kvipp.io) before production.

Questions: support@digiquip.no