@wildo-ai/saas-technical-doc 1.1.2 → 1.1.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.
Files changed (96) hide show
  1. package/dist/esm/companion/application-documentation/application-connection-documentation.d.ts +25 -1
  2. package/dist/esm/companion/application-documentation/application-connection-documentation.d.ts.map +1 -1
  3. package/dist/esm/companion/application-documentation/application-connection-documentation.js +28 -1
  4. package/dist/esm/companion/application-documentation/application-connection-documentation.js.map +1 -1
  5. package/dist/esm/companion/application-documentation/application-domain-documentation.d.ts +133 -0
  6. package/dist/esm/companion/application-documentation/application-domain-documentation.d.ts.map +1 -0
  7. package/dist/esm/companion/application-documentation/application-domain-documentation.js +243 -0
  8. package/dist/esm/companion/application-documentation/application-domain-documentation.js.map +1 -0
  9. package/dist/esm/companion/application-documentation/application-integration-documentation.d.ts.map +1 -1
  10. package/dist/esm/companion/application-documentation/application-integration-documentation.js +23 -0
  11. package/dist/esm/companion/application-documentation/application-integration-documentation.js.map +1 -1
  12. package/dist/esm/companion/application-documentation/application-organization-role-documentation.d.ts +30 -0
  13. package/dist/esm/companion/application-documentation/application-organization-role-documentation.d.ts.map +1 -1
  14. package/dist/esm/companion/application-documentation/application-organization-role-documentation.js +38 -0
  15. package/dist/esm/companion/application-documentation/application-organization-role-documentation.js.map +1 -1
  16. package/dist/esm/companion/application-documentation/technical-documentation-engine-content-bundle.d.ts +61 -1
  17. package/dist/esm/companion/application-documentation/technical-documentation-engine-content-bundle.d.ts.map +1 -1
  18. package/dist/esm/companion/application-documentation/technical-documentation-engine-content-bundle.js +255 -218
  19. package/dist/esm/companion/application-documentation/technical-documentation-engine-content-bundle.js.map +1 -1
  20. package/dist/esm/companion/application-documentation/technical-documentation-private-derivation.d.ts +2 -0
  21. package/dist/esm/companion/application-documentation/technical-documentation-private-derivation.d.ts.map +1 -1
  22. package/dist/esm/companion/application-documentation/technical-documentation-private-derivation.js +1 -0
  23. package/dist/esm/companion/application-documentation/technical-documentation-private-derivation.js.map +1 -1
  24. package/dist/esm/companion/application-documentation/technical-documentation-publication-policy.js +1 -1
  25. package/dist/esm/companion/application-documentation/technical-documentation-publication-policy.js.map +1 -1
  26. package/dist/esm/companion/index.d.ts +2 -1
  27. package/dist/esm/companion/index.d.ts.map +1 -1
  28. package/dist/esm/companion/index.js +2 -1
  29. package/dist/esm/companion/index.js.map +1 -1
  30. package/dist/esm/companion/manual-controller-route-projection.d.ts +112 -0
  31. package/dist/esm/companion/manual-controller-route-projection.d.ts.map +1 -0
  32. package/dist/esm/companion/manual-controller-route-projection.js +249 -0
  33. package/dist/esm/companion/manual-controller-route-projection.js.map +1 -0
  34. package/dist/esm/companion/openapi-generator.d.ts +16 -0
  35. package/dist/esm/companion/openapi-generator.d.ts.map +1 -1
  36. package/dist/esm/companion/openapi-generator.js +489 -26
  37. package/dist/esm/companion/openapi-generator.js.map +1 -1
  38. package/dist/esm/companion/operation-projection.schemas.d.ts +44 -0
  39. package/dist/esm/companion/operation-projection.schemas.d.ts.map +1 -1
  40. package/dist/esm/companion/operation-projection.schemas.js +37 -0
  41. package/dist/esm/companion/operation-projection.schemas.js.map +1 -1
  42. package/dist/esm/companion/rendering/technical-documentation-docusaurus-renderer.d.ts +7 -1
  43. package/dist/esm/companion/rendering/technical-documentation-docusaurus-renderer.d.ts.map +1 -1
  44. package/dist/esm/companion/rendering/technical-documentation-docusaurus-renderer.js +34 -18
  45. package/dist/esm/companion/rendering/technical-documentation-docusaurus-renderer.js.map +1 -1
  46. package/dist/esm/companion/rendering/technical-documentation-managed-tree-validator.d.ts.map +1 -1
  47. package/dist/esm/companion/rendering/technical-documentation-managed-tree-validator.js +8 -1
  48. package/dist/esm/companion/rendering/technical-documentation-managed-tree-validator.js.map +1 -1
  49. package/dist/esm/companion/rendering/technical-documentation-markdown-renderer.d.ts +0 -9
  50. package/dist/esm/companion/rendering/technical-documentation-markdown-renderer.d.ts.map +0 -1
  51. package/dist/esm/companion/rendering/technical-documentation-markdown-renderer.js +0 -111
  52. package/dist/esm/companion/rendering/technical-documentation-markdown-renderer.js.map +0 -1
  53. package/dist/esm/companion/rendering/technical-documentation-render-model.d.ts.map +1 -1
  54. package/dist/esm/companion/rendering/technical-documentation-render-model.js +30 -13
  55. package/dist/esm/companion/rendering/technical-documentation-render-model.js.map +1 -1
  56. package/dist/esm/companion/rendering/technical-documentation-search-index-renderer.d.ts +10 -0
  57. package/dist/esm/companion/rendering/technical-documentation-search-index-renderer.d.ts.map +1 -1
  58. package/dist/esm/companion/rendering/technical-documentation-search-index-renderer.js +10 -15
  59. package/dist/esm/companion/rendering/technical-documentation-search-index-renderer.js.map +1 -1
  60. package/dist/esm/companion/technical-documentation-capture-execution-port.d.ts +27 -1
  61. package/dist/esm/companion/technical-documentation-capture-execution-port.d.ts.map +1 -1
  62. package/dist/esm/companion/technical-documentation-capture-execution-port.js.map +1 -1
  63. package/dist/esm/companion/technical-documentation-diagram-definitions.d.ts +33 -0
  64. package/dist/esm/companion/technical-documentation-diagram-definitions.d.ts.map +1 -0
  65. package/dist/esm/companion/technical-documentation-diagram-definitions.js +54 -0
  66. package/dist/esm/companion/technical-documentation-diagram-definitions.js.map +1 -0
  67. package/dist/esm/companion/technical-documentation-diagram-materializer.d.ts +10 -18
  68. package/dist/esm/companion/technical-documentation-diagram-materializer.d.ts.map +1 -1
  69. package/dist/esm/companion/technical-documentation-diagram-materializer.js +9 -39
  70. package/dist/esm/companion/technical-documentation-diagram-materializer.js.map +1 -1
  71. package/dist/esm/config/wildo-tech-doc-config.schemas.d.ts +8 -4
  72. package/dist/esm/config/wildo-tech-doc-config.schemas.d.ts.map +1 -1
  73. package/dist/esm/config/wildo-tech-doc-config.schemas.js +8 -4
  74. package/dist/esm/config/wildo-tech-doc-config.schemas.js.map +1 -1
  75. package/dist/esm/content/application-consumer-documentation-content.techdoc.d.ts +42 -64
  76. package/dist/esm/content/application-consumer-documentation-content.techdoc.d.ts.map +1 -1
  77. package/dist/esm/content/application-consumer-documentation-content.techdoc.js +164 -925
  78. package/dist/esm/content/application-consumer-documentation-content.techdoc.js.map +1 -1
  79. package/dist/esm/runtime/DocsAuthContext.d.ts +16 -1
  80. package/dist/esm/runtime/DocsAuthContext.d.ts.map +1 -1
  81. package/dist/esm/runtime/DocsAuthContext.js +18 -2
  82. package/dist/esm/runtime/DocsAuthContext.js.map +1 -1
  83. package/dist/esm/runtime/frontend-provider-registry.techdoc.d.ts +35 -13
  84. package/dist/esm/runtime/frontend-provider-registry.techdoc.d.ts.map +1 -1
  85. package/dist/esm/runtime/frontend-provider-registry.techdoc.js +28 -19
  86. package/dist/esm/runtime/frontend-provider-registry.techdoc.js.map +1 -1
  87. package/dist/esm/runtime/index.d.ts +1 -0
  88. package/dist/esm/runtime/index.d.ts.map +1 -1
  89. package/dist/esm/runtime/index.js +1 -0
  90. package/dist/esm/runtime/index.js.map +1 -1
  91. package/dist/esm/runtime/use-docs-provider-sdks.d.ts +21 -0
  92. package/dist/esm/runtime/use-docs-provider-sdks.d.ts.map +1 -0
  93. package/dist/esm/runtime/use-docs-provider-sdks.js +49 -0
  94. package/dist/esm/runtime/use-docs-provider-sdks.js.map +1 -0
  95. package/dist/tsconfig.build.tsbuildinfo +1 -1
  96. package/package.json +6 -5
@@ -7,9 +7,22 @@
7
7
  * generated application may consume them.
8
8
  *
9
9
  * The fragments describe customer-facing product domains and integration
10
- * journeys, not a generic “technical guides” catalogue. Application-domain
11
- * use cases are deliberately absent until the app-creator flow owns their
12
- * authoring and acceptance.
10
+ * journeys, not a generic “technical guides” catalogue.
11
+ *
12
+ * This header used to say application-domain use cases were "deliberately absent until the
13
+ * app-creator flow owns their authoring and acceptance". That sentence is retired, and it is worth
14
+ * keeping the reason: stated as policy, the largest gap in the whole site read as a decision
15
+ * rather than a defect, and survived every review for exactly that long. A customer could learn
16
+ * how to verify a webhook signature before learning what the product manages.
17
+ *
18
+ * `what-this-application-manages.md` closes it WITHOUT anyone authoring per-application prose,
19
+ * which is what the original reservation was protecting: the page is engine-authored and every
20
+ * fact in it is projected from sources the application already accepted — its own resource
21
+ * registry, its declared API-reference categories, and each specification's purpose and lifecycle.
22
+ *
23
+ * What remains genuinely deferred is a page PER resource. Those need a variable unit set, and the
24
+ * renderer's route table is deliberately fixed (see `pathForUnit`), so an application-owned unit
25
+ * still fails closed rather than acquiring an implicit route.
13
26
  */
