oficina / home Public

Clone
git clone https://amadan.net/oficina/home

Plain git — no account needed to clone.

Download

Download this file

1{
2 "version": 1,
3 "id": "credential-current-v1",
4 "role": "credential",
5 "validation_policy": 1,
6 "migrations": [
7 {
8 "id": "home/0001_people",
9 "checksum": "5e65372f0796be99d6fcbba09c97b92ed36a5faf1bf36a53be6f5caf0771eb9b"
10 },
11 {
12 "id": "home/0002_signin_links",
13 "checksum": "11429f3a12f605f0e24f890952a2831a44d8e5030d10471c7a5c1c3672e630a7"
14 },
15 {
16 "id": "oficina_credential_operator/0001_operator",
17 "checksum": "102312b9494947e28b58710e47081a6d6d601812217146e5a241c2b9b5c1471e"
18 },
19 {
20 "id": "oficina_credential_operator/0002_operator_key_identity",
21 "checksum": "4a5a57d70bb06c7411706b98267ecebe341e55e6252035c44428e47c2c6cad6b"
22 },
23 {
24 "id": "passkey/0001_init",
25 "checksum": "56d5073a880c3b1b8330654873b13cbd42a72596138499380b5a013e4d43196e"
26 },
27 {
28 "id": "sessions/0001_init",
29 "checksum": "50bbfc92cfcc708b09b672b71f24da789ae6065f426c9db7af61befa90098bbb"
30 }
31 ],
32 "objects": [
33 {
34 "Type": "index",
35 "Name": "idx_signin_links_expires_at",
36 "Table": "signin_links",
37 "SQL": "CREATE INDEX idx_signin_links_expires_at ON signin_links(expires_at)"
38 },
39 {
40 "Type": "index",
41 "Name": "passkey_credentials_subject",
42 "Table": "passkey_credentials",
43 "SQL": "CREATE INDEX passkey_credentials_subject\n ON passkey_credentials (subject)"
44 },
45 {
46 "Type": "index",
47 "Name": "passkey_recovery_codes_subject",
48 "Table": "passkey_recovery_codes",
49 "SQL": "CREATE INDEX passkey_recovery_codes_subject\n ON passkey_recovery_codes (subject)"
50 },
51 {
52 "Type": "index",
53 "Name": "sqlite_autoindex_credential_operator_results_1",
54 "Table": "credential_operator_results",
55 "SQL": ""
56 },
57 {
58 "Type": "index",
59 "Name": "sqlite_autoindex_credential_operator_results_2",
60 "Table": "credential_operator_results",
61 "SQL": ""
62 },
63 {
64 "Type": "index",
65 "Name": "sqlite_autoindex_passkey_challenges_1",
66 "Table": "passkey_challenges",
67 "SQL": ""
68 },
69 {
70 "Type": "index",
71 "Name": "sqlite_autoindex_passkey_credentials_1",
72 "Table": "passkey_credentials",
73 "SQL": ""
74 },
75 {
76 "Type": "index",
77 "Name": "sqlite_autoindex_passkey_pending_1",
78 "Table": "passkey_pending",
79 "SQL": ""
80 },
81 {
82 "Type": "index",
83 "Name": "sqlite_autoindex_passkey_recovery_codes_1",
84 "Table": "passkey_recovery_codes",
85 "SQL": ""
86 },
87 {
88 "Type": "index",
89 "Name": "sqlite_autoindex_people_1",
90 "Table": "people",
91 "SQL": ""
92 },
93 {
94 "Type": "index",
95 "Name": "sqlite_autoindex_people_2",
96 "Table": "people",
97 "SQL": ""
98 },
99 {
100 "Type": "index",
101 "Name": "sqlite_autoindex_rastrillo_migrations_1",
102 "Table": "rastrillo_migrations",
103 "SQL": ""
104 },
105 {
106 "Type": "index",
107 "Name": "sqlite_autoindex_sessions_1",
108 "Table": "sessions",
109 "SQL": ""
110 },
111 {
112 "Type": "index",
113 "Name": "sqlite_autoindex_signin_links_1",
114 "Table": "signin_links",
115 "SQL": ""
116 },
117 {
118 "Type": "table",
119 "Name": "_litestream_lock",
120 "Table": "_litestream_lock",
121 "SQL": "CREATE TABLE _litestream_lock (id INTEGER)"
122 },
123 {
124 "Type": "table",
125 "Name": "_litestream_seq",
126 "Table": "_litestream_seq",
127 "SQL": "CREATE TABLE _litestream_seq (id INTEGER PRIMARY KEY, seq INTEGER)"
128 },
129 {
130 "Type": "table",
131 "Name": "credential_operator_results",
132 "Table": "credential_operator_results",
133 "SQL": "CREATE TABLE credential_operator_results (\n operation_id TEXT PRIMARY KEY CHECK(length(operation_id)=43),\n action TEXT NOT NULL,\n sequence INTEGER NOT NULL UNIQUE CHECK(typeof(sequence)='integer' AND sequence\u003e0),\n authorization_head TEXT NOT NULL CHECK(length(authorization_head)=43),\n request_mac BLOB NOT NULL CHECK(typeof(request_mac)='blob' AND length(request_mac)=32),\n sealed_result BLOB NOT NULL CHECK(typeof(sealed_result)='blob' AND length(sealed_result) BETWEEN 29 AND 49180),\n completed_at INTEGER NOT NULL CHECK(typeof(completed_at)='integer' AND completed_at\u003e0)\n, operator_ref TEXT NOT NULL DEFAULT '')"
134 },
135 {
136 "Type": "table",
137 "Name": "credential_operator_state",
138 "Table": "credential_operator_state",
139 "SQL": "CREATE TABLE credential_operator_state (\n singleton INTEGER PRIMARY KEY CHECK(singleton=1),\n origin TEXT NOT NULL,\n installation TEXT NOT NULL,\n registry TEXT NOT NULL,\n device TEXT NOT NULL,\n sequence INTEGER NOT NULL CHECK(typeof(sequence)='integer' AND sequence\u003e0),\n head TEXT NOT NULL CHECK(length(head)=43),\n completed_at INTEGER NOT NULL CHECK(typeof(completed_at)='integer' AND completed_at\u003e0)\n, key_id TEXT NOT NULL DEFAULT '')"
140 },
141 {
142 "Type": "table",
143 "Name": "passkey_challenges",
144 "Table": "passkey_challenges",
145 "SQL": "CREATE TABLE passkey_challenges (\n challenge TEXT PRIMARY KEY,\n subject TEXT NOT NULL,\n purpose TEXT NOT NULL,\n expires_at TEXT NOT NULL\n)"
146 },
147 {
148 "Type": "table",
149 "Name": "passkey_credentials",
150 "Table": "passkey_credentials",
151 "SQL": "CREATE TABLE passkey_credentials (\n id TEXT PRIMARY KEY,\n subject TEXT NOT NULL,\n public_key BLOB NOT NULL,\n sign_count INTEGER NOT NULL DEFAULT 0,\n created_at TEXT NOT NULL\n)"
152 },
153 {
154 "Type": "table",
155 "Name": "passkey_pending",
156 "Table": "passkey_pending",
157 "SQL": "CREATE TABLE passkey_pending (\n token_hash TEXT PRIMARY KEY,\n subject TEXT NOT NULL,\n method TEXT NOT NULL DEFAULT '',\n return_to TEXT NOT NULL DEFAULT '',\n expires_at TEXT NOT NULL\n)"
158 },
159 {
160 "Type": "table",
161 "Name": "passkey_recovery_codes",
162 "Table": "passkey_recovery_codes",
163 "SQL": "CREATE TABLE passkey_recovery_codes (\n code_hash TEXT PRIMARY KEY,\n subject TEXT NOT NULL,\n created_at TEXT NOT NULL\n)"
164 },
165 {
166 "Type": "table",
167 "Name": "people",
168 "Table": "people",
169 "SQL": "CREATE TABLE people (\n person_ref TEXT PRIMARY KEY,\n blind_index TEXT NOT NULL UNIQUE, -- UNIQUE already indexes it; no second index\n created_at TEXT NOT NULL\n)"
170 },
171 {
172 "Type": "table",
173 "Name": "rastrillo_migrations",
174 "Table": "rastrillo_migrations",
175 "SQL": "CREATE TABLE rastrillo_migrations (\n id TEXT PRIMARY KEY,\n applied_at TEXT NOT NULL,\n checksum TEXT NOT NULL\n)"
176 },
177 {
178 "Type": "table",
179 "Name": "sessions",
180 "Table": "sessions",
181 "SQL": "CREATE TABLE sessions (\n token_hash TEXT PRIMARY KEY,\n subject TEXT NOT NULL,\n method TEXT NOT NULL DEFAULT '',\n auth_time TEXT NOT NULL DEFAULT '',\n created_at TEXT NOT NULL,\n expires_at TEXT NOT NULL\n)"
182 },
183 {
184 "Type": "table",
185 "Name": "signin_links",
186 "Table": "signin_links",
187 "SQL": "CREATE TABLE signin_links (\n token_hash TEXT PRIMARY KEY,\n sealed_address BLOB NOT NULL,\n purpose TEXT NOT NULL,\n expires_at TEXT NOT NULL\n)"
188 }
189 ],
190 "empty_tables": []
191}
192