@openvtc/trust-tasks 0.21.3 → 0.21.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +72 -0
- package/dist/_shared/components.d.ts +210 -2
- package/dist/_shared/components.d.ts.map +1 -1
- package/dist/auth/_shared/0.1/passkey-invite.d.ts +16 -0
- package/dist/auth/_shared/0.1/passkey-invite.d.ts.map +1 -0
- package/dist/auth/_shared/0.1/passkey-invite.js +6 -0
- package/dist/auth/_shared/0.1/passkey-invite.js.map +1 -0
- package/dist/auth/passkey/admin-list/0.1/payload.d.ts +484 -0
- package/dist/auth/passkey/admin-list/0.1/payload.d.ts.map +1 -0
- package/dist/auth/passkey/admin-list/0.1/payload.js +257 -0
- package/dist/auth/passkey/admin-list/0.1/payload.js.map +1 -0
- package/dist/auth/passkey/enroll/invite/list/0.1/payload.d.ts +393 -0
- package/dist/auth/passkey/enroll/invite/list/0.1/payload.d.ts.map +1 -0
- package/dist/auth/passkey/enroll/invite/list/0.1/payload.js +234 -0
- package/dist/auth/passkey/enroll/invite/list/0.1/payload.js.map +1 -0
- package/dist/auth/passkey/enroll/invite/revoke/0.1/payload.d.ts +228 -0
- package/dist/auth/passkey/enroll/invite/revoke/0.1/payload.d.ts.map +1 -0
- package/dist/auth/passkey/enroll/invite/revoke/0.1/payload.js +138 -0
- package/dist/auth/passkey/enroll/invite/revoke/0.1/payload.js.map +1 -0
- package/dist/auth/passkey/enroll/invite/update/0.1/payload.d.ts +459 -0
- package/dist/auth/passkey/enroll/invite/update/0.1/payload.d.ts.map +1 -0
- package/dist/auth/passkey/enroll/invite/update/0.1/payload.js +286 -0
- package/dist/auth/passkey/enroll/invite/update/0.1/payload.js.map +1 -0
- package/dist/auth/step-up/start/0.1/payload.d.ts +420 -0
- package/dist/auth/step-up/start/0.1/payload.d.ts.map +1 -0
- package/dist/auth/step-up/start/0.1/payload.js +232 -0
- package/dist/auth/step-up/start/0.1/payload.js.map +1 -0
- package/dist/did-management/_shared/0.1/service-instance.d.ts +1 -1
- package/dist/did-management/_shared/0.1/service-instance.d.ts.map +1 -1
- package/dist/did-management/_shared/0.2/metrics-snapshot.d.ts +16 -0
- package/dist/did-management/_shared/0.2/metrics-snapshot.d.ts.map +1 -0
- package/dist/did-management/_shared/0.2/metrics-snapshot.js +6 -0
- package/dist/did-management/_shared/0.2/metrics-snapshot.js.map +1 -0
- package/dist/did-management/_shared/0.2/service-instance.d.ts +16 -0
- package/dist/did-management/_shared/0.2/service-instance.d.ts.map +1 -0
- package/dist/did-management/_shared/0.2/service-instance.js +6 -0
- package/dist/did-management/_shared/0.2/service-instance.js.map +1 -0
- package/dist/did-management/agent-name/resolve/0.1/payload.d.ts +318 -0
- package/dist/did-management/agent-name/resolve/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/agent-name/resolve/0.1/payload.js +179 -0
- package/dist/did-management/agent-name/resolve/0.1/payload.js.map +1 -0
- package/dist/did-management/did/log/0.1/payload.d.ts +436 -0
- package/dist/did-management/did/log/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/did/log/0.1/payload.js +228 -0
- package/dist/did-management/did/log/0.1/payload.js.map +1 -0
- package/dist/did-management/domain/list/0.1/payload.d.ts +423 -0
- package/dist/did-management/domain/list/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/domain/list/0.1/payload.js +244 -0
- package/dist/did-management/domain/list/0.1/payload.js.map +1 -0
- package/dist/did-management/identity/list/0.1/payload.d.ts +494 -0
- package/dist/did-management/identity/list/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/identity/list/0.1/payload.js +274 -0
- package/dist/did-management/identity/list/0.1/payload.js.map +1 -0
- package/dist/did-management/identity/retire/0.1/payload.d.ts +242 -0
- package/dist/did-management/identity/retire/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/identity/retire/0.1/payload.js +142 -0
- package/dist/did-management/identity/retire/0.1/payload.js.map +1 -0
- package/dist/did-management/registry/admin-register/0.1/payload.d.ts +1 -1
- package/dist/did-management/registry/admin-register/0.1/payload.d.ts.map +1 -1
- package/dist/did-management/registry/check/0.1/payload.d.ts +639 -0
- package/dist/did-management/registry/check/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/registry/check/0.1/payload.js +383 -0
- package/dist/did-management/registry/check/0.1/payload.js.map +1 -0
- package/dist/did-management/registry/get/0.1/payload.d.ts +632 -0
- package/dist/did-management/registry/get/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/registry/get/0.1/payload.js +381 -0
- package/dist/did-management/registry/get/0.1/payload.js.map +1 -0
- package/dist/did-management/registry/list/0.1/payload.d.ts +661 -0
- package/dist/did-management/registry/list/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/registry/list/0.1/payload.js +398 -0
- package/dist/did-management/registry/list/0.1/payload.js.map +1 -0
- package/dist/did-management/registry/purge-domain/0.1/payload.d.ts +269 -0
- package/dist/did-management/registry/purge-domain/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/registry/purge-domain/0.1/payload.js +160 -0
- package/dist/did-management/registry/purge-domain/0.1/payload.js.map +1 -0
- package/dist/did-management/replica/domain/assign/0.1/payload.d.ts +233 -0
- package/dist/did-management/replica/domain/assign/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/replica/domain/assign/0.1/payload.js +143 -0
- package/dist/did-management/replica/domain/assign/0.1/payload.js.map +1 -0
- package/dist/did-management/replica/domain/purge/0.1/payload.d.ts +257 -0
- package/dist/did-management/replica/domain/purge/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/replica/domain/purge/0.1/payload.js +155 -0
- package/dist/did-management/replica/domain/purge/0.1/payload.js.map +1 -0
- package/dist/did-management/replica/domain/unassign/0.1/payload.d.ts +257 -0
- package/dist/did-management/replica/domain/unassign/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/replica/domain/unassign/0.1/payload.js +155 -0
- package/dist/did-management/replica/domain/unassign/0.1/payload.js.map +1 -0
- package/dist/did-management/replica/domain/upsert/0.1/payload.d.ts +401 -0
- package/dist/did-management/replica/domain/upsert/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/replica/domain/upsert/0.1/payload.js +241 -0
- package/dist/did-management/replica/domain/upsert/0.1/payload.js.map +1 -0
- package/dist/did-management/server/config/0.1/payload.d.ts +838 -0
- package/dist/did-management/server/config/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/server/config/0.1/payload.js +444 -0
- package/dist/did-management/server/config/0.1/payload.js.map +1 -0
- package/dist/did-management/server/info/0.1/payload.d.ts +285 -0
- package/dist/did-management/server/info/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/server/info/0.1/payload.js +160 -0
- package/dist/did-management/server/info/0.1/payload.js.map +1 -0
- package/dist/did-management/server/metrics/0.1/payload.d.ts +674 -0
- package/dist/did-management/server/metrics/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/server/metrics/0.1/payload.js +387 -0
- package/dist/did-management/server/metrics/0.1/payload.js.map +1 -0
- package/dist/did-management/stats/get/0.1/payload.d.ts +349 -0
- package/dist/did-management/stats/get/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/stats/get/0.1/payload.js +187 -0
- package/dist/did-management/stats/get/0.1/payload.js.map +1 -0
- package/dist/did-management/stats/timeseries/0.1/payload.d.ts +381 -0
- package/dist/did-management/stats/timeseries/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/stats/timeseries/0.1/payload.js +227 -0
- package/dist/did-management/stats/timeseries/0.1/payload.js.map +1 -0
- package/dist/git-ns/namespace/list/0.1/payload.d.ts +1343 -0
- package/dist/git-ns/namespace/list/0.1/payload.d.ts.map +1 -0
- package/dist/git-ns/namespace/list/0.1/payload.js +704 -0
- package/dist/git-ns/namespace/list/0.1/payload.js.map +1 -0
- package/dist/git-ns/repo/list/0.1/payload.d.ts +1377 -0
- package/dist/git-ns/repo/list/0.1/payload.d.ts.map +1 -0
- package/dist/git-ns/repo/list/0.1/payload.js +744 -0
- package/dist/git-ns/repo/list/0.1/payload.js.map +1 -0
- package/dist/git-ns/view/0.5/payload.d.ts +1722 -0
- package/dist/git-ns/view/0.5/payload.d.ts.map +1 -0
- package/dist/git-ns/view/0.5/payload.js +1024 -0
- package/dist/git-ns/view/0.5/payload.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -1
- package/dist/vtc/_shared/0.1/invite.d.ts +1 -1
- package/dist/vtc/_shared/0.1/invite.d.ts.map +1 -1
- package/dist/vtc/admin/invites/list/0.1/payload.d.ts +1 -1
- package/dist/vtc/admin/invites/list/0.1/payload.d.ts.map +1 -1
- package/dist/webvh/_shared/0.1/sync-update.d.ts +16 -0
- package/dist/webvh/_shared/0.1/sync-update.d.ts.map +1 -0
- package/dist/webvh/_shared/0.1/sync-update.js +6 -0
- package/dist/webvh/_shared/0.1/sync-update.js.map +1 -0
- package/dist/webvh/_shared/0.1/witness-key.d.ts +16 -0
- package/dist/webvh/_shared/0.1/witness-key.d.ts.map +1 -0
- package/dist/webvh/_shared/0.1/witness-key.js +6 -0
- package/dist/webvh/_shared/0.1/witness-key.js.map +1 -0
- package/dist/webvh/sync/batch/0.1/payload.d.ts +503 -0
- package/dist/webvh/sync/batch/0.1/payload.d.ts.map +1 -0
- package/dist/webvh/sync/batch/0.1/payload.js +290 -0
- package/dist/webvh/sync/batch/0.1/payload.js.map +1 -0
- package/dist/webvh/sync/delete/0.2/payload.d.ts +242 -0
- package/dist/webvh/sync/delete/0.2/payload.d.ts.map +1 -0
- package/dist/webvh/sync/delete/0.2/payload.js +148 -0
- package/dist/webvh/sync/delete/0.2/payload.js.map +1 -0
- package/dist/webvh/sync/update/0.2/payload.d.ts +315 -0
- package/dist/webvh/sync/update/0.2/payload.d.ts.map +1 -0
- package/dist/webvh/sync/update/0.2/payload.js +177 -0
- package/dist/webvh/sync/update/0.2/payload.js.map +1 -0
- package/dist/webvh/witness/key/create/0.1/payload.d.ts +346 -0
- package/dist/webvh/witness/key/create/0.1/payload.d.ts.map +1 -0
- package/dist/webvh/witness/key/create/0.1/payload.js +202 -0
- package/dist/webvh/witness/key/create/0.1/payload.js.map +1 -0
- package/dist/webvh/witness/key/delete/0.1/payload.d.ts +237 -0
- package/dist/webvh/witness/key/delete/0.1/payload.d.ts.map +1 -0
- package/dist/webvh/witness/key/delete/0.1/payload.js +141 -0
- package/dist/webvh/witness/key/delete/0.1/payload.js.map +1 -0
- package/dist/webvh/witness/key/list/0.1/payload.d.ts +349 -0
- package/dist/webvh/witness/key/list/0.1/payload.d.ts.map +1 -0
- package/dist/webvh/witness/key/list/0.1/payload.js +204 -0
- package/dist/webvh/witness/key/list/0.1/payload.js.map +1 -0
- package/dist/webvh/witness/sign/0.1/payload.d.ts +401 -0
- package/dist/webvh/witness/sign/0.1/payload.d.ts.map +1 -0
- package/dist/webvh/witness/sign/0.1/payload.js +229 -0
- package/dist/webvh/witness/sign/0.1/payload.js.map +1 -0
- package/package.json +1 -1
- package/src/_shared/components.ts +210 -2
- package/src/auth/_shared/0.1/passkey-invite.ts +17 -0
- package/src/auth/passkey/admin-list/0.1/payload.ts +338 -0
- package/src/auth/passkey/enroll/invite/list/0.1/payload.ts +266 -0
- package/src/auth/passkey/enroll/invite/revoke/0.1/payload.ts +165 -0
- package/src/auth/passkey/enroll/invite/update/0.1/payload.ts +327 -0
- package/src/auth/step-up/start/0.1/payload.ts +287 -0
- package/src/did-management/_shared/0.1/service-instance.ts +1 -1
- package/src/did-management/_shared/0.2/metrics-snapshot.ts +17 -0
- package/src/did-management/_shared/0.2/service-instance.ts +17 -0
- package/src/did-management/agent-name/resolve/0.1/payload.ts +222 -0
- package/src/did-management/did/log/0.1/payload.ts +295 -0
- package/src/did-management/domain/list/0.1/payload.ts +280 -0
- package/src/did-management/identity/list/0.1/payload.ts +335 -0
- package/src/did-management/identity/retire/0.1/payload.ts +175 -0
- package/src/did-management/registry/admin-register/0.1/payload.ts +1 -1
- package/src/did-management/registry/check/0.1/payload.ts +415 -0
- package/src/did-management/registry/get/0.1/payload.ts +410 -0
- package/src/did-management/registry/list/0.1/payload.ts +434 -0
- package/src/did-management/registry/purge-domain/0.1/payload.ts +198 -0
- package/src/did-management/replica/domain/assign/0.1/payload.ts +173 -0
- package/src/did-management/replica/domain/purge/0.1/payload.ts +189 -0
- package/src/did-management/replica/domain/unassign/0.1/payload.ts +189 -0
- package/src/did-management/replica/domain/upsert/0.1/payload.ts +271 -0
- package/src/did-management/server/config/0.1/payload.ts +545 -0
- package/src/did-management/server/info/0.1/payload.ts +200 -0
- package/src/did-management/server/metrics/0.1/payload.ts +418 -0
- package/src/did-management/stats/get/0.1/payload.ts +237 -0
- package/src/did-management/stats/timeseries/0.1/payload.ts +279 -0
- package/src/git-ns/namespace/list/0.1/payload.ts +883 -0
- package/src/git-ns/repo/list/0.1/payload.ts +909 -0
- package/src/git-ns/view/0.5/payload.ts +1095 -0
- package/src/index.ts +38 -0
- package/src/vtc/_shared/0.1/invite.ts +1 -1
- package/src/vtc/admin/invites/list/0.1/payload.ts +1 -1
- package/src/webvh/_shared/0.1/sync-update.ts +17 -0
- package/src/webvh/_shared/0.1/witness-key.ts +17 -0
- package/src/webvh/sync/batch/0.1/payload.ts +336 -0
- package/src/webvh/sync/delete/0.2/payload.ts +181 -0
- package/src/webvh/sync/update/0.2/payload.ts +233 -0
- package/src/webvh/witness/key/create/0.1/payload.ts +231 -0
- package/src/webvh/witness/key/delete/0.1/payload.ts +171 -0
- package/src/webvh/witness/key/list/0.1/payload.ts +232 -0
- package/src/webvh/witness/sign/0.1/payload.ts +279 -0
|
@@ -0,0 +1,1343 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
|
|
3
|
+
* Source: specs/git-ns/namespace/list/0.1/payload.schema.json
|
|
4
|
+
*/
|
|
5
|
+
import type { Did_GitNsV0_3 as Did, Ext, ForgeHost, ForgeId, NamespaceId, Resource, Segment } from "../../../../_shared/components.js";
|
|
6
|
+
/**
|
|
7
|
+
* A level of the bridge's forge-neutral role ladder, lowest first: the vocabulary role drift's `observed` and `expected` are reported in. `none` is no direct role on the repository.
|
|
8
|
+
*/
|
|
9
|
+
export type MappedRole = "none" | "read" | "triage" | "write" | "maintain" | "admin";
|
|
10
|
+
/**
|
|
11
|
+
* An administrator lists the namespaces they administer — every one, for a holder of the community-administrator capability — with each one's admins, repository count, bridge and forge status.
|
|
12
|
+
*/
|
|
13
|
+
export interface GitNamespacesListNamespacesPayload {
|
|
14
|
+
/**
|
|
15
|
+
* Only this namespace. It must be one the caller administers; a namespace they do not administer, or one this VTC does not have, is refused with `notAdministrator` alike.
|
|
16
|
+
*/
|
|
17
|
+
namespace?: NamespaceId;
|
|
18
|
+
ext?: Ext;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The namespaces the caller administers, or the one asked for.
|
|
22
|
+
*/
|
|
23
|
+
export interface GitNamespacesListNamespacesResponsePayload {
|
|
24
|
+
/**
|
|
25
|
+
* Every administered namespace, `pending` ones included, ordered by `resource`. Empty only for a holder of the community-administrator capability on a VTC with no namespace.
|
|
26
|
+
*/
|
|
27
|
+
namespaces: NamespaceStatus[];
|
|
28
|
+
ext?: Ext;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* One namespace as its administrators govern it: the binding, who administers it, how many repositories it holds, and what its bridge last reported.
|
|
32
|
+
*/
|
|
33
|
+
export interface NamespaceStatus {
|
|
34
|
+
id: NamespaceId;
|
|
35
|
+
forge: ForgeHost;
|
|
36
|
+
/**
|
|
37
|
+
* The organisation or user on the forge, lowercased.
|
|
38
|
+
*/
|
|
39
|
+
owner: Segment;
|
|
40
|
+
/**
|
|
41
|
+
* The namespace as a resource: `<forge>/<owner>`.
|
|
42
|
+
*/
|
|
43
|
+
resource: Resource;
|
|
44
|
+
/**
|
|
45
|
+
* As `GitNamespace.mode` in the shared schema.
|
|
46
|
+
*/
|
|
47
|
+
mode: "bridge" | "manual";
|
|
48
|
+
/**
|
|
49
|
+
* As `GitNamespace.state` in the shared schema.
|
|
50
|
+
*/
|
|
51
|
+
state: "pending" | "bound";
|
|
52
|
+
/**
|
|
53
|
+
* Whether the owner is an organisation or a personal account, once the forge has said.
|
|
54
|
+
*/
|
|
55
|
+
kind?: "organization" | "user";
|
|
56
|
+
/**
|
|
57
|
+
* The forge's id for the owner, once the forge has said. Unlike `owner`, it survives a rename.
|
|
58
|
+
*/
|
|
59
|
+
ownerId?: ForgeId;
|
|
60
|
+
/**
|
|
61
|
+
* The bridge that serves the namespace. Absent in manual mode.
|
|
62
|
+
*/
|
|
63
|
+
bridgeDid?: Did;
|
|
64
|
+
/**
|
|
65
|
+
* Who bound it.
|
|
66
|
+
*/
|
|
67
|
+
boundBy: Did;
|
|
68
|
+
/**
|
|
69
|
+
* When binding was requested.
|
|
70
|
+
*/
|
|
71
|
+
requestedAt: string;
|
|
72
|
+
/**
|
|
73
|
+
* When binding completed. Absent while `pending`.
|
|
74
|
+
*/
|
|
75
|
+
boundAt?: string;
|
|
76
|
+
/**
|
|
77
|
+
* Everyone holding a live, explicitly recorded `git.ns.admin` on the namespace. Each of them can grant anything in it.
|
|
78
|
+
*/
|
|
79
|
+
admins: Did[];
|
|
80
|
+
/**
|
|
81
|
+
* How many repositories the VTC records in the namespace, in any state.
|
|
82
|
+
*/
|
|
83
|
+
repoCount: number;
|
|
84
|
+
/**
|
|
85
|
+
* Bound, with no live admin: its last admin left or lapsed. Nobody can grant in it until an administrator reseats one (`git-ns/namespace/reseat`).
|
|
86
|
+
*/
|
|
87
|
+
headless: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* The bridge reported losing its access to the forge owner, and has not reported access since.
|
|
90
|
+
*/
|
|
91
|
+
installationRemoved: boolean;
|
|
92
|
+
forgeStatus?: ForgeStatus;
|
|
93
|
+
/**
|
|
94
|
+
* What the community's policy does with a forge role nobody granted: `report` it as drift for an administrator to resolve, or `enforce` the projection by reverting it. Community-wide; repeated on every namespace so that each row stands alone.
|
|
95
|
+
*/
|
|
96
|
+
roleDrift: "report" | "enforce";
|
|
97
|
+
/**
|
|
98
|
+
* Whether the community's policy revokes the grants a member made when that member leaves. Community-wide, as `roleDrift`.
|
|
99
|
+
*/
|
|
100
|
+
cascadeOnDeparture: boolean;
|
|
101
|
+
roleMap?: RoleMap;
|
|
102
|
+
/**
|
|
103
|
+
* `reported` — the bridge serving the namespace reported its role map. `unknown` — it has not, since the namespace was bound or came to be served by it.
|
|
104
|
+
*/
|
|
105
|
+
roleMapSource: "reported" | "unknown";
|
|
106
|
+
/**
|
|
107
|
+
* The `issuedAt` of the role-map report held, on the bridge's clock.
|
|
108
|
+
*/
|
|
109
|
+
roleMapReportedAt?: string;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* What the bridge serving the namespace last reported about its standing on the forge owner — its app, its installation and what the owner's plan allows. Display only: it changes no decision the VTC takes. Every member but `missingPermissions` is absent until the bridge reports it.
|
|
113
|
+
*/
|
|
114
|
+
export interface ForgeStatus {
|
|
115
|
+
/**
|
|
116
|
+
* The forge's identifier for its installation of the community's app (GitHub).
|
|
117
|
+
*/
|
|
118
|
+
installationId?: string;
|
|
119
|
+
/**
|
|
120
|
+
* The app's display name.
|
|
121
|
+
*/
|
|
122
|
+
appName?: string;
|
|
123
|
+
/**
|
|
124
|
+
* The app's URL slug on the forge.
|
|
125
|
+
*/
|
|
126
|
+
appSlug?: string;
|
|
127
|
+
/**
|
|
128
|
+
* Where the app's manifest registration stands, in the bridge's words (`registered`, `pending`).
|
|
129
|
+
*/
|
|
130
|
+
appRegistration?: string;
|
|
131
|
+
/**
|
|
132
|
+
* Permissions the app needs and the installation has not granted, in the forge's vocabulary. Empty when none are missing, or none were reported.
|
|
133
|
+
*
|
|
134
|
+
* @maxItems 256
|
|
135
|
+
*/
|
|
136
|
+
missingPermissions: string[];
|
|
137
|
+
/**
|
|
138
|
+
* A new version of the app asks for permissions the forge owner has not approved yet.
|
|
139
|
+
*/
|
|
140
|
+
permissionUpgradePending?: boolean;
|
|
141
|
+
/**
|
|
142
|
+
* Organisation rulesets are available on the owner's plan.
|
|
143
|
+
*/
|
|
144
|
+
orgRulesets?: boolean;
|
|
145
|
+
/**
|
|
146
|
+
* The organisation ruleset requiring the verify-trust workflow is in force.
|
|
147
|
+
*/
|
|
148
|
+
requiredWorkflow?: boolean;
|
|
149
|
+
/**
|
|
150
|
+
* The bridge can post the verify-trust check itself, the fallback where no required workflow is available.
|
|
151
|
+
*/
|
|
152
|
+
bridgePostedCheck?: boolean;
|
|
153
|
+
/**
|
|
154
|
+
* When the VTC received the report.
|
|
155
|
+
*/
|
|
156
|
+
reportedAt?: string;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* The forge role each right projects to on a repository without a map of its own, as the serving bridge last reported it. Absent while `roleMapSource` is `unknown`: no map, the default included, is assumed.
|
|
160
|
+
*/
|
|
161
|
+
export interface RoleMap {
|
|
162
|
+
own: MappedRole;
|
|
163
|
+
maintain: MappedRole;
|
|
164
|
+
commit: MappedRole;
|
|
165
|
+
}
|
|
166
|
+
/** Shared definitions this specification references, re-exported under the names it used to declare them with. */
|
|
167
|
+
export type { Did, Ext, ForgeHost, ForgeId, NamespaceId, Resource, Segment };
|
|
168
|
+
/** Trust Task type URI. */
|
|
169
|
+
export declare const TYPE_URI: "https://trusttasks.org/spec/git-ns/namespace/list/0.1";
|
|
170
|
+
/** Stable alias for this specification's request payload shape. */
|
|
171
|
+
export type Payload = GitNamespacesListNamespacesPayload;
|
|
172
|
+
/** Trust Task response type URI (request type URI + "#response"). */
|
|
173
|
+
export declare const RESPONSE_TYPE_URI: "https://trusttasks.org/spec/git-ns/namespace/list/0.1#response";
|
|
174
|
+
/** Stable alias for this specification's success-response payload shape. */
|
|
175
|
+
export type Response = GitNamespacesListNamespacesResponsePayload;
|
|
176
|
+
/**
|
|
177
|
+
* This specification's payload schema, as a value.
|
|
178
|
+
*
|
|
179
|
+
* SPEC.md §7.2 item 2 is performed against this. It is shipped as data
|
|
180
|
+
* rather than only as a `.json` file because TypeScript types are erased
|
|
181
|
+
* at runtime: without a schema a consumer has nothing to validate, and
|
|
182
|
+
* every REQUIRED payload member is optional in practice. Cross-file
|
|
183
|
+
* `$ref`s are already inlined, so it needs no resolver.
|
|
184
|
+
*/
|
|
185
|
+
export declare const PAYLOAD_SCHEMA: {
|
|
186
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
187
|
+
readonly $id: "https://trusttasks.org/spec/git-ns/namespace/list/0.1";
|
|
188
|
+
readonly title: "Git Namespaces — List Namespaces — payload";
|
|
189
|
+
readonly description: "An administrator lists the namespaces they administer — every one, for a holder of the community-administrator capability — with each one's admins, repository count, bridge and forge status.";
|
|
190
|
+
readonly type: "object";
|
|
191
|
+
readonly additionalProperties: false;
|
|
192
|
+
readonly required: readonly [];
|
|
193
|
+
readonly properties: {
|
|
194
|
+
readonly namespace: {
|
|
195
|
+
readonly $ref: "#/$defs/NamespaceId";
|
|
196
|
+
readonly description: "Only this namespace. It must be one the caller administers; a namespace they do not administer, or one this VTC does not have, is refused with `notAdministrator` alike.";
|
|
197
|
+
};
|
|
198
|
+
readonly ext: {
|
|
199
|
+
readonly $ref: "#/$defs/Ext";
|
|
200
|
+
};
|
|
201
|
+
};
|
|
202
|
+
readonly $defs: {
|
|
203
|
+
readonly MappedRole: {
|
|
204
|
+
readonly title: "MappedRole";
|
|
205
|
+
readonly type: "string";
|
|
206
|
+
readonly enum: readonly ["none", "read", "triage", "write", "maintain", "admin"];
|
|
207
|
+
readonly description: "A level of the bridge's forge-neutral role ladder, lowest first: the vocabulary role drift's `observed` and `expected` are reported in. `none` is no direct role on the repository.";
|
|
208
|
+
};
|
|
209
|
+
readonly RoleMap: {
|
|
210
|
+
readonly title: "RoleMap";
|
|
211
|
+
readonly description: "The forge role each repository right is given, as the forge applies it: after the forge's own ladder has rounded it down. `own` is the role `git.repo.own` projects to, `maintain` that of `git.repo.maintain`, `commit` that of `git.commit.sign` (`none` is fork-based contribution). There is no member for `git.ns.admin` or `git.repo.create`, which project to no forge role whatever a bridge is configured with. Ordered: `own` is at least `maintain`, which is at least `commit`, and `commit` is at most `write`.";
|
|
212
|
+
readonly type: "object";
|
|
213
|
+
readonly additionalProperties: false;
|
|
214
|
+
readonly required: readonly ["own", "maintain", "commit"];
|
|
215
|
+
readonly properties: {
|
|
216
|
+
readonly own: {
|
|
217
|
+
readonly $ref: "#/$defs/MappedRole";
|
|
218
|
+
};
|
|
219
|
+
readonly maintain: {
|
|
220
|
+
readonly $ref: "#/$defs/MappedRole";
|
|
221
|
+
};
|
|
222
|
+
readonly commit: {
|
|
223
|
+
readonly $ref: "#/$defs/MappedRole";
|
|
224
|
+
};
|
|
225
|
+
};
|
|
226
|
+
};
|
|
227
|
+
readonly ForgeStatus: {
|
|
228
|
+
readonly title: "ForgeStatus";
|
|
229
|
+
readonly description: "What the bridge serving the namespace last reported about its standing on the forge owner — its app, its installation and what the owner's plan allows. Display only: it changes no decision the VTC takes. Every member but `missingPermissions` is absent until the bridge reports it.";
|
|
230
|
+
readonly type: "object";
|
|
231
|
+
readonly additionalProperties: false;
|
|
232
|
+
readonly required: readonly ["missingPermissions"];
|
|
233
|
+
readonly properties: {
|
|
234
|
+
readonly installationId: {
|
|
235
|
+
readonly type: "string";
|
|
236
|
+
readonly minLength: 1;
|
|
237
|
+
readonly maxLength: 64;
|
|
238
|
+
readonly description: "The forge's identifier for its installation of the community's app (GitHub).";
|
|
239
|
+
};
|
|
240
|
+
readonly appName: {
|
|
241
|
+
readonly type: "string";
|
|
242
|
+
readonly minLength: 1;
|
|
243
|
+
readonly maxLength: 256;
|
|
244
|
+
readonly description: "The app's display name.";
|
|
245
|
+
};
|
|
246
|
+
readonly appSlug: {
|
|
247
|
+
readonly type: "string";
|
|
248
|
+
readonly minLength: 1;
|
|
249
|
+
readonly maxLength: 256;
|
|
250
|
+
readonly description: "The app's URL slug on the forge.";
|
|
251
|
+
};
|
|
252
|
+
readonly appRegistration: {
|
|
253
|
+
readonly type: "string";
|
|
254
|
+
readonly minLength: 1;
|
|
255
|
+
readonly maxLength: 256;
|
|
256
|
+
readonly description: "Where the app's manifest registration stands, in the bridge's words (`registered`, `pending`).";
|
|
257
|
+
};
|
|
258
|
+
readonly missingPermissions: {
|
|
259
|
+
readonly type: "array";
|
|
260
|
+
readonly maxItems: 256;
|
|
261
|
+
readonly uniqueItems: true;
|
|
262
|
+
readonly items: {
|
|
263
|
+
readonly type: "string";
|
|
264
|
+
readonly minLength: 1;
|
|
265
|
+
readonly maxLength: 128;
|
|
266
|
+
};
|
|
267
|
+
readonly description: "Permissions the app needs and the installation has not granted, in the forge's vocabulary. Empty when none are missing, or none were reported.";
|
|
268
|
+
};
|
|
269
|
+
readonly permissionUpgradePending: {
|
|
270
|
+
readonly type: "boolean";
|
|
271
|
+
readonly description: "A new version of the app asks for permissions the forge owner has not approved yet.";
|
|
272
|
+
};
|
|
273
|
+
readonly orgRulesets: {
|
|
274
|
+
readonly type: "boolean";
|
|
275
|
+
readonly description: "Organisation rulesets are available on the owner's plan.";
|
|
276
|
+
};
|
|
277
|
+
readonly requiredWorkflow: {
|
|
278
|
+
readonly type: "boolean";
|
|
279
|
+
readonly description: "The organisation ruleset requiring the verify-trust workflow is in force.";
|
|
280
|
+
};
|
|
281
|
+
readonly bridgePostedCheck: {
|
|
282
|
+
readonly type: "boolean";
|
|
283
|
+
readonly description: "The bridge can post the verify-trust check itself, the fallback where no required workflow is available.";
|
|
284
|
+
};
|
|
285
|
+
readonly reportedAt: {
|
|
286
|
+
readonly type: "string";
|
|
287
|
+
readonly format: "date-time";
|
|
288
|
+
readonly description: "When the VTC received the report.";
|
|
289
|
+
};
|
|
290
|
+
};
|
|
291
|
+
};
|
|
292
|
+
readonly NamespaceStatus: {
|
|
293
|
+
readonly title: "NamespaceStatus";
|
|
294
|
+
readonly description: "One namespace as its administrators govern it: the binding, who administers it, how many repositories it holds, and what its bridge last reported.";
|
|
295
|
+
readonly type: "object";
|
|
296
|
+
readonly additionalProperties: false;
|
|
297
|
+
readonly required: readonly ["id", "forge", "owner", "resource", "mode", "state", "boundBy", "requestedAt", "admins", "repoCount", "headless", "installationRemoved", "roleDrift", "cascadeOnDeparture", "roleMapSource"];
|
|
298
|
+
readonly properties: {
|
|
299
|
+
readonly id: {
|
|
300
|
+
readonly $ref: "#/$defs/NamespaceId";
|
|
301
|
+
};
|
|
302
|
+
readonly forge: {
|
|
303
|
+
readonly $ref: "#/$defs/ForgeHost";
|
|
304
|
+
};
|
|
305
|
+
readonly owner: {
|
|
306
|
+
readonly $ref: "#/$defs/Segment";
|
|
307
|
+
readonly description: "The organisation or user on the forge, lowercased.";
|
|
308
|
+
};
|
|
309
|
+
readonly resource: {
|
|
310
|
+
readonly $ref: "#/$defs/Resource";
|
|
311
|
+
readonly description: "The namespace as a resource: `<forge>/<owner>`.";
|
|
312
|
+
};
|
|
313
|
+
readonly mode: {
|
|
314
|
+
readonly type: "string";
|
|
315
|
+
readonly enum: readonly ["bridge", "manual"];
|
|
316
|
+
readonly description: "As `GitNamespace.mode` in the shared schema.";
|
|
317
|
+
};
|
|
318
|
+
readonly state: {
|
|
319
|
+
readonly type: "string";
|
|
320
|
+
readonly enum: readonly ["pending", "bound"];
|
|
321
|
+
readonly description: "As `GitNamespace.state` in the shared schema.";
|
|
322
|
+
};
|
|
323
|
+
readonly kind: {
|
|
324
|
+
readonly type: "string";
|
|
325
|
+
readonly enum: readonly ["organization", "user"];
|
|
326
|
+
readonly description: "Whether the owner is an organisation or a personal account, once the forge has said.";
|
|
327
|
+
};
|
|
328
|
+
readonly ownerId: {
|
|
329
|
+
readonly $ref: "#/$defs/ForgeId";
|
|
330
|
+
readonly description: "The forge's id for the owner, once the forge has said. Unlike `owner`, it survives a rename.";
|
|
331
|
+
};
|
|
332
|
+
readonly bridgeDid: {
|
|
333
|
+
readonly $ref: "#/$defs/Did";
|
|
334
|
+
readonly description: "The bridge that serves the namespace. Absent in manual mode.";
|
|
335
|
+
};
|
|
336
|
+
readonly boundBy: {
|
|
337
|
+
readonly $ref: "#/$defs/Did";
|
|
338
|
+
readonly description: "Who bound it.";
|
|
339
|
+
};
|
|
340
|
+
readonly requestedAt: {
|
|
341
|
+
readonly type: "string";
|
|
342
|
+
readonly format: "date-time";
|
|
343
|
+
readonly description: "When binding was requested.";
|
|
344
|
+
};
|
|
345
|
+
readonly boundAt: {
|
|
346
|
+
readonly type: "string";
|
|
347
|
+
readonly format: "date-time";
|
|
348
|
+
readonly description: "When binding completed. Absent while `pending`.";
|
|
349
|
+
};
|
|
350
|
+
readonly admins: {
|
|
351
|
+
readonly type: "array";
|
|
352
|
+
readonly uniqueItems: true;
|
|
353
|
+
readonly items: {
|
|
354
|
+
readonly $ref: "#/$defs/Did";
|
|
355
|
+
};
|
|
356
|
+
readonly description: "Everyone holding a live, explicitly recorded `git.ns.admin` on the namespace. Each of them can grant anything in it.";
|
|
357
|
+
};
|
|
358
|
+
readonly repoCount: {
|
|
359
|
+
readonly type: "integer";
|
|
360
|
+
readonly minimum: 0;
|
|
361
|
+
readonly description: "How many repositories the VTC records in the namespace, in any state.";
|
|
362
|
+
};
|
|
363
|
+
readonly headless: {
|
|
364
|
+
readonly type: "boolean";
|
|
365
|
+
readonly description: "Bound, with no live admin: its last admin left or lapsed. Nobody can grant in it until an administrator reseats one (`git-ns/namespace/reseat`).";
|
|
366
|
+
};
|
|
367
|
+
readonly installationRemoved: {
|
|
368
|
+
readonly type: "boolean";
|
|
369
|
+
readonly description: "The bridge reported losing its access to the forge owner, and has not reported access since.";
|
|
370
|
+
};
|
|
371
|
+
readonly forgeStatus: {
|
|
372
|
+
readonly $ref: "#/$defs/ForgeStatus";
|
|
373
|
+
};
|
|
374
|
+
readonly roleDrift: {
|
|
375
|
+
readonly type: "string";
|
|
376
|
+
readonly enum: readonly ["report", "enforce"];
|
|
377
|
+
readonly description: "What the community's policy does with a forge role nobody granted: `report` it as drift for an administrator to resolve, or `enforce` the projection by reverting it. Community-wide; repeated on every namespace so that each row stands alone.";
|
|
378
|
+
};
|
|
379
|
+
readonly cascadeOnDeparture: {
|
|
380
|
+
readonly type: "boolean";
|
|
381
|
+
readonly description: "Whether the community's policy revokes the grants a member made when that member leaves. Community-wide, as `roleDrift`.";
|
|
382
|
+
};
|
|
383
|
+
readonly roleMap: {
|
|
384
|
+
readonly $ref: "#/$defs/RoleMap";
|
|
385
|
+
readonly description: "The forge role each right projects to on a repository without a map of its own, as the serving bridge last reported it. Absent while `roleMapSource` is `unknown`: no map, the default included, is assumed.";
|
|
386
|
+
};
|
|
387
|
+
readonly roleMapSource: {
|
|
388
|
+
readonly type: "string";
|
|
389
|
+
readonly enum: readonly ["reported", "unknown"];
|
|
390
|
+
readonly description: "`reported` — the bridge serving the namespace reported its role map. `unknown` — it has not, since the namespace was bound or came to be served by it.";
|
|
391
|
+
};
|
|
392
|
+
readonly roleMapReportedAt: {
|
|
393
|
+
readonly type: "string";
|
|
394
|
+
readonly format: "date-time";
|
|
395
|
+
readonly description: "The `issuedAt` of the role-map report held, on the bridge's clock.";
|
|
396
|
+
};
|
|
397
|
+
};
|
|
398
|
+
};
|
|
399
|
+
readonly Response: {
|
|
400
|
+
readonly $anchor: "response";
|
|
401
|
+
readonly title: "Git Namespaces — List Namespaces — response payload";
|
|
402
|
+
readonly description: "The namespaces the caller administers, or the one asked for.";
|
|
403
|
+
readonly type: "object";
|
|
404
|
+
readonly additionalProperties: false;
|
|
405
|
+
readonly required: readonly ["namespaces"];
|
|
406
|
+
readonly properties: {
|
|
407
|
+
readonly namespaces: {
|
|
408
|
+
readonly type: "array";
|
|
409
|
+
readonly items: {
|
|
410
|
+
readonly $ref: "#/$defs/NamespaceStatus";
|
|
411
|
+
};
|
|
412
|
+
readonly description: "Every administered namespace, `pending` ones included, ordered by `resource`. Empty only for a holder of the community-administrator capability on a VTC with no namespace.";
|
|
413
|
+
};
|
|
414
|
+
readonly ext: {
|
|
415
|
+
readonly $ref: "#/$defs/Ext";
|
|
416
|
+
};
|
|
417
|
+
};
|
|
418
|
+
};
|
|
419
|
+
readonly Ext: {
|
|
420
|
+
readonly title: "Ext";
|
|
421
|
+
readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
|
|
422
|
+
readonly type: "object";
|
|
423
|
+
readonly minProperties: 1;
|
|
424
|
+
readonly additionalProperties: true;
|
|
425
|
+
readonly propertyNames: {
|
|
426
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
427
|
+
};
|
|
428
|
+
};
|
|
429
|
+
readonly Did: {
|
|
430
|
+
readonly title: "Did";
|
|
431
|
+
readonly description: "A bare DID in the W3C DID Core syntax (§3.1): `did:`, a method name of lowercase letters and digits, `:`, and a method-specific id of colon-separated segments drawn from `A-Z a-z 0-9 . - _` and percent-encoded octets, the last segment non-empty. A DID URL is not a DID: no path, query or fragment (`/`, `?`, `#`), so a verification-method id such as `did:key:z6Mk…#z6Mk…` is refused. Compared by exact string equality — no case folding or percent-decoding. A consumer MUST still treat the value as data: the pattern keeps shell metacharacters, whitespace and quotes out of the wire form, but it does not make a DID safe to splice into a command or markup.";
|
|
432
|
+
readonly type: "string";
|
|
433
|
+
readonly maxLength: 2048;
|
|
434
|
+
readonly pattern: "^did:[a-z0-9]+:(?:(?:[A-Za-z0-9._-]|%[0-9A-Fa-f]{2})*:)*(?:[A-Za-z0-9._-]|%[0-9A-Fa-f]{2})+$";
|
|
435
|
+
};
|
|
436
|
+
readonly ForgeId: {
|
|
437
|
+
readonly title: "ForgeId";
|
|
438
|
+
readonly description: "An identifier the forge itself assigns — a repository id, a user or organisation id — carried as a string so a forge whose ids are not numbers needs no new version. GitHub and Forgejo ids are decimal integers written as strings (`\"812736451\"`). Unlike a name, it survives renames and transfers, which is why rights and bindings are keyed by it.";
|
|
439
|
+
readonly type: "string";
|
|
440
|
+
readonly minLength: 1;
|
|
441
|
+
readonly maxLength: 64;
|
|
442
|
+
};
|
|
443
|
+
readonly Resource: {
|
|
444
|
+
readonly title: "Resource";
|
|
445
|
+
readonly description: "A forge-qualified resource: `<forge-host>/<owner>` for a namespace, or `<forge-host>/<owner>/<repo>` for one repository, all lowercase — `github.com/acme`, `github.com/acme/widgets`, `codeberg.org/acme`. The forge is never implied: `acme/widgets` alone is not a resource. Containment is by whole segment: `github.com/acme` contains `github.com/acme/widgets` and does not contain `github.com/acme-labs/x` or `codeberg.org/acme/widgets`.";
|
|
446
|
+
readonly type: "string";
|
|
447
|
+
readonly maxLength: 455;
|
|
448
|
+
readonly pattern: "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+(?:/[a-z0-9_-][a-z0-9._-]{0,99}){1,2}$";
|
|
449
|
+
};
|
|
450
|
+
readonly Segment: {
|
|
451
|
+
readonly title: "Segment";
|
|
452
|
+
readonly description: "One lowercased owner or repository name. Forges compare these case-insensitively, so the wire form is always lowercase and a producer lowercases before sending. A leading `.` is refused, which rules out `.` and `..`.";
|
|
453
|
+
readonly type: "string";
|
|
454
|
+
readonly minLength: 1;
|
|
455
|
+
readonly maxLength: 100;
|
|
456
|
+
readonly pattern: "^[a-z0-9_-][a-z0-9._-]*$";
|
|
457
|
+
};
|
|
458
|
+
readonly ForgeHost: {
|
|
459
|
+
readonly title: "ForgeHost";
|
|
460
|
+
readonly description: "The lowercased DNS host of a forge: `github.com`, a GitHub Enterprise Server host, `codeberg.org`, or a self-hosted Forgejo instance such as `git.example.org`. No scheme, no port, no path. The host is a segment of every resource, so a right never crosses forges.";
|
|
461
|
+
readonly type: "string";
|
|
462
|
+
readonly minLength: 3;
|
|
463
|
+
readonly maxLength: 253;
|
|
464
|
+
readonly pattern: "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+$";
|
|
465
|
+
};
|
|
466
|
+
readonly NamespaceId: {
|
|
467
|
+
readonly title: "NamespaceId";
|
|
468
|
+
readonly description: "The VTC's opaque identifier for a namespace, assigned when it is bound. Stable for the life of the binding; never reused for another binding.";
|
|
469
|
+
readonly type: "string";
|
|
470
|
+
readonly minLength: 1;
|
|
471
|
+
readonly maxLength: 128;
|
|
472
|
+
};
|
|
473
|
+
};
|
|
474
|
+
};
|
|
475
|
+
/** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
|
|
476
|
+
export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
477
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
478
|
+
readonly $ref: "#/$defs/Response";
|
|
479
|
+
readonly $defs: {
|
|
480
|
+
readonly MappedRole: {
|
|
481
|
+
readonly title: "MappedRole";
|
|
482
|
+
readonly type: "string";
|
|
483
|
+
readonly enum: readonly ["none", "read", "triage", "write", "maintain", "admin"];
|
|
484
|
+
readonly description: "A level of the bridge's forge-neutral role ladder, lowest first: the vocabulary role drift's `observed` and `expected` are reported in. `none` is no direct role on the repository.";
|
|
485
|
+
};
|
|
486
|
+
readonly RoleMap: {
|
|
487
|
+
readonly title: "RoleMap";
|
|
488
|
+
readonly description: "The forge role each repository right is given, as the forge applies it: after the forge's own ladder has rounded it down. `own` is the role `git.repo.own` projects to, `maintain` that of `git.repo.maintain`, `commit` that of `git.commit.sign` (`none` is fork-based contribution). There is no member for `git.ns.admin` or `git.repo.create`, which project to no forge role whatever a bridge is configured with. Ordered: `own` is at least `maintain`, which is at least `commit`, and `commit` is at most `write`.";
|
|
489
|
+
readonly type: "object";
|
|
490
|
+
readonly additionalProperties: false;
|
|
491
|
+
readonly required: readonly ["own", "maintain", "commit"];
|
|
492
|
+
readonly properties: {
|
|
493
|
+
readonly own: {
|
|
494
|
+
readonly $ref: "#/$defs/MappedRole";
|
|
495
|
+
};
|
|
496
|
+
readonly maintain: {
|
|
497
|
+
readonly $ref: "#/$defs/MappedRole";
|
|
498
|
+
};
|
|
499
|
+
readonly commit: {
|
|
500
|
+
readonly $ref: "#/$defs/MappedRole";
|
|
501
|
+
};
|
|
502
|
+
};
|
|
503
|
+
};
|
|
504
|
+
readonly ForgeStatus: {
|
|
505
|
+
readonly title: "ForgeStatus";
|
|
506
|
+
readonly description: "What the bridge serving the namespace last reported about its standing on the forge owner — its app, its installation and what the owner's plan allows. Display only: it changes no decision the VTC takes. Every member but `missingPermissions` is absent until the bridge reports it.";
|
|
507
|
+
readonly type: "object";
|
|
508
|
+
readonly additionalProperties: false;
|
|
509
|
+
readonly required: readonly ["missingPermissions"];
|
|
510
|
+
readonly properties: {
|
|
511
|
+
readonly installationId: {
|
|
512
|
+
readonly type: "string";
|
|
513
|
+
readonly minLength: 1;
|
|
514
|
+
readonly maxLength: 64;
|
|
515
|
+
readonly description: "The forge's identifier for its installation of the community's app (GitHub).";
|
|
516
|
+
};
|
|
517
|
+
readonly appName: {
|
|
518
|
+
readonly type: "string";
|
|
519
|
+
readonly minLength: 1;
|
|
520
|
+
readonly maxLength: 256;
|
|
521
|
+
readonly description: "The app's display name.";
|
|
522
|
+
};
|
|
523
|
+
readonly appSlug: {
|
|
524
|
+
readonly type: "string";
|
|
525
|
+
readonly minLength: 1;
|
|
526
|
+
readonly maxLength: 256;
|
|
527
|
+
readonly description: "The app's URL slug on the forge.";
|
|
528
|
+
};
|
|
529
|
+
readonly appRegistration: {
|
|
530
|
+
readonly type: "string";
|
|
531
|
+
readonly minLength: 1;
|
|
532
|
+
readonly maxLength: 256;
|
|
533
|
+
readonly description: "Where the app's manifest registration stands, in the bridge's words (`registered`, `pending`).";
|
|
534
|
+
};
|
|
535
|
+
readonly missingPermissions: {
|
|
536
|
+
readonly type: "array";
|
|
537
|
+
readonly maxItems: 256;
|
|
538
|
+
readonly uniqueItems: true;
|
|
539
|
+
readonly items: {
|
|
540
|
+
readonly type: "string";
|
|
541
|
+
readonly minLength: 1;
|
|
542
|
+
readonly maxLength: 128;
|
|
543
|
+
};
|
|
544
|
+
readonly description: "Permissions the app needs and the installation has not granted, in the forge's vocabulary. Empty when none are missing, or none were reported.";
|
|
545
|
+
};
|
|
546
|
+
readonly permissionUpgradePending: {
|
|
547
|
+
readonly type: "boolean";
|
|
548
|
+
readonly description: "A new version of the app asks for permissions the forge owner has not approved yet.";
|
|
549
|
+
};
|
|
550
|
+
readonly orgRulesets: {
|
|
551
|
+
readonly type: "boolean";
|
|
552
|
+
readonly description: "Organisation rulesets are available on the owner's plan.";
|
|
553
|
+
};
|
|
554
|
+
readonly requiredWorkflow: {
|
|
555
|
+
readonly type: "boolean";
|
|
556
|
+
readonly description: "The organisation ruleset requiring the verify-trust workflow is in force.";
|
|
557
|
+
};
|
|
558
|
+
readonly bridgePostedCheck: {
|
|
559
|
+
readonly type: "boolean";
|
|
560
|
+
readonly description: "The bridge can post the verify-trust check itself, the fallback where no required workflow is available.";
|
|
561
|
+
};
|
|
562
|
+
readonly reportedAt: {
|
|
563
|
+
readonly type: "string";
|
|
564
|
+
readonly format: "date-time";
|
|
565
|
+
readonly description: "When the VTC received the report.";
|
|
566
|
+
};
|
|
567
|
+
};
|
|
568
|
+
};
|
|
569
|
+
readonly NamespaceStatus: {
|
|
570
|
+
readonly title: "NamespaceStatus";
|
|
571
|
+
readonly description: "One namespace as its administrators govern it: the binding, who administers it, how many repositories it holds, and what its bridge last reported.";
|
|
572
|
+
readonly type: "object";
|
|
573
|
+
readonly additionalProperties: false;
|
|
574
|
+
readonly required: readonly ["id", "forge", "owner", "resource", "mode", "state", "boundBy", "requestedAt", "admins", "repoCount", "headless", "installationRemoved", "roleDrift", "cascadeOnDeparture", "roleMapSource"];
|
|
575
|
+
readonly properties: {
|
|
576
|
+
readonly id: {
|
|
577
|
+
readonly $ref: "#/$defs/NamespaceId";
|
|
578
|
+
};
|
|
579
|
+
readonly forge: {
|
|
580
|
+
readonly $ref: "#/$defs/ForgeHost";
|
|
581
|
+
};
|
|
582
|
+
readonly owner: {
|
|
583
|
+
readonly $ref: "#/$defs/Segment";
|
|
584
|
+
readonly description: "The organisation or user on the forge, lowercased.";
|
|
585
|
+
};
|
|
586
|
+
readonly resource: {
|
|
587
|
+
readonly $ref: "#/$defs/Resource";
|
|
588
|
+
readonly description: "The namespace as a resource: `<forge>/<owner>`.";
|
|
589
|
+
};
|
|
590
|
+
readonly mode: {
|
|
591
|
+
readonly type: "string";
|
|
592
|
+
readonly enum: readonly ["bridge", "manual"];
|
|
593
|
+
readonly description: "As `GitNamespace.mode` in the shared schema.";
|
|
594
|
+
};
|
|
595
|
+
readonly state: {
|
|
596
|
+
readonly type: "string";
|
|
597
|
+
readonly enum: readonly ["pending", "bound"];
|
|
598
|
+
readonly description: "As `GitNamespace.state` in the shared schema.";
|
|
599
|
+
};
|
|
600
|
+
readonly kind: {
|
|
601
|
+
readonly type: "string";
|
|
602
|
+
readonly enum: readonly ["organization", "user"];
|
|
603
|
+
readonly description: "Whether the owner is an organisation or a personal account, once the forge has said.";
|
|
604
|
+
};
|
|
605
|
+
readonly ownerId: {
|
|
606
|
+
readonly $ref: "#/$defs/ForgeId";
|
|
607
|
+
readonly description: "The forge's id for the owner, once the forge has said. Unlike `owner`, it survives a rename.";
|
|
608
|
+
};
|
|
609
|
+
readonly bridgeDid: {
|
|
610
|
+
readonly $ref: "#/$defs/Did";
|
|
611
|
+
readonly description: "The bridge that serves the namespace. Absent in manual mode.";
|
|
612
|
+
};
|
|
613
|
+
readonly boundBy: {
|
|
614
|
+
readonly $ref: "#/$defs/Did";
|
|
615
|
+
readonly description: "Who bound it.";
|
|
616
|
+
};
|
|
617
|
+
readonly requestedAt: {
|
|
618
|
+
readonly type: "string";
|
|
619
|
+
readonly format: "date-time";
|
|
620
|
+
readonly description: "When binding was requested.";
|
|
621
|
+
};
|
|
622
|
+
readonly boundAt: {
|
|
623
|
+
readonly type: "string";
|
|
624
|
+
readonly format: "date-time";
|
|
625
|
+
readonly description: "When binding completed. Absent while `pending`.";
|
|
626
|
+
};
|
|
627
|
+
readonly admins: {
|
|
628
|
+
readonly type: "array";
|
|
629
|
+
readonly uniqueItems: true;
|
|
630
|
+
readonly items: {
|
|
631
|
+
readonly $ref: "#/$defs/Did";
|
|
632
|
+
};
|
|
633
|
+
readonly description: "Everyone holding a live, explicitly recorded `git.ns.admin` on the namespace. Each of them can grant anything in it.";
|
|
634
|
+
};
|
|
635
|
+
readonly repoCount: {
|
|
636
|
+
readonly type: "integer";
|
|
637
|
+
readonly minimum: 0;
|
|
638
|
+
readonly description: "How many repositories the VTC records in the namespace, in any state.";
|
|
639
|
+
};
|
|
640
|
+
readonly headless: {
|
|
641
|
+
readonly type: "boolean";
|
|
642
|
+
readonly description: "Bound, with no live admin: its last admin left or lapsed. Nobody can grant in it until an administrator reseats one (`git-ns/namespace/reseat`).";
|
|
643
|
+
};
|
|
644
|
+
readonly installationRemoved: {
|
|
645
|
+
readonly type: "boolean";
|
|
646
|
+
readonly description: "The bridge reported losing its access to the forge owner, and has not reported access since.";
|
|
647
|
+
};
|
|
648
|
+
readonly forgeStatus: {
|
|
649
|
+
readonly $ref: "#/$defs/ForgeStatus";
|
|
650
|
+
};
|
|
651
|
+
readonly roleDrift: {
|
|
652
|
+
readonly type: "string";
|
|
653
|
+
readonly enum: readonly ["report", "enforce"];
|
|
654
|
+
readonly description: "What the community's policy does with a forge role nobody granted: `report` it as drift for an administrator to resolve, or `enforce` the projection by reverting it. Community-wide; repeated on every namespace so that each row stands alone.";
|
|
655
|
+
};
|
|
656
|
+
readonly cascadeOnDeparture: {
|
|
657
|
+
readonly type: "boolean";
|
|
658
|
+
readonly description: "Whether the community's policy revokes the grants a member made when that member leaves. Community-wide, as `roleDrift`.";
|
|
659
|
+
};
|
|
660
|
+
readonly roleMap: {
|
|
661
|
+
readonly $ref: "#/$defs/RoleMap";
|
|
662
|
+
readonly description: "The forge role each right projects to on a repository without a map of its own, as the serving bridge last reported it. Absent while `roleMapSource` is `unknown`: no map, the default included, is assumed.";
|
|
663
|
+
};
|
|
664
|
+
readonly roleMapSource: {
|
|
665
|
+
readonly type: "string";
|
|
666
|
+
readonly enum: readonly ["reported", "unknown"];
|
|
667
|
+
readonly description: "`reported` — the bridge serving the namespace reported its role map. `unknown` — it has not, since the namespace was bound or came to be served by it.";
|
|
668
|
+
};
|
|
669
|
+
readonly roleMapReportedAt: {
|
|
670
|
+
readonly type: "string";
|
|
671
|
+
readonly format: "date-time";
|
|
672
|
+
readonly description: "The `issuedAt` of the role-map report held, on the bridge's clock.";
|
|
673
|
+
};
|
|
674
|
+
};
|
|
675
|
+
};
|
|
676
|
+
readonly Response: {
|
|
677
|
+
readonly $anchor: "response";
|
|
678
|
+
readonly title: "Git Namespaces — List Namespaces — response payload";
|
|
679
|
+
readonly description: "The namespaces the caller administers, or the one asked for.";
|
|
680
|
+
readonly type: "object";
|
|
681
|
+
readonly additionalProperties: false;
|
|
682
|
+
readonly required: readonly ["namespaces"];
|
|
683
|
+
readonly properties: {
|
|
684
|
+
readonly namespaces: {
|
|
685
|
+
readonly type: "array";
|
|
686
|
+
readonly items: {
|
|
687
|
+
readonly $ref: "#/$defs/NamespaceStatus";
|
|
688
|
+
};
|
|
689
|
+
readonly description: "Every administered namespace, `pending` ones included, ordered by `resource`. Empty only for a holder of the community-administrator capability on a VTC with no namespace.";
|
|
690
|
+
};
|
|
691
|
+
readonly ext: {
|
|
692
|
+
readonly $ref: "#/$defs/Ext";
|
|
693
|
+
};
|
|
694
|
+
};
|
|
695
|
+
};
|
|
696
|
+
readonly Ext: {
|
|
697
|
+
readonly title: "Ext";
|
|
698
|
+
readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
|
|
699
|
+
readonly type: "object";
|
|
700
|
+
readonly minProperties: 1;
|
|
701
|
+
readonly additionalProperties: true;
|
|
702
|
+
readonly propertyNames: {
|
|
703
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
704
|
+
};
|
|
705
|
+
};
|
|
706
|
+
readonly Did: {
|
|
707
|
+
readonly title: "Did";
|
|
708
|
+
readonly description: "A bare DID in the W3C DID Core syntax (§3.1): `did:`, a method name of lowercase letters and digits, `:`, and a method-specific id of colon-separated segments drawn from `A-Z a-z 0-9 . - _` and percent-encoded octets, the last segment non-empty. A DID URL is not a DID: no path, query or fragment (`/`, `?`, `#`), so a verification-method id such as `did:key:z6Mk…#z6Mk…` is refused. Compared by exact string equality — no case folding or percent-decoding. A consumer MUST still treat the value as data: the pattern keeps shell metacharacters, whitespace and quotes out of the wire form, but it does not make a DID safe to splice into a command or markup.";
|
|
709
|
+
readonly type: "string";
|
|
710
|
+
readonly maxLength: 2048;
|
|
711
|
+
readonly pattern: "^did:[a-z0-9]+:(?:(?:[A-Za-z0-9._-]|%[0-9A-Fa-f]{2})*:)*(?:[A-Za-z0-9._-]|%[0-9A-Fa-f]{2})+$";
|
|
712
|
+
};
|
|
713
|
+
readonly ForgeId: {
|
|
714
|
+
readonly title: "ForgeId";
|
|
715
|
+
readonly description: "An identifier the forge itself assigns — a repository id, a user or organisation id — carried as a string so a forge whose ids are not numbers needs no new version. GitHub and Forgejo ids are decimal integers written as strings (`\"812736451\"`). Unlike a name, it survives renames and transfers, which is why rights and bindings are keyed by it.";
|
|
716
|
+
readonly type: "string";
|
|
717
|
+
readonly minLength: 1;
|
|
718
|
+
readonly maxLength: 64;
|
|
719
|
+
};
|
|
720
|
+
readonly Resource: {
|
|
721
|
+
readonly title: "Resource";
|
|
722
|
+
readonly description: "A forge-qualified resource: `<forge-host>/<owner>` for a namespace, or `<forge-host>/<owner>/<repo>` for one repository, all lowercase — `github.com/acme`, `github.com/acme/widgets`, `codeberg.org/acme`. The forge is never implied: `acme/widgets` alone is not a resource. Containment is by whole segment: `github.com/acme` contains `github.com/acme/widgets` and does not contain `github.com/acme-labs/x` or `codeberg.org/acme/widgets`.";
|
|
723
|
+
readonly type: "string";
|
|
724
|
+
readonly maxLength: 455;
|
|
725
|
+
readonly pattern: "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+(?:/[a-z0-9_-][a-z0-9._-]{0,99}){1,2}$";
|
|
726
|
+
};
|
|
727
|
+
readonly Segment: {
|
|
728
|
+
readonly title: "Segment";
|
|
729
|
+
readonly description: "One lowercased owner or repository name. Forges compare these case-insensitively, so the wire form is always lowercase and a producer lowercases before sending. A leading `.` is refused, which rules out `.` and `..`.";
|
|
730
|
+
readonly type: "string";
|
|
731
|
+
readonly minLength: 1;
|
|
732
|
+
readonly maxLength: 100;
|
|
733
|
+
readonly pattern: "^[a-z0-9_-][a-z0-9._-]*$";
|
|
734
|
+
};
|
|
735
|
+
readonly ForgeHost: {
|
|
736
|
+
readonly title: "ForgeHost";
|
|
737
|
+
readonly description: "The lowercased DNS host of a forge: `github.com`, a GitHub Enterprise Server host, `codeberg.org`, or a self-hosted Forgejo instance such as `git.example.org`. No scheme, no port, no path. The host is a segment of every resource, so a right never crosses forges.";
|
|
738
|
+
readonly type: "string";
|
|
739
|
+
readonly minLength: 3;
|
|
740
|
+
readonly maxLength: 253;
|
|
741
|
+
readonly pattern: "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+$";
|
|
742
|
+
};
|
|
743
|
+
readonly NamespaceId: {
|
|
744
|
+
readonly title: "NamespaceId";
|
|
745
|
+
readonly description: "The VTC's opaque identifier for a namespace, assigned when it is bound. Stable for the life of the binding; never reused for another binding.";
|
|
746
|
+
readonly type: "string";
|
|
747
|
+
readonly minLength: 1;
|
|
748
|
+
readonly maxLength: 128;
|
|
749
|
+
};
|
|
750
|
+
};
|
|
751
|
+
};
|
|
752
|
+
/**
|
|
753
|
+
* SPEC.md §7.2 policy for the request variant, from this specification's
|
|
754
|
+
* front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
|
|
755
|
+
* per-specification and cannot be derived from the document alone, and
|
|
756
|
+
* item 2 needs the schema this carries.
|
|
757
|
+
*/
|
|
758
|
+
export declare const SPEC: {
|
|
759
|
+
readonly typeUri: "https://trusttasks.org/spec/git-ns/namespace/list/0.1";
|
|
760
|
+
readonly isBearer: false;
|
|
761
|
+
readonly isProofRequired: true;
|
|
762
|
+
readonly isRecipientRequired: true;
|
|
763
|
+
readonly isIssuedAtRequired: false;
|
|
764
|
+
readonly payloadSchema: {
|
|
765
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
766
|
+
readonly $id: "https://trusttasks.org/spec/git-ns/namespace/list/0.1";
|
|
767
|
+
readonly title: "Git Namespaces — List Namespaces — payload";
|
|
768
|
+
readonly description: "An administrator lists the namespaces they administer — every one, for a holder of the community-administrator capability — with each one's admins, repository count, bridge and forge status.";
|
|
769
|
+
readonly type: "object";
|
|
770
|
+
readonly additionalProperties: false;
|
|
771
|
+
readonly required: readonly [];
|
|
772
|
+
readonly properties: {
|
|
773
|
+
readonly namespace: {
|
|
774
|
+
readonly $ref: "#/$defs/NamespaceId";
|
|
775
|
+
readonly description: "Only this namespace. It must be one the caller administers; a namespace they do not administer, or one this VTC does not have, is refused with `notAdministrator` alike.";
|
|
776
|
+
};
|
|
777
|
+
readonly ext: {
|
|
778
|
+
readonly $ref: "#/$defs/Ext";
|
|
779
|
+
};
|
|
780
|
+
};
|
|
781
|
+
readonly $defs: {
|
|
782
|
+
readonly MappedRole: {
|
|
783
|
+
readonly title: "MappedRole";
|
|
784
|
+
readonly type: "string";
|
|
785
|
+
readonly enum: readonly ["none", "read", "triage", "write", "maintain", "admin"];
|
|
786
|
+
readonly description: "A level of the bridge's forge-neutral role ladder, lowest first: the vocabulary role drift's `observed` and `expected` are reported in. `none` is no direct role on the repository.";
|
|
787
|
+
};
|
|
788
|
+
readonly RoleMap: {
|
|
789
|
+
readonly title: "RoleMap";
|
|
790
|
+
readonly description: "The forge role each repository right is given, as the forge applies it: after the forge's own ladder has rounded it down. `own` is the role `git.repo.own` projects to, `maintain` that of `git.repo.maintain`, `commit` that of `git.commit.sign` (`none` is fork-based contribution). There is no member for `git.ns.admin` or `git.repo.create`, which project to no forge role whatever a bridge is configured with. Ordered: `own` is at least `maintain`, which is at least `commit`, and `commit` is at most `write`.";
|
|
791
|
+
readonly type: "object";
|
|
792
|
+
readonly additionalProperties: false;
|
|
793
|
+
readonly required: readonly ["own", "maintain", "commit"];
|
|
794
|
+
readonly properties: {
|
|
795
|
+
readonly own: {
|
|
796
|
+
readonly $ref: "#/$defs/MappedRole";
|
|
797
|
+
};
|
|
798
|
+
readonly maintain: {
|
|
799
|
+
readonly $ref: "#/$defs/MappedRole";
|
|
800
|
+
};
|
|
801
|
+
readonly commit: {
|
|
802
|
+
readonly $ref: "#/$defs/MappedRole";
|
|
803
|
+
};
|
|
804
|
+
};
|
|
805
|
+
};
|
|
806
|
+
readonly ForgeStatus: {
|
|
807
|
+
readonly title: "ForgeStatus";
|
|
808
|
+
readonly description: "What the bridge serving the namespace last reported about its standing on the forge owner — its app, its installation and what the owner's plan allows. Display only: it changes no decision the VTC takes. Every member but `missingPermissions` is absent until the bridge reports it.";
|
|
809
|
+
readonly type: "object";
|
|
810
|
+
readonly additionalProperties: false;
|
|
811
|
+
readonly required: readonly ["missingPermissions"];
|
|
812
|
+
readonly properties: {
|
|
813
|
+
readonly installationId: {
|
|
814
|
+
readonly type: "string";
|
|
815
|
+
readonly minLength: 1;
|
|
816
|
+
readonly maxLength: 64;
|
|
817
|
+
readonly description: "The forge's identifier for its installation of the community's app (GitHub).";
|
|
818
|
+
};
|
|
819
|
+
readonly appName: {
|
|
820
|
+
readonly type: "string";
|
|
821
|
+
readonly minLength: 1;
|
|
822
|
+
readonly maxLength: 256;
|
|
823
|
+
readonly description: "The app's display name.";
|
|
824
|
+
};
|
|
825
|
+
readonly appSlug: {
|
|
826
|
+
readonly type: "string";
|
|
827
|
+
readonly minLength: 1;
|
|
828
|
+
readonly maxLength: 256;
|
|
829
|
+
readonly description: "The app's URL slug on the forge.";
|
|
830
|
+
};
|
|
831
|
+
readonly appRegistration: {
|
|
832
|
+
readonly type: "string";
|
|
833
|
+
readonly minLength: 1;
|
|
834
|
+
readonly maxLength: 256;
|
|
835
|
+
readonly description: "Where the app's manifest registration stands, in the bridge's words (`registered`, `pending`).";
|
|
836
|
+
};
|
|
837
|
+
readonly missingPermissions: {
|
|
838
|
+
readonly type: "array";
|
|
839
|
+
readonly maxItems: 256;
|
|
840
|
+
readonly uniqueItems: true;
|
|
841
|
+
readonly items: {
|
|
842
|
+
readonly type: "string";
|
|
843
|
+
readonly minLength: 1;
|
|
844
|
+
readonly maxLength: 128;
|
|
845
|
+
};
|
|
846
|
+
readonly description: "Permissions the app needs and the installation has not granted, in the forge's vocabulary. Empty when none are missing, or none were reported.";
|
|
847
|
+
};
|
|
848
|
+
readonly permissionUpgradePending: {
|
|
849
|
+
readonly type: "boolean";
|
|
850
|
+
readonly description: "A new version of the app asks for permissions the forge owner has not approved yet.";
|
|
851
|
+
};
|
|
852
|
+
readonly orgRulesets: {
|
|
853
|
+
readonly type: "boolean";
|
|
854
|
+
readonly description: "Organisation rulesets are available on the owner's plan.";
|
|
855
|
+
};
|
|
856
|
+
readonly requiredWorkflow: {
|
|
857
|
+
readonly type: "boolean";
|
|
858
|
+
readonly description: "The organisation ruleset requiring the verify-trust workflow is in force.";
|
|
859
|
+
};
|
|
860
|
+
readonly bridgePostedCheck: {
|
|
861
|
+
readonly type: "boolean";
|
|
862
|
+
readonly description: "The bridge can post the verify-trust check itself, the fallback where no required workflow is available.";
|
|
863
|
+
};
|
|
864
|
+
readonly reportedAt: {
|
|
865
|
+
readonly type: "string";
|
|
866
|
+
readonly format: "date-time";
|
|
867
|
+
readonly description: "When the VTC received the report.";
|
|
868
|
+
};
|
|
869
|
+
};
|
|
870
|
+
};
|
|
871
|
+
readonly NamespaceStatus: {
|
|
872
|
+
readonly title: "NamespaceStatus";
|
|
873
|
+
readonly description: "One namespace as its administrators govern it: the binding, who administers it, how many repositories it holds, and what its bridge last reported.";
|
|
874
|
+
readonly type: "object";
|
|
875
|
+
readonly additionalProperties: false;
|
|
876
|
+
readonly required: readonly ["id", "forge", "owner", "resource", "mode", "state", "boundBy", "requestedAt", "admins", "repoCount", "headless", "installationRemoved", "roleDrift", "cascadeOnDeparture", "roleMapSource"];
|
|
877
|
+
readonly properties: {
|
|
878
|
+
readonly id: {
|
|
879
|
+
readonly $ref: "#/$defs/NamespaceId";
|
|
880
|
+
};
|
|
881
|
+
readonly forge: {
|
|
882
|
+
readonly $ref: "#/$defs/ForgeHost";
|
|
883
|
+
};
|
|
884
|
+
readonly owner: {
|
|
885
|
+
readonly $ref: "#/$defs/Segment";
|
|
886
|
+
readonly description: "The organisation or user on the forge, lowercased.";
|
|
887
|
+
};
|
|
888
|
+
readonly resource: {
|
|
889
|
+
readonly $ref: "#/$defs/Resource";
|
|
890
|
+
readonly description: "The namespace as a resource: `<forge>/<owner>`.";
|
|
891
|
+
};
|
|
892
|
+
readonly mode: {
|
|
893
|
+
readonly type: "string";
|
|
894
|
+
readonly enum: readonly ["bridge", "manual"];
|
|
895
|
+
readonly description: "As `GitNamespace.mode` in the shared schema.";
|
|
896
|
+
};
|
|
897
|
+
readonly state: {
|
|
898
|
+
readonly type: "string";
|
|
899
|
+
readonly enum: readonly ["pending", "bound"];
|
|
900
|
+
readonly description: "As `GitNamespace.state` in the shared schema.";
|
|
901
|
+
};
|
|
902
|
+
readonly kind: {
|
|
903
|
+
readonly type: "string";
|
|
904
|
+
readonly enum: readonly ["organization", "user"];
|
|
905
|
+
readonly description: "Whether the owner is an organisation or a personal account, once the forge has said.";
|
|
906
|
+
};
|
|
907
|
+
readonly ownerId: {
|
|
908
|
+
readonly $ref: "#/$defs/ForgeId";
|
|
909
|
+
readonly description: "The forge's id for the owner, once the forge has said. Unlike `owner`, it survives a rename.";
|
|
910
|
+
};
|
|
911
|
+
readonly bridgeDid: {
|
|
912
|
+
readonly $ref: "#/$defs/Did";
|
|
913
|
+
readonly description: "The bridge that serves the namespace. Absent in manual mode.";
|
|
914
|
+
};
|
|
915
|
+
readonly boundBy: {
|
|
916
|
+
readonly $ref: "#/$defs/Did";
|
|
917
|
+
readonly description: "Who bound it.";
|
|
918
|
+
};
|
|
919
|
+
readonly requestedAt: {
|
|
920
|
+
readonly type: "string";
|
|
921
|
+
readonly format: "date-time";
|
|
922
|
+
readonly description: "When binding was requested.";
|
|
923
|
+
};
|
|
924
|
+
readonly boundAt: {
|
|
925
|
+
readonly type: "string";
|
|
926
|
+
readonly format: "date-time";
|
|
927
|
+
readonly description: "When binding completed. Absent while `pending`.";
|
|
928
|
+
};
|
|
929
|
+
readonly admins: {
|
|
930
|
+
readonly type: "array";
|
|
931
|
+
readonly uniqueItems: true;
|
|
932
|
+
readonly items: {
|
|
933
|
+
readonly $ref: "#/$defs/Did";
|
|
934
|
+
};
|
|
935
|
+
readonly description: "Everyone holding a live, explicitly recorded `git.ns.admin` on the namespace. Each of them can grant anything in it.";
|
|
936
|
+
};
|
|
937
|
+
readonly repoCount: {
|
|
938
|
+
readonly type: "integer";
|
|
939
|
+
readonly minimum: 0;
|
|
940
|
+
readonly description: "How many repositories the VTC records in the namespace, in any state.";
|
|
941
|
+
};
|
|
942
|
+
readonly headless: {
|
|
943
|
+
readonly type: "boolean";
|
|
944
|
+
readonly description: "Bound, with no live admin: its last admin left or lapsed. Nobody can grant in it until an administrator reseats one (`git-ns/namespace/reseat`).";
|
|
945
|
+
};
|
|
946
|
+
readonly installationRemoved: {
|
|
947
|
+
readonly type: "boolean";
|
|
948
|
+
readonly description: "The bridge reported losing its access to the forge owner, and has not reported access since.";
|
|
949
|
+
};
|
|
950
|
+
readonly forgeStatus: {
|
|
951
|
+
readonly $ref: "#/$defs/ForgeStatus";
|
|
952
|
+
};
|
|
953
|
+
readonly roleDrift: {
|
|
954
|
+
readonly type: "string";
|
|
955
|
+
readonly enum: readonly ["report", "enforce"];
|
|
956
|
+
readonly description: "What the community's policy does with a forge role nobody granted: `report` it as drift for an administrator to resolve, or `enforce` the projection by reverting it. Community-wide; repeated on every namespace so that each row stands alone.";
|
|
957
|
+
};
|
|
958
|
+
readonly cascadeOnDeparture: {
|
|
959
|
+
readonly type: "boolean";
|
|
960
|
+
readonly description: "Whether the community's policy revokes the grants a member made when that member leaves. Community-wide, as `roleDrift`.";
|
|
961
|
+
};
|
|
962
|
+
readonly roleMap: {
|
|
963
|
+
readonly $ref: "#/$defs/RoleMap";
|
|
964
|
+
readonly description: "The forge role each right projects to on a repository without a map of its own, as the serving bridge last reported it. Absent while `roleMapSource` is `unknown`: no map, the default included, is assumed.";
|
|
965
|
+
};
|
|
966
|
+
readonly roleMapSource: {
|
|
967
|
+
readonly type: "string";
|
|
968
|
+
readonly enum: readonly ["reported", "unknown"];
|
|
969
|
+
readonly description: "`reported` — the bridge serving the namespace reported its role map. `unknown` — it has not, since the namespace was bound or came to be served by it.";
|
|
970
|
+
};
|
|
971
|
+
readonly roleMapReportedAt: {
|
|
972
|
+
readonly type: "string";
|
|
973
|
+
readonly format: "date-time";
|
|
974
|
+
readonly description: "The `issuedAt` of the role-map report held, on the bridge's clock.";
|
|
975
|
+
};
|
|
976
|
+
};
|
|
977
|
+
};
|
|
978
|
+
readonly Response: {
|
|
979
|
+
readonly $anchor: "response";
|
|
980
|
+
readonly title: "Git Namespaces — List Namespaces — response payload";
|
|
981
|
+
readonly description: "The namespaces the caller administers, or the one asked for.";
|
|
982
|
+
readonly type: "object";
|
|
983
|
+
readonly additionalProperties: false;
|
|
984
|
+
readonly required: readonly ["namespaces"];
|
|
985
|
+
readonly properties: {
|
|
986
|
+
readonly namespaces: {
|
|
987
|
+
readonly type: "array";
|
|
988
|
+
readonly items: {
|
|
989
|
+
readonly $ref: "#/$defs/NamespaceStatus";
|
|
990
|
+
};
|
|
991
|
+
readonly description: "Every administered namespace, `pending` ones included, ordered by `resource`. Empty only for a holder of the community-administrator capability on a VTC with no namespace.";
|
|
992
|
+
};
|
|
993
|
+
readonly ext: {
|
|
994
|
+
readonly $ref: "#/$defs/Ext";
|
|
995
|
+
};
|
|
996
|
+
};
|
|
997
|
+
};
|
|
998
|
+
readonly Ext: {
|
|
999
|
+
readonly title: "Ext";
|
|
1000
|
+
readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
|
|
1001
|
+
readonly type: "object";
|
|
1002
|
+
readonly minProperties: 1;
|
|
1003
|
+
readonly additionalProperties: true;
|
|
1004
|
+
readonly propertyNames: {
|
|
1005
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
1006
|
+
};
|
|
1007
|
+
};
|
|
1008
|
+
readonly Did: {
|
|
1009
|
+
readonly title: "Did";
|
|
1010
|
+
readonly description: "A bare DID in the W3C DID Core syntax (§3.1): `did:`, a method name of lowercase letters and digits, `:`, and a method-specific id of colon-separated segments drawn from `A-Z a-z 0-9 . - _` and percent-encoded octets, the last segment non-empty. A DID URL is not a DID: no path, query or fragment (`/`, `?`, `#`), so a verification-method id such as `did:key:z6Mk…#z6Mk…` is refused. Compared by exact string equality — no case folding or percent-decoding. A consumer MUST still treat the value as data: the pattern keeps shell metacharacters, whitespace and quotes out of the wire form, but it does not make a DID safe to splice into a command or markup.";
|
|
1011
|
+
readonly type: "string";
|
|
1012
|
+
readonly maxLength: 2048;
|
|
1013
|
+
readonly pattern: "^did:[a-z0-9]+:(?:(?:[A-Za-z0-9._-]|%[0-9A-Fa-f]{2})*:)*(?:[A-Za-z0-9._-]|%[0-9A-Fa-f]{2})+$";
|
|
1014
|
+
};
|
|
1015
|
+
readonly ForgeId: {
|
|
1016
|
+
readonly title: "ForgeId";
|
|
1017
|
+
readonly description: "An identifier the forge itself assigns — a repository id, a user or organisation id — carried as a string so a forge whose ids are not numbers needs no new version. GitHub and Forgejo ids are decimal integers written as strings (`\"812736451\"`). Unlike a name, it survives renames and transfers, which is why rights and bindings are keyed by it.";
|
|
1018
|
+
readonly type: "string";
|
|
1019
|
+
readonly minLength: 1;
|
|
1020
|
+
readonly maxLength: 64;
|
|
1021
|
+
};
|
|
1022
|
+
readonly Resource: {
|
|
1023
|
+
readonly title: "Resource";
|
|
1024
|
+
readonly description: "A forge-qualified resource: `<forge-host>/<owner>` for a namespace, or `<forge-host>/<owner>/<repo>` for one repository, all lowercase — `github.com/acme`, `github.com/acme/widgets`, `codeberg.org/acme`. The forge is never implied: `acme/widgets` alone is not a resource. Containment is by whole segment: `github.com/acme` contains `github.com/acme/widgets` and does not contain `github.com/acme-labs/x` or `codeberg.org/acme/widgets`.";
|
|
1025
|
+
readonly type: "string";
|
|
1026
|
+
readonly maxLength: 455;
|
|
1027
|
+
readonly pattern: "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+(?:/[a-z0-9_-][a-z0-9._-]{0,99}){1,2}$";
|
|
1028
|
+
};
|
|
1029
|
+
readonly Segment: {
|
|
1030
|
+
readonly title: "Segment";
|
|
1031
|
+
readonly description: "One lowercased owner or repository name. Forges compare these case-insensitively, so the wire form is always lowercase and a producer lowercases before sending. A leading `.` is refused, which rules out `.` and `..`.";
|
|
1032
|
+
readonly type: "string";
|
|
1033
|
+
readonly minLength: 1;
|
|
1034
|
+
readonly maxLength: 100;
|
|
1035
|
+
readonly pattern: "^[a-z0-9_-][a-z0-9._-]*$";
|
|
1036
|
+
};
|
|
1037
|
+
readonly ForgeHost: {
|
|
1038
|
+
readonly title: "ForgeHost";
|
|
1039
|
+
readonly description: "The lowercased DNS host of a forge: `github.com`, a GitHub Enterprise Server host, `codeberg.org`, or a self-hosted Forgejo instance such as `git.example.org`. No scheme, no port, no path. The host is a segment of every resource, so a right never crosses forges.";
|
|
1040
|
+
readonly type: "string";
|
|
1041
|
+
readonly minLength: 3;
|
|
1042
|
+
readonly maxLength: 253;
|
|
1043
|
+
readonly pattern: "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+$";
|
|
1044
|
+
};
|
|
1045
|
+
readonly NamespaceId: {
|
|
1046
|
+
readonly title: "NamespaceId";
|
|
1047
|
+
readonly description: "The VTC's opaque identifier for a namespace, assigned when it is bound. Stable for the life of the binding; never reused for another binding.";
|
|
1048
|
+
readonly type: "string";
|
|
1049
|
+
readonly minLength: 1;
|
|
1050
|
+
readonly maxLength: 128;
|
|
1051
|
+
};
|
|
1052
|
+
};
|
|
1053
|
+
};
|
|
1054
|
+
};
|
|
1055
|
+
/**
|
|
1056
|
+
* SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
|
|
1057
|
+
* tracks the *issuer* party's requirement because a response swaps the
|
|
1058
|
+
* parties (§7.3 item 5).
|
|
1059
|
+
*/
|
|
1060
|
+
export declare const RESPONSE_SPEC: {
|
|
1061
|
+
readonly typeUri: "https://trusttasks.org/spec/git-ns/namespace/list/0.1#response";
|
|
1062
|
+
readonly isBearer: false;
|
|
1063
|
+
readonly isProofRequired: true;
|
|
1064
|
+
readonly isRecipientRequired: true;
|
|
1065
|
+
readonly isIssuedAtRequired: false;
|
|
1066
|
+
readonly payloadSchema: {
|
|
1067
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
1068
|
+
readonly $ref: "#/$defs/Response";
|
|
1069
|
+
readonly $defs: {
|
|
1070
|
+
readonly MappedRole: {
|
|
1071
|
+
readonly title: "MappedRole";
|
|
1072
|
+
readonly type: "string";
|
|
1073
|
+
readonly enum: readonly ["none", "read", "triage", "write", "maintain", "admin"];
|
|
1074
|
+
readonly description: "A level of the bridge's forge-neutral role ladder, lowest first: the vocabulary role drift's `observed` and `expected` are reported in. `none` is no direct role on the repository.";
|
|
1075
|
+
};
|
|
1076
|
+
readonly RoleMap: {
|
|
1077
|
+
readonly title: "RoleMap";
|
|
1078
|
+
readonly description: "The forge role each repository right is given, as the forge applies it: after the forge's own ladder has rounded it down. `own` is the role `git.repo.own` projects to, `maintain` that of `git.repo.maintain`, `commit` that of `git.commit.sign` (`none` is fork-based contribution). There is no member for `git.ns.admin` or `git.repo.create`, which project to no forge role whatever a bridge is configured with. Ordered: `own` is at least `maintain`, which is at least `commit`, and `commit` is at most `write`.";
|
|
1079
|
+
readonly type: "object";
|
|
1080
|
+
readonly additionalProperties: false;
|
|
1081
|
+
readonly required: readonly ["own", "maintain", "commit"];
|
|
1082
|
+
readonly properties: {
|
|
1083
|
+
readonly own: {
|
|
1084
|
+
readonly $ref: "#/$defs/MappedRole";
|
|
1085
|
+
};
|
|
1086
|
+
readonly maintain: {
|
|
1087
|
+
readonly $ref: "#/$defs/MappedRole";
|
|
1088
|
+
};
|
|
1089
|
+
readonly commit: {
|
|
1090
|
+
readonly $ref: "#/$defs/MappedRole";
|
|
1091
|
+
};
|
|
1092
|
+
};
|
|
1093
|
+
};
|
|
1094
|
+
readonly ForgeStatus: {
|
|
1095
|
+
readonly title: "ForgeStatus";
|
|
1096
|
+
readonly description: "What the bridge serving the namespace last reported about its standing on the forge owner — its app, its installation and what the owner's plan allows. Display only: it changes no decision the VTC takes. Every member but `missingPermissions` is absent until the bridge reports it.";
|
|
1097
|
+
readonly type: "object";
|
|
1098
|
+
readonly additionalProperties: false;
|
|
1099
|
+
readonly required: readonly ["missingPermissions"];
|
|
1100
|
+
readonly properties: {
|
|
1101
|
+
readonly installationId: {
|
|
1102
|
+
readonly type: "string";
|
|
1103
|
+
readonly minLength: 1;
|
|
1104
|
+
readonly maxLength: 64;
|
|
1105
|
+
readonly description: "The forge's identifier for its installation of the community's app (GitHub).";
|
|
1106
|
+
};
|
|
1107
|
+
readonly appName: {
|
|
1108
|
+
readonly type: "string";
|
|
1109
|
+
readonly minLength: 1;
|
|
1110
|
+
readonly maxLength: 256;
|
|
1111
|
+
readonly description: "The app's display name.";
|
|
1112
|
+
};
|
|
1113
|
+
readonly appSlug: {
|
|
1114
|
+
readonly type: "string";
|
|
1115
|
+
readonly minLength: 1;
|
|
1116
|
+
readonly maxLength: 256;
|
|
1117
|
+
readonly description: "The app's URL slug on the forge.";
|
|
1118
|
+
};
|
|
1119
|
+
readonly appRegistration: {
|
|
1120
|
+
readonly type: "string";
|
|
1121
|
+
readonly minLength: 1;
|
|
1122
|
+
readonly maxLength: 256;
|
|
1123
|
+
readonly description: "Where the app's manifest registration stands, in the bridge's words (`registered`, `pending`).";
|
|
1124
|
+
};
|
|
1125
|
+
readonly missingPermissions: {
|
|
1126
|
+
readonly type: "array";
|
|
1127
|
+
readonly maxItems: 256;
|
|
1128
|
+
readonly uniqueItems: true;
|
|
1129
|
+
readonly items: {
|
|
1130
|
+
readonly type: "string";
|
|
1131
|
+
readonly minLength: 1;
|
|
1132
|
+
readonly maxLength: 128;
|
|
1133
|
+
};
|
|
1134
|
+
readonly description: "Permissions the app needs and the installation has not granted, in the forge's vocabulary. Empty when none are missing, or none were reported.";
|
|
1135
|
+
};
|
|
1136
|
+
readonly permissionUpgradePending: {
|
|
1137
|
+
readonly type: "boolean";
|
|
1138
|
+
readonly description: "A new version of the app asks for permissions the forge owner has not approved yet.";
|
|
1139
|
+
};
|
|
1140
|
+
readonly orgRulesets: {
|
|
1141
|
+
readonly type: "boolean";
|
|
1142
|
+
readonly description: "Organisation rulesets are available on the owner's plan.";
|
|
1143
|
+
};
|
|
1144
|
+
readonly requiredWorkflow: {
|
|
1145
|
+
readonly type: "boolean";
|
|
1146
|
+
readonly description: "The organisation ruleset requiring the verify-trust workflow is in force.";
|
|
1147
|
+
};
|
|
1148
|
+
readonly bridgePostedCheck: {
|
|
1149
|
+
readonly type: "boolean";
|
|
1150
|
+
readonly description: "The bridge can post the verify-trust check itself, the fallback where no required workflow is available.";
|
|
1151
|
+
};
|
|
1152
|
+
readonly reportedAt: {
|
|
1153
|
+
readonly type: "string";
|
|
1154
|
+
readonly format: "date-time";
|
|
1155
|
+
readonly description: "When the VTC received the report.";
|
|
1156
|
+
};
|
|
1157
|
+
};
|
|
1158
|
+
};
|
|
1159
|
+
readonly NamespaceStatus: {
|
|
1160
|
+
readonly title: "NamespaceStatus";
|
|
1161
|
+
readonly description: "One namespace as its administrators govern it: the binding, who administers it, how many repositories it holds, and what its bridge last reported.";
|
|
1162
|
+
readonly type: "object";
|
|
1163
|
+
readonly additionalProperties: false;
|
|
1164
|
+
readonly required: readonly ["id", "forge", "owner", "resource", "mode", "state", "boundBy", "requestedAt", "admins", "repoCount", "headless", "installationRemoved", "roleDrift", "cascadeOnDeparture", "roleMapSource"];
|
|
1165
|
+
readonly properties: {
|
|
1166
|
+
readonly id: {
|
|
1167
|
+
readonly $ref: "#/$defs/NamespaceId";
|
|
1168
|
+
};
|
|
1169
|
+
readonly forge: {
|
|
1170
|
+
readonly $ref: "#/$defs/ForgeHost";
|
|
1171
|
+
};
|
|
1172
|
+
readonly owner: {
|
|
1173
|
+
readonly $ref: "#/$defs/Segment";
|
|
1174
|
+
readonly description: "The organisation or user on the forge, lowercased.";
|
|
1175
|
+
};
|
|
1176
|
+
readonly resource: {
|
|
1177
|
+
readonly $ref: "#/$defs/Resource";
|
|
1178
|
+
readonly description: "The namespace as a resource: `<forge>/<owner>`.";
|
|
1179
|
+
};
|
|
1180
|
+
readonly mode: {
|
|
1181
|
+
readonly type: "string";
|
|
1182
|
+
readonly enum: readonly ["bridge", "manual"];
|
|
1183
|
+
readonly description: "As `GitNamespace.mode` in the shared schema.";
|
|
1184
|
+
};
|
|
1185
|
+
readonly state: {
|
|
1186
|
+
readonly type: "string";
|
|
1187
|
+
readonly enum: readonly ["pending", "bound"];
|
|
1188
|
+
readonly description: "As `GitNamespace.state` in the shared schema.";
|
|
1189
|
+
};
|
|
1190
|
+
readonly kind: {
|
|
1191
|
+
readonly type: "string";
|
|
1192
|
+
readonly enum: readonly ["organization", "user"];
|
|
1193
|
+
readonly description: "Whether the owner is an organisation or a personal account, once the forge has said.";
|
|
1194
|
+
};
|
|
1195
|
+
readonly ownerId: {
|
|
1196
|
+
readonly $ref: "#/$defs/ForgeId";
|
|
1197
|
+
readonly description: "The forge's id for the owner, once the forge has said. Unlike `owner`, it survives a rename.";
|
|
1198
|
+
};
|
|
1199
|
+
readonly bridgeDid: {
|
|
1200
|
+
readonly $ref: "#/$defs/Did";
|
|
1201
|
+
readonly description: "The bridge that serves the namespace. Absent in manual mode.";
|
|
1202
|
+
};
|
|
1203
|
+
readonly boundBy: {
|
|
1204
|
+
readonly $ref: "#/$defs/Did";
|
|
1205
|
+
readonly description: "Who bound it.";
|
|
1206
|
+
};
|
|
1207
|
+
readonly requestedAt: {
|
|
1208
|
+
readonly type: "string";
|
|
1209
|
+
readonly format: "date-time";
|
|
1210
|
+
readonly description: "When binding was requested.";
|
|
1211
|
+
};
|
|
1212
|
+
readonly boundAt: {
|
|
1213
|
+
readonly type: "string";
|
|
1214
|
+
readonly format: "date-time";
|
|
1215
|
+
readonly description: "When binding completed. Absent while `pending`.";
|
|
1216
|
+
};
|
|
1217
|
+
readonly admins: {
|
|
1218
|
+
readonly type: "array";
|
|
1219
|
+
readonly uniqueItems: true;
|
|
1220
|
+
readonly items: {
|
|
1221
|
+
readonly $ref: "#/$defs/Did";
|
|
1222
|
+
};
|
|
1223
|
+
readonly description: "Everyone holding a live, explicitly recorded `git.ns.admin` on the namespace. Each of them can grant anything in it.";
|
|
1224
|
+
};
|
|
1225
|
+
readonly repoCount: {
|
|
1226
|
+
readonly type: "integer";
|
|
1227
|
+
readonly minimum: 0;
|
|
1228
|
+
readonly description: "How many repositories the VTC records in the namespace, in any state.";
|
|
1229
|
+
};
|
|
1230
|
+
readonly headless: {
|
|
1231
|
+
readonly type: "boolean";
|
|
1232
|
+
readonly description: "Bound, with no live admin: its last admin left or lapsed. Nobody can grant in it until an administrator reseats one (`git-ns/namespace/reseat`).";
|
|
1233
|
+
};
|
|
1234
|
+
readonly installationRemoved: {
|
|
1235
|
+
readonly type: "boolean";
|
|
1236
|
+
readonly description: "The bridge reported losing its access to the forge owner, and has not reported access since.";
|
|
1237
|
+
};
|
|
1238
|
+
readonly forgeStatus: {
|
|
1239
|
+
readonly $ref: "#/$defs/ForgeStatus";
|
|
1240
|
+
};
|
|
1241
|
+
readonly roleDrift: {
|
|
1242
|
+
readonly type: "string";
|
|
1243
|
+
readonly enum: readonly ["report", "enforce"];
|
|
1244
|
+
readonly description: "What the community's policy does with a forge role nobody granted: `report` it as drift for an administrator to resolve, or `enforce` the projection by reverting it. Community-wide; repeated on every namespace so that each row stands alone.";
|
|
1245
|
+
};
|
|
1246
|
+
readonly cascadeOnDeparture: {
|
|
1247
|
+
readonly type: "boolean";
|
|
1248
|
+
readonly description: "Whether the community's policy revokes the grants a member made when that member leaves. Community-wide, as `roleDrift`.";
|
|
1249
|
+
};
|
|
1250
|
+
readonly roleMap: {
|
|
1251
|
+
readonly $ref: "#/$defs/RoleMap";
|
|
1252
|
+
readonly description: "The forge role each right projects to on a repository without a map of its own, as the serving bridge last reported it. Absent while `roleMapSource` is `unknown`: no map, the default included, is assumed.";
|
|
1253
|
+
};
|
|
1254
|
+
readonly roleMapSource: {
|
|
1255
|
+
readonly type: "string";
|
|
1256
|
+
readonly enum: readonly ["reported", "unknown"];
|
|
1257
|
+
readonly description: "`reported` — the bridge serving the namespace reported its role map. `unknown` — it has not, since the namespace was bound or came to be served by it.";
|
|
1258
|
+
};
|
|
1259
|
+
readonly roleMapReportedAt: {
|
|
1260
|
+
readonly type: "string";
|
|
1261
|
+
readonly format: "date-time";
|
|
1262
|
+
readonly description: "The `issuedAt` of the role-map report held, on the bridge's clock.";
|
|
1263
|
+
};
|
|
1264
|
+
};
|
|
1265
|
+
};
|
|
1266
|
+
readonly Response: {
|
|
1267
|
+
readonly $anchor: "response";
|
|
1268
|
+
readonly title: "Git Namespaces — List Namespaces — response payload";
|
|
1269
|
+
readonly description: "The namespaces the caller administers, or the one asked for.";
|
|
1270
|
+
readonly type: "object";
|
|
1271
|
+
readonly additionalProperties: false;
|
|
1272
|
+
readonly required: readonly ["namespaces"];
|
|
1273
|
+
readonly properties: {
|
|
1274
|
+
readonly namespaces: {
|
|
1275
|
+
readonly type: "array";
|
|
1276
|
+
readonly items: {
|
|
1277
|
+
readonly $ref: "#/$defs/NamespaceStatus";
|
|
1278
|
+
};
|
|
1279
|
+
readonly description: "Every administered namespace, `pending` ones included, ordered by `resource`. Empty only for a holder of the community-administrator capability on a VTC with no namespace.";
|
|
1280
|
+
};
|
|
1281
|
+
readonly ext: {
|
|
1282
|
+
readonly $ref: "#/$defs/Ext";
|
|
1283
|
+
};
|
|
1284
|
+
};
|
|
1285
|
+
};
|
|
1286
|
+
readonly Ext: {
|
|
1287
|
+
readonly title: "Ext";
|
|
1288
|
+
readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
|
|
1289
|
+
readonly type: "object";
|
|
1290
|
+
readonly minProperties: 1;
|
|
1291
|
+
readonly additionalProperties: true;
|
|
1292
|
+
readonly propertyNames: {
|
|
1293
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
1294
|
+
};
|
|
1295
|
+
};
|
|
1296
|
+
readonly Did: {
|
|
1297
|
+
readonly title: "Did";
|
|
1298
|
+
readonly description: "A bare DID in the W3C DID Core syntax (§3.1): `did:`, a method name of lowercase letters and digits, `:`, and a method-specific id of colon-separated segments drawn from `A-Z a-z 0-9 . - _` and percent-encoded octets, the last segment non-empty. A DID URL is not a DID: no path, query or fragment (`/`, `?`, `#`), so a verification-method id such as `did:key:z6Mk…#z6Mk…` is refused. Compared by exact string equality — no case folding or percent-decoding. A consumer MUST still treat the value as data: the pattern keeps shell metacharacters, whitespace and quotes out of the wire form, but it does not make a DID safe to splice into a command or markup.";
|
|
1299
|
+
readonly type: "string";
|
|
1300
|
+
readonly maxLength: 2048;
|
|
1301
|
+
readonly pattern: "^did:[a-z0-9]+:(?:(?:[A-Za-z0-9._-]|%[0-9A-Fa-f]{2})*:)*(?:[A-Za-z0-9._-]|%[0-9A-Fa-f]{2})+$";
|
|
1302
|
+
};
|
|
1303
|
+
readonly ForgeId: {
|
|
1304
|
+
readonly title: "ForgeId";
|
|
1305
|
+
readonly description: "An identifier the forge itself assigns — a repository id, a user or organisation id — carried as a string so a forge whose ids are not numbers needs no new version. GitHub and Forgejo ids are decimal integers written as strings (`\"812736451\"`). Unlike a name, it survives renames and transfers, which is why rights and bindings are keyed by it.";
|
|
1306
|
+
readonly type: "string";
|
|
1307
|
+
readonly minLength: 1;
|
|
1308
|
+
readonly maxLength: 64;
|
|
1309
|
+
};
|
|
1310
|
+
readonly Resource: {
|
|
1311
|
+
readonly title: "Resource";
|
|
1312
|
+
readonly description: "A forge-qualified resource: `<forge-host>/<owner>` for a namespace, or `<forge-host>/<owner>/<repo>` for one repository, all lowercase — `github.com/acme`, `github.com/acme/widgets`, `codeberg.org/acme`. The forge is never implied: `acme/widgets` alone is not a resource. Containment is by whole segment: `github.com/acme` contains `github.com/acme/widgets` and does not contain `github.com/acme-labs/x` or `codeberg.org/acme/widgets`.";
|
|
1313
|
+
readonly type: "string";
|
|
1314
|
+
readonly maxLength: 455;
|
|
1315
|
+
readonly pattern: "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+(?:/[a-z0-9_-][a-z0-9._-]{0,99}){1,2}$";
|
|
1316
|
+
};
|
|
1317
|
+
readonly Segment: {
|
|
1318
|
+
readonly title: "Segment";
|
|
1319
|
+
readonly description: "One lowercased owner or repository name. Forges compare these case-insensitively, so the wire form is always lowercase and a producer lowercases before sending. A leading `.` is refused, which rules out `.` and `..`.";
|
|
1320
|
+
readonly type: "string";
|
|
1321
|
+
readonly minLength: 1;
|
|
1322
|
+
readonly maxLength: 100;
|
|
1323
|
+
readonly pattern: "^[a-z0-9_-][a-z0-9._-]*$";
|
|
1324
|
+
};
|
|
1325
|
+
readonly ForgeHost: {
|
|
1326
|
+
readonly title: "ForgeHost";
|
|
1327
|
+
readonly description: "The lowercased DNS host of a forge: `github.com`, a GitHub Enterprise Server host, `codeberg.org`, or a self-hosted Forgejo instance such as `git.example.org`. No scheme, no port, no path. The host is a segment of every resource, so a right never crosses forges.";
|
|
1328
|
+
readonly type: "string";
|
|
1329
|
+
readonly minLength: 3;
|
|
1330
|
+
readonly maxLength: 253;
|
|
1331
|
+
readonly pattern: "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+$";
|
|
1332
|
+
};
|
|
1333
|
+
readonly NamespaceId: {
|
|
1334
|
+
readonly title: "NamespaceId";
|
|
1335
|
+
readonly description: "The VTC's opaque identifier for a namespace, assigned when it is bound. Stable for the life of the binding; never reused for another binding.";
|
|
1336
|
+
readonly type: "string";
|
|
1337
|
+
readonly minLength: 1;
|
|
1338
|
+
readonly maxLength: 128;
|
|
1339
|
+
};
|
|
1340
|
+
};
|
|
1341
|
+
};
|
|
1342
|
+
};
|
|
1343
|
+
//# sourceMappingURL=payload.d.ts.map
|