14
27
  export const APPLICATION_CONSUMER_DOCUMENTATION_AUTHORED_CONTENT_V1 = [
15
28
  {
@@ -27,6 +40,7 @@ This documentation is for the people who use, administer, integrate with or oper
27
40
 
28
41
  | You need to | Start here | You will find |
29
42
  | --- | --- | --- |
43
+ | Understand what this application is for | [What {{APPLICATION_NAME}} manages](/what-this-application-manages) | The things it manages, in its own words, and who may act on each |
30
44
  | Sign in, set up a second factor, or get back into your account | [Access and identity](/access-and-identity/overview) | The sign-in methods, multifactor enrollment and recovery, and what a refusal means |
31
45
  | Invite someone, change what they may do, or remove them | [User administration](/user-administration) | Memberships, the roles available in this application, organization units, single sign-on and directory provisioning |
32
46
  | Call the API from your own code | [Send your first API request](/integrations/rest/send-request) | A working request in ten minutes, then the [conventions](/integrations/rest/conventions) every operation follows |
@@ -34,7 +48,6 @@ This documentation is for the people who use, administer, integrate with or oper
34
48
  | Build in n8n, Zapier or Make | [Automation platforms](/integrations/automation-platforms) | The exact settings for each tool |
35
49
  | Connect an AI assistant such as Cursor, Codex or Claude Code | [AI coding tools](/integrations/ai-coding-tools) | The MCP connection and what the assistant may do |
36
50
  | Investigate who did what, or export security evidence | [Security and audit](/security-and-audit) | The audit trail, exports and delivery to your SIEM |
37
- | Understand a plan, an invoice or why access changed | [Billing and subscriptions](/billing-and-subscriptions) | How billing state turns into access, and how to reconcile a change |
38
51
  | Look up one operation, field or role | [API reference](/api) | The exact contract of every operation, generated from the application itself |
39
52
 
40
53
  Sections appear in the navigation only when this application offers the capability. If a section named above is missing, the application does not expose that capability, and no setting on your side adds it.
@@ -54,6 +67,45 @@ Sections appear in the navigation only when this application offers the capabili
54
67
  ## When you ask for help
55
68
 
56
69
  Give the organization, the page or operation you were using, the time, what you expected and what you saw. For an API call, add the HTTP status and the \`error.correlationId\` from the response; for a webhook, the delivery identifier and \`jti\`. Never include a password, an API key, a bearer token or another person's data.`,
70
+ },
71
+ {
72
+ managedPath: 'what-this-application-manages.md',
73
+ unitRef: 'technical-documentation:unit/what-this-application-manages',
74
+ sourceRefs: [
75
+ 'saas-technical-doc:engine-content/what-this-application-manages',
76
+ 'source:companion-projection:application-connection',
77
+ 'source:companion-projection:application-domain',
78
+ ],
79
+ markdown: `# What {{APPLICATION_NAME}} manages
80
+
81
+ Every other page here explains how to reach this application, administer it, integrate with it or
82
+ pay for it. This one says what it is FOR.
83
+
84
+ Everything below is the application's own: the things it stores, the words it uses for them, and
85
+ who may act on each. None of it is written by the framework — it is read from the application's own
86
+ resource definitions, so it says what this deployment actually publishes rather than what a product
87
+ of this kind usually does.
88
+
89
+ ## What it manages
90
+
91
+ {{APPLICATION_DOMAIN:domainOverview}}
92
+
93
+ ## Each one in detail
94
+
95
+ {{APPLICATION_DOMAIN:domainResourceDetails}}
96
+
97
+ ## Where to go next
98
+
99
+ | You need to | Go to |
100
+ | --- | --- |
101
+ | Read or change any of this from your own code | [Send your first API request](/integrations/rest/send-request) |
102
+ | Look up the exact fields, arguments and responses | [API reference](/api) |
103
+ | Be notified when one of these changes | [Webhooks](/integrations/webhooks) |
104
+ | Let an AI assistant work with them | [AI coding tools](/integrations/ai-coding-tools) |
105
+ | Change who may act on them | [Roles in this application](/user-administration/roles-and-permissions) |
106
+
107
+ The names above are the API's own, so a name you read here is the one you will send, the one an
108
+ error message will quote back, and the one a webhook payload will carry.`,
57
109
  },
58
110
  {
59
111
  managedPath: 'access-and-identity/overview.md',
@@ -1663,6 +1715,7 @@ value or a screenshot containing them.`,
1663
1715
  unitRef: 'technical-documentation:unit/oauth-provider',
1664
1716
  sourceRefs: [
1665
1717
  'saas-technical-doc:engine-content/oauth-provider',
1718
+ 'source:companion-projection:application-connection',
1666
1719
  'source:consumer-fact:access-oauth-clients',
1667
1720
  ],
1668
1721
  markdown: `# OAuth provider and delegated access
@@ -1739,12 +1792,16 @@ token, key, user-information, revocation and logout endpoints belong to the API
1739
1792
  issuer. They are deliberately not all under one hand-constructed path.
1740
1793
 
1741
1794
  ~~~bash
1742
- APPLICATION_OAUTH_ISSUER="https://api.example.invalid"
1743
-
1744
1795
  curl --fail --silent --show-error \
1745
- "$APPLICATION_OAUTH_ISSUER/.well-known/oauth-authorization-server"
1796
+ "{{APPLICATION_CONNECTION_VALUE:oauthMetadataUrl}}"
1746
1797
  ~~~
1747
1798
 
1799
+ That URL is not the issuer with the well-known segment appended, and the difference matters. RFC
1800
+ 8414 inserts \`/.well-known/oauth-authorization-server\` **between the host and the issuer's path**,
1801
+ while OpenID Connect discovery appends its suffix to the issuer — the opposite construction. This
1802
+ application's issuer is \`{{APPLICATION_CONNECTION_VALUE:oauthIssuer}}\`, and it serves the same
1803
+ metadata document at both locations, so a client that derives either way finds it.
1804
+
1748
1805
  Check the returned \`issuer\` exactly. Then read the advertised grants,
1749
1806
  \`code_challenge_methods_supported\`, token authentication methods, registration
1750
1807
  endpoint and resource-indicator support before configuring the client. A
@@ -3524,6 +3581,7 @@ same membership or unit assignment.`,
3524
3581
  unitRef: 'technical-documentation:unit/scim-protocol-and-payloads',
3525
3582
  sourceRefs: [
3526
3583
  'saas-technical-doc:engine-content/scim-protocol-and-payloads',
3584
+ 'source:companion-projection:application-connection',
3527
3585
  'source:consumer-fact:organization-scim-provisioning',
3528
3586
  ],
3529
3587
  markdown: `# SCIM protocol and payload reference
@@ -3599,11 +3657,10 @@ and does not prove that the person can complete SSO.
3599
3657
 
3600
3658
  ## Understand the base URL
3601
3659
 
3602
- The configuration resource supplies the API-relative path
3603
- \`/api/v1/scim/v2\`. A provider needs the complete public URL:
3660
+ This is the complete base URL a provider needs. Everything below hangs off it:
3604
3661
 
3605
3662
  ~~~text
3606
- https://api.example.com/api/v1/scim/v2
3663
+ {{APPLICATION_CONNECTION_VALUE:scimBaseUrl}}
3607
3664
  ~~~
3608
3665
 
3609
3666
  The organization is not encoded in that URL. The bearer token identifies the
@@ -3706,6 +3763,7 @@ application’s discovery response to understand the implemented profile.`,
3706
3763
  unitRef: 'technical-documentation:unit/scim-configure',
3707
3764
  sourceRefs: [
3708
3765
  'saas-technical-doc:engine-content/scim-configure',
3766
+ 'source:companion-projection:application-connection',
3709
3767
  'source:consumer-fact:organization-scim-provisioning',
3710
3768
  ],
3711
3769
  markdown: `# Configure SCIM provisioning
@@ -4455,6 +4513,8 @@ is not misread as self-service.
4455
4513
  from retries and dead-letter state.
4456
4514
  - [Protect and retain audit evidence](/security-and-audit/protect-evidence)
4457
4515
  without turning a diagnostic copy into an uncontrolled data store.
4516
+ - [Respond to a leaked credential](/security-and-audit/respond-to-leaked-credential)
4517
+ in the order an incident requires: contain, then assess, then recover.
4458
4518
 
4459
4519
  Close each task with the question, organization/environment, filters and time
4460
4520
  boundary, event and correlation identifiers, current-state comparison, reviewer
@@ -5411,6 +5471,89 @@ Close the incident with source event ID, organization/environment, destination,
5411
5471
  filter decision, failure class, attempts, configuration correction, retry/purge
5412
5472
  decision, receiver lookup and correlation evidence. Exclude authentication
5413
5473
  secrets, raw Authorization headers and unnecessary event personal data.`,
5474
+ },
5475
+ {
5476
+ managedPath: 'security-and-audit/respond-to-leaked-credential.md',
5477
+ unitRef: 'technical-documentation:unit/respond-to-leaked-credential',
5478
+ sourceRefs: ['saas-technical-doc:engine-content/respond-to-leaked-credential'],
5479
+ markdown: `# Respond to a leaked credential
5480
+
5481
+ A credential of this application has been exposed — an API key in a public repository, a token in a
5482
+ support ticket or a log, an OAuth client secret in a screenshot, or a person's password reused on a
5483
+ service that was breached.
5484
+
5485
+ Every other page in this section explains ONE capability well. This one exists because an incident
5486
+ is not one capability: it is an ORDER. The costly mistakes here are not doing the wrong thing, they
5487
+ are doing the right things in the wrong sequence — investigating before containing, or revoking
5488
+ before you know what the credential reached.
5489
+
5490
+ **Contain first. Assess second. Recover third.** Work down the page.
5491
+
5492
+ ## Before you start
5493
+
5494
+ Write down the exposure time you will use as the window's lower bound — when the credential first
5495
+ became readable by someone who should not have it, NOT when you found out. If you cannot establish
5496
+ it, use the credential's creation time. Every step below is bounded by that instant, and widening it
5497
+ later means redoing the assessment.
5498
+
5499
+ ## 1 · Contain
5500
+
5501
+ Do this before anything else, including before you finish reading the rest of this page. A credential
5502
+ you are still investigating is a credential still being used.
5503
+
5504
+ | What leaked | Do this |
5505
+ | --- | --- |
5506
+ | An API key | Revoke it — see [API key lifecycle](/access-and-identity/api-keys-lifecycle). Revocation takes effect for new requests; it does not retract a request already in flight |
5507
+ | An OAuth client secret, or a token issued to a client | [Operate and revoke delegated access](/access-and-identity/oauth-operate-and-revoke), and revoke the client's outstanding grants, not only the secret |
5508
+ | A person's password | Suspend the account — see [Suspend or remove a user](/user-administration/suspend-or-remove-user). Suspending ends their sessions; a password reset alone does not tell you whether someone else is already signed in |
5509
+ | A SCIM or directory token | Rotate at the identity provider, then in [SCIM configuration](/user-administration/scim-configure). Until both sides carry the new value, provisioning is stopped — that is the correct trade during containment |
5510
+
5511
+ **Do not delete anything yet.** Deleting the API key, the client or the user removes rows the next
5512
+ step reads. Revoke and suspend, which stop use while keeping the record.
5513
+
5514
+ If you do not yet know which credential leaked, suspend the narrowest thing that certainly covers it
5515
+ and widen only if the assessment says so. An over-broad containment is recoverable in minutes; a
5516
+ missed one runs for as long as you are investigating.
5517
+
5518
+ ## 2 · Assess
5519
+
5520
+ Only now, and only inside the window you wrote down.
5521
+
5522
+ 1. **What did it reach?** [Investigate an audit event](/security-and-audit/investigate-event),
5523
+ filtered to the credential's own identifier rather than to a person — a leaked key acts under its
5524
+ own identity, and filtering by the human who created it will not show you its requests.
5525
+ 2. **Did it change access?** [Review access and privileged changes](/security-and-audit/review-access-changes).
5526
+ This is the question that decides whether containment is finished: a credential that granted a
5527
+ role, added a member or registered a client has left something behind that revoking it does not
5528
+ remove.
5529
+ 3. **Take the evidence out.** [Export a bounded audit window](/security-and-audit/export-audit-records)
5530
+ for the window, before retention or an investigation of your own moves it. Handle the export as
5531
+ the sensitive artefact it is — [Protect and retain audit evidence](/security-and-audit/protect-evidence).
5532
+
5533
+ If step 2 found a change, treat every artefact it created as also compromised and return to
5534
+ **Contain** for each one. That loop is the point of the ordering: a leaked key that minted a second
5535
+ key is only half-contained when the first is revoked.
5536
+
5537
+ ## 3 · Recover
5538
+
5539
+ - Issue the replacement credential and store it where the leaked one was not —
5540
+ [Create and store an API key](/access-and-identity/api-keys-create-and-store) states where a
5541
+ secret may and may not live.
5542
+ - Give the replacement the SMALLEST role that works. An incident is the cheapest moment to correct
5543
+ an over-broad credential, because whatever breaks is being watched.
5544
+ - Lift the containment you widened, narrowest first, confirming after each one.
5545
+ - If the account is a person's, require a second factor before returning it to service —
5546
+ [Multifactor enrollment and recovery](/access-and-identity/mfa-enrollment-and-recovery).
5547
+
5548
+ ## What this application cannot tell you
5549
+
5550
+ The audit trail records what reached THIS application. A credential leaked in one place is usually
5551
+ leaked for others: if the same secret, or a password reused from it, opens anything else you run,
5552
+ this page's window is a lower bound on the incident, not its boundary.
5553
+
5554
+ Nor can the trail prove absence. A window with no suspicious request means nothing suspicious
5555
+ **reached this application** during it — not that the credential was unused, and not that your lower
5556
+ bound was early enough.`,
5414
5557
  },
5415
5558
  {
5416
5559
  managedPath: 'security-and-audit/protect-evidence.md',
@@ -5509,913 +5652,6 @@ change the application's authoritative audit retention.
5509
5652
  - remove temporary local copies and ticket attachments that are no longer
5510
5653
  required;
5511
5654
  - keep credentials and unrelated personal data out of the evidence package.`,
5512
- },
5513
- {
5514
- managedPath: 'billing-and-subscriptions/billing.md',
5515
- unitRef: 'technical-documentation:unit/billing',
5516
- sourceRefs: [
5517
- 'saas-technical-doc:engine-content/billing',
5518
- 'source:consumer-fact:billing-lifecycle',
5519
- ],
5520
- markdown: `# Billing and subscriptions
5521
-
5522
- Use this section when you are responsible for an organization's plan, invoices,
5523
- usage or access after a billing change. You do not need to know which billing
5524
- provider the application uses. You do need to distinguish three records:
5525
-
5526
- - the **product and price** describe what can be bought and on which terms;
5527
- - the **subscription** records the current recurring relationship;
5528
- - the application's **billing-derived access** records which features and limits
5529
- the current subscription actually grants.
5530
-
5531
- | Before you begin | Successful result |
5532
- | --- | --- |
5533
- | Know the organization being billed, who approved the commercial decision, the current product and the application access expected afterwards | The intended billing record reaches a known state, the resulting access is verified in the same organization, and payment evidence remains protected |
5534
-
5535
- {{CONSUMER_FACT:source:consumer-fact:billing-lifecycle#markdown}}
5536
-
5537
- ## Keep the four billing views separate
5538
-
5539
- | View | Question it answers | Do not use it as proof of |
5540
- | --- | --- | --- |
5541
- | Product and price | What is offered, at what amount and interval, with which intended grants? | A purchase or active access |
5542
- | Checkout or billing portal | Where are payment details, tax information and provider documents handled? | The final application subscription state |
5543
- | Subscription and invoice summary | What recurring relationship and payment evidence did the application record? | Every feature currently available to the organization |
5544
- | Resolved application access | Which features and limits can the organization actually use now? | Why that access exists without checking billing and other allowed sources |
5545
-
5546
- For organization billing, the standard management operations accept
5547
- **Organization Owner** and **Organization Admin** authority. A custom role may
5548
- inherit effective authority in an application-specific role graph; review
5549
- [Roles and permissions](/user-administration/roles-and-permissions) and the
5550
- exact operation contract rather than granting a broad role merely to expose the
5551
- Billing area.
5552
-
5553
- ~~~mermaid
5554
- flowchart LR
5555
- accTitle: From a billing decision to usable application access
5556
- accDescr: An authorized administrator selects a product and price, completes hosted checkout, waits for verified billing state, then confirms the subscription and billing-derived access in the application. Invoice and usage records remain separate evidence.
5557
- choice["Choose product, price and billed scope"] --> checkout["Complete hosted checkout"]
5558
- checkout --> verify["Application verifies billing result"]
5559
- verify --> subscription["Subscription state is updated"]
5560
- subscription --> access["Features and limits are recomputed"]
5561
- verify --> invoice["Invoice and payment state is recorded"]
5562
- usage["Metered application usage"] --> invoice
5563
- ~~~
5564
-
5565
- The important boundary is after checkout: **returning to the application is not
5566
- proof that access changed**. Read the current subscription and verify the feature
5567
- or limit you expected before telling people the change is complete.
5568
-
5569
- The diagram has two evidence branches for a reason. Invoice/payment state
5570
- explains the commercial event, while subscription state drives the billing
5571
- access recomputation. A paid invoice and an unavailable feature can therefore
5572
- both be true during a mismatch that still needs reconciliation.
5573
-
5574
- ## Choose the task you need
5575
-
5576
- | Your task | Start here | You are finished when |
5577
- | --- | --- | --- |
5578
- | Decide what to buy | [Understand plans, prices and access](/billing-and-subscriptions/plans-and-access) | The billed scope, price terms and expected access are explicit before approval |
5579
- | Create the recurring relationship | [Start a subscription](/billing-and-subscriptions/start-subscription) | The application records Active or Trialing state and the intended access works |
5580
- | Upgrade, downgrade, add capacity or end access | [Change, resume or end a subscription](/billing-and-subscriptions/change-or-end-subscription) | Effective timing, charge/credit and access consequences match the approved decision |
5581
- | Review a charge, payment state, document or measured quantity | [Billing records and usage](/billing-and-subscriptions/billing-records) | The question is routed to its owning record and matched to the correct scope and period |
5582
- | Resolve a mismatch | [Reconcile billing and application access](/billing-and-subscriptions/reconcile-access) | Provider evidence, application records and the original application action agree |
5583
- | Recover from an unclear result | [Troubleshoot a billing change](/billing-and-subscriptions/troubleshoot) | The failing layer is identified without a duplicate purchase or hidden access grant |
5584
-
5585
- ## Close every billing task with evidence
5586
-
5587
- Retain the billed organization, product/price identity, subscription or invoice
5588
- identifier, observed state, effective period, approval reference and correlation
5589
- information needed for support. Do not retain card details, payment-method data,
5590
- provider secrets, complete invoice documents or capability-style invoice URLs in
5591
- ordinary logs and tickets.`,
5592
- },
5593
- {
5594
- managedPath: 'billing-and-subscriptions/plans-and-access.md',
5595
- unitRef: 'technical-documentation:unit/understand-billing-plans-and-access',
5596
- sourceRefs: [
5597
- 'saas-technical-doc:engine-content/understand-billing-plans-and-access',
5598
- 'source:consumer-fact:billing-lifecycle',
5599
- ],
5600
- markdown: `# Understand plans, prices and access
5601
-
5602
- Before approving a purchase, identify **what is being bought, who will be
5603
- billed, when the charge repeats and which application access should change**.
5604
- The current Billing area is authoritative for the products and prices offered by
5605
- this application. The supported product-kind inventory is not proof that every
5606
- kind is offered here.
5607
-
5608
- | Before you begin | Successful result |
5609
- | --- | --- |
5610
- | Have the intended organization, business owner, expected users or workload, required features/capacity and approved spending boundary | One current product and price satisfy the outcome without unnecessary capacity, and the expected access can be verified after purchase |
5611
-
5612
- ## Start from the work, not the plan name
5613
-
5614
- Write down the outcome before comparing offers—for example, “the Support
5615
- organization needs ten additional automated runs this month.” Then ask:
5616
-
5617
- - Is the requirement a continuing base capability, optional recurring capacity,
5618
- measured use, a one-time item or prepaid credits?
5619
- - Does the purchase belong to this organization, and will everybody who needs
5620
- it operate in that same scope?
5621
- - Which exact feature or limit should change, and what current application
5622
- action will prove it?
5623
- - When should the commercial and access change take effect?
5624
- - Who owns renewal, usage review and cancellation?
5625
-
5626
- {{CONSUMER_FACT:source:consumer-fact:billing-lifecycle#productTypesMarkdown}}
5627
-
5628
- The table lists product kinds the application can support. Only products and
5629
- prices shown in this application's current Billing area are purchasable offers.
5630
- Do not ask support to create a missing kind from this list.
5631
-
5632
- ## Understand how quantity changes the amount
5633
-
5634
- The product kind explains **what you are buying**. The pricing model explains
5635
- **how the selected quantity becomes a charge**. Do not use the words “tiered”
5636
- and “graduated” interchangeably: they produce different totals.
5637
-
5638
- {{CONSUMER_FACT:source:consumer-fact:billing-lifecycle#pricingModelsMarkdown}}
5639
-
5640
- ### Worked example: 240 units
5641
-
5642
- The following numbers are illustrative, not an offer from this application.
5643
- They show why the pricing model must be recorded with the amount:
5644
-
5645
- | Model | Illustrative terms | Result for 240 units |
5646
- | --- | --- | --- |
5647
- | Flat | €100 for the line item | €100 |
5648
- | Per unit | €0.50 per unit | 240 × €0.50 = €120 |
5649
- | Volume tiered | Up to 100 at €0.50; above 100 at €0.40 for all units | 240 × €0.40 = €96 |
5650
- | Graduated | First 100 at €0.50; remaining units at €0.40 | (100 × €0.50) + (140 × €0.40) = €106 |
5651
- | Package | €10 per block of 25, rounded up | 10 packages × €10 = €100 |
5652
-
5653
- For a tiered or package offer, keep the tier boundaries, flat additions and
5654
- package size with the approval. A headline unit price is not enough to
5655
- reconstruct the expected invoice.
5656
-
5657
- ## Read a price as a complete offer
5658
-
5659
- Check the product name and description together with:
5660
-
5661
- - the billed scope—usually an organization, or a person only when the
5662
- application explicitly offers personal billing;
5663
- - currency and amount;
5664
- - monthly or yearly interval for recurring prices;
5665
- - whether tax is included in the displayed amount or added at checkout;
5666
- - trial duration and whether a payment method is required;
5667
- - included features, capacity limits and any metered usage;
5668
- - promotion eligibility and the date on which the offer expires.
5669
-
5670
- For a recurring price, read both the interval and its count. “Month” with an
5671
- interval count of 3 means every three months, not monthly:
5672
-
5673
- {{CONSUMER_FACT:source:consumer-fact:billing-lifecycle#billingIntervalsMarkdown}}
5674
-
5675
- Currency codes should be interpreted using the maintained
5676
- [ISO 4217 currency list](https://www.iso.org/iso-4217-currency-codes.html).
5677
- The displayed currency does not determine whether tax is included:
5678
-
5679
- {{CONSUMER_FACT:source:consumer-fact:billing-lifecycle#taxDisplayModesMarkdown}}
5680
-
5681
- If the hosted billing screen is Stripe, its maintained
5682
- [tax-behaviour guide](https://docs.stripe.com/tax/products-prices-tax-codes-tax-behavior)
5683
- explains the provider-side inclusive/exclusive distinction. The application
5684
- offer and checkout total remain the evidence for this purchase.
5685
-
5686
- An **add-on** changes the same subscription without replacing its primary plan.
5687
- A **credit pack** adds a consumable balance. Neither should be described as a
5688
- plan upgrade unless that is what the product screen actually presents.
5689
-
5690
- ## Trace an offer to application access
5691
-
5692
- ~~~mermaid
5693
- flowchart TD
5694
- accTitle: Evaluate a billing offer from commercial terms to application access
5695
- accDescr: The administrator starts with a required business outcome, chooses an offered product and price for one billed scope, reviews trial, timing and usage terms, identifies the promised feature or limit, then records how that access will be verified after purchase.
5696
- outcome["Name the required business outcome"] --> scope["Confirm billed organization or person"]
5697
- scope --> offer["Choose one currently offered product and price"]
5698
- offer --> terms["Review interval, tax, trial, quantity and promotion"]
5699
- terms --> grants["Identify expected features, limits or credits"]
5700
- grants --> proof["Define one application action that proves access"]
5701
- proof --> approval["Record approval and lifecycle owner"]
5702
- ~~~
5703
-
5704
- The important handoff is from **grants** to **proof**. A product description can
5705
- state what should be included; the original application action verifies what is
5706
- actually usable after the billing state is processed.
5707
-
5708
- ## Understand how access is assembled
5709
-
5710
- One active plan supplies the base features and limits. Active add-ons can add
5711
- features or capacity. The application recomputes that billing-derived access
5712
- from subscriptions in **Active** or **Trialing** state. Other subscription states
5713
- do not contribute billing-derived access.
5714
-
5715
- Manual or broader-scope access can also exist. A feature remaining available
5716
- after a downgrade therefore does not, by itself, prove that billing
5717
- reconciliation failed. Compare the expected product grants with the resolved
5718
- application access for the billed scope.
5719
-
5720
- Base-plan and add-on limits can combine according to the offered product policy:
5721
- an add-on may add capacity or establish a higher limit. “Unlimited” capacity
5722
- remains unlimited when combined. Do not calculate the final limit from marketing
5723
- labels alone; read the resolved limit in the billed scope.
5724
-
5725
- {{CONSUMER_FACT:source:consumer-fact:billing-lifecycle#limitGrantModesMarkdown}}
5726
-
5727
- For example, a plan can establish 50 scheduled runs, while an add-on adds 20.
5728
- The expected result is 70. If instead the add-on establishes a limit of 100,
5729
- the expected result is 100—not 150. Verify the resolved value after purchase,
5730
- because access can also come from a broader scope or an approved manual source.
5731
-
5732
- ## Treat a promotion as conditional until checkout accepts it
5733
-
5734
- {{CONSUMER_FACT:source:consumer-fact:billing-lifecycle#promotionVocabularyMarkdown}}
5735
-
5736
- A promotion shown in Billing can still be refused for the selected purchase.
5737
- Before relying on it, verify its validity dates, remaining redemptions, eligible
5738
- products, discount currency when fixed, and duration. The checkout result is the
5739
- positive proof; visibility in a list is only a reason to evaluate it.
5740
-
5741
- ## Approve with a reviewable record
5742
-
5743
- Record the selected product and price, currency, interval, quantity, tax/trial
5744
- terms, expected effective date, billed scope, expected grants and the person who
5745
- approved them. Keep payment instruments and provider credentials out of that
5746
- record. Continue to [Start a subscription](/billing-and-subscriptions/start-subscription)
5747
- only after the expected application proof is clear.`,
5748
- },
5749
- {
5750
- managedPath: 'billing-and-subscriptions/start-subscription.md',
5751
- unitRef: 'technical-documentation:unit/start-billing-subscription',
5752
- sourceRefs: [
5753
- 'saas-technical-doc:engine-content/start-billing-subscription',
5754
- ],
5755
- markdown: `# Start a subscription
5756
-
5757
- Start a subscription only when you can approve billing for the selected scope.
5758
- For organization billing, organization owners and administrators are the
5759
- standard authorized roles. Confirm your application exposes Billing and the
5760
- intended product before beginning.
5761
-
5762
- | Before you begin | Successful result |
5763
- | --- | --- |
5764
- | Have the approved organization, current product and price, expected access, spending approval, protected payment owner and a way to reconcile an unclear result | One checkout creates the intended subscription, the application records its current state and the expected feature or limit works in the billed scope |
5765
-
5766
- > **One checkout attempt can complete even when the browser never returns.**
5767
- > Keep its identifiers and reconcile the application state before opening a
5768
- > replacement checkout.
5769
-
5770
- ## Before checkout
5771
-
5772
- 1. Select the intended organization before opening Billing. Do not rely on the
5773
- organization that happened to be active in a previous browser session.
5774
- 2. Confirm the product, price, currency, interval, quantity, tax display, trial
5775
- terms and expected access against the approval.
5776
- 3. Check whether the displayed promotion applies to this exact product and
5777
- price. Visibility of a promotion does not guarantee that every item accepts it.
5778
- 4. Record the approver, expected effective date and application action that will
5779
- prove the resulting access.
5780
- 5. Continue once to the hosted checkout presented by the application.
5781
-
5782
- Payment details, billing address and tax identifiers belong on that hosted
5783
- billing surface. Do not send them through application support, an API metadata
5784
- field or a screenshot.
5785
-
5786
- When you enter a promotion code, stop if checkout refuses it. Do not compensate
5787
- by changing quantity, selecting another organization or asking support to copy
5788
- the discount manually. Recheck the product, validity period, redemption limit
5789
- and discount currency against the approved offer.
5790
-
5791
- ~~~mermaid
5792
- sequenceDiagram
5793
- accTitle: Start and verify a subscription
5794
- accDescr: The administrator opens checkout from the application, completes provider-hosted payment, returns to the application, then verifies the application subscription and resulting access instead of trusting the redirect alone.
5795
- participant A as Administrator
5796
- participant App as Application
5797
- participant B as Hosted billing
5798
- A->>App: Select product and price for the intended scope
5799
- App-->>A: Open authorized checkout
5800
- A->>B: Confirm payment and billing details
5801
- B-->>A: Return to application
5802
- App->>App: Verify billing result and update subscription
5803
- A->>App: Read subscription state and expected access
5804
- ~~~
5805
-
5806
- The browser return is only navigation. The application updates its billing
5807
- records from the verified provider result, then recomputes access. Closing the
5808
- browser, losing the redirect or receiving a timeout does not establish whether
5809
- the provider completed the checkout.
5810
-
5811
- If the hosted screen identifies itself as Stripe, see Stripe's maintained
5812
- [subscription Checkout journey](https://docs.stripe.com/billing/subscriptions/build-subscriptions)
5813
- for the provider-side steps. That reference explains the hosted screen; the
5814
- application subscription and resulting access remain the completion evidence.
5815
-
5816
- ## Confirm success
5817
-
5818
- Do not use the success URL as the success criterion. In the application, verify:
5819
-
5820
- - a subscription exists for the intended billing account;
5821
- - its product, price and period are correct;
5822
- - its state is **Active** or **Trialing**;
5823
- - the expected feature or limit is available in the intended organization;
5824
- - any first invoice has the expected total and state.
5825
-
5826
- Use the maintained subscription meanings when reading the result:
5827
-
5828
- The subscription states and what each one means for access are listed under
5829
- [Reconcile access after a billing change](/billing-and-subscriptions/reconcile-access).
5830
-
5831
- If the state remains incomplete, past due, unpaid or absent, do not create a
5832
- second checkout immediately. Use the troubleshooting and reconciliation pages
5833
- to determine whether the first attempt is still being processed.
5834
-
5835
- ### Example: the browser closes after payment
5836
-
5837
- Suppose an administrator approves a paid plan, completes the hosted
5838
- payment, and the browser closes before returning. Reopen Billing in the same
5839
- organization and read the current subscription. If the approved plan is Active
5840
- and the expected limit works, record that result and close the task. If the
5841
- subscription is absent or Incomplete, preserve the first checkout identifier and
5842
- reconcile it; **do not start another purchase merely to obtain a success page**.
5843
-
5844
- ## Verify access, not only billing
5845
-
5846
- Repeat the application action identified before checkout. Confirm it in the
5847
- same organization and with an ordinary intended user—not only with the billing
5848
- administrator. Also verify one limit or unavailable action that should remain
5849
- unchanged, so the proof does not hide an unexpectedly broad grant.
5850
-
5851
- ## Retain safe completion evidence
5852
-
5853
- Keep the organization, product/price identity, checkout or subscription
5854
- identifier, visible status, period dates, first-invoice summary, approver,
5855
- correlation data and access-verification result. Do not retain card details,
5856
- payment-method data, complete invoice documents, provider secrets or the full
5857
- checkout URL.`,
5858
- },
5859
- {
5860
- managedPath: 'billing-and-subscriptions/change-or-end-subscription.md',
5861
- unitRef: 'technical-documentation:unit/change-or-end-billing-subscription',
5862
- sourceRefs: [
5863
- 'saas-technical-doc:engine-content/change-or-end-billing-subscription',
5864
- 'source:consumer-fact:billing-lifecycle',
5865
- ],
5866
- markdown: `# Change, resume or end a subscription
5867
-
5868
- A plan change is both a commercial decision and an access decision. Before
5869
- confirming it, review the new price, effective date, prorated charge or credit,
5870
- and the features or limits that will be added or removed.
5871
-
5872
- | Before you begin | Successful result |
5873
- | --- | --- |
5874
- | Have the current subscription, approved target product/add-on, desired effective timing, expected charge or credit, and named access consequences | The application subscription reflects the approved change, access changes at the intended time, and no scheduled cancellation or stale item remains unexplained |
5875
-
5876
- {{CONSUMER_FACT:source:consumer-fact:billing-lifecycle#changeTimingMarkdown}}
5877
-
5878
- > **A requested policy is not proof of the applied charge or date.** Some billing
5879
- > providers cannot schedule every change. Review any preview the application
5880
- > presents, then verify the returned subscription, invoice or credit and the
5881
- > resulting access. If those disagree with the approval, stop and reconcile the
5882
- > change instead of applying another one.
5883
-
5884
- ## Choose the lifecycle action
5885
-
5886
- ~~~mermaid
5887
- flowchart TD
5888
- accTitle: Choose how a subscription should change
5889
- accDescr: An administrator decides whether the organization needs a different base plan, an add-on change, end-of-period cancellation, immediate cancellation or reversal of a still-pending cancellation, then verifies the returned subscription and access consequence.
5890
- need{"What business decision was approved?"}
5891
- need -->|Replace base offer| plan["Change plan with product policy timing"]
5892
- need -->|Add or remove capacity| addon["Change subscription add-on"]
5893
- need -->|Stop at renewal| period["Schedule cancellation at period end"]
5894
- need -->|Stop now| immediate["Cancel immediately if policy permits"]
5895
- need -->|Undo pending cancellation| resume["Resume before the subscription ends"]
5896
- plan --> verify["Re-read subscription, charge evidence and access"]
5897
- addon --> verify
5898
- period --> verify
5899
- immediate --> verify
5900
- resume --> verify
5901
- ~~~
5902
-
5903
- Do not choose from the wording “upgrade” or “downgrade” alone. Determine which
5904
- base product and add-ons will remain, when the provider applies the commercial
5905
- change, and when users should gain or lose the corresponding application access.
5906
-
5907
- ## Change the plan or its add-ons
5908
-
5909
- 1. Read the current subscription, including its items, state and period end.
5910
- 2. Choose the new plan or add-on from the current application catalogue.
5911
- 3. Confirm that the selected price belongs to that product and applies to the
5912
- billed scope.
5913
- 4. Review the presented timing and proration before approving the change.
5914
- 5. After confirmation, re-read the subscription and verify the expected access.
5915
-
5916
- For an add-on change, verify the base plan remains present and the intended
5917
- add-on appears or disappears exactly once. For a plan replacement, verify that
5918
- the returned base item is the approved product and price. Do not infer the
5919
- result from a checkout or portal confirmation message.
5920
-
5921
- Do not assume every billing connector can defer a downgrade. The **returned
5922
- application subscription** is the source of truth for what was applied.
5923
-
5924
- If the hosted billing provider is Stripe, use its maintained
5925
- [proration explanation](https://docs.stripe.com/billing/subscriptions/prorations)
5926
- to interpret provider invoice lines. In particular, a credit line is not by
5927
- itself proof that money was refunded, and a positive proration is not by itself
5928
- proof that it was collected immediately. Match the application change, invoice
5929
- state and payment evidence.
5930
-
5931
- ### Worked example: increase capacity mid-period
5932
-
5933
- The figures below are illustrative; your own limits are shown in Billing.
5934
- Suppose an organization's plan allows 50 automated runs and it needs 20 more
5935
- immediately. Before confirming an add-on, record:
5936
-
5937
- - the current 50-run limit and current billing-period end;
5938
- - the add-on price and whether the presented adjustment is immediate;
5939
- - the expected resolved limit of 70;
5940
- - the application operation that will prove the extra capacity.
5941
-
5942
- After confirmation, verify that the base plan is still present, the add-on
5943
- appears once, any provider adjustment matches the presented currency and period,
5944
- and the resolved limit is 70. If the request times out, re-read those records
5945
- before trying to add the same item again.
5946
-
5947
- ## End at period end or cancel immediately
5948
-
5949
- - **End at period end** keeps the subscription active through its current
5950
- period and marks it for cancellation. Access normally continues while the
5951
- subscription remains Active or Trialing.
5952
- - **Cancel immediately** marks the subscription Cancelled now and removes its
5953
- contribution to billing-derived access when access is recomputed.
5954
-
5955
- Immediate cancellation is not always allowed by the product policy. Use it only
5956
- when the business decision includes the immediate access consequence.
5957
-
5958
- Before immediate cancellation, identify workflows, exports or administrative
5959
- actions that depend on billing-derived access. Do not use a temporary manual
5960
- role or feature override to disguise the resulting loss; if continuity is
5961
- required, approve the alternative access source explicitly.
5962
-
5963
- ## Resume a scheduled cancellation
5964
-
5965
- A subscription can be resumed only while it is pending end-of-period
5966
- cancellation. Resume clears that pending cancellation and returns the local
5967
- subscription to Active. Verify both the next period date and the resulting
5968
- access; a subscription that already ended needs a new approved purchase rather
5969
- than resume.
5970
-
5971
- ## Verify by action and by time
5972
-
5973
- 1. Confirm the returned subscription items, state, period end and cancellation
5974
- flag in the billed scope.
5975
- 2. Match any immediate invoice or credit to the selected currency, quantity,
5976
- proration and period.
5977
- 3. Repeat the application action affected by the change.
5978
- 4. For a deferred change, record what stays active now and schedule a check at
5979
- the effective boundary.
5980
- 5. Verify an expected unaffected capability so the change did not alter a
5981
- broader scope.
5982
-
5983
- Retain the approval, old and new product/price identities, selected timing,
5984
- visible proration evidence, subscription state and access proof. If the request
5985
- times out, read the subscription before repeating it; an absent response is not
5986
- evidence that the change failed.`,
5987
- },
5988
- {
5989
- managedPath: 'billing-and-subscriptions/billing-records.md',
5990
- unitRef: 'technical-documentation:unit/billing-records-and-usage',
5991
- sourceRefs: ['saas-technical-doc:engine-content/billing-records-and-usage'],
5992
- markdown: `# Billing records and usage
5993
-
5994
- Use this journey when you need to explain **what was bought, what was charged,
5995
- what was measured, or why application access differs from the commercial
5996
- record**. Those questions use related records, but they do not have the same
5997
- authority.
5998
-
5999
- | Before you begin | Successful result |
6000
- | --- | --- |
6001
- | Know the environment, organization, product, billing period and the exact question being investigated | The question is answered from the record that owns it, then checked against the adjacent records without exposing payment data or duplicating a charge |
6002
-
6003
- ## Choose the record that owns the answer
6004
-
6005
- | Question | Start with | Then compare |
6006
- | --- | --- | --- |
6007
- | Which recurring product is current? | Subscription items, status and period | Product/price offer and resolved access |
6008
- | Was a charge created or paid? | Application invoice summary | Complete document in the authenticated provider portal |
6009
- | Why is the invoice quantity different? | Local usage rows for the same period | Reported state and provider meter result |
6010
- | Why is a feature unavailable after payment? | Current subscription and resolved access | Invoice/payment evidence only if the subscription state requires it |
6011
-
6012
- ~~~mermaid
6013
- flowchart LR
6014
- accTitle: Use each billing record for the question it owns
6015
- accDescr: The product and price describe the offer. The subscription records the recurring relationship and drives billing-derived access. Metered activity becomes local usage records and is reported to the provider. The provider creates the invoice; the application stores a safe summary while the complete document and payment methods remain in the authenticated provider portal.
6016
- offer["Product and price"] --> subscription["Subscription"]
6017
- subscription --> access["Billing-derived access"]
6018
- activity["Metered activity"] --> usage["Local usage records"]
6019
- usage --> provider["Provider meter"]
6020
- subscription --> invoice["Provider invoice"]
6021
- provider --> invoice
6022
- invoice --> summary["Application invoice summary"]
6023
- invoice --> portal["Authenticated provider portal"]
6024
- ~~~
6025
-
6026
- The useful boundary is between **operational summary** and **protected source
6027
- document**. The application exposes enough invoice state and total information
6028
- for reconciliation, but complete tax documents and payment methods stay behind
6029
- the provider's authenticated portal. Usage remains separately traceable so a
6030
- quantity can be explained before it becomes an invoice line.
6031
-
6032
- ## Choose your task
6033
-
6034
- - [Manage invoices and payment details](/billing-and-subscriptions/invoices-and-payments)
6035
- when the question concerns payment state, currency, tax or the complete invoice.
6036
- - [Understand metered usage](/billing-and-subscriptions/metered-usage) when the
6037
- question concerns measured quantity, reporting delay or a provider meter.
6038
- - [Reconcile billing and application access](/billing-and-subscriptions/reconcile-access)
6039
- when the commercial record is correct but the application outcome is not.
6040
- - [Troubleshoot a billing change](/billing-and-subscriptions/troubleshoot) when
6041
- the first durable record or failing boundary is still unclear.
6042
-
6043
- Retain identifiers, totals, states, periods and correlation evidence. Do not
6044
- copy card data, payment-method details, complete invoice documents, temporary
6045
- portal URLs or personal data from usage metadata into ordinary tickets.`,
6046
- },
6047
- {
6048
- managedPath: 'billing-and-subscriptions/invoices-and-payments.md',
6049
- unitRef: 'technical-documentation:unit/manage-invoices-and-payments',
6050
- sourceRefs: [
6051
- 'saas-technical-doc:engine-content/manage-invoices-and-payments',
6052
- 'source:consumer-fact:billing-lifecycle',
6053
- ],
6054
- markdown: `# Manage invoices and payment details
6055
-
6056
- An invoice is evidence of a charge, not the subscription itself. The application
6057
- stores a small invoice summary—state, total and timestamps—while the billing
6058
- provider keeps the complete tax document and payment methods behind its
6059
- authenticated portal.
6060
-
6061
- | Before you begin | Successful result |
6062
- | --- | --- |
6063
- | Know the billed organization, product, billing period and question being investigated; use an authorized billing administrator for provider documents | The application summary and provider document refer to the same charge, payment state and period without exposing payment data |
6064
-
6065
- ## Know which record answers which question
6066
-
6067
- ~~~mermaid
6068
- flowchart LR
6069
- accTitle: Separate the application invoice summary from the protected provider document
6070
- accDescr: A subscription defines the recurring product and billing period. The provider creates an invoice and owns payment methods and the complete tax document. The application retains a safe status and total summary for operational review, while an authorized administrator opens the authenticated portal for the full document or payment change.
6071
- subscription["Subscription and billing period"] --> invoice["Provider invoice"]
6072
- invoice --> summary["Application invoice summary"]
6073
- invoice --> portal["Authenticated billing portal"]
6074
- portal --> document["Complete invoice or receipt"]
6075
- portal --> payment["Payment methods and billing details"]
6076
- ~~~
6077
-
6078
- The application summary is designed for status checks and reconciliation. It is
6079
- not a replacement for the provider's full tax document.
6080
-
6081
- {{CONSUMER_FACT:source:consumer-fact:billing-lifecycle#invoiceStatusesMarkdown}}
6082
-
6083
- Open complete invoice documents through the authenticated billing portal. Direct
6084
- provider document URLs are deliberately not exposed in the application API:
6085
- they can act like bearer links to documents containing names and billing
6086
- addresses.
6087
-
6088
- Use the provider portal only from the application's Billing area and return to
6089
- the intended environment afterwards. Do not copy a complete invoice into an
6090
- ordinary ticket when its identifier, total, currency, period and state are
6091
- sufficient to investigate.
6092
-
6093
- If the portal identifies itself as Stripe, use Stripe's maintained
6094
- [customer-portal guide](https://docs.stripe.com/customer-management/integrate-customer-portal)
6095
- to understand the provider handoff and its
6096
- [Hosted Invoice Page guide](https://docs.stripe.com/invoicing/hosted-invoice-page)
6097
- to understand the complete document surface. Always open a fresh portal session
6098
- from the application; do not preserve or redistribute its temporary URL.
6099
-
6100
- ## Read payment and subscription state together
6101
-
6102
- - An **Open** or **Uncollectible** invoice explains a payment problem, but the
6103
- current subscription state determines whether billing-derived access remains.
6104
- - A **Paid** invoice proves settlement of that invoice; still verify that the
6105
- corresponding subscription and access update reached the intended scope.
6106
- - A **Void** invoice should not be treated as a successful payment or as a new
6107
- entitlement.
6108
-
6109
- An invoice can change after it is first created—for example from Draft to Open
6110
- or Paid. Record the state and observation time when using it as evidence. The
6111
- latest application summary is appropriate for operational review; the provider
6112
- portal owns the complete document.
6113
-
6114
- ## Interpret currency, tax and payment state separately
6115
-
6116
- {{CONSUMER_FACT:source:consumer-fact:billing-lifecycle#taxDisplayModesMarkdown}}
6117
-
6118
- Inclusive or exclusive describes the **displayed price**. It does not prove the
6119
- tax rate, jurisdiction, payment success or final amount. Compare the invoice
6120
- currency, subtotal, tax, total and period with the approved offer and the
6121
- provider document. For an unfamiliar currency code, use the
6122
- [ISO 4217 currency list](https://www.iso.org/iso-4217-currency-codes.html).
6123
-
6124
- When the invoice is Open or Uncollectible, an authorized administrator should
6125
- open Billing, enter the authenticated provider portal and review the available
6126
- payment action. Do not ask the person to send card numbers, bank details or a
6127
- screenshot of the payment instrument to application support.
6128
-
6129
- ### Example: a paid invoice but unchanged access
6130
-
6131
- A Paid invoice proves that **that invoice** was settled. It does not prove that
6132
- the application processed the corresponding subscription update or recomputed
6133
- access. Confirm the subscription is Active or Trialing, then repeat the
6134
- application action that should now be available. If that action still fails,
6135
- continue with [Reconcile billing and application access](/billing-and-subscriptions/reconcile-access).
6136
-
6137
- ## Protect financial evidence
6138
-
6139
- Invoice summaries remain financial history even when the billed scope is later
6140
- retired. Limit access to administrators who need it, keep exports in protected
6141
- storage, and apply the organization's retention and legal-hold rules. Retain
6142
- the invoice identifier, currency, total, state, period and observation time in
6143
- ordinary support evidence—not the complete document or payment details.`,
6144
- },
6145
- {
6146
- managedPath: 'billing-and-subscriptions/metered-usage.md',
6147
- unitRef: 'technical-documentation:unit/understand-metered-usage',
6148
- sourceRefs: [
6149
- 'saas-technical-doc:engine-content/understand-metered-usage',
6150
- 'source:consumer-fact:billing-lifecycle',
6151
- ],
6152
- markdown: `# Understand metered usage
6153
-
6154
- This page applies only if a plan or add-on you hold charges for a measured
6155
- quantity. If everything you subscribe to is a flat recurring price, no usage is
6156
- recorded and no usage line appears on an invoice — check
6157
- [Understand plans, prices and access](/billing-and-subscriptions/plans-and-access)
6158
- to see which of the two you have.
6159
-
6160
- A metered product charges for a measured quantity, such as processed documents,
6161
- automated runs or storage consumed. The application records the activity first;
6162
- the billing provider receives grouped usage later and uses its configured meter
6163
- when preparing the invoice.
6164
-
6165
- | Before you begin | Successful result |
6166
- | --- | --- |
6167
- | Know the organization, metered product, billing period, unit being counted and application action that produces it | Local records, reported state, provider quantity and invoice use the same product, scope, period and unit without duplicating usage |
6168
-
6169
- ## Follow one quantity through the system
6170
-
6171
- ~~~mermaid
6172
- sequenceDiagram
6173
- accTitle: Follow metered usage from application activity to an invoice
6174
- accDescr: A successful application action creates a local usage row. The Billing area can show the local total while the row is pending. A scheduled flush groups pending rows by billing account and product, reports the quantity to the provider, then marks the local rows as reported. Provider processing is asynchronous, so the invoice can lag behind the newest local activity.
6175
- participant U as User or workload
6176
- participant App as Application
6177
- participant Store as Local usage records
6178
- participant Job as Billing reporter
6179
- participant P as Billing provider
6180
- U->>App: Complete a metered action
6181
- App->>Store: Record product, quantity and occurrence time
6182
- Note over Store: reportedToProvider = false
6183
- Job->>Store: Read pending rows by account + product
6184
- Job->>P: Report grouped quantity
6185
- P-->>Job: Accept report
6186
- Job->>Store: Mark included rows as reported
6187
- P->>P: Process meter and prepare invoice asynchronously
6188
- ~~~
6189
-
6190
- The two delays in the diagram are different:
6191
-
6192
- - **Pending locally** means the application has recorded the activity but has
6193
- not yet marked it as reported to the provider.
6194
- - **Accepted by the provider** still does not mean an invoice or provider usage
6195
- summary has updated immediately. Provider meter processing is asynchronous.
6196
-
6197
- The application does not promise a universal flush interval. Record the last
6198
- local occurrence time and the reported state instead of saying “billing updates
6199
- every hour”.
6200
-
6201
- ## Understand what created the record
6202
-
6203
- {{CONSUMER_FACT:source:consumer-fact:billing-lifecycle#usageSourceTypesMarkdown}}
6204
-
6205
- The source helps an administrator locate the business action that produced the
6206
- quantity. It is not a reason to store a person's name, email or free-text notes
6207
- in usage metadata. These records are retained as financial history.
6208
-
6209
- ## Worked example: local usage is temporarily ahead
6210
-
6211
- Three application actions create quantities of 40, 25 and 10 for the same
6212
- product and billing period. The local total is **75**. The first two rows have
6213
- already been reported, while the last row remains pending, so the provider can
6214
- temporarily show **65**.
6215
-
6216
- Do not manually send the missing 10 or recreate the application action. First
6217
- wait for the normal reporting boundary and verify that the original row becomes
6218
- reported. Re-sending a quantity that the normal flush later sends can create a
6219
- duplicate charge.
6220
-
6221
- ## Reconcile a usage difference
6222
-
6223
- | Check | What to compare | What it rules out |
6224
- | --- | --- | --- |
6225
- | Scope | Environment, organization and billing account | Usage from another tenant or test environment |
6226
- | Product | Product key and the unit described by the offer | Comparing requests with storage, seats or another meter |
6227
- | Period | Local occurrence timestamps and provider invoice period | Correct usage assigned to a different billing cycle |
6228
- | Local total | Every row in the period, including pending rows | A dashboard total that omitted recent activity |
6229
- | Reporting state | **Reported to provider** and **reported at** values | Treating pending activity as already invoiced |
6230
- | Provider result | Meter quantity and invoice state after processing | A provider-side delay or rejected meter event |
6231
-
6232
- Close the investigation only when the same records explain both totals, or when
6233
- a named correction owner has accepted the difference. Preserve the product,
6234
- period, local total, reported total, pending row identifiers and correlation
6235
- evidence. Do not retain provider credentials or personal data.
6236
-
6237
- If the hosted provider is Stripe, its maintained
6238
- [usage-based billing overview](https://docs.stripe.com/billing/subscriptions/usage-based/how-it-works),
6239
- [meter-event recording guide](https://docs.stripe.com/billing/subscriptions/usage-based/recording-usage-api)
6240
- and [meter configuration guide](https://docs.stripe.com/billing/subscriptions/usage-based/meters/configure)
6241
- explain the provider side. Use those references to interpret provider processing;
6242
- use the application's local records to identify what was actually measured.`,
6243
- },
6244
- {
6245
- managedPath: 'billing-and-subscriptions/reconcile-access.md',
6246
- unitRef: 'technical-documentation:unit/reconcile-billing-and-access',
6247
- sourceRefs: [
6248
- 'saas-technical-doc:engine-content/reconcile-billing-and-access',
6249
- 'source:consumer-fact:billing-lifecycle',
6250
- ],
6251
- markdown: `# Reconcile billing and application access
6252
-
6253
- Use reconciliation when the provider, the application subscription and the
6254
- person's visible access do not tell the same story. Keep those layers separate;
6255
- changing a role to conceal a billing problem creates a second access problem.
6256
-
6257
- | Before you begin | Successful result |
6258
- | --- | --- |
6259
- | Have the environment, billed organization, subscription and invoice identities, expected product grants, original application action and approximate change time | The first inconsistent layer is identified, repaired through its normal workflow and verified against current application state without a duplicate charge or unrelated access grant |
6260
-
6261
- {{CONSUMER_FACT:source:consumer-fact:billing-lifecycle#subscriptionStatusesMarkdown}}
6262
-
6263
- ## Name the layer that disagrees
6264
-
6265
- | Layer | Evidence to read | Typical question |
6266
- | --- | --- | --- |
6267
- | Commercial offer | Current product, price, quantity and behavior policy shown by the application | Was the approved item actually offered for this scope? |
6268
- | Provider transaction | Authenticated checkout/portal and invoice evidence | Did the provider complete, refuse or leave payment incomplete? |
6269
- | Application billing state | Subscription items, status, period dates, invoice summary and usage reporting state | Did the verified result reach the intended billing account? |
6270
- | Billing-derived access | Product grants and resolved feature/limit in the billed scope | Did the application recompute the access that this state should contribute? |
6271
- | Original user action | The operation the person or workload tried to perform | Is the intended outcome now genuinely usable? |
6272
-
6273
- Move down the table in order. A role change at the final layer cannot repair an
6274
- incomplete provider transaction, and a paid invoice does not by itself prove
6275
- that the application's subscription or feature state was updated.
6276
-
6277
- ~~~mermaid
6278
- flowchart TD
6279
- accTitle: Reconcile a billing change from scope to entitlement
6280
- accDescr: The reviewer confirms the billed scope, reads the application subscription and invoice, checks whether the subscription state contributes billing access, compares product grants with resolved access, and then repairs the failing layer.
6281
- symptom["Expected access differs from visible access"] --> scope["Confirm billed organization or person"]
6282
- scope --> subscription["Read current application subscription"]
6283
- subscription --> state{"Active or Trialing?"}
6284
- state -->|No| payment["Inspect invoice and payment state"]
6285
- state -->|Yes| grants["Compare plan and add-on grants"]
6286
- grants --> resolved["Check resolved feature and limit"]
6287
- payment --> repair["Repair billing or wait for verified update"]
6288
- resolved --> repair
6289
- repair --> verify["Repeat the original application action"]
6290
- ~~~
6291
-
6292
- Notice that the flow checks **Active or Trialing** before comparing grants.
6293
- Those are the only maintained subscription states that contribute billing-
6294
- derived access. Payment repair belongs before feature repair when the
6295
- subscription is in another state.
6296
-
6297
- ## Reconciliation checklist
6298
-
6299
- 1. Confirm the environment and billed scope.
6300
- 2. Read the current application subscription; do not rely on a provider email
6301
- or redirect.
6302
- 3. Verify its product items, status, period dates and cancellation flag.
6303
- 4. If payment is involved, match the invoice total, currency and state.
6304
- 5. Compare the plan and add-on grants with the resolved feature or limit.
6305
- 6. Repeat the original application operation to prove access, not merely the
6306
- Billing screen.
6307
- 7. Record the final subscription state and the evidence used to close the case.
6308
-
6309
- Where a change may still be processing, preserve the first attempt and allow a
6310
- bounded observation window instead of opening a replacement checkout. Where a
6311
- write returned no response, re-read current subscription state before deciding
6312
- whether a retry is safe.
6313
-
6314
- Only Active and Trialing subscriptions contribute billing-derived access. A
6315
- feature can still come from another allowed source, and a finite application
6316
- limit can combine with plan and add-on limits. Explain the actual resolved
6317
- result instead of assuming one plan label owns all access.
6318
-
6319
- ## Choose the repair by the failing layer
6320
-
6321
- - **Wrong scope or offer:** return to the intended organization and select a
6322
- current product/price through the normal Billing journey.
6323
- - **Incomplete or failed payment:** use the authenticated billing portal; do not
6324
- send payment details to application support.
6325
- - **Stale application subscription:** preserve transaction and correlation
6326
- evidence for support rather than patching the subscription record.
6327
- - **Correct subscription but wrong grants:** compare the product and add-on
6328
- definitions with the resolved feature/limit; do not add a broad role as a
6329
- substitute.
6330
- - **Correct resolved access but failed action:** troubleshoot the operation's
6331
- organization, role, resource visibility and request separately from billing.
6332
-
6333
- Close with the organization, original symptom, responsible layer, correction,
6334
- final subscription/invoice state and the repeated application action. Exclude
6335
- card details, provider secrets and complete invoice documents.`,
6336
- },
6337
- {
6338
- managedPath: 'billing-and-subscriptions/troubleshoot.md',
6339
- unitRef: 'technical-documentation:unit/troubleshoot-billing-change',
6340
- sourceRefs: [
6341
- 'saas-technical-doc:engine-content/troubleshoot-billing-change',
6342
- ],
6343
- markdown: `# Troubleshoot a billing change
6344
-
6345
- Begin with what the administrator or user can observe. Repeating checkout,
6346
- granting a broader role or manually changing access before identifying the
6347
- failed layer can create duplicate charges or hide the original problem.
6348
-
6349
- | Before you begin | Successful result |
6350
- | --- | --- |
6351
- | Preserve the environment, organization, first attempt, product/price, subscription or invoice identifier, approximate time, visible status and original application symptom | One failing boundary is identified and repaired without duplicating a purchase, exposing payment data or leaving unrelated access in place |
6352
-
6353
- ## Diagnose from the first durable record
6354
-
6355
- ~~~mermaid
6356
- flowchart TD
6357
- accTitle: Troubleshoot a billing change without repeating it blindly
6358
- accDescr: The administrator starts from the first checkout or subscription evidence, confirms the billed scope, reads current subscription and invoice state, compares product grants with resolved access, then repeats the original application action after repairing only the failing layer.
6359
- symptom["Billing or access result is unexpected"] --> scope["Confirm environment and billed scope"]
6360
- scope --> attempt["Preserve first checkout or change evidence"]
6361
- attempt --> subscription{"Application subscription present?"}
6362
- subscription -->|No or incomplete| payment["Check invoice/provider evidence and processing state"]
6363
- subscription -->|Yes| status{"State contributes billing access?"}
6364
- status -->|No| payment
6365
- status -->|Yes| grants["Compare product/add-on grants with resolved access"]
6366
- grants --> action["Repeat original application action"]
6367
- payment --> repair["Repair payment or reconcile verified provider result"]
6368
- repair --> subscription
6369
- ~~~
6370
-
6371
- Do not begin from a success redirect, provider email or plan label. Begin from
6372
- the application billing account and current subscription for the intended
6373
- scope, then correlate provider evidence only where the state requires it.
6374
-
6375
- Use these maintained state meanings while diagnosing:
6376
-
6377
- The full list of subscription states, and what each one means for access, is under
6378
- [Reconcile access after a billing change](/billing-and-subscriptions/reconcile-access).
6379
-
6380
- ## Start from the symptom
6381
-
6382
- | Symptom | First checks | Safe next step |
6383
- | --- | --- | --- |
6384
- | Returned from checkout but no subscription appears | Intended scope, existing incomplete subscription, processing delay and the first attempt's billing evidence | Reconcile the first attempt before opening checkout again |
6385
- | Subscription is Active but feature is unavailable | Product and price, expected grants, current organization, resolved feature/limit and the original operation | Repair grant/access reconciliation; do not broaden the person's role |
6386
- | Subscription is Past due, Unpaid or Paused | Current invoice state and the authenticated billing portal; these states do not contribute billing-derived access | Resolve payment in the portal, then wait for verified application state |
6387
- | Downgrade or cancellation appears immediate | Returned subscription items, status, period end and cancellation flag; do not rely only on the requested timing | Compare the applied product policy and access consequence with the approval |
6388
- | Cancellation was requested but access remains | End-of-period cancellation may intentionally keep an Active subscription until period end | Record the effective boundary and verify again when the period ends |
6389
- | Invoice total differs from expectation | Currency, tax display, quantity, proration, promotion and billing period | Compare the selected offer and applied adjustment before disputing the charge |
6390
- | Metered usage differs from provider | Local period total, last recorded time, reported state and aggregation delay | Wait for the bounded reporting window, then compare the same product and period |
6391
- | Resume is refused | The subscription must still be pending end-of-period cancellation | If it already ended, use a newly approved purchase instead of resume |
6392
- | Billing screen is correct but the application action fails | Resolved feature/limit, organization, role and exact operation | Troubleshoot authorization or resource scope separately from billing |
6393
-
6394
- ## Recover without making the record harder to understand
6395
-
6396
- - Keep the first checkout or change identifiers and do not create a replacement
6397
- until its state is known.
6398
- - Use the authenticated billing portal for payment methods and invoice documents.
6399
- - Correct the product, price or scope through the normal billing operation; do
6400
- not patch subscription status directly.
6401
- - After recovery, verify both the billing record and the application action that
6402
- depends on it.
6403
- - Share invoice identifiers, status, timestamps and correlation evidence with
6404
- support—not card details, full invoice documents or provider secrets.
6405
-
6406
- If the application record and provider evidence still disagree, preserve both
6407
- views and escalate the reconciliation. The application retains subscriptions,
6408
- invoice references and usage records as financial history rather than deleting
6409
- them when a scope is retired.
6410
-
6411
- ## Escalate a reproducible case
6412
-
6413
- Provide the environment, billed organization, product/price identity, first
6414
- attempt or subscription identifier, invoice summary, timestamps, current state,
6415
- expected access, observed application action and correlation identifier. State
6416
- whether payment, subscription state or access changed between observations.
6417
- Never attach card data, payment-method details, complete invoice documents,
6418
- hosted invoice URLs, provider secrets or unrestricted personal data.`,
6419
5655
  },
6420
5656
  {
6421
5657
  managedPath: 'integrations.md',
@@ -6564,6 +5800,7 @@ business effect occurred without blindly repeating it.`,
6564
5800
  unitRef: 'technical-documentation:unit/connect-n8n',
6565
5801
  sourceRefs: [
6566
5802
  'saas-technical-doc:engine-content/connect-n8n',
5803
+ 'source:companion-projection:application-connection',
6567
5804
  'source:consumer-fact:access-api-keys',
6568
5805
  ],
6569
5806
  markdown: `# Connect n8n
@@ -6613,7 +5850,7 @@ the same API-reference operation:
6613
5850
  | n8n field | Value to use | How to verify it |
6614
5851
  | --- | --- | --- |
6615
5852
  | **Method** | The operation's documented HTTP method, initially **GET** | It matches the operation heading in the API reference |
6616
- | **URL** | Server origin followed by the complete documented operation path | The origin appears once and the API path appears once |
5853
+ | **URL** | \`{{APPLICATION_CONNECTION_VALUE:baseUrl}}\` followed by the operation's documented path | The origin appears once and the API path appears once |
6617
5854
  | **Authentication** | **Generic Credential Type**, then **Header Auth** | The key is stored as an n8n credential, not in the URL or workflow data |
6618
5855
  | **Send Headers** | Add **Accept** with value **application/json** | The request asks for the documented JSON response |
6619
5856
  | Query/path values | Only values required by the selected operation | Organization and resource identifiers are in the locations defined by the reference |
@@ -6749,6 +5986,7 @@ HTTP response needs deeper diagnosis.
6749
5986
  unitRef: 'technical-documentation:unit/connect-zapier',
6750
5987
  sourceRefs: [
6751
5988
  'saas-technical-doc:engine-content/connect-zapier',
5989
+ 'source:companion-projection:application-connection',
6752
5990
  'source:consumer-fact:access-api-keys',
6753
5991
  ],
6754
5992
  markdown: `# Connect Zapier
@@ -6809,7 +6047,7 @@ Complete the API Request action from one operation in the current reference:
6809
6047
  | Zapier field | Value to use | Verification |
6810
6048
  | --- | --- | --- |
6811
6049
  | Method | The documented method, initially **GET** | It matches the operation heading |
6812
- | URL | Server origin plus the complete operation path | Origin and API prefix each appear once |
6050
+ | URL | \`{{APPLICATION_CONNECTION_VALUE:baseUrl}}\` plus the operation's documented path | Origin and API prefix each appear once |
6813
6051
  | Headers | **Accept: application/json** plus connection-managed authentication | No API key is visible in the Zap step |
6814
6052
  | Parameters | Only required query/path values | Organization and record values are in the documented locations |
6815
6053
  | Body | Empty for the selected read unless the operation explicitly documents one | No response field was copied back as an invented request field |
@@ -6917,6 +6155,7 @@ flowchart TD
6917
6155
  unitRef: 'technical-documentation:unit/connect-make',
6918
6156
  sourceRefs: [
6919
6157
  'saas-technical-doc:engine-content/connect-make',
6158
+ 'source:companion-projection:application-connection',
6920
6159
  'source:consumer-fact:access-api-keys',
6921
6160
  ],
6922
6161
  markdown: `# Connect Make
@@ -6968,7 +6207,7 @@ Complete the remaining module fields from the same API-reference operation:
6968
6207
 
6969
6208
  | Make field | Value to use | Verification |
6970
6209
  | --- | --- | --- |
6971
- | URL | Server origin plus the complete operation path | HTTPS, origin and API prefix each appear once |
6210
+ | URL | \`{{APPLICATION_CONNECTION_VALUE:baseUrl}}\` plus the operation's documented path | The scheme, origin and API prefix each appear once |
6972
6211
  | Method | The documented method, initially **GET** | It matches the operation heading |
6973
6212
  | Headers | Add **Accept: application/json** | Authentication remains in **Credentials**, not duplicated here |
6974
6213
  | Query parameters | Only parameters accepted by the operation | Organization and record values are in documented locations |
@@ -7769,8 +7008,8 @@ unclear operation contract.
7769
7008
 
7770
7009
  ## Step 2: send the request once
7771
7010
 
7772
- Replace the two angle-bracket placeholders with the server origin and operation
7773
- path from the same API-reference environment. The generated authorization line
7011
+ The origin below is this application's own, so the only thing left to supply is
7012
+ the operation path from the API reference and your key. The authorization line
7774
7013
  is the application's maintained API-key transport contract.
7775
7014
 
7776
7015
  ~~~bash
@@ -8024,7 +7263,7 @@ Give the request a name in your notes before you send it. "List the members of t
8024
7263
  The safest first call reads the organization the key belongs to. It needs no other identifier and changes nothing.
8025
7264
 
8026
7265
  ~~~bash
8027
- BASE_URL="https://api.example.com" # from the API reference's Servers list
7266
+ BASE_URL="{{APPLICATION_CONNECTION_VALUE:baseUrl}}" # this application's own origin
8028
7267
  ORGANIZATION_ID="7c1f6f0a-4b1e-4d8f-9a0c-2e5b3c9d1f42" # from the application's organization settings
8029
7268
  ORGANIZATION_API_KEY="sk_org_…" # the key you created
8030
7269
 
@@ -8034,7 +7273,7 @@ curl --fail-with-body \\
8034
7273
  --header "accept: application/json"
8035
7274
  ~~~
8036
7275
 
8037
- Replace the three values with yours; leave the header exactly as shown. {{CONSUMER_FACT:source:consumer-fact:access-api-keys#markdown}}
7276
+ Replace the organization id and the key with yours; the base URL above is already this application's. Leave the header exactly as shown. {{CONSUMER_FACT:source:consumer-fact:access-api-keys#markdown}}
8038
7277
 
8039
7278
  A successful answer is **200** with the organization record: its \`_id\` is the identifier you sent, and \`name\` is the organization you expected. Anything else, read the [failure table](#if-it-fails) below before changing more than one thing.
8040
7279
 
@@ -8264,7 +7503,7 @@ The application knows who is calling and refuses this operation in this scope.
8264
7503
 
8265
7504
  - Compare the roles on the key with the roles the operation lists in the API reference.
8266
7505
  - A collection under an organization the key is not a member of is refused with 403; confirm the organization identifier.
8267
- - \`FEATURE_NOT_AVAILABLE\` and \`FEATURE_LIMIT_EXCEEDED\` are plan refusals, not role refusals; see [Plans and access](/billing-and-subscriptions/plans-and-access).
7506
+ - \`FEATURE_NOT_AVAILABLE\` and \`FEATURE_LIMIT_EXCEEDED\` are plan refusals, not role refusals: the organization's subscription does not include the capability, or has reached its limit for it. Changing a role will not clear either one.
8268
7507
 
8269
7508
  ## 404: the record is not visible here
8270
7509