@sponson/adapters 0.9.2 → 0.10.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../src/recipes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../src/recipes.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sponson/adapters",
3
- "version": "0.9.2",
3
+ "version": "0.10.0",
4
4
  "description": "The built-in resource adapters and secret sources for Sponson.",
5
5
  "keywords": [
6
6
  "sponson",
@@ -35,10 +35,10 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "yaml": "^2.8.1",
38
- "@sponson/core": "0.9.2"
38
+ "@sponson/core": "0.10.0"
39
39
  },
40
40
  "devDependencies": {
41
- "@sponson/sim": "0.9.2"
41
+ "@sponson/sim": "0.10.0"
42
42
  },
43
43
  "files": [
44
44
  "dist",
@@ -0,0 +1,124 @@
1
+ # yaml-language-server: $schema=../../../schema/recipe.schema.json
2
+ # Ably Control API recipes: a webhook integration rule per preview. Format and checklist: docs/adr/0020-recipes.md,
3
+ # CONTRIBUTING.md "Adding a recipe".
4
+ provider: ably
5
+ title: Ably
6
+ category: webhooks
7
+ verified_on: "2026-10-12"
8
+ docs:
9
+ - title: Control API (base URL, access tokens and their capabilities, rules)
10
+ url: https://ably.com/docs/platform/account/control-api
11
+ - title: Control API OpenAPI document (rule_post, rule_patch, rule_response, http_rule_*)
12
+ url: https://ably.com/docs/open-specs/control-v1.yaml
13
+ - title: Webhooks (integration rules, batching, signing)
14
+ url: https://ably.com/docs/platform/integrations/webhooks
15
+ api:
16
+ base_url: https://control.ably.net/v1
17
+ base_url_env: ABLY_CONTROL_API_URL
18
+ auth: { bearer_env: ABLY_CONTROL_TOKEN }
19
+ credential:
20
+ url: "https://ably.com/docs/platform/account/control-api"
21
+ scope: "An account access token (Account > My Access Tokens) with the `read:rule` and `write:rule` capabilities only."
22
+ source: "https://ably.com/docs/platform/account/control-api"
23
+ verify: "GET /me"
24
+ detect:
25
+ deps: [ably]
26
+ env: ["ABLY_*"]
27
+ starter:
28
+ - op: webhook_rule
29
+ preview_url: url
30
+ values: { channel_filter: "^${ctx.scope}:" }
31
+ check: [path]
32
+ where:
33
+ app_id: "the app's ID: the part of its API key before the dot, or the Ably dashboard's app settings"
34
+ assumptions:
35
+ - id: AB1
36
+ verified: true
37
+ text: "The Control API is at `https://control.ably.net/v1` and takes an account access token as `Authorization: Bearer`; managing rules needs the `read:rule` and `write:rule` capabilities, and `GET /me` shows a token's."
38
+ source: https://ably.com/docs/platform/account/control-api
39
+ - id: AB2
40
+ verified: true
41
+ text: "`POST /apps/{app_id}/rules` creates an integration rule; an `http` (webhook) rule takes `ruleType: http`, `requestMode` (`single` or `batch`), `source` (`channelFilter`, a regular expression over the whole channel name, and `type`: `channel.message`, `channel.presence`, `channel.lifecycle` or `channel.occupancy`), `target` (`url`, `format` `json` or `msgpack`, `enveloped`, `headers`, `signingKeyId`) and `status`, and answers 201 with the rule and its `id`."
42
+ source: https://ably.com/docs/open-specs/control-v1.yaml
43
+ - id: AB3
44
+ verified: true
45
+ text: "`GET /apps/{app_id}/rules` answers a bare array of rules, `GET /apps/{app_id}/rules/{rule_id}` one rule; `PATCH` on the same path updates the fields sent (`ruleType` required) and answers 200; `DELETE` answers 204, and an unknown rule 404."
46
+ source: https://ably.com/docs/open-specs/control-v1.yaml
47
+ - id: AB4
48
+ verified: false
49
+ text: "A rule's channel filter and source type identify the one this recipe made: Ably keeps rules with the same filter apart only by id, so a second rule with the same filter and type makes `find` refuse with PARAM_INVALID. The app must name a preview's channels with a per-preview prefix (`pr-42:…`) for the filter to select them."
50
+ - id: AB5
51
+ verified: false
52
+ text: "Ably answers `target.url`, `target.format`, `target.enveloped`, `requestMode` and `status` as written, and a `PATCH` that sends `target` without `headers` keeps none; this recipe sets no headers."
53
+ ops:
54
+ webhook_rule:
55
+ kind: resource
56
+ title: Webhook rule
57
+ summary: "An integration rule that posts the messages (or presence, lifecycle, occupancy events) of a preview's channels, those matching `channel_filter` such as `^pr-42:`, to the preview's own URL, `url` + `path`. Identified by its channel filter and source type, so a new preview URL updates it in place; a console edit of its URL, format, envelope, request mode or status is drift. The app and its keys are shared and not managed."
58
+ covers: [ably-webhook-rule]
59
+ params:
60
+ app_id:
61
+ type: string
62
+ required: true
63
+ description: The Ably app the rule belongs to.
64
+ example: 28GY6a
65
+ channel_filter:
66
+ type: string
67
+ required: true
68
+ description: "A regular expression over the whole channel name selecting the preview's channels, such as `^${ctx.scope}:`; with `source_type`, the rule's identity."
69
+ example: "^${ctx.scope}:"
70
+ source_type:
71
+ type: string
72
+ default: channel.message
73
+ enum: [channel.message, channel.presence, channel.lifecycle, channel.occupancy]
74
+ description: The events the rule posts (AB2).
75
+ url:
76
+ type: string
77
+ required: true
78
+ pattern: "^https://\\S*[^/]$"
79
+ description: "The preview's base URL, without a trailing slash: usually `{ from: <deploy line>.preview_url }`."
80
+ example: https://pr-42.preview.example.com
81
+ path:
82
+ type: string
83
+ default: /api/webhooks/ably
84
+ pattern: "^/\\S*$"
85
+ description: "Where the app handles Ably's requests, appended to `url`."
86
+ request_mode:
87
+ type: string
88
+ default: single
89
+ enum: [single, batch]
90
+ description: One request per event, or events batched.
91
+ format:
92
+ type: string
93
+ default: json
94
+ enum: [json, msgpack]
95
+ description: The encoding of what is posted.
96
+ enveloped:
97
+ type: boolean
98
+ default: true
99
+ description: Whether events are wrapped in Ably's metadata envelope.
100
+ status:
101
+ type: string
102
+ default: enabled
103
+ enum: [enabled, disabled]
104
+ description: Whether the rule posts.
105
+ http:
106
+ find:
107
+ path: "/apps/{app_id}/rules"
108
+ match: { /source/channelFilter: { param: channel_filter }, /source/type: { param: source_type } }
109
+ read: { path: "/apps/{app_id}/rules/{id}" }
110
+ create:
111
+ path: "/apps/{app_id}/rules"
112
+ body: { ruleType: http }
113
+ update:
114
+ method: PATCH
115
+ path: "/apps/{app_id}/rules/{id}"
116
+ body: { ruleType: http }
117
+ fields:
118
+ /target/url: { join: [{ param: url }, { param: path }] }
119
+ /target/format: { param: format }
120
+ /target/enveloped: { param: enveloped }
121
+ /requestMode: { param: request_mode }
122
+ /status: { param: status }
123
+ live:
124
+ params: { app_id: SPONSON_LIVE_ABLY_APP_ID }
@@ -0,0 +1,112 @@
1
+ # yaml-language-server: $schema=../../../schema/recipe.schema.json
2
+ # BugSnag Build API recipes: a build (release) per deploy and release stage. Format and checklist:
3
+ # docs/adr/0020-recipes.md, docs/adr/0022-one-off-actions.md, CONTRIBUTING.md "Adding a recipe".
4
+ # No API block: the Build API authenticates by the project's notifier API key in the JSON body, not by a header, so
5
+ # the line passes that key as a `{ secret }` param and Sponson sends no credential of its own.
6
+ provider: bugsnag
7
+ title: BugSnag
8
+ category: observability
9
+ verified_on: "2026-10-12"
10
+ docs:
11
+ - title: BugSnag CLI create-build, the payload and endpoints BugSnag's own tooling sends (pkg/build, pkg/server, pkg/endpoints)
12
+ url: https://github.com/bugsnag/bugsnag-cli/tree/main/pkg
13
+ - title: grunt-bugsnag, BugSnag's documented build-reporting options
14
+ url: https://github.com/bugsnag/grunt-bugsnag
15
+ - title: Build and deploy integrations (the Build API's place among them)
16
+ url: https://docs.bugsnag.com/build-integrations/
17
+ detect:
18
+ deps: ["@bugsnag/"]
19
+ env: ["BUGSNAG_*"]
20
+ starter:
21
+ - op: build
22
+ values: { app_version: "${ctx.git.sha}", release_stage: "${ctx.env}", api_key: { secret: "env://BUGSNAG_API_KEY" } }
23
+ assumptions:
24
+ - id: BS1
25
+ verified: true
26
+ text: "A build is reported with a JSON `POST` to `https://build.bugsnag.com` (`https://build.bugsnag.smartbear.com` for keys of BugSnag's SmartBear-hosted instance; an on-premise endpoint otherwise), as BugSnag's CLI sends it with `Content-Type: application/json`."
27
+ source: https://github.com/bugsnag/bugsnag-cli/tree/main/pkg
28
+ - id: BS2
29
+ verified: true
30
+ text: "The body carries `apiKey` (the project's notifier API key, required) and `appVersion` (required), and optionally `releaseStage`, `builderName`, `sourceControl` (`provider`, `repository`, `revision`), `autoAssignRelease` and `metadata`; the API key in the body is the only authentication."
31
+ source: https://github.com/bugsnag/grunt-bugsnag
32
+ - id: BS3
33
+ verified: true
34
+ text: "`autoAssignRelease: true` associates the build with new error events and sessions received for its release stage until the next build is reported; without a release stage it applies to `production`, so the recipe always sends the stage."
35
+ source: https://github.com/bugsnag/grunt-bugsnag
36
+ - id: BS4
37
+ verified: false
38
+ text: "BugSnag's public APIs delete no builds or releases, so destroy sends nothing and forgets the record: a release is history."
39
+ - id: BS5
40
+ verified: false
41
+ text: "Reporting the same app version and release stage twice (an action is sent at least once) updates or repeats the same release rather than failing."
42
+ - id: BS6
43
+ verified: false
44
+ text: "The notifier API key is also embedded in the app's client bundle for browser error reporting, but it is still passed here as a `{ secret }` so it never reaches the plan file, receipts or logs."
45
+ ops:
46
+ build:
47
+ kind: action
48
+ title: Build (release)
49
+ summary: "Reports a build of `app_version` for the environment's `release_stage` (such as `preview`) to BugSnag's Build API, once per version and stage, so errors from the preview are grouped under its release. The project's notifier API key travels in the body (`api_key`, a `{ secret }`); Sponson sends no credential of its own. Nothing to undo (BS4)."
50
+ covers: [bugsnag-build]
51
+ params:
52
+ url:
53
+ type: string
54
+ default: https://build.bugsnag.com
55
+ pattern: "^https?://\\S*[^/]$"
56
+ description: "The Build API: `https://build.bugsnag.com`, or the SmartBear-hosted or on-premise endpoint (BS1)."
57
+ path:
58
+ type: string
59
+ default: /
60
+ pattern: "^/\\S*$"
61
+ description: The path of the build endpoint under `url`.
62
+ api_key:
63
+ type: string
64
+ required: true
65
+ description: "The project's notifier API key, always as a reference: `{ secret: \"env://BUGSNAG_API_KEY\" }`."
66
+ example: { secret: "env://BUGSNAG_API_KEY" }
67
+ app_version:
68
+ type: string
69
+ required: true
70
+ description: "The version the app's notifier reports (its `appVersion`), such as the commit. A new one reports a new build."
71
+ example: "${ctx.git.sha}"
72
+ release_stage:
73
+ type: string
74
+ required: true
75
+ description: "The release stage the preview's notifier reports, such as `${ctx.env}`."
76
+ example: "${ctx.env}"
77
+ builder_name:
78
+ type: string
79
+ default: sponson
80
+ description: Who built it.
81
+ revision:
82
+ type: string
83
+ description: "The commit, for BugSnag's source links: `\"${ctx.git.sha}\"`."
84
+ repository:
85
+ type: string
86
+ description: The repository's URL, for source links.
87
+ provider:
88
+ type: string
89
+ enum: [github, github-enterprise, gitlab, gitlab-onpremise, bitbucket, bitbucket-server]
90
+ description: The source control provider, for source links.
91
+ auto_assign_release:
92
+ type: boolean
93
+ default: true
94
+ description: Attribute new events of the release stage to this build (BS3).
95
+ http:
96
+ trigger: { app_version: { param: app_version }, release_stage: { param: release_stage } }
97
+ request:
98
+ method: POST
99
+ url: { join: [{ param: url }, { param: path }] }
100
+ body:
101
+ apiKey: { param: api_key }
102
+ appVersion: { param: app_version }
103
+ releaseStage: { param: release_stage }
104
+ builderName: { param: builder_name }
105
+ autoAssignRelease: { param: auto_assign_release }
106
+ sourceControl:
107
+ provider: { param: provider }
108
+ repository: { param: repository }
109
+ revision: { param: revision }
110
+ live:
111
+ # Needs BUGSNAG_API_KEY too (the example's `{ secret }`); reports a build to a throwaway project.
112
+ params: { url: SPONSON_LIVE_BUGSNAG_BUILD_URL }
@@ -0,0 +1,144 @@
1
+ # yaml-language-server: $schema=../../../schema/recipe.schema.json
2
+ # Convex Management API recipes, authenticated by a team access token. Format and checklist:
3
+ # docs/adr/0020-recipes.md (Amendment 10), CONTRIBUTING.md "Adding a recipe".
4
+ provider: convex
5
+ title: Convex
6
+ category: backend
7
+ verified_on: "2026-10-12"
8
+ docs:
9
+ - title: Management API overview (authorization, OpenAPI)
10
+ url: https://docs.convex.dev/management-api/overview
11
+ - title: Management API OpenAPI document
12
+ url: https://api.convex.dev/v1/openapi.json
13
+ - title: Platform APIs, team access tokens
14
+ url: https://docs.convex.dev/platform-apis/overview
15
+ - title: Multiple deployments, preview deployments
16
+ url: https://docs.convex.dev/production/multiple-deployments
17
+ - title: Hosting on Vercel, preview deployments
18
+ url: https://docs.convex.dev/production/hosting/vercel
19
+ - title: Deploy key types
20
+ url: https://docs.convex.dev/cli/deploy-key-types
21
+ - title: Pricing (preview deployments on every plan)
22
+ url: https://www.convex.dev/pricing
23
+ api:
24
+ base_url: https://api.convex.dev/v1
25
+ base_url_env: CONVEX_API_URL
26
+ auth: { bearer_env: CONVEX_TEAM_ACCESS_TOKEN }
27
+ credential:
28
+ url: "https://dashboard.convex.dev/team/settings/access-tokens"
29
+ scope: "A team access token (Team Settings → Access Tokens), preferably of a service-account member: it can do what that member's role allows on the team."
30
+ source: "https://docs.convex.dev/platform-apis/overview"
31
+ detect:
32
+ deps: [convex]
33
+ files: [convex.json]
34
+ env: ["CONVEX_*"]
35
+ starter:
36
+ - op: preview_deployment
37
+ values: { reference: "${ctx.scope}" }
38
+ env: { url: NEXT_PUBLIC_CONVEX_URL }
39
+ where:
40
+ project_id: "Convex dashboard → the project → Settings (the project id), or the Management API's List Projects"
41
+ assumptions:
42
+ - id: CX1
43
+ verified: true
44
+ text: "The Management API at `https://api.convex.dev/v1` authenticates with `Authorization: Bearer` and a team access token (Team Settings), an OAuth application token or, on preview deployments only, a preview deploy key. Convex names no environment variable for the team token; the recipe reads it from `CONVEX_TEAM_ACCESS_TOKEN`."
45
+ source: https://docs.convex.dev/management-api/overview
46
+ - id: CX2
47
+ verified: true
48
+ text: "`POST /projects/{project_id}/create_deployment` with `{ type: \"preview\", reference }` creates a deployment and answers it with `name` (such as `playful-otter-123`), `deploymentUrl`, `reference` and `deploymentType`. A reference is 3 to 100 lowercase letters, digits, `-` and `/`, unique in the project, not shaped like a deployment name and not a reserved word (`preview`, `prod`, `dev`, …)."
49
+ source: https://api.convex.dev/v1/openapi.json
50
+ - id: CX3
51
+ verified: true
52
+ text: "`GET /projects/{project_id}/list_deployments?deploymentType=preview` answers a bare list of deployments with their `name` and `reference`; `GET /deployments/{name}` answers one."
53
+ source: https://api.convex.dev/v1/openapi.json
54
+ - id: CX4
55
+ verified: true
56
+ text: "Preview deployments are on every plan (Free included); each counts toward the team's deployments (40 on Free, 300 on Professional), and Convex deletes one automatically after the plan's retention (5 days, 14 on Professional and above) unless its `expiresAt` says otherwise. A preview deleted so is `missing` drift, created again by the next apply (empty: its data went with it)."
57
+ source: https://docs.convex.dev/production/multiple-deployments
58
+ - id: CX5
59
+ verified: true
60
+ text: "`POST /deployments/{name}/delete` deletes the deployment with all its data and files; it takes no body (the recipe sends `{}`)."
61
+ source: https://api.convex.dev/v1/openapi.json
62
+ - id: CX6
63
+ verified: true
64
+ text: "`POST /deployments/{name}/create_deploy_key` with `{ name }` answers only `{ deployKey }`, the key's value, shown once; `GET /deployments/{name}/list_deploy_keys` lists the keys with their `name` but never their value; `POST /deployments/{name}/delete_deploy_key` with `{ id }` deletes one, `id` being the key's value or its unique name. A preview deploy key cannot call these: the team token can."
65
+ source: https://api.convex.dev/v1/openapi.json
66
+ - id: CX7
67
+ verified: true
68
+ text: "`npx convex deploy` reads its deploy key from `CONVEX_DEPLOY_KEY` and deploys to the deployment the key names; a preview deployment's URL is what the frontend's `NEXT_PUBLIC_CONVEX_URL` (or `VITE_CONVEX_URL`, `CONVEX_URL`) must hold."
69
+ source: https://docs.convex.dev/production/hosting/vercel
70
+ - id: CX8
71
+ verified: false
72
+ text: "A deploy key made for a preview deployment with `create_deploy_key` lets `npx convex deploy` push code and set environment variables there, as the dashboard's deployment keys do, and deleting the deployment deletes its keys (a key line is destroyed before the deployment line it references, so it never needs that)."
73
+ - id: CX9
74
+ verified: false
75
+ text: "Deployment names are unique, and a reference names at most one deployment of the project, so `find` by `reference` sees one (two would be refused with PARAM_INVALID, never guessed)."
76
+ ops:
77
+ preview_deployment:
78
+ kind: resource
79
+ title: Preview deployment
80
+ summary: "A Convex preview deployment per scope, a backend with its own data, functions and URL, created through the Management API instead of by `npx convex deploy` with a preview deploy key, so that it exists, with its URL, before the preview builds and is deleted when the scope is destroyed (CX4: not left to expire). Located by `reference`; only its existence is compared for drift; destroy deletes it with its data."
81
+ covers: [convex-preview-deployment]
82
+ params:
83
+ project_id:
84
+ type: string
85
+ required: true
86
+ pattern: "^[0-9]+$"
87
+ description: The project's numeric id.
88
+ example: "12345"
89
+ reference:
90
+ type: string
91
+ required: true
92
+ pattern: "^[a-z0-9/-]{3,100}$"
93
+ description: "The deployment's reference in the project, its identity here (CX2): usually `${ctx.scope}`."
94
+ example: "${ctx.scope}"
95
+ http:
96
+ find:
97
+ path: "/projects/{project_id}/list_deployments?deploymentType=preview"
98
+ match: { reference: { param: reference } }
99
+ read: { path: "/deployments/{id}" }
100
+ create:
101
+ path: "/projects/{project_id}/create_deployment"
102
+ body: { type: preview }
103
+ delete: { method: POST, path: "/deployments/{id}/delete" }
104
+ id_path: /name
105
+ outputs:
106
+ name: /name
107
+ url: /deploymentUrl
108
+ sim:
109
+ collection: "/projects/{project_id}/deployments"
110
+ console_url:
111
+ template: "https://dashboard.convex.dev/d/{id}"
112
+ source: https://github.com/get-convex/convex-backend/blob/main/npm-packages/convex/src/cli/lib/dashboard.ts
113
+ live:
114
+ params: { project_id: SPONSON_LIVE_CONVEX_PROJECT_ID }
115
+ deploy_key:
116
+ kind: resource
117
+ title: Deploy key of a deployment
118
+ summary: "A deploy key for one deployment (such as a `preview_deployment` line's `name`), so the preview's build deploys its functions there with `npx convex deploy` (`CONVEX_DEPLOY_KEY`, CX7). Its value exists only in the create's answer: a once-only output, for the deploy target's variable in the same run. Located by its name; destroy deletes it (it goes with its deployment anyway)."
119
+ covers: [convex-preview-deployment]
120
+ params:
121
+ deployment:
122
+ type: string
123
+ required: true
124
+ description: "The deployment's name: usually `{ from: <preview_deployment line>.name }`."
125
+ example: playful-otter-123
126
+ name:
127
+ type: string
128
+ required: true
129
+ description: The key's name, unique in the deployment.
130
+ example: "sponson-${ctx.scope}"
131
+ http:
132
+ find:
133
+ path: "/deployments/{deployment}/list_deploy_keys"
134
+ match: { name: { param: name } }
135
+ create: { path: "/deployments/{deployment}/create_deploy_key" }
136
+ delete: { method: POST, path: "/deployments/{deployment}/delete_deploy_key", body: { id: "{id}" } }
137
+ id_path: /name
138
+ outputs:
139
+ deploy_key: { path: /deployKey, sensitive: true, once: true }
140
+ sim:
141
+ collection: "/deployments/{deployment}/list_deploy_keys"
142
+ live:
143
+ # A throwaway deployment's name: the live run makes a key on it and deletes it.
144
+ params: { deployment: SPONSON_LIVE_CONVEX_DEPLOYMENT }
@@ -0,0 +1,107 @@
1
+ # yaml-language-server: $schema=../../../schema/recipe.schema.json
2
+ # Firebase Hosting REST API recipes (preview channels). Format and checklist: docs/adr/0020-recipes.md (Amendment 10),
3
+ # CONTRIBUTING.md "Adding a recipe". A separate file from firebase.yaml because it is another API (another host).
4
+ provider: firebase_hosting
5
+ title: Firebase Hosting
6
+ category: deploy
7
+ verified_on: "2026-10-12"
8
+ docs:
9
+ - title: Firebase Hosting REST API discovery document (v1beta1, sites.channels)
10
+ url: https://firebasehosting.googleapis.com/$discovery/rest?version=v1beta1
11
+ - title: Test, preview, then deploy (preview channels)
12
+ url: https://firebase.google.com/docs/hosting/test-preview-deploy
13
+ - title: Manage preview channels, releases and versions
14
+ url: https://firebase.google.com/docs/hosting/manage-hosting-resources
15
+ - title: GitHub pull request integration (a channel per PR)
16
+ url: https://firebase.google.com/docs/hosting/github-integration
17
+ - title: Firebase predefined roles (Hosting Admin)
18
+ url: https://firebase.google.com/docs/projects/iam/roles-predefined-product
19
+ - title: firebase-tools hosting API client (channel create, get, delete)
20
+ url: https://github.com/firebase/firebase-tools/blob/master/src/hosting/api.ts
21
+ api:
22
+ base_url: https://firebasehosting.googleapis.com/v1beta1
23
+ base_url_env: FIREBASE_HOSTING_API_URL
24
+ auth: { command: [gcloud, auth, print-access-token] }
25
+ credential:
26
+ url: "https://firebase.google.com/docs/projects/iam/roles-predefined-product"
27
+ scope: "Sign in with `gcloud auth login` (or activate a service account) as an identity holding Firebase Hosting Admin (roles/firebasehosting.admin) on the project."
28
+ source: "https://firebase.google.com/docs/projects/iam/roles-predefined-product"
29
+ detect:
30
+ files: [.github/workflows/firebase-hosting-pull-request.yml]
31
+ starter:
32
+ - op: channel
33
+ values: { channel_id: "${ctx.scope}" }
34
+ where:
35
+ site: "the Hosting site id: `hosting.site` in firebase.json, or the project id for the default site"
36
+ assumptions:
37
+ - id: FH1
38
+ verified: true
39
+ text: "The API is served at `https://firebasehosting.googleapis.com/v1beta1` with a Google OAuth access token (scope `firebase` or `cloud-platform`) as `Authorization: Bearer`; Firebase Hosting Admin is the role for writes. With user credentials some Google APIs also need the quota project in `x-goog-user-project`: add `headers: { x-goog-user-project: <project> }` to the `providers.http.firebase_hosting` block (unverified for this API)."
40
+ source: https://firebasehosting.googleapis.com/$discovery/rest?version=v1beta1
41
+ - id: FH2
42
+ verified: true
43
+ text: "`POST /sites/{site}/channels?channelId=<id>` creates a channel (the id is required and immutable, unique in the site) from a `Channel` body with optional `ttl` (input only, a duration such as `604800s`), `labels` and `retainedReleaseCount`; `GET` and `DELETE /sites/{site}/channels/{id}` read and delete it; the `live` channel cannot be deleted."
44
+ source: https://firebasehosting.googleapis.com/$discovery/rest?version=v1beta1
45
+ - id: FH3
46
+ verified: true
47
+ text: "A `Channel` answers `name` (`sites/SITE_ID/channels/CHANNEL_ID`), `url` (the channel's `web.app` URL, also served on `firebaseapp.com`), `expireTime`, `retainedReleaseCount` (1 to 100, 10 by default) and `labels`; `PATCH …/channels/{id}?updateMask=` updates the masked fields."
48
+ source: https://firebasehosting.googleapis.com/$discovery/rest?version=v1beta1
49
+ - id: FH4
50
+ verified: true
51
+ text: "Without `ttl` or `expireTime` a channel is never deleted automatically; the CLI's default is 7 days and the most is 30. An expired channel is deleted within 24 hours, which Sponson sees as `missing` drift and creates again (empty) on the next apply."
52
+ source: https://firebase.google.com/docs/hosting/manage-hosting-resources
53
+ - id: FH5
54
+ verified: true
55
+ text: "`firebase hosting:channel:deploy <id>` deploys into an existing channel (creating it only when missing) and syncs the channel's domain into Firebase Auth's authorized domains; the GitHub integration's action creates a channel per pull request but never deletes it when the pull request closes (only expiry does)."
56
+ source: https://firebase.google.com/docs/hosting/github-integration
57
+ - id: FH6
58
+ verified: false
59
+ text: "Creating a channel whose id exists answers 409 (ALREADY_EXISTS), as Google APIs do; firebase-tools always reads first, which the recipe does too, so it only matters after a lost answer."
60
+ - id: FH7
61
+ verified: false
62
+ text: "A channel id is letters, digits, `_`, `-` and `.` (what the GitHub action keeps); the API documents no length limit, and `live` is the site's own channel, refused here."
63
+ ops:
64
+ channel:
65
+ kind: resource
66
+ title: Preview channel
67
+ summary: "A Firebase Hosting preview channel per scope on a site, such as `pr-42`, that `firebase hosting:channel:deploy` then deploys the preview into (FH5): made before the deploy so its `url` is known to other lines, and deleted when the scope is destroyed instead of left to expire. A console edit of its retained release count is drift; destroy deletes the channel and its releases."
68
+ covers: [firebase-hosting-channel]
69
+ params:
70
+ site:
71
+ type: string
72
+ required: true
73
+ pattern: "^[a-z0-9-]+$"
74
+ description: The Hosting site id (the project id for the default site).
75
+ example: demo-project
76
+ channel_id:
77
+ type: string
78
+ required: true
79
+ pattern: "^(?!live$)[A-Za-z0-9_.-]+$"
80
+ description: "The channel id, unique in the site (FH7): usually `${ctx.scope}`."
81
+ example: "${ctx.scope}"
82
+ ttl:
83
+ type: string
84
+ pattern: "^[0-9]+s$"
85
+ description: "How long until Firebase deletes it by itself, in seconds (`2592000s`, the most: 30 days). Sent on create only; left out, the channel never expires (FH4)."
86
+ retained_release_count:
87
+ type: integer
88
+ default: 10
89
+ description: How many past releases the channel keeps (1 to 100).
90
+ http:
91
+ read: { path: "/sites/{site}/channels/{channel_id}" }
92
+ create:
93
+ path: "/sites/{site}/channels?channelId={channel_id}"
94
+ body: { ttl: { param: ttl } }
95
+ update:
96
+ method: PATCH
97
+ path: "/sites/{site}/channels/{channel_id}?updateMask=retainedReleaseCount"
98
+ id_path: /name
99
+ fields:
100
+ retainedReleaseCount: { param: retained_release_count }
101
+ outputs:
102
+ url: /url
103
+ expire_time: /expireTime
104
+ sim:
105
+ id_query: channelId
106
+ live:
107
+ params: { site: SPONSON_LIVE_FIREBASE_HOSTING_SITE }