@contractspec/example.integration-stripe 3.7.6 → 3.7.7
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/.turbo/turbo-build.log +3 -3
- package/AGENTS.md +44 -21
- package/README.md +63 -19
- package/dist/browser/index.js +68 -68
- package/dist/index.d.ts +3 -3
- package/dist/index.js +68 -68
- package/dist/node/index.js +68 -68
- package/package.json +5 -5
- package/src/blueprint.ts +56 -56
- package/src/connection.sample.ts +17 -17
- package/src/docs/integration-stripe.docblock.ts +21 -21
- package/src/example.ts +26 -26
- package/src/index.ts +3 -3
- package/src/integration-stripe.feature.ts +20 -20
- package/src/tenant.ts +49 -49
- package/src/workflow.ts +48 -48
- package/translation.catalog.json +18 -19
- package/tsconfig.json +7 -9
- package/tsdown.config.js +1 -1
package/dist/node/index.js
CHANGED
|
@@ -148,57 +148,29 @@ var example = defineExample({
|
|
|
148
148
|
});
|
|
149
149
|
var example_default = example;
|
|
150
150
|
|
|
151
|
-
// src/
|
|
152
|
-
import {
|
|
153
|
-
|
|
154
|
-
StabilityEnum as StabilityEnum2,
|
|
155
|
-
TagsEnum as TagsEnum2
|
|
156
|
-
} from "@contractspec/lib.contracts-spec/ownership";
|
|
157
|
-
var collectPaymentWorkflow = {
|
|
151
|
+
// src/integration-stripe.feature.ts
|
|
152
|
+
import { defineFeature } from "@contractspec/lib.contracts-spec";
|
|
153
|
+
var IntegrationStripeFeature = defineFeature({
|
|
158
154
|
meta: {
|
|
159
|
-
key: "
|
|
155
|
+
key: "integration-stripe",
|
|
160
156
|
version: "1.0.0",
|
|
161
|
-
title: "
|
|
162
|
-
description: "
|
|
163
|
-
domain: "
|
|
164
|
-
owners: [
|
|
165
|
-
tags: [
|
|
166
|
-
stability:
|
|
157
|
+
title: "Stripe Payments Integration",
|
|
158
|
+
description: "Stripe payments integration with blueprint, workflow, and tenant configuration",
|
|
159
|
+
domain: "integration",
|
|
160
|
+
owners: ["@integration-team"],
|
|
161
|
+
tags: ["integration", "stripe", "payments"],
|
|
162
|
+
stability: "experimental"
|
|
167
163
|
},
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
id: "charge",
|
|
181
|
-
type: "automation",
|
|
182
|
-
label: "Charge card via Stripe",
|
|
183
|
-
action: {
|
|
184
|
-
operation: { key: "payments.stripe.chargeCard", version: "1.0.0" }
|
|
185
|
-
}
|
|
186
|
-
},
|
|
187
|
-
{
|
|
188
|
-
id: "confirm",
|
|
189
|
-
type: "automation",
|
|
190
|
-
label: "Confirm settlement",
|
|
191
|
-
action: {
|
|
192
|
-
operation: { key: "payments.recordSettlement", version: "1.0.0" }
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
],
|
|
196
|
-
transitions: [
|
|
197
|
-
{ from: "prepare", to: "charge" },
|
|
198
|
-
{ from: "charge", to: "confirm", condition: "output.success === true" }
|
|
199
|
-
]
|
|
200
|
-
}
|
|
201
|
-
};
|
|
164
|
+
integrations: [
|
|
165
|
+
{ key: "integration-stripe.integration.psp", version: "1.0.0" }
|
|
166
|
+
],
|
|
167
|
+
workflows: [{ key: "integration-stripe.workflow.payment", version: "1.0.0" }],
|
|
168
|
+
policies: [{ key: "integration-stripe.policy.payments", version: "1.0.0" }],
|
|
169
|
+
docs: [
|
|
170
|
+
"docs.examples.integration-stripe",
|
|
171
|
+
"docs.examples.integration-stripe.usage"
|
|
172
|
+
]
|
|
173
|
+
});
|
|
202
174
|
|
|
203
175
|
// src/tenant.ts
|
|
204
176
|
var artisanStripeTenantConfig = {
|
|
@@ -253,29 +225,57 @@ var artisanStripeTenantConfig = {
|
|
|
253
225
|
notes: "Stripe connection bound for production payments."
|
|
254
226
|
};
|
|
255
227
|
|
|
256
|
-
// src/
|
|
257
|
-
import {
|
|
258
|
-
|
|
228
|
+
// src/workflow.ts
|
|
229
|
+
import {
|
|
230
|
+
OwnersEnum as OwnersEnum2,
|
|
231
|
+
StabilityEnum as StabilityEnum2,
|
|
232
|
+
TagsEnum as TagsEnum2
|
|
233
|
+
} from "@contractspec/lib.contracts-spec/ownership";
|
|
234
|
+
var collectPaymentWorkflow = {
|
|
259
235
|
meta: {
|
|
260
|
-
key: "
|
|
236
|
+
key: "artisan.payments.collectPayment",
|
|
261
237
|
version: "1.0.0",
|
|
262
|
-
title: "
|
|
263
|
-
description: "
|
|
264
|
-
domain: "
|
|
265
|
-
owners: [
|
|
266
|
-
tags: [
|
|
267
|
-
stability:
|
|
238
|
+
title: "Collect Card Payment",
|
|
239
|
+
description: "Charge a customer using the tenant Stripe connection and record settlement details.",
|
|
240
|
+
domain: "payments",
|
|
241
|
+
owners: [OwnersEnum2.PlatformCore],
|
|
242
|
+
tags: [TagsEnum2.Marketplace, "stripe"],
|
|
243
|
+
stability: StabilityEnum2.Experimental
|
|
268
244
|
},
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
}
|
|
245
|
+
definition: {
|
|
246
|
+
entryStepId: "prepare",
|
|
247
|
+
steps: [
|
|
248
|
+
{
|
|
249
|
+
id: "prepare",
|
|
250
|
+
type: "automation",
|
|
251
|
+
label: "Prepare charge parameters",
|
|
252
|
+
action: {
|
|
253
|
+
operation: { key: "payments.prepareCharge", version: "1.0.0" }
|
|
254
|
+
}
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
id: "charge",
|
|
258
|
+
type: "automation",
|
|
259
|
+
label: "Charge card via Stripe",
|
|
260
|
+
action: {
|
|
261
|
+
operation: { key: "payments.stripe.chargeCard", version: "1.0.0" }
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
id: "confirm",
|
|
266
|
+
type: "automation",
|
|
267
|
+
label: "Confirm settlement",
|
|
268
|
+
action: {
|
|
269
|
+
operation: { key: "payments.recordSettlement", version: "1.0.0" }
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
],
|
|
273
|
+
transitions: [
|
|
274
|
+
{ from: "prepare", to: "charge" },
|
|
275
|
+
{ from: "charge", to: "confirm", condition: "output.success === true" }
|
|
276
|
+
]
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
279
|
export {
|
|
280
280
|
stripeLiveConnection,
|
|
281
281
|
example_default as example,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contractspec/example.integration-stripe",
|
|
3
|
-
"version": "3.7.
|
|
3
|
+
"version": "3.7.7",
|
|
4
4
|
"description": "Integration example – Stripe Payments (blueprint + workflow + tenant config).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -78,16 +78,16 @@
|
|
|
78
78
|
"dev": "contractspec-bun-build dev",
|
|
79
79
|
"clean": "rimraf dist .turbo",
|
|
80
80
|
"lint": "bun lint:fix",
|
|
81
|
-
"lint:fix": "
|
|
82
|
-
"lint:check": "
|
|
81
|
+
"lint:fix": "biome check --write --unsafe --only=nursery/useSortedClasses . && biome check --write .",
|
|
82
|
+
"lint:check": "biome check .",
|
|
83
83
|
"test": "bun test --pass-with-no-tests",
|
|
84
84
|
"prebuild": "contractspec-bun-build prebuild",
|
|
85
85
|
"typecheck": "tsc --noEmit"
|
|
86
86
|
},
|
|
87
87
|
"dependencies": {
|
|
88
88
|
"@contractspec/lib.schema": "3.7.6",
|
|
89
|
-
"@contractspec/lib.contracts-spec": "
|
|
90
|
-
"@contractspec/lib.contracts-integrations": "3.7.
|
|
89
|
+
"@contractspec/lib.contracts-spec": "4.0.0",
|
|
90
|
+
"@contractspec/lib.contracts-integrations": "3.7.7"
|
|
91
91
|
},
|
|
92
92
|
"devDependencies": {
|
|
93
93
|
"@contractspec/tool.typescript": "3.7.6",
|
package/src/blueprint.ts
CHANGED
|
@@ -1,62 +1,62 @@
|
|
|
1
1
|
import type { AppBlueprintSpec } from '@contractspec/lib.contracts-spec/app-config/spec';
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
OwnersEnum,
|
|
4
|
+
StabilityEnum,
|
|
5
|
+
TagsEnum,
|
|
6
6
|
} from '@contractspec/lib.contracts-spec/ownership';
|
|
7
7
|
|
|
8
8
|
export const artisanStripeBlueprint: AppBlueprintSpec = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
9
|
+
meta: {
|
|
10
|
+
key: 'artisan.payments.stripe',
|
|
11
|
+
version: '1.0.0',
|
|
12
|
+
appId: 'artisan',
|
|
13
|
+
title: 'ArtisanOS Stripe Payments',
|
|
14
|
+
description:
|
|
15
|
+
'Blueprint enabling card payments for ArtisanOS merchants via the Stripe integration.',
|
|
16
|
+
domain: 'payments',
|
|
17
|
+
owners: [OwnersEnum.PlatformCore],
|
|
18
|
+
tags: [TagsEnum.Marketplace, 'stripe', 'payments'],
|
|
19
|
+
stability: StabilityEnum.Experimental,
|
|
20
|
+
},
|
|
21
|
+
capabilities: {
|
|
22
|
+
enabled: [{ key: 'payments.psp', version: '1.0.0' }],
|
|
23
|
+
},
|
|
24
|
+
integrationSlots: [
|
|
25
|
+
{
|
|
26
|
+
slotId: 'primary-payments',
|
|
27
|
+
requiredCategory: 'payments',
|
|
28
|
+
allowedModes: ['managed', 'byok'],
|
|
29
|
+
requiredCapabilities: [{ key: 'payments.psp', version: '1.0.0' }],
|
|
30
|
+
required: true,
|
|
31
|
+
description:
|
|
32
|
+
'Primary card processor slot. Bind the tenant Stripe connection here.',
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
branding: {
|
|
36
|
+
appNameKey: 'artisan.payments.appName',
|
|
37
|
+
assets: [
|
|
38
|
+
{ type: 'logo', url: 'https://cdn.artisanos.dev/branding/logo.png' },
|
|
39
|
+
{
|
|
40
|
+
type: 'favicon',
|
|
41
|
+
url: 'https://cdn.artisanos.dev/branding/favicon.ico',
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
colorTokens: {
|
|
45
|
+
primary: 'colors.brand.primary',
|
|
46
|
+
secondary: 'colors.brand.secondary',
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
translationCatalog: {
|
|
50
|
+
key: 'artisan.payments.catalog',
|
|
51
|
+
version: '1.0.0',
|
|
52
|
+
},
|
|
53
|
+
workflows: {
|
|
54
|
+
collectPayment: {
|
|
55
|
+
key: 'artisan.payments.collectPayment',
|
|
56
|
+
version: '1.0.0',
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
policies: [{ key: 'artisan.payments.default', version: '1.0.0' }],
|
|
60
|
+
notes:
|
|
61
|
+
'Install this blueprint and pair it with the Stripe integration connection to enable card collection.',
|
|
62
62
|
};
|
package/src/connection.sample.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import type { IntegrationConnection } from '@contractspec/lib.contracts-integrations';
|
|
2
2
|
|
|
3
3
|
export const stripeLiveConnection: IntegrationConnection = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
4
|
+
meta: {
|
|
5
|
+
id: 'conn-stripe-live',
|
|
6
|
+
tenantId: 'artisan-co',
|
|
7
|
+
integrationKey: 'payments.stripe',
|
|
8
|
+
integrationVersion: '1',
|
|
9
|
+
label: 'Stripe Production',
|
|
10
|
+
environment: 'production',
|
|
11
|
+
createdAt: '2026-01-01T00:00:00.000Z',
|
|
12
|
+
updatedAt: '2026-01-01T00:00:00.000Z',
|
|
13
|
+
},
|
|
14
|
+
ownershipMode: 'managed',
|
|
15
|
+
config: {
|
|
16
|
+
accountId: 'acct_xxx',
|
|
17
|
+
},
|
|
18
|
+
secretProvider: 'vault',
|
|
19
|
+
secretRef: 'vault://integrations/artisan-co/conn-stripe-live',
|
|
20
|
+
status: 'connected',
|
|
21
21
|
};
|
|
@@ -2,27 +2,27 @@ import type { DocBlock } from '@contractspec/lib.contracts-spec/docs';
|
|
|
2
2
|
import { registerDocBlocks } from '@contractspec/lib.contracts-spec/docs';
|
|
3
3
|
|
|
4
4
|
const blocks: DocBlock[] = [
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
5
|
+
{
|
|
6
|
+
id: 'docs.examples.integration-stripe',
|
|
7
|
+
title: 'Integration Example — Stripe Payments',
|
|
8
|
+
summary:
|
|
9
|
+
'How to wire IntegrationSpec/TenantAppConfig + blueprint + workflow to enable Stripe-backed payments.',
|
|
10
|
+
kind: 'reference',
|
|
11
|
+
visibility: 'public',
|
|
12
|
+
route: '/docs/examples/integration-stripe',
|
|
13
|
+
tags: ['stripe', 'payments', 'integrations', 'example'],
|
|
14
|
+
body: `## Included\n- App blueprint enabling \`payments.psp\` capability.\n- Workflow invoking Stripe operations (prepare → charge → confirm).\n- Tenant app config binding workflow to an IntegrationConnection.\n\n## Notes\n- Secrets live in secret providers; connection config is non-secret.\n- Use \`ctx.resolvedAppConfig\` in operation executors to access integrations, branding, and translations.`,
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
id: 'docs.examples.integration-stripe.usage',
|
|
18
|
+
title: 'Stripe Integration Example — Usage',
|
|
19
|
+
summary: 'How to use the blueprint, workflow, and tenant config together.',
|
|
20
|
+
kind: 'usage',
|
|
21
|
+
visibility: 'public',
|
|
22
|
+
route: '/docs/examples/integration-stripe/usage',
|
|
23
|
+
tags: ['stripe', 'usage'],
|
|
24
|
+
body: `## Usage\n1) Register the blueprint + workflow + catalog in your registry.\n2) Persist an IntegrationConnection (see connection sample).\n3) Bind the tenant app config to the connection.\n\n## Guardrails\n- Never log secrets.\n- Keep payment semantics spec-defined; gate breaking changes behind flags.`,
|
|
25
|
+
},
|
|
26
26
|
];
|
|
27
27
|
|
|
28
28
|
registerDocBlocks(blocks);
|
package/src/example.ts
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
import { defineExample } from '@contractspec/lib.contracts-spec';
|
|
2
2
|
|
|
3
3
|
const example = defineExample({
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
4
|
+
meta: {
|
|
5
|
+
key: 'integration-stripe',
|
|
6
|
+
version: '1.0.0',
|
|
7
|
+
title: 'Integration — Stripe Payments',
|
|
8
|
+
description:
|
|
9
|
+
'Wire AppBlueprint + Workflow + TenantAppConfig to enable Stripe-backed payments (spec-first integration pattern).',
|
|
10
|
+
kind: 'integration',
|
|
11
|
+
visibility: 'public',
|
|
12
|
+
stability: 'experimental',
|
|
13
|
+
owners: ['@platform.core'],
|
|
14
|
+
tags: ['stripe', 'payments', 'integration', 'blueprint', 'workflow'],
|
|
15
|
+
},
|
|
16
|
+
docs: {
|
|
17
|
+
rootDocId: 'docs.examples.integration-stripe',
|
|
18
|
+
usageDocId: 'docs.examples.integration-stripe.usage',
|
|
19
|
+
},
|
|
20
|
+
entrypoints: {
|
|
21
|
+
packageName: '@contractspec/example.integration-stripe',
|
|
22
|
+
docs: './docs',
|
|
23
|
+
},
|
|
24
|
+
surfaces: {
|
|
25
|
+
templates: true,
|
|
26
|
+
sandbox: { enabled: true, modes: ['markdown', 'specs'] },
|
|
27
|
+
studio: { enabled: true, installable: true },
|
|
28
|
+
mcp: { enabled: true },
|
|
29
|
+
},
|
|
30
30
|
});
|
|
31
31
|
|
|
32
32
|
export default example;
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from './blueprint';
|
|
2
|
-
export * from './workflow';
|
|
3
|
-
export * from './tenant';
|
|
4
2
|
export * from './connection.sample';
|
|
5
|
-
export * from './integration-stripe.feature';
|
|
6
3
|
export { default as example } from './example';
|
|
4
|
+
export * from './integration-stripe.feature';
|
|
5
|
+
export * from './tenant';
|
|
6
|
+
export * from './workflow';
|
|
7
7
|
import './docs';
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import { defineFeature } from '@contractspec/lib.contracts-spec';
|
|
2
2
|
|
|
3
3
|
export const IntegrationStripeFeature = defineFeature({
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
4
|
+
meta: {
|
|
5
|
+
key: 'integration-stripe',
|
|
6
|
+
version: '1.0.0',
|
|
7
|
+
title: 'Stripe Payments Integration',
|
|
8
|
+
description:
|
|
9
|
+
'Stripe payments integration with blueprint, workflow, and tenant configuration',
|
|
10
|
+
domain: 'integration',
|
|
11
|
+
owners: ['@integration-team'],
|
|
12
|
+
tags: ['integration', 'stripe', 'payments'],
|
|
13
|
+
stability: 'experimental',
|
|
14
|
+
},
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
integrations: [
|
|
17
|
+
{ key: 'integration-stripe.integration.psp', version: '1.0.0' },
|
|
18
|
+
],
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
workflows: [{ key: 'integration-stripe.workflow.payment', version: '1.0.0' }],
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
policies: [{ key: 'integration-stripe.policy.payments', version: '1.0.0' }],
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
docs: [
|
|
25
|
+
'docs.examples.integration-stripe',
|
|
26
|
+
'docs.examples.integration-stripe.usage',
|
|
27
|
+
],
|
|
28
28
|
});
|
package/src/tenant.ts
CHANGED
|
@@ -1,53 +1,53 @@
|
|
|
1
1
|
import type { TenantAppConfig } from '@contractspec/lib.contracts-spec/app-config/spec';
|
|
2
2
|
|
|
3
3
|
export const artisanStripeTenantConfig: TenantAppConfig = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
4
|
+
meta: {
|
|
5
|
+
id: 'tenant-config-artisan-stripe',
|
|
6
|
+
tenantId: 'artisan-co',
|
|
7
|
+
appId: 'artisan',
|
|
8
|
+
blueprintName: 'artisan.payments.stripe',
|
|
9
|
+
blueprintVersion: '1.0.0',
|
|
10
|
+
environment: 'production',
|
|
11
|
+
version: '1.0.0',
|
|
12
|
+
status: 'published',
|
|
13
|
+
createdAt: new Date().toISOString(),
|
|
14
|
+
updatedAt: new Date().toISOString(),
|
|
15
|
+
},
|
|
16
|
+
integrations: [
|
|
17
|
+
{
|
|
18
|
+
slotId: 'primary-payments',
|
|
19
|
+
connectionId: 'conn-stripe-live',
|
|
20
|
+
scope: {
|
|
21
|
+
workflows: ['collectPayment'],
|
|
22
|
+
operations: ['payments.stripe.chargeCard'],
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
knowledge: [],
|
|
27
|
+
locales: {
|
|
28
|
+
defaultLocale: 'en',
|
|
29
|
+
enabledLocales: ['en', 'fr'],
|
|
30
|
+
},
|
|
31
|
+
translationOverrides: {
|
|
32
|
+
entries: [
|
|
33
|
+
{
|
|
34
|
+
key: 'artisan.payments.appName',
|
|
35
|
+
locale: 'en',
|
|
36
|
+
value: 'Artisan Payments Portal',
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
branding: {
|
|
41
|
+
appName: { en: 'Artisan Payments Portal' },
|
|
42
|
+
assets: [
|
|
43
|
+
{ type: 'logo', url: 'https://tenant.artisanos.dev/logo.png' },
|
|
44
|
+
{ type: 'logo-dark', url: 'https://tenant.artisanos.dev/logo-dark.png' },
|
|
45
|
+
],
|
|
46
|
+
colors: {
|
|
47
|
+
primary: '#F97316',
|
|
48
|
+
secondary: '#1F2937',
|
|
49
|
+
},
|
|
50
|
+
customDomain: 'pay.artisanos.dev',
|
|
51
|
+
},
|
|
52
|
+
notes: 'Stripe connection bound for production payments.',
|
|
53
53
|
};
|