@whooshbang/contract-mock 2.0.0-rc.7 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/README.md +1 -1
- package/dist/billing.d.ts +5 -0
- package/dist/billing.js +77 -24
- package/dist/billing.js.map +1 -1
- package/dist/core.js +84 -26
- package/dist/core.js.map +1 -1
- package/dist/recipient-copy-defaults.d.ts +111 -111
- package/dist/recipient-copy-defaults.js +111 -111
- package/dist/recipient-copy-defaults.js.map +1 -1
- package/package.json +4 -4
- package/scenarios/v1/manifest.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,16 @@ recorded here.
|
|
|
5
5
|
|
|
6
6
|
## Unreleased
|
|
7
7
|
|
|
8
|
+
## 2.0.0
|
|
9
|
+
|
|
10
|
+
- Stable release; same API as 2.0.0-rc.8. Published to npm `latest`, so a plain install gets it; release candidates are retired (FXO-3087).
|
|
11
|
+
|
|
12
|
+
## 2.0.0-rc.8
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- Deterministic service-notice email enrollment (FXO-3033), subscription changes without unused-time credits (FXO-2988) and updated subscriber copy (FXO-3000), through the rc.8 contract.
|
|
17
|
+
|
|
8
18
|
## 2.0.0-rc.7
|
|
9
19
|
|
|
10
20
|
### Changed
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ organization, network service, database, or production provider.
|
|
|
7
7
|
Run the current release candidate directly from the public npm registry:
|
|
8
8
|
|
|
9
9
|
```sh
|
|
10
|
-
npx @whooshbang/contract-mock
|
|
10
|
+
npx @whooshbang/contract-mock --port 8787
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
## Programmatic and Worker-compatible use
|
package/dist/billing.d.ts
CHANGED
|
@@ -5,6 +5,11 @@ interface ChangeState {
|
|
|
5
5
|
organizationId: string;
|
|
6
6
|
resource: SubscriptionChange;
|
|
7
7
|
selectedOffers: BillingEntitlements["offers"];
|
|
8
|
+
quotedAt: string;
|
|
9
|
+
purchases: {
|
|
10
|
+
kind: BillingEntitlements["offers"][number]["kind"];
|
|
11
|
+
quantity: number;
|
|
12
|
+
}[];
|
|
8
13
|
}
|
|
9
14
|
/** Local, isolated financial fixtures. All state resets with the mock. The
|
|
10
15
|
* production service independently verifies Stripe objects and signatures. */
|
package/dist/billing.js
CHANGED
|
@@ -124,6 +124,7 @@ export class MockBillingState {
|
|
|
124
124
|
card: null,
|
|
125
125
|
receiptEmail: null,
|
|
126
126
|
selection: null,
|
|
127
|
+
paidProjects: [],
|
|
127
128
|
requestedProjects: null,
|
|
128
129
|
createdAt: null,
|
|
129
130
|
paid: null,
|
|
@@ -372,6 +373,11 @@ export class MockBillingState {
|
|
|
372
373
|
organizationId,
|
|
373
374
|
resource,
|
|
374
375
|
selectedOffers: offers,
|
|
376
|
+
quotedAt: now,
|
|
377
|
+
purchases: offers.map((offer) => ({
|
|
378
|
+
kind: offer.kind,
|
|
379
|
+
quantity: offer.kind === "project" ? selection.additional_projects : 1,
|
|
380
|
+
})),
|
|
375
381
|
});
|
|
376
382
|
return structuredClone(resource);
|
|
377
383
|
}
|
|
@@ -381,8 +387,14 @@ export class MockBillingState {
|
|
|
381
387
|
const oldTotal = this.selectionTotal(old, oldOffers);
|
|
382
388
|
const base = offers.find((offer) => offer.kind === selection.plan);
|
|
383
389
|
const capacity = (base?.included_projects ?? 1) + selection.additional_projects;
|
|
384
|
-
const upgrade = targetTotal > oldTotal
|
|
385
|
-
|
|
390
|
+
const upgrade = (targetTotal > oldTotal ||
|
|
391
|
+
(selection.plan === "agency" && old.plan !== "agency") ||
|
|
392
|
+
(selection.plan === "team" && old.plan === "payg")) &&
|
|
393
|
+
capacity +
|
|
394
|
+
Math.max(0, old.additional_projects - selection.additional_projects) >=
|
|
395
|
+
(oldOffers.find((offer) => offer.kind === old.plan)
|
|
396
|
+
?.included_projects ?? 1) +
|
|
397
|
+
old.additional_projects &&
|
|
386
398
|
(!paid.hide || base?.hide_attribution || selection.hide_attribution) &&
|
|
387
399
|
BigInt(base?.live_notifications ?? "0") >=
|
|
388
400
|
BigInt(oldOffers.find((offer) => offer.kind === old.plan)
|
|
@@ -390,12 +402,25 @@ export class MockBillingState {
|
|
|
390
402
|
BigInt(base?.shared_emails ?? "0") >=
|
|
391
403
|
BigInt(oldOffers.find((offer) => offer.kind === old.plan)?.shared_emails ??
|
|
392
404
|
"0");
|
|
393
|
-
const
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
405
|
+
const purchases = offers.flatMap((offer) => {
|
|
406
|
+
const oldUnits = oldOffers.some((candidate) => candidate.kind === offer.kind)
|
|
407
|
+
? offer.kind === "project"
|
|
408
|
+
? old.additional_projects
|
|
409
|
+
: 1
|
|
410
|
+
: 0;
|
|
411
|
+
const quantity = Math.max(0, (offer.kind === "project" ? selection.additional_projects : 1) -
|
|
412
|
+
oldUnits);
|
|
413
|
+
return quantity ? [{ kind: offer.kind, quantity }] : [];
|
|
414
|
+
});
|
|
415
|
+
const charge = purchases.reduce((sum, item) => {
|
|
416
|
+
const offer = offers.find((offer) => offer.kind === item.kind);
|
|
417
|
+
const cents = microUsd(offer?.monthly_price_usd ?? "0.000000") / 10000n;
|
|
418
|
+
const remaining = BigInt(Date.parse(paid.end) - Date.parse(now)), period = BigInt(Date.parse(paid.end) - Date.parse(paid.start));
|
|
419
|
+
return (sum +
|
|
420
|
+
((cents * remaining * 2n + period) / (period * 2n)) *
|
|
421
|
+
BigInt(item.quantity) *
|
|
422
|
+
10000n);
|
|
423
|
+
}, 0n);
|
|
399
424
|
const id = this.id("subscription_change");
|
|
400
425
|
const resource = {
|
|
401
426
|
id,
|
|
@@ -403,15 +428,21 @@ export class MockBillingState {
|
|
|
403
428
|
status: "reserved",
|
|
404
429
|
selection: structuredClone(selection),
|
|
405
430
|
monthly_price_usd: usd(targetTotal),
|
|
406
|
-
charge_now_usd: upgrade ? usd(
|
|
407
|
-
unused_time_credit_usd: upgrade ?
|
|
431
|
+
charge_now_usd: upgrade ? usd(charge) : "0.000000",
|
|
432
|
+
unused_time_credit_usd: upgrade ? "0.000000" : null,
|
|
408
433
|
effective_at: upgrade ? null : paid.end,
|
|
409
434
|
expires_at: expires,
|
|
410
435
|
client_secret: null,
|
|
411
436
|
publishable_key: null,
|
|
412
437
|
failure: null,
|
|
413
438
|
};
|
|
414
|
-
this.changes.set(id, {
|
|
439
|
+
this.changes.set(id, {
|
|
440
|
+
organizationId,
|
|
441
|
+
resource,
|
|
442
|
+
selectedOffers: offers,
|
|
443
|
+
quotedAt: now,
|
|
444
|
+
purchases,
|
|
445
|
+
});
|
|
415
446
|
return structuredClone(resource);
|
|
416
447
|
}
|
|
417
448
|
apply(change, start) {
|
|
@@ -425,14 +456,33 @@ export class MockBillingState {
|
|
|
425
456
|
}
|
|
426
457
|
account.hasSubscription = true;
|
|
427
458
|
account.selection = structuredClone(selection);
|
|
459
|
+
const previous = account.paid;
|
|
460
|
+
const upgrade = change.resource.kind === "upgrade" && previous !== null;
|
|
461
|
+
const end = upgrade ? previous.end : nextMonth(start);
|
|
462
|
+
if (!upgrade)
|
|
463
|
+
account.paidProjects = [];
|
|
464
|
+
const purchased = upgrade
|
|
465
|
+
? (change.purchases.find((item) => item.kind === "project")?.quantity ??
|
|
466
|
+
0)
|
|
467
|
+
: selection.additional_projects;
|
|
468
|
+
if (purchased > 0)
|
|
469
|
+
account.paidProjects.push({ quantity: purchased, end });
|
|
470
|
+
const share = (value) => upgrade
|
|
471
|
+
? (value * BigInt(Date.parse(end) - Date.parse(change.quotedAt))) /
|
|
472
|
+
BigInt(Date.parse(end) - Date.parse(previous.start))
|
|
473
|
+
: value;
|
|
428
474
|
account.paid = {
|
|
429
|
-
start,
|
|
430
|
-
end
|
|
475
|
+
start: upgrade ? previous.start : start,
|
|
476
|
+
end,
|
|
431
477
|
plan: selection.plan,
|
|
432
|
-
capacity:
|
|
478
|
+
capacity: base?.included_projects ?? 1,
|
|
433
479
|
hide: base?.hide_attribution ?? selection.hide_attribution,
|
|
434
|
-
liveRemaining:
|
|
435
|
-
|
|
480
|
+
liveRemaining: upgrade && previous.plan === selection.plan
|
|
481
|
+
? previous.liveRemaining
|
|
482
|
+
: share(BigInt(base?.live_notifications ?? "0")),
|
|
483
|
+
emailRemaining: upgrade && previous.plan === selection.plan
|
|
484
|
+
? previous.emailRemaining
|
|
485
|
+
: share(BigInt(base?.shared_emails ?? "0")),
|
|
436
486
|
};
|
|
437
487
|
}
|
|
438
488
|
settleChange(organizationId, id, now) {
|
|
@@ -467,12 +517,7 @@ export class MockBillingState {
|
|
|
467
517
|
resource.client_secret = null;
|
|
468
518
|
resource.publishable_key = null;
|
|
469
519
|
resource.failure = null;
|
|
470
|
-
const items = change.
|
|
471
|
-
kind: offer.kind,
|
|
472
|
-
quantity: offer.kind === "project"
|
|
473
|
-
? resource.selection.additional_projects
|
|
474
|
-
: 1,
|
|
475
|
-
}));
|
|
520
|
+
const items = change.purchases;
|
|
476
521
|
this.record(organizationId, {
|
|
477
522
|
id: `in_mock_${id}`,
|
|
478
523
|
kind: "recurring",
|
|
@@ -482,7 +527,7 @@ export class MockBillingState {
|
|
|
482
527
|
purchase_cents: null,
|
|
483
528
|
items,
|
|
484
529
|
period_start: now,
|
|
485
|
-
period_end: nextMonth(now),
|
|
530
|
+
period_end: this.account(organizationId).paid?.end ?? nextMonth(now),
|
|
486
531
|
document_url: `https://invoices.mock.whooshbang.test/${id}.pdf`,
|
|
487
532
|
document_kind: "invoice",
|
|
488
533
|
});
|
|
@@ -515,7 +560,15 @@ export class MockBillingState {
|
|
|
515
560
|
!["applied", "expired"].includes(change.resource.status))?.resource.id ?? null,
|
|
516
561
|
content_retention_days: account.hasPaidWallet || paid ? 90 : 7,
|
|
517
562
|
plan: paid?.plan ?? "payg",
|
|
518
|
-
|
|
563
|
+
recurring_selection: account.selection ?? {
|
|
564
|
+
plan: "payg",
|
|
565
|
+
hide_attribution: false,
|
|
566
|
+
additional_projects: 0,
|
|
567
|
+
},
|
|
568
|
+
project_capacity: (paid?.capacity ?? 1) +
|
|
569
|
+
account.paidProjects
|
|
570
|
+
.filter((item) => item.end > now)
|
|
571
|
+
.reduce((sum, item) => sum + item.quantity, 0),
|
|
519
572
|
can_hide_attribution: paid?.hide ?? false,
|
|
520
573
|
paid_through: paid?.end ?? null,
|
|
521
574
|
live_notifications_remaining: String(paid?.liveRemaining ?? 0n),
|
package/dist/billing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../src/billing.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../src/billing.ts"],"names":[],"mappings":"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"}
|
package/dist/core.js
CHANGED
|
@@ -1240,6 +1240,11 @@ async function createConnectionFingerprint(request) {
|
|
|
1240
1240
|
}
|
|
1241
1241
|
function problem(code, status, diagnosticId, overrides = {}) {
|
|
1242
1242
|
const defaults = {
|
|
1243
|
+
not_consented_for_marketing: {
|
|
1244
|
+
detail: "This binding is enrolled for service email only. Nothing was sent or charged.",
|
|
1245
|
+
retryable: false,
|
|
1246
|
+
title: "Marketing consent required",
|
|
1247
|
+
},
|
|
1243
1248
|
authentication_required: {
|
|
1244
1249
|
detail: "Provide a bearer credential.",
|
|
1245
1250
|
retryable: false,
|
|
@@ -3281,7 +3286,8 @@ function expandGroupBroadcasts(state) {
|
|
|
3281
3286
|
const binding = stillActive && credential !== undefined
|
|
3282
3287
|
? connectionBinding(state, credential, snapshot.subscriber_id, notifierId)
|
|
3283
3288
|
: undefined;
|
|
3284
|
-
if (binding === undefined
|
|
3289
|
+
if (binding === undefined ||
|
|
3290
|
+
(record.request.purpose === "marketing" && "service" in binding)) {
|
|
3285
3291
|
skipped += 1;
|
|
3286
3292
|
continue;
|
|
3287
3293
|
}
|
|
@@ -3291,6 +3297,7 @@ function expandGroupBroadcasts(state) {
|
|
|
3291
3297
|
? undefined
|
|
3292
3298
|
: createInteractionSummary(record.request.interaction, state.idGenerator("interaction"), state.scenario, now);
|
|
3293
3299
|
const message = {
|
|
3300
|
+
purpose: record.request.purpose ?? "service",
|
|
3294
3301
|
accepted_at: now,
|
|
3295
3302
|
binding,
|
|
3296
3303
|
binding_resolution: preference ? "preferred" : "notifier_default",
|
|
@@ -4545,12 +4552,28 @@ function addPublicRoutes(app, getState, options) {
|
|
|
4545
4552
|
if ("response" in parsed)
|
|
4546
4553
|
return parsed.response;
|
|
4547
4554
|
const now = state.now();
|
|
4548
|
-
const
|
|
4555
|
+
const service = "basis" in parsed.value;
|
|
4556
|
+
const consentedAt = new Date(service
|
|
4557
|
+
? parsed.value.relationship_started_at
|
|
4558
|
+
: parsed.value.consented_at);
|
|
4549
4559
|
if (!Number.isFinite(consentedAt.getTime()) || consentedAt > new Date(now))
|
|
4550
4560
|
return problemResponse(problem("request_invalid", 400, state.idGenerator("diagnostic")));
|
|
4551
4561
|
const request = {
|
|
4552
|
-
|
|
4553
|
-
|
|
4562
|
+
subscriber_id: parsed.value.subscriber_id,
|
|
4563
|
+
notifier_id: parsed.value.notifier_id,
|
|
4564
|
+
connection_id: parsed.value.connection_id,
|
|
4565
|
+
domain_id: parsed.value.domain_id,
|
|
4566
|
+
address: parsed.value.address,
|
|
4567
|
+
...(service
|
|
4568
|
+
? {
|
|
4569
|
+
basis: "service",
|
|
4570
|
+
relationship_started_at: consentedAt.toISOString(),
|
|
4571
|
+
source: parsed.value.source,
|
|
4572
|
+
}
|
|
4573
|
+
: {
|
|
4574
|
+
consented: true,
|
|
4575
|
+
consented_at: consentedAt.toISOString(),
|
|
4576
|
+
}),
|
|
4554
4577
|
source: parsed.value.source ?? "customer",
|
|
4555
4578
|
};
|
|
4556
4579
|
const authority = options.emailConsentAuthorities?.find((candidate) => candidate.organizationId === identity.credential.organizationId &&
|
|
@@ -4573,12 +4596,21 @@ function addPublicRoutes(app, getState, options) {
|
|
|
4573
4596
|
if (prior && prior.status === "revoked")
|
|
4574
4597
|
return problemResponse(problem("resource_not_found", 404, state.idGenerator("diagnostic")));
|
|
4575
4598
|
if (prior &&
|
|
4576
|
-
(!("
|
|
4577
|
-
prior.consent.kind !== "asserted_prior_consent" ||
|
|
4578
|
-
!("address" in prior) ||
|
|
4599
|
+
(!("address" in prior) ||
|
|
4579
4600
|
prior.address !== request.address ||
|
|
4580
|
-
|
|
4581
|
-
|
|
4601
|
+
("consent" in prior
|
|
4602
|
+
? prior.consent.domain_id !== request.domain_id
|
|
4603
|
+
: "service" in prior &&
|
|
4604
|
+
prior.service.domain_id !== request.domain_id) ||
|
|
4605
|
+
(service
|
|
4606
|
+
? !("consent" in prior) &&
|
|
4607
|
+
(!("service" in prior) ||
|
|
4608
|
+
prior.service.relationship_started_at !==
|
|
4609
|
+
consentedAt.toISOString() ||
|
|
4610
|
+
prior.service.source !== request.source)
|
|
4611
|
+
: !("consent" in prior) ||
|
|
4612
|
+
prior.consent.consented_at !== consentedAt.toISOString() ||
|
|
4613
|
+
prior.consent.source !== request.source)))
|
|
4582
4614
|
return problemResponse(problem("idempotency_conflict", 409, state.idGenerator("diagnostic")));
|
|
4583
4615
|
const requestFingerprint = fingerprint(request);
|
|
4584
4616
|
const replay = idempotentReplay(state, identity, "assertEmailConsent", key.key, requestFingerprint);
|
|
@@ -4597,18 +4629,35 @@ function addPublicRoutes(app, getState, options) {
|
|
|
4597
4629
|
channel: "email",
|
|
4598
4630
|
status: "active",
|
|
4599
4631
|
address: request.address,
|
|
4600
|
-
|
|
4601
|
-
|
|
4602
|
-
|
|
4603
|
-
|
|
4604
|
-
|
|
4605
|
-
|
|
4606
|
-
|
|
4607
|
-
|
|
4608
|
-
|
|
4609
|
-
|
|
4610
|
-
|
|
4611
|
-
|
|
4632
|
+
...(service
|
|
4633
|
+
? {
|
|
4634
|
+
basis: "service",
|
|
4635
|
+
service: {
|
|
4636
|
+
relationship_started_at: consentedAt.toISOString(),
|
|
4637
|
+
source: request.source,
|
|
4638
|
+
asserted_at: now,
|
|
4639
|
+
asserted_by: assertionActors.get(context.req.raw) ?? {
|
|
4640
|
+
kind: "credential",
|
|
4641
|
+
id: identity.credential.credentialId ??
|
|
4642
|
+
actorId(identity.credential.token, state),
|
|
4643
|
+
},
|
|
4644
|
+
domain_id: request.domain_id,
|
|
4645
|
+
},
|
|
4646
|
+
}
|
|
4647
|
+
: {
|
|
4648
|
+
consent: {
|
|
4649
|
+
kind: "asserted_prior_consent",
|
|
4650
|
+
consented_at: consentedAt.toISOString(),
|
|
4651
|
+
source: request.source,
|
|
4652
|
+
asserted_at: now,
|
|
4653
|
+
asserted_by: assertionActors.get(context.req.raw) ?? {
|
|
4654
|
+
kind: "credential",
|
|
4655
|
+
id: identity.credential.credentialId ??
|
|
4656
|
+
actorId(identity.credential.token, state),
|
|
4657
|
+
},
|
|
4658
|
+
domain_id: request.domain_id,
|
|
4659
|
+
},
|
|
4660
|
+
}),
|
|
4612
4661
|
};
|
|
4613
4662
|
state.bindings.set(mapKey, { binding });
|
|
4614
4663
|
const subscriberMapKey = subscriberKey(identity.credential.projectId, request.subscriber_id);
|
|
@@ -4633,7 +4682,9 @@ function addPublicRoutes(app, getState, options) {
|
|
|
4633
4682
|
project_id: binding.project_id,
|
|
4634
4683
|
environment: binding.environment,
|
|
4635
4684
|
data: {
|
|
4636
|
-
|
|
4685
|
+
...(service
|
|
4686
|
+
? { service_assertion_id: binding.id }
|
|
4687
|
+
: { consent_assertion_id: binding.id }),
|
|
4637
4688
|
binding_id: binding.id,
|
|
4638
4689
|
subscriber_id: binding.subscriber_id,
|
|
4639
4690
|
notifier_id: binding.notifier_id,
|
|
@@ -4933,8 +4984,9 @@ function addPublicRoutes(app, getState, options) {
|
|
|
4933
4984
|
binding.subscriber_id === parsed.value.subscriber_id &&
|
|
4934
4985
|
binding.notifier_id === "default" &&
|
|
4935
4986
|
binding.status !== "revoked" &&
|
|
4936
|
-
"consent" in binding &&
|
|
4937
|
-
|
|
4987
|
+
(("consent" in binding &&
|
|
4988
|
+
binding.consent.kind === "asserted_prior_consent") ||
|
|
4989
|
+
"service" in binding));
|
|
4938
4990
|
if (projectExperience === undefined ||
|
|
4939
4991
|
environmentExperience === undefined ||
|
|
4940
4992
|
environmentExperience.allowed_origins.length === 0) {
|
|
@@ -5242,6 +5294,7 @@ function addPublicRoutes(app, getState, options) {
|
|
|
5242
5294
|
candidate.connection_id !== undefined &&
|
|
5243
5295
|
(("consent" in candidate &&
|
|
5244
5296
|
candidate.consent.kind === "asserted_prior_consent") ||
|
|
5297
|
+
"service" in candidate ||
|
|
5245
5298
|
state.recipientConnectionIds.has(subscriberGroupKey(record.projectId, record.environment, candidate.connection_id))) &&
|
|
5246
5299
|
record.session.channels.some((channel) => channel.binding_id === candidate.id));
|
|
5247
5300
|
if (binding === undefined)
|
|
@@ -5272,8 +5325,9 @@ function addPublicRoutes(app, getState, options) {
|
|
|
5272
5325
|
channels: record.session.channels
|
|
5273
5326
|
.filter((channel) => !(action === "revoke" &&
|
|
5274
5327
|
channel.binding_id === binding.id &&
|
|
5275
|
-
"consent" in binding &&
|
|
5276
|
-
|
|
5328
|
+
(("consent" in binding &&
|
|
5329
|
+
binding.consent.kind === "asserted_prior_consent") ||
|
|
5330
|
+
"service" in binding) &&
|
|
5277
5331
|
!enrollmentAvailable))
|
|
5278
5332
|
.map((channel) => channel.binding_id === binding.id
|
|
5279
5333
|
? action === "revoke"
|
|
@@ -6181,6 +6235,9 @@ function addPublicRoutes(app, getState, options) {
|
|
|
6181
6235
|
}
|
|
6182
6236
|
return problemResponse(problem("subscriber_unbound", 422, state.idGenerator("diagnostic")));
|
|
6183
6237
|
}
|
|
6238
|
+
if (normalized.purpose === "marketing" && "service" in matchingBinding) {
|
|
6239
|
+
return problemResponse(problem("not_consented_for_marketing", 422, state.idGenerator("diagnostic")));
|
|
6240
|
+
}
|
|
6184
6241
|
if (normalized.connection_id !== undefined &&
|
|
6185
6242
|
matchingBinding.connection_id !== normalized.connection_id) {
|
|
6186
6243
|
return problemResponse(problem("subscriber_unbound", 422, state.idGenerator("diagnostic")));
|
|
@@ -6189,6 +6246,7 @@ function addPublicRoutes(app, getState, options) {
|
|
|
6189
6246
|
? undefined
|
|
6190
6247
|
: createInteractionSummary(normalized.interaction, state.idGenerator("interaction"), state.scenario, now);
|
|
6191
6248
|
const message = {
|
|
6249
|
+
purpose: normalized.purpose ?? "service",
|
|
6192
6250
|
accepted_at: now,
|
|
6193
6251
|
binding: matchingBinding,
|
|
6194
6252
|
...(exactConnectionTest
|