LifeCare.ID® Developer Docs Public

LifeCare Network — Developer Documentation

Build on a patient-controlled identity, consent, and authorization layer for health data — that stores no health data, ever.

LifeCare.ID lets your application authenticate users with a self-sovereign identity and request machine-readable, cryptographically signed, revocable consent over a person's health data — wherever that data actually lives. A full compromise of LifeCare.ID yields tokens, public keys, and consent metadata, never a single health value.

This documentation is for two kinds of developer:

You are building… Start here
An application that signs users in and reads consented health data (a coach, a clinic portal, a research tool) Getting startedAuthentication
A data source / connector that holds data and serves it to authorized requesters (a device bridge, a lab feed, a home node) Data sources & connectors

The status legend (read this first)

LifeCare.ID is shipping incrementally. To keep this documentation honest, every capability is tagged:

Where a page mixes both, each section carries its own tag. When in doubt, the contract file is the source of truth for what exists.


The two-sided network

LifeCare.ID is the trust fabric between people, the apps they use, and the places their data lives. It is not a data store, an aggregator, or a proxy.

        ┌─────────────────────────────────────────────────────────┐
        │                    LifeCare.ID                           │
        │   identity (DIDs) · consent (receipts + ledger) ·        │
        │   authorization (UMA-style tokens + revocation)          │
        └───────▲───────────────────▲───────────────────▲─────────┘
                │ sign-in /          │ grant / revoke    │ token
                │ token              │ consent           │ validation
   ┌────────────┴──────┐   ┌─────────┴────────┐   ┌──────┴───────────┐
   │  Relying-party    │   │   The person     │   │  Data source /   │
   │  APP (requester)  │   │  (DID holder)    │   │  connector       │
   │  e.g. ProForta    │   │  device-held key │   │  (resource host) │
   └─────────┬─────────┘   └──────────────────┘   └──────┬───────────┘
             │                                            │
             │   raw data flows DIRECTLY, app ↔ source    │
             └────────────────────────────────────────────┘
                 (LifeCare.ID is never in this path)

The invariant. For any data value d held by a resource holder R and delivered to a requester Q, the transfer R → Q is direct. No LifeCare.ID component is an intermediary, cache, proxy, or co-processor of d. LifeCare.ID participates only in {DID, public key, token, scope, consent receipt, revocation status}. This is an architectural guarantee you can rely on — and a rule your integration must respect (see Security & compliance).


Core roles

Role Who What they hold
DID holder (the person) end user the private signing key, on their device (never leaves it)
Relying-party app your app a client_id/client_secret, user sessions, access tokens
Data source / connector a resource host the actual data + the obligation to honor tokens
Authorization server (AS) LifeCare.ID DID authority, consent registry, token issuer, revocation registry
Trust partner a medical practice (prod) / node operator (MVP) approves identity recovery / key rotation

See Concepts for the full model.


Documentation map

Foundations - Concepts — DIDs, identity custody, the AS, scopes, consent, the invariant - Bill of rights — why you can't be deplatformed: the structural guarantees (and the honest levers) ✅ - Getting started — a relying-party app, end to end, in minutes (with cURL / JS / Python) - Build a healthspan app, end to end — the sequel: what the node serves once you hold a token (interpreted context, write-back, the Sense/Watch/Reason/Learn/Guard capability map), and the two-system model ✅ / 🛣️ - Sandbox — self-serve a client + a passkey-free test identity; engage with no access request ✅ - Quickstart repos ↗ — clone-and-run reference apps (an app + a data source), zero dependencies

Building an app - Authentication — Sign in with LifeCare.ID — OAuth 2.0 + PKCE ✅ - Onboarding & accounts — design patterns for account creation + onboarding, and the pitfalls ✅ - Your data & the DID — keying your CRM on the DID: the data boundary, durability, revocation/retention, and your responsibilities ✅ - Scopes & consent — the scope vocabulary, purpose binding, receipts, the ledger ✅ - Authorization & tokens — UMA-pattern data-access tokens, introspection, revocation ✅ - Embedding the consent panel — the "Powered by LifeCare.ID" data-rights panel ✅

Building a data source - Data sources & connectors — joining the network as a resource host ✅ / 🛣️

Guides - Recipes — task-oriented how-tos: verify-node badge, embed the panel, become a CGM source, handle revocation ✅

Reference - API reference — the full endpoint catalogue (today's contract) ✅ - Security & compliance — the zero-PHI invariant, your obligations, and verifying a node you integrate with ✅ - Procurement & compliance — a self-serve pack for security reviewers (zero-PHI, BAA, GDPR, audit trail) ✅ - Roadmap — what's live, next, and trigger-gated ✅ · changelog ↗ - Developer terms — the terms you accept to get access ✅ - The developer portal — self-service: sandbox client registration + access gate live ✅; full portal (production registration, keys, governance) 🛣️


Status today

LifeCare.ID's L1–L3 layers (identity, consent, authorization) and the "Sign in with LifeCare.ID" federation handshake are live. App and data-source onboarding is operator-mediated today (your client is provisioned by the network operator) and self-service via the developer portal is on the roadmap — that gap is exactly what the portal page describes. Everything you need to integrate functionally exists now.

The health capabilities your app reads — interpreted context, and (on the roadmap) events, intelligence, and safety — are served by the node, not by LifeCare.ID (which by invariant holds no health data). Build a healthspan app, end to end is the map of that surface and what's live vs roadmap.