@postman-cse/onboarding-bootstrap 1.2.1 → 1.2.3

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/README.md CHANGED
@@ -1,11 +1,26 @@
1
- # Postman Workspace Bootstrap
1
+ # Postman Onboarding: Workspace Bootstrap
2
2
 
3
- [![CI](https://github.com/postman-cs/postman-bootstrap-action/actions/workflows/ci.yml/badge.svg)](https://github.com/postman-cs/postman-bootstrap-action/actions/workflows/ci.yml)
4
- [![Release](https://img.shields.io/github/v/release/postman-cs/postman-bootstrap-action?sort=semver)](https://github.com/postman-cs/postman-bootstrap-action/releases)
5
- [![npm](https://img.shields.io/npm/v/%40postman-cse%2Fonboarding-bootstrap)](https://www.npmjs.com/package/@postman-cse/onboarding-bootstrap)
6
- [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
3
+ [![CI](https://github.com/postman-cs/postman-bootstrap-action/actions/workflows/ci.yml/badge.svg)](https://github.com/postman-cs/postman-bootstrap-action/actions/workflows/ci.yml) [![Release](https://img.shields.io/github/v/release/postman-cs/postman-bootstrap-action?sort=semver)](https://github.com/postman-cs/postman-bootstrap-action/releases) [![npm](https://img.shields.io/npm/v/%40postman-cse%2Fonboarding-bootstrap)](https://www.npmjs.com/package/@postman-cse/onboarding-bootstrap) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
7
4
 
8
- Provisions a Postman workspace from an OpenAPI spec, generating baseline, smoke, and contract collections in one step.
5
+ Provisions a [Postman workspace](https://learning.postman.com/docs/collaborating-in-postman/using-workspaces/overview/) from an OpenAPI spec, generating baseline, smoke, and contract collections in one step.
6
+
7
+ Part of the [Postman API Onboarding suite](https://github.com/postman-cs/postman-api-onboarding-action).
8
+
9
+ ## Which action should I use?
10
+
11
+ | Need | Use |
12
+ | --- | --- |
13
+ | Full API onboarding pipeline | [`postman-cs/postman-api-onboarding-action`](https://github.com/postman-cs/postman-api-onboarding-action) |
14
+ | Mint a service-account access token for the pipeline | [`postman-cs/postman-resolve-service-token-action`](https://github.com/postman-cs/postman-resolve-service-token-action) |
15
+ | Create or refresh Postman workspaces, specs, and generated collections | This bootstrap action |
16
+ | Discover OpenAPI specs from AWS services | [`postman-cs/postman-aws-spec-discovery-action`](https://github.com/postman-cs/postman-aws-spec-discovery-action) |
17
+ | Apply a curated flow.yaml to the Smoke collection | [`postman-cs/postman-smoke-flow-action`](https://github.com/postman-cs/postman-smoke-flow-action) |
18
+ | Sync generated Postman artifacts back to the repo | [`postman-cs/postman-repo-sync-action`](https://github.com/postman-cs/postman-repo-sync-action) |
19
+ | Link Insights discovered services to the workspace | [`postman-cs/postman-insights-onboarding-action`](https://github.com/postman-cs/postman-insights-onboarding-action) |
20
+
21
+ ## Region
22
+
23
+ The action defaults to the US production region (`postman-region: us`). [EU data residency](https://learning.postman.com/docs/administration/enterprise/about-eu-data-residency/) teams should set `postman-region: eu` on this action and on the service-token step that feeds it.
9
24
 
10
25
  ## Usage
11
26
 
@@ -20,18 +35,26 @@ jobs:
20
35
  runs-on: ubuntu-latest
21
36
  steps:
22
37
  - uses: actions/checkout@v5
38
+ - id: postman_token
39
+ uses: postman-cs/postman-resolve-service-token-action@v1
40
+ with:
41
+ postman-api-key: ${{ secrets.POSTMAN_API_KEY }}
42
+ postman-region: us
23
43
  - uses: postman-cs/postman-bootstrap-action@v1
24
44
  with:
25
45
  project-name: core-payments
26
- spec-url: https://example.com/openapi.yaml
46
+ spec-url: https://raw.githubusercontent.com/postman-cs/postman-bootstrap-action/main/examples/core-payments-openapi.yaml
47
+ postman-region: us
27
48
  postman-api-key: ${{ secrets.POSTMAN_API_KEY }}
49
+ postman-access-token: ${{ steps.postman_token.outputs.token }}
50
+ credential-preflight: enforce
28
51
  ```
29
52
 
30
- Provide either `spec-url` (public HTTPS) or `spec-path` (a file in the checked-out repo). See [Obtaining Credentials](docs/credentials.md) for how to generate `postman-api-key` and the optional `postman-access-token`.
53
+ Provide either `spec-url` (public HTTPS) or `spec-path` (a file in the checked-out repo) for the [Spec Hub import](https://learning.postman.com/docs/design-apis/specifications/import-a-specification/) path. Use a [Postman service account](https://learning.postman.com/docs/administration/service-accounts/) PMAK for `postman-api-key`; the service-token action is the primary way to mint the `postman-access-token` used for governance, cloud sync, and canonical workspace validation. See [Obtaining Credentials](docs/credentials.md) for the credential matrix and legacy fallback.
31
54
 
32
- ## Examples
55
+ ## Common scenarios
33
56
 
34
- ### Load the spec from the repository
57
+ ### Git-first spec from the repository
35
58
 
36
59
  For Git-first workflows, read the OpenAPI document directly from the checked-out workspace instead of hosting it over HTTPS:
37
60
 
@@ -44,7 +67,7 @@ For Git-first workflows, read the OpenAPI document directly from the checked-out
44
67
  postman-api-key: ${{ secrets.POSTMAN_API_KEY }}
45
68
  ```
46
69
 
47
- ### Rerun safely for an existing service
70
+ ### Safe rerun for an existing service
48
71
 
49
72
  Pass `workspace-id`, `spec-id`, and existing collection IDs to rerun without creating duplicate Postman assets. When `.postman/resources.yaml` is committed on the checked-out ref, the action reuses its workspace, spec, and collection mappings automatically.
50
73
 
@@ -57,7 +80,7 @@ Pass `workspace-id`, `spec-id`, and existing collection IDs to rerun without cre
57
80
  baseline-collection-id: col-baseline
58
81
  smoke-collection-id: col-smoke
59
82
  contract-collection-id: col-contract
60
- spec-url: https://example.com/openapi.yaml
83
+ spec-url: https://raw.githubusercontent.com/postman-cs/postman-bootstrap-action/main/examples/core-payments-openapi.yaml
61
84
  postman-api-key: ${{ secrets.POSTMAN_API_KEY }}
62
85
  ```
63
86
 
@@ -69,7 +92,7 @@ Create a release-scoped spec and collection set instead of refreshing the canoni
69
92
  - uses: postman-cs/postman-bootstrap-action@v1
70
93
  with:
71
94
  project-name: core-payments
72
- spec-url: https://example.com/openapi.yaml
95
+ spec-url: https://raw.githubusercontent.com/postman-cs/postman-bootstrap-action/main/examples/core-payments-openapi.yaml
73
96
  collection-sync-mode: version
74
97
  spec-sync-mode: version
75
98
  release-label: v1.1.1
@@ -103,16 +126,23 @@ Modes `off`, `previous-spec`, `pr-native`, and `baseline-only` are described in
103
126
  Set the repository custom property `postman-governance-group`, then provide tokens so the action can perform workspace enrichment:
104
127
 
105
128
  ```yaml
129
+ - id: postman-token
130
+ uses: postman-cs/postman-resolve-service-token-action@v1
131
+ with:
132
+ postman-api-key: ${{ secrets.POSTMAN_API_KEY }}
133
+ postman-region: us
134
+
106
135
  - uses: postman-cs/postman-bootstrap-action@v1
107
136
  with:
108
137
  project-name: core-payments
109
- spec-url: https://example.com/openapi.yaml
138
+ spec-url: https://raw.githubusercontent.com/postman-cs/postman-bootstrap-action/main/examples/core-payments-openapi.yaml
139
+ postman-region: us
110
140
  github-token: ${{ github.token }}
111
141
  postman-api-key: ${{ secrets.POSTMAN_API_KEY }}
112
- postman-access-token: ${{ secrets.POSTMAN_ACCESS_TOKEN }}
142
+ postman-access-token: ${{ steps.postman-token.outputs.token }}
113
143
  ```
114
144
 
115
- For one-off runs, `governance-group` can be passed directly and overrides the repository custom property. `governance-mapping-json` remains supported as a domain-map fallback for older workflows. If the group configuration is missing, the group is not found, or the access token is expired, bootstrap logs a warning and continues with the created workspace, spec, and collections.
145
+ For one-off runs, `governance-group` can be passed directly and overrides the repository custom property. `governance-mapping-json` remains supported as a domain-map fallback for older workflows. If the [governance group](https://learning.postman.com/docs/api-governance/configurable-rules/configuring-api-governance-rules/) configuration is missing, the group is not found, or the access token is expired, bootstrap logs a warning and continues with the created workspace, spec, and collections.
116
146
 
117
147
  ### Create the workspace under an org-mode sub-team
118
148
 
@@ -122,7 +152,7 @@ Postman organizations with multiple sub-teams require an explicit `workspace-tea
122
152
  - uses: postman-cs/postman-bootstrap-action@v1
123
153
  with:
124
154
  project-name: core-payments
125
- spec-url: https://example.com/openapi.yaml
155
+ spec-url: https://raw.githubusercontent.com/postman-cs/postman-bootstrap-action/main/examples/core-payments-openapi.yaml
126
156
  workspace-team-id: ${{ vars.POSTMAN_WORKSPACE_TEAM_ID }}
127
157
  postman-api-key: ${{ secrets.POSTMAN_API_KEY }}
128
158
  ```
@@ -164,12 +194,11 @@ See [Team Identity](docs/team-identity.md) for sub-team discovery and team-ID de
164
194
  | `gh-fallback-token` | Fallback GitHub token used to read repository custom properties when github-token cannot | no | |
165
195
  | `postman-api-key` | Postman API key used for bootstrap operations | yes | |
166
196
  | `postman-access-token` | Postman access token used for governance and workspace mutations | no | |
167
- | `credential-preflight` | Credential identity preflight policy. warn (default) logs a note and continues when postman-api-key and postman-access-token resolve to different parent orgs; enforce fails the run on that condition before any workspace is created; off skips the identity probes entirely (the reactive error guidance still applies). Promotion of the default to enforce is planned once the live e2e legs prove both directions. | no | `warn` |
168
- | `integration-backend` | Integration backend for downstream workspace connectivity | no | `bifrost` |
197
+ | `credential-preflight` | Credential identity preflight policy. warn (default) logs a note and continues when postman-api-key and postman-access-token resolve to different parent orgs; enforce fails the run on that condition before any workspace is created. | no | `warn` |
169
198
  | `folder-strategy` | Folder organization strategy for generated collections (Paths or Tags) | no | `Paths` |
170
199
  | `nested-folder-hierarchy` | When folder-strategy is Tags, enables nested folder hierarchy | no | `false` |
171
200
  | `request-name-source` | Determines how requests are named in generated collections (Fallback or URL) | no | `Fallback` |
172
- | `postman-stack` | Postman stack profile | no | `prod` |
201
+ | `postman-region` | Postman data residency region for public API and Postman CLI calls. | no | `us` |
173
202
  <!-- inputs-table:end -->
174
203
 
175
204
  ## Outputs
@@ -199,7 +228,7 @@ npm install -g @postman-cse/onboarding-bootstrap
199
228
 
200
229
  postman-bootstrap \
201
230
  --project-name core-payments \
202
- --spec-url https://example.com/openapi.yaml \
231
+ --spec-url https://raw.githubusercontent.com/postman-cs/postman-bootstrap-action/main/examples/core-payments-openapi.yaml \
203
232
  --postman-api-key "$POSTMAN_API_KEY" \
204
233
  --postman-access-token "$POSTMAN_ACCESS_TOKEN" \
205
234
  --result-json bootstrap-result.json \
@@ -215,7 +244,7 @@ bootstrap:
215
244
  image: node:24
216
245
  script:
217
246
  - npm install -g @postman-cse/onboarding-bootstrap
218
- - postman-bootstrap --project-name core-payments --spec-url "$SPEC_URL" --postman-api-key "$POSTMAN_API_KEY" --postman-access-token "$POSTMAN_ACCESS_TOKEN" --result-json bootstrap-result.json --dotenv-path bootstrap.env
247
+ - postman-bootstrap --project-name core-payments --spec-url "https://raw.githubusercontent.com/postman-cs/postman-bootstrap-action/main/examples/core-payments-openapi.yaml" --postman-api-key "$POSTMAN_API_KEY" --postman-access-token "$POSTMAN_ACCESS_TOKEN" --result-json bootstrap-result.json --dotenv-path bootstrap.env
219
248
  artifacts:
220
249
  paths:
221
250
  - bootstrap-result.json
@@ -231,7 +260,7 @@ pipelines:
231
260
  image: node:24
232
261
  script:
233
262
  - npm install -g @postman-cse/onboarding-bootstrap
234
- - postman-bootstrap --project-name core-payments --spec-url "$SPEC_URL" --postman-api-key "$POSTMAN_API_KEY" --postman-access-token "$POSTMAN_ACCESS_TOKEN" --result-json bootstrap-result.json --dotenv-path bootstrap.env
263
+ - postman-bootstrap --project-name core-payments --spec-url "https://raw.githubusercontent.com/postman-cs/postman-bootstrap-action/main/examples/core-payments-openapi.yaml" --postman-api-key "$POSTMAN_API_KEY" --postman-access-token "$POSTMAN_ACCESS_TOKEN" --result-json bootstrap-result.json --dotenv-path bootstrap.env
235
264
  artifacts:
236
265
  - bootstrap-result.json
237
266
  - bootstrap.env
@@ -246,7 +275,7 @@ steps:
246
275
  versionSpec: '24.x'
247
276
  - script: |
248
277
  npm install -g @postman-cse/onboarding-bootstrap
249
- postman-bootstrap --project-name core-payments --spec-url "$(SPEC_URL)" --postman-api-key "$(POSTMAN_API_KEY)" --postman-access-token "$(POSTMAN_ACCESS_TOKEN)" --result-json bootstrap-result.json --dotenv-path bootstrap.env
278
+ postman-bootstrap --project-name core-payments --spec-url "https://raw.githubusercontent.com/postman-cs/postman-bootstrap-action/main/examples/core-payments-openapi.yaml" --postman-api-key "$(POSTMAN_API_KEY)" --postman-access-token "$(POSTMAN_ACCESS_TOKEN)" --result-json bootstrap-result.json --dotenv-path bootstrap.env
250
279
  displayName: Bootstrap Postman assets
251
280
  - publish: bootstrap-result.json
252
281
  - publish: bootstrap.env
@@ -254,13 +283,13 @@ steps:
254
283
 
255
284
  ## How it works
256
285
 
257
- The action preserves the bootstrap slice of the API Catalog demo flow: create or reuse a Postman workspace, assign governance, invite the requester and workspace admins, upload or update the spec in Spec Hub, lint it with the Postman CLI, generate or reuse baseline, smoke, and contract collections, inject generated tests, apply tags, and reuse committed `.postman/resources.yaml` state when present. Inputs and outputs use kebab-case, and `integration-backend` defaults to `bifrost`.
286
+ The action handles the bootstrap slice of the Postman onboarding workflow: create or reuse a Postman workspace, assign governance, invite the requester and workspace admins, upload or update the spec in [Spec Hub](https://learning.postman.com/docs/design-apis/specifications/overview/), lint it with the [Postman CLI](https://learning.postman.com/docs/postman-cli/postman-cli-governance/), generate or reuse baseline, smoke, and contract collections, inject generated tests, apply tags, and reuse committed `.postman/resources.yaml` state when present. Inputs and outputs use kebab-case.
258
287
 
259
288
  - **Phase independence:** bootstrap succeeds on its own even when later pipeline stages (repo sync, Insights) fail, and reruns reuse existing assets. See [Bootstrap Phase Independence](docs/bootstrap-phase-independence.md).
260
- - **Team identity:** the team ID is derived from `postman-api-key` via `/me`; org-mode tenants pass `workspace-team-id`. See [Team Identity](docs/team-identity.md).
289
+ - **Team identity:** the parent team ID is derived from `postman-api-key`; org-mode tenants pass `workspace-team-id` for the sub-team that should own the workspace. See [Team Identity](docs/team-identity.md).
261
290
  - **Git providers:** workspace-to-repository linking supports GitHub and GitLab, cloud and self-hosted. See [Git Provider Support](docs/git-provider-support.md).
262
291
  - **Spec handling:** operation summaries are normalized before upload, `spec-url` fetches are SSRF-hardened HTTPS with pinned DNS, and breaking-change comparison runs before any Postman mutation when enabled. See [OpenAPI Spec Handling](docs/spec-handling.md).
263
- - **Lifecycle modes:** `collection-sync-mode` (`refresh`/`version`, legacy `reuse`), `spec-sync-mode` (`update`/`version`), release-label derivation, ref-native state, cloud spec-to-collection syncing, smoke monitoring, and the REST migration seam. See [Lifecycle Modes and Operational Reference](docs/lifecycle-and-operations.md).
292
+ - **Lifecycle modes:** `collection-sync-mode` (`refresh`/`version`, legacy `reuse`), `spec-sync-mode` (`update`/`version`), release-label derivation, ref-native state, cloud spec-to-collection syncing, and smoke monitoring. See [Lifecycle Modes and Operational Reference](docs/lifecycle-and-operations.md).
264
293
  - **Credentials:** `postman-api-key` handles standard Postman API operations; the optional `postman-access-token` unlocks governance assignment, cloud link/sync, and canonical workspace validation. See [Obtaining Credentials](docs/credentials.md).
265
294
 
266
295
  ## Dynamic contract tests
@@ -282,7 +311,7 @@ Dynamic contract failures and warnings use `CONTRACT_` error codes. Remediation
282
311
  | `CONTRACT_REF_SIZE_EXCEEDED` | A fetched resource or total fetched bytes exceeded limits. | Reduce spec/ref size or pre-bundle the document. |
283
312
  | `CONTRACT_SPEC_PARSE_FAILED` | The fetched document was not valid JSON/YAML object content. | Fix the source document syntax. |
284
313
  | `CONTRACT_SPEC_READ_FAILED` | The `spec-path` file could not be read from the workspace. | Verify the file exists at the configured path and that the workflow checked out the branch that contains it. |
285
- | `CONTRACT_SPEC_VALIDATION_FAILED` | The bundled document failed OpenAPI validation. | Fix OpenAPI validation errors. |
314
+ | `CONTRACT_SPEC_VALIDATION_FAILED` | The bundled document failed OpenAPI validation. | Fix [OpenAPI validation](https://learning.postman.com/docs/design-apis/specifications/validate-a-specification/) errors. |
286
315
  | `CONTRACT_UNSUPPORTED_OPENAPI_VERSION` | The document was not OpenAPI 3.0 or 3.1. | Provide an OpenAPI 3.0/3.1 document. |
287
316
  | `CONTRACT_NO_ELIGIBLE_OPERATIONS` | No eligible `paths` operations with responses were found. | Add path operations with responses. |
288
317
  | `CONTRACT_OPERATION_NO_RESPONSES` | A `paths` operation had no response definitions. | Add at least one OpenAPI response to each path operation. |
@@ -307,7 +336,7 @@ Dynamic contract failures and warnings use `CONTRACT_` error codes. Remediation
307
336
  | `CONTRACT_ENCODING_MISMATCH` | A generated form-body field does not match its OpenAPI encoding object: a declared multipart per-part `contentType` is missing or different, a binary-typed field was not generated as a file part, or a field declaring a JSON `contentType` carries an unparseable value. | Regenerate the collection or align the encoding object with the intended part layout. |
308
337
  | `CONTRACT_ENCODING_HEADERS_NOT_VALIDATED` | A multipart encoding object declares per-part `headers`, which Postman formdata entries cannot carry, so they are not asserted. | Validate per-part headers with dedicated tests if the server depends on them. |
309
338
  | `CONTRACT_FORM_FIELD_SCHEMA_MISMATCH` | A generated urlencoded or multipart text value does not validate against its scalar property schema. | Fix the spec example feeding the generated body, or correct the property schema. |
310
- | `CONTRACT_DISCRIMINATOR_NOT_VALIDATED` | A `discriminator` has no sibling `oneOf`/`anyOf` of internal `$ref` members (typically allOf-parent inheritance), so its dispatch is not validated. | Restructure to the oneOf-plus-discriminator form, or rely on the still-validated composition keywords. |
339
+ | `CONTRACT_DISCRIMINATOR_NOT_VALIDATED` | A `discriminator` has no sibling `oneOf`/`anyOf` of same-spec `$ref` members (typically allOf-parent inheritance), so its dispatch is not validated. | Restructure to the oneOf-plus-discriminator form, or rely on the still-validated composition keywords. |
311
340
  | `CONTRACT_HEADER_SCHEMA_NOT_VALIDATED` | A response header declares an object or otherwise undecodable schema, so its serialized value is checked for presence only. Arrays of scalars are split on commas and validated. | Use a scalar or array-of-scalars header schema, or validate the serialized header form with dedicated tests. |
312
341
  | `CONTRACT_PATH_PARAM_NOT_VALIDATED` | A path parameter declares a non-scalar schema or a serialization the runtime cannot decode, so its value is not validated. Scalar path parameters are validated at runtime against the resolved path segment. | Use a scalar path schema, or validate path value semantics with dedicated tests. |
313
342
  | `CONTRACT_DUPLICATE_OPERATION_MATCH` | Multiple OpenAPI operations share the same canonical request mapping candidate. | Disambiguate paths, server prefixes, or templated routes. |
@@ -322,6 +351,18 @@ Dynamic contract failures and warnings use `CONTRACT_` error codes. Remediation
322
351
 
323
352
  ## Resources
324
353
 
354
+ ### The suite
355
+
356
+ | Action | Role |
357
+ | --- | --- |
358
+ | [Postman API Onboarding](https://github.com/postman-cs/postman-api-onboarding-action) | Entry point: chains workspace bootstrap, repo sync, and optional Insights linking |
359
+ | [Postman Onboarding: Service Token](https://github.com/postman-cs/postman-resolve-service-token-action) | Mints the service-account access token and team ID |
360
+ | [Postman Onboarding: AWS Spec Discovery](https://github.com/postman-cs/postman-aws-spec-discovery-action) | Discovers and exports API specs from AWS services |
361
+ | [Postman Onboarding: Workspace Bootstrap](https://github.com/postman-cs/postman-bootstrap-action) | Creates the workspace, uploads the spec, generates collections |
362
+ | [Postman Onboarding: Smoke Flow](https://github.com/postman-cs/postman-smoke-flow-action) | Applies a curated flow.yaml to the Smoke collection |
363
+ | [Postman Onboarding: Repo Sync](https://github.com/postman-cs/postman-repo-sync-action) | Exports artifacts into the repo and wires CI, mocks, and monitors |
364
+ | [Postman Onboarding: Insights Linking](https://github.com/postman-cs/postman-insights-onboarding-action) | Links Insights discovered services to the workspace |
365
+
325
366
  Sibling actions in the Postman onboarding pipeline:
326
367
 
327
368
  - [postman-cs/postman-api-onboarding-action](https://github.com/postman-cs/postman-api-onboarding-action): composite action that orchestrates the pipeline
@@ -334,10 +375,51 @@ Sibling actions in the Postman onboarding pipeline:
334
375
  Package and docs:
335
376
 
336
377
  - npm package: [@postman-cse/onboarding-bootstrap](https://www.npmjs.com/package/@postman-cse/onboarding-bootstrap)
337
- - [Postman API documentation](https://learning.postman.com/docs/developer/postman-api/intro-api/)
338
- - [Postman Spec Hub](https://learning.postman.com/docs/design-apis/specifications/overview/)
378
+ - [Credential matrix](docs/credentials.md)
379
+ - [Support](SUPPORT.md)
380
+ - [Security Policy](SECURITY.md)
381
+ - [Release Policy](RELEASE_POLICY.md)
382
+ - Postman API and auth references: [Postman API](https://learning.postman.com/docs/reference/postman-api/intro-api/), [API authentication](https://learning.postman.com/docs/reference/postman-api/authentication/), [service accounts](https://learning.postman.com/docs/administration/service-accounts/), [EU data residency](https://learning.postman.com/docs/administration/enterprise/about-eu-data-residency/)
383
+ - Postman design resources: [workspaces](https://learning.postman.com/docs/collaborating-in-postman/using-workspaces/overview/), [Spec Hub](https://learning.postman.com/docs/design-apis/specifications/overview/), [import a specification](https://learning.postman.com/docs/design-apis/specifications/import-a-specification/), [generate collections](https://learning.postman.com/docs/design-apis/specifications/generate-collections/), [validate a specification](https://learning.postman.com/docs/design-apis/specifications/validate-a-specification/)
384
+ - Postman execution resources: [Postman CLI collection runs](https://learning.postman.com/docs/postman-cli/postman-cli-collections/), [Postman CLI governance](https://learning.postman.com/docs/postman-cli/postman-cli-governance/), [API governance rules](https://learning.postman.com/docs/api-governance/configurable-rules/configuring-api-governance-rules/), [mock servers](https://learning.postman.com/docs/design-apis/mock-apis/set-up-mock-servers/), [monitors](https://learning.postman.com/docs/monitoring-your-api/intro-monitors/)
339
385
  - Local development: `npm install`, `npm test`, `npm run typecheck`, `npm run build` (produces the committed `dist/` bundles used by `action.yml`); regenerate the Inputs and Outputs tables with `npm run docs:tables`
340
386
 
387
+ ## Telemetry
388
+
389
+ This action sends a single non-identifying usage event when a run completes, so the
390
+ Postman team can measure adoption across CI systems. The event contains the
391
+ action name and version, your Postman team ID, the detected CI provider and
392
+ runner kind, the run outcome, the CI run identifier, an event timestamp, and a one-way SHA-256 hash of the repository
393
+ identifier. Each event also carries a schema version and a constant event marker (always `completion`). The Postman team ID is sent in the clear on a legitimate-interest
394
+ basis to measure product adoption.
395
+
396
+ The `events.pm-cse.dev` endpoint is operated by the Postman Customer Success
397
+ Engineering team. Postman, Inc. processes these events only to measure
398
+ onboarding adoption in aggregate, retains them only as aggregated counts for
399
+ product-adoption trend analysis, and includes no payload field that identifies
400
+ an individual person.
401
+
402
+ It never sends API keys, access tokens, spec content, workspace or repository
403
+ names, or any personal data. It is fire-and-forget with a hard
404
+ timeout and can never block or fail your pipeline. Corporate HTTP and HTTPS
405
+ proxies are honored through the standard `HTTPS_PROXY`, `HTTP_PROXY`, and
406
+ `NO_PROXY` environment variables.
407
+
408
+ Disable it by setting either environment variable in your CI:
409
+
410
+ ```sh
411
+ POSTMAN_ACTIONS_TELEMETRY=off
412
+ # or the cross-tool standard
413
+ DO_NOT_TRACK=1
414
+ ```
415
+
416
+ Telemetry is also skipped automatically when no Postman team ID can be resolved.
417
+
418
+ Events are sent over HTTPS to `https://events.pm-cse.dev/v1/events`. To
419
+ allowlist this destination on a restricted network, or to route events to a
420
+ collector you operate, set the `POSTMAN_ACTIONS_TELEMETRY_ENDPOINT` environment
421
+ variable to your own URL.
422
+
341
423
  ## License
342
424
 
343
425
  [MIT](LICENSE)
package/action.yml CHANGED
@@ -1,5 +1,5 @@
1
- name: Postman Workspace Bootstrap
2
- description: Provision a Postman workspace from an OpenAPI spec and generate baseline, smoke, and contract collections in one step.
1
+ name: 'Postman Onboarding: Workspace Bootstrap'
2
+ description: Provision a Postman workspace from an OpenAPI spec with generated collections. Part of the Postman API Onboarding suite.
3
3
  author: Postman
4
4
  branding:
5
5
  icon: box
@@ -109,13 +109,12 @@ inputs:
109
109
  description: Postman access token used for governance and workspace mutations
110
110
  required: false
111
111
  credential-preflight:
112
- description: "Credential identity preflight policy. warn (default) logs a note and continues when postman-api-key and postman-access-token resolve to different parent orgs; enforce fails the run on that condition before any workspace is created; off skips the identity probes entirely (the reactive error guidance still applies). Promotion of the default to enforce is planned once the live e2e legs prove both directions."
112
+ description: "Credential identity preflight policy. warn (default) logs a note and continues when postman-api-key and postman-access-token resolve to different parent orgs; enforce fails the run on that condition before any workspace is created."
113
113
  required: false
114
114
  default: warn
115
115
  integration-backend:
116
- description: Integration backend for downstream workspace connectivity
116
+ description: Advanced/internal. Integration backend for managed workspace connectivity; leave unset to use the default.
117
117
  required: false
118
- default: bifrost
119
118
  folder-strategy:
120
119
  description: Folder organization strategy for generated collections (Paths or Tags)
121
120
  required: false
@@ -128,8 +127,12 @@ inputs:
128
127
  description: Determines how requests are named in generated collections (Fallback or URL)
129
128
  required: false
130
129
  default: Fallback
130
+ postman-region:
131
+ description: Postman data residency region for public API and Postman CLI calls.
132
+ required: false
133
+ default: us
131
134
  postman-stack:
132
- description: Postman stack profile
135
+ description: 'Postman stack profile. Leave at the default unless Postman support directs otherwise.'
133
136
  required: false
134
137
  default: prod
135
138
  outputs: