@bongos/core 1.21.94 → 1.21.96
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/.bongos-core.json +45 -35
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +8 -0
- package/clients/bongos-client/index.cjs +8 -0
- package/clients/bongos-client/index.d.ts +13 -3
- package/clients/bongos-client/index.mjs +8 -0
- package/docs/api/openapi.json +181 -7
- package/docs/api-reference.md +9 -5
- package/docs/copy-inventory.md +367 -358
- package/docs/copy-registry.json +536 -425
- package/docs/design/project-startup-direction.md +17 -1
- package/docs/module-api-changelog.md +4 -0
- package/docs/page-readings.json +351 -348
- package/modules/provisioning/github-setup.js +27 -5
- package/modules/provisioning/routes/callback-page.js +20 -10
- package/modules/provisioning/routes/github-setup.js +111 -2
- package/modules/provisioning/routes/provisioning.js +29 -4
- package/modules/public-landing/public/projects.html +367 -24
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +12 -0
- package/src/bongos/github-repos.js +129 -0
- package/src/bongos/routes/github.js +71 -5
- package/src/module-api.js +1 -1
- package/tests/github_handback_any_device.mjs +340 -0
- package/tests/github_org_account.mjs +378 -0
- package/tests/projects_hub.mjs +6 -2
- package/tests/provisioning_callback_page.mjs +3 -2
- package/tests/provisioning_github_app_routes.mjs +15 -10
- package/tests/wizard_draft_resume.mjs +4 -0
- package/tests/wizard_github_feedback.mjs +2 -1
package/docs/api/openapi.json
CHANGED
|
@@ -6381,6 +6381,89 @@
|
|
|
6381
6381
|
]
|
|
6382
6382
|
}
|
|
6383
6383
|
},
|
|
6384
|
+
"/github/orgs": {
|
|
6385
|
+
"get": {
|
|
6386
|
+
"operationId": "get_github_orgs",
|
|
6387
|
+
"tags": [
|
|
6388
|
+
"github"
|
|
6389
|
+
],
|
|
6390
|
+
"summary": "GET /github/orgs",
|
|
6391
|
+
"description": "the caller's OWN GitHub organisations (task 1004651), for the project page's \"on an organisation\" choice. Each row says whether the caller can make an app there and, when not, why. `listed` says how much GitHub showed this token (github-repos.listUserOrgs): the page always offers a typed name beside the list.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
6392
|
+
"x-rank": "any-builder",
|
|
6393
|
+
"x-source": "src/bongos/routes/github.js",
|
|
6394
|
+
"responses": {
|
|
6395
|
+
"200": {
|
|
6396
|
+
"description": "Success."
|
|
6397
|
+
},
|
|
6398
|
+
"400": {
|
|
6399
|
+
"$ref": "#/components/responses/BadRequest"
|
|
6400
|
+
},
|
|
6401
|
+
"401": {
|
|
6402
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
6403
|
+
},
|
|
6404
|
+
"403": {
|
|
6405
|
+
"$ref": "#/components/responses/Forbidden"
|
|
6406
|
+
}
|
|
6407
|
+
},
|
|
6408
|
+
"security": [
|
|
6409
|
+
{
|
|
6410
|
+
"builderSession": []
|
|
6411
|
+
}
|
|
6412
|
+
]
|
|
6413
|
+
}
|
|
6414
|
+
},
|
|
6415
|
+
"/github/orgs/{org}": {
|
|
6416
|
+
"get": {
|
|
6417
|
+
"operationId": "get_github_orgs_org",
|
|
6418
|
+
"tags": [
|
|
6419
|
+
"github"
|
|
6420
|
+
],
|
|
6421
|
+
"summary": "GET /github/orgs/:org",
|
|
6422
|
+
"description": "checks ONE organisation name the caller typed, as their own GitHub credential sees it (task 1004651). The name is checked against GitHub's login rules before it reaches a URL.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
6423
|
+
"x-rank": "any-builder",
|
|
6424
|
+
"x-source": "src/bongos/routes/github.js",
|
|
6425
|
+
"parameters": [
|
|
6426
|
+
{
|
|
6427
|
+
"name": "org",
|
|
6428
|
+
"in": "path",
|
|
6429
|
+
"required": true,
|
|
6430
|
+
"schema": {
|
|
6431
|
+
"type": "string"
|
|
6432
|
+
},
|
|
6433
|
+
"description": "Path parameter `org`."
|
|
6434
|
+
}
|
|
6435
|
+
],
|
|
6436
|
+
"responses": {
|
|
6437
|
+
"200": {
|
|
6438
|
+
"description": "Success.",
|
|
6439
|
+
"content": {
|
|
6440
|
+
"application/json": {
|
|
6441
|
+
"schema": {
|
|
6442
|
+
"$ref": "#/components/schemas/GetGithubOrgsOrgResponse"
|
|
6443
|
+
}
|
|
6444
|
+
}
|
|
6445
|
+
}
|
|
6446
|
+
},
|
|
6447
|
+
"400": {
|
|
6448
|
+
"$ref": "#/components/responses/BadRequest"
|
|
6449
|
+
},
|
|
6450
|
+
"401": {
|
|
6451
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
6452
|
+
},
|
|
6453
|
+
"403": {
|
|
6454
|
+
"$ref": "#/components/responses/Forbidden"
|
|
6455
|
+
},
|
|
6456
|
+
"404": {
|
|
6457
|
+
"$ref": "#/components/responses/NotFound"
|
|
6458
|
+
}
|
|
6459
|
+
},
|
|
6460
|
+
"security": [
|
|
6461
|
+
{
|
|
6462
|
+
"builderSession": []
|
|
6463
|
+
}
|
|
6464
|
+
]
|
|
6465
|
+
}
|
|
6466
|
+
},
|
|
6384
6467
|
"/github/repo": {
|
|
6385
6468
|
"get": {
|
|
6386
6469
|
"operationId": "get_github_repo",
|
|
@@ -6511,7 +6594,7 @@
|
|
|
6511
6594
|
"github"
|
|
6512
6595
|
],
|
|
6513
6596
|
"summary": "POST /github/repos",
|
|
6514
|
-
"description": "creates a repo in the caller's OWN account.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
6597
|
+
"description": "creates a repo in the caller's OWN account, or (task 1004651) under an organisation they name in `org`. GitHub decides whether they may; its refusals come back as 409s with the reason, never as a 403 (the page reads a 403 as \"sign in again\").\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
6515
6598
|
"x-rank": "any-builder",
|
|
6516
6599
|
"x-source": "src/bongos/routes/github.js",
|
|
6517
6600
|
"requestBody": {
|
|
@@ -16460,6 +16543,65 @@
|
|
|
16460
16543
|
"security": []
|
|
16461
16544
|
}
|
|
16462
16545
|
},
|
|
16546
|
+
"/provisioning/github-app/resume": {
|
|
16547
|
+
"get": {
|
|
16548
|
+
"operationId": "get_provisioning_github_app_resume",
|
|
16549
|
+
"tags": [
|
|
16550
|
+
"provisioning"
|
|
16551
|
+
],
|
|
16552
|
+
"summary": "GET /provisioning/github-app/resume",
|
|
16553
|
+
"description": "GET /provisioning/github-app/resume[?id=<n>] — the project page's \"which project am I connecting?\" read when its tab remembers nothing (task 1004650): a hand-back on another device, a fresh tab, a cleared browser. With an id: that project, if the caller owns it. Without: the caller's newest project whose GitHub checklist is not connected yet, made or last tried within a week — so opening the create page later resumes part 03 from the server's view. Either way { project: null } when there is none; never the state token. rank: any authenticated builder (requireBuilder), own projects only — no Archon override.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
16554
|
+
"x-rank": "any-builder",
|
|
16555
|
+
"x-source": "modules/provisioning/routes/github-setup.js",
|
|
16556
|
+
"responses": {
|
|
16557
|
+
"200": {
|
|
16558
|
+
"description": "Success.",
|
|
16559
|
+
"content": {
|
|
16560
|
+
"application/json": {
|
|
16561
|
+
"schema": {
|
|
16562
|
+
"$ref": "#/components/schemas/GetProvisioningGithubAppResumeResponse"
|
|
16563
|
+
}
|
|
16564
|
+
}
|
|
16565
|
+
}
|
|
16566
|
+
},
|
|
16567
|
+
"400": {
|
|
16568
|
+
"$ref": "#/components/responses/BadRequest"
|
|
16569
|
+
},
|
|
16570
|
+
"401": {
|
|
16571
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
16572
|
+
},
|
|
16573
|
+
"403": {
|
|
16574
|
+
"$ref": "#/components/responses/Forbidden"
|
|
16575
|
+
}
|
|
16576
|
+
},
|
|
16577
|
+
"security": [
|
|
16578
|
+
{
|
|
16579
|
+
"builderSession": []
|
|
16580
|
+
}
|
|
16581
|
+
]
|
|
16582
|
+
}
|
|
16583
|
+
},
|
|
16584
|
+
"/provisioning/github-app/return": {
|
|
16585
|
+
"get": {
|
|
16586
|
+
"operationId": "get_provisioning_github_app_return",
|
|
16587
|
+
"tags": [
|
|
16588
|
+
"provisioning"
|
|
16589
|
+
],
|
|
16590
|
+
"summary": "GET /provisioning/github-app/return",
|
|
16591
|
+
"description": "GET /provisioning/github-app/return?state=<> — where the callback and setup pages send the founder back (task 1004650). The SERVER resolves the one-time state to the project it was minted for and 302s that project's signed-in OWNER to its part 03 (/projects?view=new&id=<id>), so the hand-back works from any tab, window or device — nothing in browser storage is read. Not signed in → through the web sign-in and back here. Signed in as anyone else, an unknown or malformed state, or a gone project → one refusal page that names no project (no oracle about which). The state stays single-use where it matters: only the manifest callback's code exchange consumes it, and this route changes nothing — it reveals a project's page only to the person who already owns it. rank: public — as a GATE: it is a browser redirect, so no middleware 401s a signed-out visitor (they are sent through sign-in instead). WHO lands is decided in-handler from the live session: the project's own owner, no Archon override, and nobody else ever learns which project the state names. It reveals no secret and writes nothing.\n\n**Rank:** `public` — No authentication — any caller.",
|
|
16592
|
+
"x-rank": "public",
|
|
16593
|
+
"x-source": "modules/provisioning/routes/github-setup.js",
|
|
16594
|
+
"responses": {
|
|
16595
|
+
"200": {
|
|
16596
|
+
"description": "Success."
|
|
16597
|
+
},
|
|
16598
|
+
"400": {
|
|
16599
|
+
"$ref": "#/components/responses/BadRequest"
|
|
16600
|
+
}
|
|
16601
|
+
},
|
|
16602
|
+
"security": []
|
|
16603
|
+
}
|
|
16604
|
+
},
|
|
16463
16605
|
"/provisioning/github-app/setup": {
|
|
16464
16606
|
"get": {
|
|
16465
16607
|
"operationId": "get_provisioning_github_app_setup",
|
|
@@ -17312,7 +17454,7 @@
|
|
|
17312
17454
|
"provisioning"
|
|
17313
17455
|
],
|
|
17314
17456
|
"summary": "POST /provisioning/instances/:id/github-app",
|
|
17315
|
-
"description": "POST /provisioning/instances/:id/github-app — mint a GitHub-App-Manifest onboarding link for the caller's OWN instance (task 2080, ADR 0133). rank: any authenticated builder (own resource). Returns the pre-filled manifest + the GitHub form-POST target (personal + org variants) + a one-time `state`; the browser POSTs the manifest to GitHub, the owner approves, and GitHub redirects back to the public callback below. The web tier only RECORDS the attempt (state token) — the control-plane runner does the token exchange + cred placement (trust boundary intact, ADR 0111 §2). Body: { account? ('personal'|'org') }.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
17457
|
+
"description": "POST /provisioning/instances/:id/github-app — mint a GitHub-App-Manifest onboarding link for the caller's OWN instance (task 2080, ADR 0133). rank: any authenticated builder (own resource). Returns the pre-filled manifest + the GitHub form-POST target (personal + org variants) + a one-time `state`; the browser POSTs the manifest to GitHub, the owner approves, and GitHub redirects back to the public callback below. The web tier only RECORDS the attempt (state token) — the control-plane runner does the token exchange + cred placement (trust boundary intact, ADR 0111 §2). Body: { account? ('personal'|'org'), org? (a GitHub organisation login) }. A personal or an organisation account (task 1004651): account 'org' makes the app on the organisation the founder chose on the page (`org`), else on the repo's owner. The org name is checked against GitHub's login rules here, never trusted from the page; whether the founder may make an app there is GitHub's to enforce on its own page (this module holds no GitHub token to ask with, ADR 0111 §2). Anything other than account 'org' is the founder's personal account, exactly as before.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
17316
17458
|
"x-rank": "any-builder",
|
|
17317
17459
|
"x-source": "modules/provisioning/routes/provisioning.js",
|
|
17318
17460
|
"parameters": [
|
|
@@ -25887,6 +26029,15 @@
|
|
|
25887
26029
|
"count"
|
|
25888
26030
|
]
|
|
25889
26031
|
},
|
|
26032
|
+
"GetGithubOrgsOrgResponse": {
|
|
26033
|
+
"type": "object",
|
|
26034
|
+
"properties": {
|
|
26035
|
+
"org": {}
|
|
26036
|
+
},
|
|
26037
|
+
"required": [
|
|
26038
|
+
"org"
|
|
26039
|
+
]
|
|
26040
|
+
},
|
|
25890
26041
|
"GetGithubRepoResponse": {
|
|
25891
26042
|
"type": "object",
|
|
25892
26043
|
"properties": {
|
|
@@ -26773,6 +26924,19 @@
|
|
|
26773
26924
|
"capacity"
|
|
26774
26925
|
]
|
|
26775
26926
|
},
|
|
26927
|
+
"GetProvisioningGithubAppResumeResponse": {
|
|
26928
|
+
"type": "object",
|
|
26929
|
+
"properties": {
|
|
26930
|
+
"ok": {
|
|
26931
|
+
"type": "boolean"
|
|
26932
|
+
},
|
|
26933
|
+
"project": {}
|
|
26934
|
+
},
|
|
26935
|
+
"required": [
|
|
26936
|
+
"ok",
|
|
26937
|
+
"project"
|
|
26938
|
+
]
|
|
26939
|
+
},
|
|
26776
26940
|
"GetProvisioningGithubAppStatusResponse": {
|
|
26777
26941
|
"type": "object",
|
|
26778
26942
|
"properties": {
|
|
@@ -26789,7 +26953,8 @@
|
|
|
26789
26953
|
"checklist": {},
|
|
26790
26954
|
"install_url": {},
|
|
26791
26955
|
"repo": {},
|
|
26792
|
-
"verifying": {}
|
|
26956
|
+
"verifying": {},
|
|
26957
|
+
"app_org": {}
|
|
26793
26958
|
},
|
|
26794
26959
|
"required": [
|
|
26795
26960
|
"ok",
|
|
@@ -26803,7 +26968,8 @@
|
|
|
26803
26968
|
"checklist",
|
|
26804
26969
|
"install_url",
|
|
26805
26970
|
"repo",
|
|
26806
|
-
"verifying"
|
|
26971
|
+
"verifying",
|
|
26972
|
+
"app_org"
|
|
26807
26973
|
]
|
|
26808
26974
|
},
|
|
26809
26975
|
"GetProvisioningHealthResponse": {
|
|
@@ -29738,6 +29904,10 @@
|
|
|
29738
29904
|
"name": {
|
|
29739
29905
|
"type": "string",
|
|
29740
29906
|
"maxLength": 100
|
|
29907
|
+
},
|
|
29908
|
+
"org": {
|
|
29909
|
+
"type": "string",
|
|
29910
|
+
"maxLength": 39
|
|
29741
29911
|
}
|
|
29742
29912
|
},
|
|
29743
29913
|
"required": [
|
|
@@ -31931,6 +32101,10 @@
|
|
|
31931
32101
|
"account": {
|
|
31932
32102
|
"type": "string",
|
|
31933
32103
|
"maxLength": 12
|
|
32104
|
+
},
|
|
32105
|
+
"org": {
|
|
32106
|
+
"type": "string",
|
|
32107
|
+
"maxLength": 39
|
|
31934
32108
|
}
|
|
31935
32109
|
},
|
|
31936
32110
|
"additionalProperties": false
|
|
@@ -34253,9 +34427,9 @@
|
|
|
34253
34427
|
"description": "A required dependency/feature is not configured or is temporarily down."
|
|
34254
34428
|
}
|
|
34255
34429
|
},
|
|
34256
|
-
"x-endpoint-count":
|
|
34257
|
-
"x-schema-count":
|
|
34430
|
+
"x-endpoint-count": 538,
|
|
34431
|
+
"x-schema-count": 576,
|
|
34258
34432
|
"x-undocumented-bodies": 12,
|
|
34259
|
-
"x-response-schemas":
|
|
34433
|
+
"x-response-schemas": 382,
|
|
34260
34434
|
"x-generated-by": "scripts/gds/gen-api-docs.js"
|
|
34261
34435
|
}
|
package/docs/api-reference.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Bongos API reference
|
|
4
4
|
|
|
5
|
-
> **Generated from the live route files** — the route file is authoritative.
|
|
5
|
+
> **Generated from the live route files** — the route file is authoritative. 538 endpoints across 95 route files.
|
|
6
6
|
> Machine-readable spec: [`docs/api/openapi.json`](api/openapi.json) (OpenAPI 3.1). Rendered docs site: **`/docs`** (e.g. `cloudbongos.com/docs`).
|
|
7
7
|
|
|
8
8
|
Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust-boundary-server-enforced-permissions.md)): `public` < `any-builder` < `metic+archon` < `archon`.
|
|
@@ -286,14 +286,16 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
286
286
|
| GET | `/api/bongos/gate-approvals` | `metic+archon` | — | GET /gate-approvals — open PRs awaiting owner approval (gate-review red), with the verdict + per-file reasons + changed files + diff link. |
|
|
287
287
|
| POST | `/api/bongos/gate-approvals/:pr/approve` | `archon` | — | POST /gate-approvals/:pr/approve — record owner approval for a stuck gate PR and re-run the gate-review check so it clears. |
|
|
288
288
|
|
|
289
|
-
## `github` (
|
|
289
|
+
## `github` (6)
|
|
290
290
|
|
|
291
291
|
| Method | Path | Rank | Body | Description |
|
|
292
292
|
|---|---|---|---|---|
|
|
293
|
+
| GET | `/api/bongos/github/orgs` | `any-builder` | — | the caller's OWN GitHub organisations (task 1004651), for the project page's "on an organisation" choice. |
|
|
294
|
+
| GET | `/api/bongos/github/orgs/:org` | `any-builder` | — | checks ONE organisation name the caller typed, as their own GitHub credential sees it (task 1004651). |
|
|
293
295
|
| GET | `/api/bongos/github/repo` | `any-builder` | — | reads one repo AS the caller's own GitHub credential sees it (the manage page's repo-visibility read, task 1003045). |
|
|
294
296
|
| POST | `/api/bongos/github/repo/visibility` | `any-builder` | `repo`, `visibility` | flips one of the caller's repos PUBLIC, with their own credential. |
|
|
295
297
|
| GET | `/api/bongos/github/repos` | `any-builder` | — | acts only on the caller's OWN GitHub identity (the token they granted). |
|
|
296
|
-
| POST | `/api/bongos/github/repos` | `any-builder` | `name` | creates a repo in the caller's OWN account
|
|
298
|
+
| POST | `/api/bongos/github/repos` | `any-builder` | `name`, `org` | creates a repo in the caller's OWN account, or (task 1004651) under an organisation they name in `org`. |
|
|
297
299
|
|
|
298
300
|
## `goal-task-relevance` (2)
|
|
299
301
|
|
|
@@ -636,7 +638,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
636
638
|
| POST | `/api/bongos/projects/invite` | `metic+archon` | `client_id`, `github_login` | own-or-metic in effect: where to invite a builder into a project, asked by a `project.curate` holder OR the project's OWN OWNER (task 100… |
|
|
637
639
|
| POST | `/api/bongos/projects/invite-guild` | `metic+archon` | `client_id`, `guild` | own-or-metic in effect, the SAME gate as POST /projects/invite above and for the same reasons (a non-inviter gets that route's unchanged … |
|
|
638
640
|
|
|
639
|
-
## `provisioning` (
|
|
641
|
+
## `provisioning` (45)
|
|
640
642
|
|
|
641
643
|
| Method | Path | Rank | Body | Description |
|
|
642
644
|
|---|---|---|---|---|
|
|
@@ -644,6 +646,8 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
644
646
|
| GET | `/api/bongos/provisioning/fleet` | `metic+archon` | — | GET /provisioning/fleet — the full instance roster across all owners. |
|
|
645
647
|
| GET | `/api/bongos/provisioning/fleet/cost-ledger` | `metic+archon` | — | GET /provisioning/fleet/cost-ledger — per-instance monthly cost to us + estimated cost to its owner, with totals. |
|
|
646
648
|
| GET | `/api/bongos/provisioning/github-app/callback` | `public` | — | GET /provisioning/github-app/callback?code=&state= — GitHub redirects the owner's BROWSER here after they approve the App Manifest (task … |
|
|
649
|
+
| GET | `/api/bongos/provisioning/github-app/resume` | `any-builder` | — | GET /provisioning/github-app/resume[?id=<n>] — the project page's "which project am I connecting?" read when its tab remembers nothing (t… |
|
|
650
|
+
| GET | `/api/bongos/provisioning/github-app/return` | `public` | — | GET /provisioning/github-app/return?state=<> — where the callback and setup pages send the founder back (task 1004650). |
|
|
647
651
|
| GET | `/api/bongos/provisioning/github-app/setup` | `public` | — | GET /provisioning/github-app/setup?installation_id=&setup_action=&state= — the App's setup_url (task 1004649). |
|
|
648
652
|
| GET | `/api/bongos/provisioning/github-app/status` | `public` | — | GET /provisioning/github-app/status?state=<> — the PUBLIC progress read (task 1004548; the checklist since task 1004649). |
|
|
649
653
|
| GET | `/api/bongos/provisioning/health` | `public` | — | GET /provisioning/health — liveness + the core version this module mounted against. |
|
|
@@ -661,7 +665,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
661
665
|
| PATCH | `/api/bongos/provisioning/instances/:id/env-manifest/:varId` | `any-builder` | `name`, `description`, `environments`, `required` | PATCH — edit one declaration. |
|
|
662
666
|
| DELETE | `/api/bongos/provisioning/instances/:id/env-manifest/:varId` | `any-builder` | — | DELETE — remove one declaration. |
|
|
663
667
|
| POST | `/api/bongos/provisioning/instances/:id/force-teardown` | `metic+archon` | — | POST /provisioning/instances/:id/force-teardown — Archon tears down ANY instance. |
|
|
664
|
-
| POST | `/api/bongos/provisioning/instances/:id/github-app` | `any-builder` | `account` | POST /provisioning/instances/:id/github-app — mint a GitHub-App-Manifest onboarding link for the caller's OWN instance (task 2080, ADR 01… |
|
|
668
|
+
| POST | `/api/bongos/provisioning/instances/:id/github-app` | `any-builder` | `account`, `org` | POST /provisioning/instances/:id/github-app — mint a GitHub-App-Manifest onboarding link for the caller's OWN instance (task 2080, ADR 01… |
|
|
665
669
|
| GET | `/api/bongos/provisioning/instances/:id/invite-suggestions` | `any-builder` | — | ── Who is worth inviting (BV1.R28, task 1002347, goal 1000046 C6) ──────── GET /provisioning/instances/:id/invite-suggestions — turn the … |
|
|
666
670
|
| PUT | `/api/bongos/provisioning/instances/:id/logo` | `any-builder` | `image_b64`, `content_type` | PUT …/logo — rank: any authenticated builder (own resource; archon may change any). |
|
|
667
671
|
| DELETE | `/api/bongos/provisioning/instances/:id/logo` | `any-builder` | validated | DELETE …/logo — rank: any authenticated builder (own resource; archon may change any). |
|