Skip to content

Commit 99bbf41

Browse files
committed
Add apps/list.json (HDS bridge discovery, schemaVersion 1)
Wires the new dynamic bridge-discovery flow per plan 63 Phase 4. The discovery file is referenced from index.json as a Pryv resource: "applications": { "url": "apps/list.json" } Initial v1 content covers the three reference bridges: - bridge-mira (server-side OAuth, embed=false, lastSync=api) - bridge-cyclefeminin (client file-upload, embed=true, lastSync=pryv-stream) - bridge-femm (file-upload, disabled=true until its UI ships) Full spec: see HOOK-PROTOCOL.md in the consuming plan (not committed here to keep this repo HDS-platform-agnostic — assets-demo can serve any Pryv.io operator; the spec lives with the consumer plan).
1 parent a797573 commit 99bbf41

2 files changed

Lines changed: 115 additions & 0 deletions

File tree

apps/list.json

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
{
2+
"schemaVersion": 1,
3+
"version": "2026-05-27.1",
4+
"apps": [
5+
{
6+
"id": "bridge-mira",
7+
"name": "Mira",
8+
"description": {
9+
"en": "Fertility Tracker",
10+
"fr": "Tracker de fertilité"
11+
},
12+
"icon": {
13+
"type": "base64",
14+
"value": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAAeFBMVEU/wV////8+wV41v1guvlT3/fhizHzI7NDM7dOj37Hj9udBw2Lo9+w5wFsyvlb6/vtKxWldyndQxm1WyHKy5b7a8uDV8dzC6stvz4a558MpvVDx+/Se3q2N2J591JJ30YxqzoKR2qKE1Jao4LSy5L2g36+Y3ah805DTzoNDAAAExklEQVR4nO3c2XraMBAFYJDMakZ4YTdLwIS8/xsW0rQxCZ4ZxTLtxfkv+vVmiI8ljWXRtNMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgB8yRGT/uP7deJZX62/lnvUtM2SdSVen43Y0W8/K7fF0SGNn1Slv0ZJb/ahcr8+jy3G/SsmjvmXGRfF+NJxMu1XTyaI8ZZEjsZ6cS4/rcXFf35sMXg8msv88pLGbbDS/v7iK8TndsBdJbvOyLurKp4ttwte3jVxyGddd3odJmdUOJNn83BPq57tYMRHaQa6/lq7v3fLl4TUauxpqyosyd/9iHE2U6vJdTQf96HtGOivLu71ZFj07o7HZrHb1Pcq4TL+NAx309b0yfu56JNrWtoe6axzFX4fRLj3qJzt63nI0tr/wzHczX30ZRsq10/zdILPPCuiOXlf21/T1S0S79aov9s/pOGR8Jte9QXI304yVnjVflM/Y5lD2kxn6xzy9m2m08qxfflvM4QPm8wYBrw2jfxdxM/CsHyYtR6TMc15907uLSJnvkl60G7F5wGvEl2pE59dsruZtRqSk2RT9rUgrl2g63vdskbTWbgyp9pGiSbVdWI+dzYdBax01WgcJeB2F6iVG/g+fWdRSwEuggN3uubLJNIn//uHo2ghIfZ+ttuBU6TbO/871+i10G2Oat9FPRfZ5iabj37/mLSxFp36bU1lW5pn3zuaqDD5PqR80YLe7r8xT69/CpmnoeRo12Y0+Mo4/5xllvm+b1+1b4H76k4kkuDRrNt2XoIOofM0pxovhYLgYq0ZkUtmaGPMxRaZF0VO27HnQl0XaK674/JYnZCNHcbYqFXekOoi3OTJeXg5pnuX9w2U5UUQ8hBxEK67C+Sm2ZN6/bbj+SS4+iO9FY6oO4m7VuX1hcSsma5OTvO6HAdspvQg/rDjZL0dh15Ar6TG3rw7C/Xc5xrqVlDFkO7XCs3Dw8KiPaMaX8e2Qop2wnSuDnUyZmG8do7o1705s15jmfK9wKb+aJ51QvUY4ur3Un0c7/iFzEQaBYn6mBntgOPb9ZrvhSt+40oX01Ca+xa0D9RpjuN695q+SPaUoMmmaUcL97HGg/Tel3A8RjhSM40bhTZxmlp0E4h3SsdyW6iT1M8qZ6rM8zdhdufjTlQmZZbiQ5wl3SrGQr5ByppGvgyQ0hnlyK24iN8mLWJ5mjnmqKm6wJiFzjjKJFfWWuUOKhcS9mWrukIw7nxEa6W9cO10pnmjMHZL2DDrEdDPVSud2tTvFB7iyvj7IM9/u6m+h6sjLMM+0V8Uzm7vF+yAJ6ydZoTpf516fFY8Ldplo5oDIjmo/X7n1Zc54loqFbJhTHGlnq8IkVO6aovqvOwaahMws3/4nCetf9zUnZiauTzhCQg0klCGhAAkbQ0IZEgqQsDEklCGhAAkbQ0IZEgqQsDEklCGhAAkbQ0IZEgqQsDEklCGhAAkbQ0IZEgqQsDEklCGhAAkbQ0IZEgqQsDEklCGhAAkbQ0IZEgqQsDH7Ou09NlX+3w3RsvYTVP8KOh7X1gf5V9Am69dJdb/PYfLaT9D9RkhaWx/ol9eojvbjTcNPaFoPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABP9QuXCGW4PbcCmAAAAABJRU5ErkJggg=="
15+
},
16+
"category": "medical",
17+
"provider": "Quanovate Inc.",
18+
"hook": {
19+
"initiate": {
20+
"method": "POST",
21+
"url": "https://bridge-mira.datasafe.dev/mira/initiate",
22+
"auth": "ApiEndpoint ${apiEndpoint}",
23+
"body": {
24+
"returnUrl": "${returnUrl}"
25+
},
26+
"openUrlField": "openUrl"
27+
},
28+
"open": {
29+
"url": "${openUrl}",
30+
"embed": false
31+
},
32+
"resync": {
33+
"initiate": {
34+
"method": "POST",
35+
"url": "https://bridge-mira.datasafe.dev/mira/resync",
36+
"auth": "ApiEndpoint ${apiEndpoint}"
37+
},
38+
"url": "${openUrl}",
39+
"embed": false
40+
},
41+
"disconnect": {
42+
"method": "POST",
43+
"url": "https://bridge-mira.datasafe.dev/mira/revoke",
44+
"auth": "ApiEndpoint ${apiEndpoint}"
45+
}
46+
},
47+
"lastSync": {
48+
"type": "api",
49+
"url": "https://bridge-mira.datasafe.dev/mira/lastSync",
50+
"auth": "ApiEndpoint ${apiEndpoint}",
51+
"field": "lastSyncedAt"
52+
}
53+
},
54+
{
55+
"id": "bridge-cyclefeminin",
56+
"name": "cyclefeminin",
57+
"description": {
58+
"en": "Import your cyclefeminin cycle history into HDS",
59+
"fr": "Importez votre historique de cycle cyclefeminin dans HDS"
60+
},
61+
"icon": {
62+
"type": "emoji",
63+
"value": "🌸"
64+
},
65+
"category": "health",
66+
"provider": "cyclefeminin.net",
67+
"hook": {
68+
"open": {
69+
"url": "https://healthdatasafe.github.io/bridge-cyclefeminin-net/",
70+
"embed": true,
71+
"params": {
72+
"apiEndpoint": "${apiEndpoint}",
73+
"return": "${returnUrl}"
74+
}
75+
}
76+
},
77+
"lastSync": {
78+
"type": "pryv-stream",
79+
"streamId": ".bridge-cyclefeminin.imports"
80+
}
81+
},
82+
{
83+
"id": "bridge-femm",
84+
"name": "FEMM",
85+
"description": {
86+
"en": "Import your FEMM Health cycle history into HDS",
87+
"fr": "Importez votre historique de cycle FEMM dans HDS"
88+
},
89+
"icon": {
90+
"type": "emoji",
91+
"value": "🩺"
92+
},
93+
"category": "health",
94+
"provider": "FEMM Health",
95+
"disabled": true,
96+
"hook": {
97+
"open": {
98+
"url": "https://healthdatasafe.github.io/bridge-femm/",
99+
"embed": true,
100+
"params": {
101+
"apiEndpoint": "${apiEndpoint}",
102+
"return": "${returnUrl}"
103+
}
104+
}
105+
},
106+
"lastSync": {
107+
"type": "pryv-stream",
108+
"streamId": ".bridge-femm.imports"
109+
}
110+
}
111+
]
112+
}

index.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
"css": {
77
"default": {"url": "default.css"}
88
},
9+
"applications": {
10+
"url": "apps/list.json"
11+
},
912
"lib-js": {
1013
"buttonSignIn": {
1114
"css": "lib-js/buttonSignIn.css",

0 commit comments

Comments
 (0)